diff --git a/charts/physims/charts/dlsim/values.yaml b/charts/physims/charts/dlsim/values.yaml
index c0142b50ae1704d9a0717c47891fb9f090549991..d78fbb74099a964a7d3ac65c919cdc7a15a6cf07 100644
--- a/charts/physims/charts/dlsim/values.yaml
+++ b/charts/physims/charts/dlsim/values.yaml
@@ -33,7 +33,9 @@ podSecurityContext:
 
 securityContext:
   privileged: true
-  # capabilities:
+  capabilities:
+    add:
+      - SYS_CAP_PTRACE
   #   drop:
   #   - ALL
   # readOnlyRootFilesystem: true
diff --git a/charts/physims/charts/ldpctest/values.yaml b/charts/physims/charts/ldpctest/values.yaml
index 91eab91af5418bd248a169d9e8d677a2852f866b..e2e6467923809ce3f8e3bd06e85b10c70e33ff1e 100644
--- a/charts/physims/charts/ldpctest/values.yaml
+++ b/charts/physims/charts/ldpctest/values.yaml
@@ -33,7 +33,9 @@ podSecurityContext:
 
 securityContext:
   privileged: true
-  # capabilities:
+  capabilities:
+    add:
+      - SYS_CAP_PTRACE
   #   drop:
   #   - ALL
   # readOnlyRootFilesystem: true
diff --git a/charts/physims/charts/nr-dlschsim/values.yaml b/charts/physims/charts/nr-dlschsim/values.yaml
index e96541102c4f30792350ec3a8aeacc9808bfe6e1..8944e7e7246b284d2d6a32bb74b37b305659bd02 100644
--- a/charts/physims/charts/nr-dlschsim/values.yaml
+++ b/charts/physims/charts/nr-dlschsim/values.yaml
@@ -33,7 +33,9 @@ podSecurityContext:
 
 securityContext:
   privileged: true
-  # capabilities:
+  capabilities:
+    add:
+      - SYS_CAP_PTRACE
   #   drop:
   #   - ALL
   # readOnlyRootFilesystem: true
diff --git a/charts/physims/charts/nr-dlsim/values.yaml b/charts/physims/charts/nr-dlsim/values.yaml
index c86fc96cff29c8b9b3cf83594aaa58711c4f0650..573e8630de864cb20ea6e0f658727594668a476a 100644
--- a/charts/physims/charts/nr-dlsim/values.yaml
+++ b/charts/physims/charts/nr-dlsim/values.yaml
@@ -33,7 +33,9 @@ podSecurityContext:
 
 securityContext:
   privileged: true
-  # capabilities:
+  capabilities:
+    add:
+      - SYS_CAP_PTRACE
   #   drop:
   #   - ALL
   # readOnlyRootFilesystem: true
diff --git a/charts/physims/charts/nr-pbchsim/values.yaml b/charts/physims/charts/nr-pbchsim/values.yaml
index 62d89f9632c286708ff45fbc99ae387e66f753b3..28c4678334ba2587fabc0d6f23eb38b06d705a7b 100644
--- a/charts/physims/charts/nr-pbchsim/values.yaml
+++ b/charts/physims/charts/nr-pbchsim/values.yaml
@@ -33,7 +33,9 @@ podSecurityContext:
 
 securityContext:
   privileged: true
-  # capabilities:
+  capabilities:
+    add:
+      - SYS_CAP_PTRACE
   #   drop:
   #   - ALL
   # readOnlyRootFilesystem: true
diff --git a/charts/physims/charts/nr-prachsim/values.yaml b/charts/physims/charts/nr-prachsim/values.yaml
index 3ea9787f7ab5cf660cfd98e7e61adddb1aa9b47e..9e3c68b54d306899dbb4ba161a0b37afc3d0157d 100644
--- a/charts/physims/charts/nr-prachsim/values.yaml
+++ b/charts/physims/charts/nr-prachsim/values.yaml
@@ -33,7 +33,9 @@ podSecurityContext:
 
 securityContext:
   privileged: true
-  # capabilities:
+  capabilities:
+    add:
+      - SYS_CAP_PTRACE
   #   drop:
   #   - ALL
   # readOnlyRootFilesystem: true
diff --git a/charts/physims/charts/nr-pucchsim/values.yaml b/charts/physims/charts/nr-pucchsim/values.yaml
index cf50c0bd3cf8a82feaef6911203e6422b39858ad..449670f71328bf3d070f62abdabb75043ea2d2ec 100644
--- a/charts/physims/charts/nr-pucchsim/values.yaml
+++ b/charts/physims/charts/nr-pucchsim/values.yaml
@@ -33,7 +33,9 @@ podSecurityContext:
 
 securityContext:
   privileged: true
-  # capabilities:
+  capabilities:
+    add:
+      - SYS_CAP_PTRACE
   #   drop:
   #   - ALL
   # readOnlyRootFilesystem: true
diff --git a/charts/physims/charts/nr-ulschsim/values.yaml b/charts/physims/charts/nr-ulschsim/values.yaml
index 420b15459655986e89640e20ca2a23b747816528..a3afc090e84527a3471abbe80f231f95452e88db 100644
--- a/charts/physims/charts/nr-ulschsim/values.yaml
+++ b/charts/physims/charts/nr-ulschsim/values.yaml
@@ -33,7 +33,9 @@ podSecurityContext:
 
 securityContext:
   privileged: true
-  # capabilities:
+  capabilities:
+    add:
+      - SYS_CAP_PTRACE
   #   drop:
   #   - ALL
   # readOnlyRootFilesystem: true
diff --git a/charts/physims/charts/nr-ulsim/values.yaml b/charts/physims/charts/nr-ulsim/values.yaml
index 7eb8e33fcbcab2c83442fe5b024034bfe2753970..2bf96498e880be7942dfa9e6bfc58e768b203208 100644
--- a/charts/physims/charts/nr-ulsim/values.yaml
+++ b/charts/physims/charts/nr-ulsim/values.yaml
@@ -33,7 +33,9 @@ podSecurityContext:
 
 securityContext:
   privileged: true
-  # capabilities:
+  capabilities:
+    add:
+      - SYS_CAP_PTRACE
   #   drop:
   #   - ALL
   # readOnlyRootFilesystem: true
diff --git a/charts/physims/charts/polartest/values.yaml b/charts/physims/charts/polartest/values.yaml
index 496dc8afba245c7c8204618cd01dc4509bf27897..e0a532fdd8f419fe0a6f732cd0c8ec000ccf250c 100644
--- a/charts/physims/charts/polartest/values.yaml
+++ b/charts/physims/charts/polartest/values.yaml
@@ -33,7 +33,9 @@ podSecurityContext:
 
 securityContext:
   privileged: true
-  # capabilities:
+  capabilities:
+    add:
+      - SYS_CAP_PTRACE
   #   drop:
   #   - ALL
   # readOnlyRootFilesystem: true
diff --git a/charts/physims/charts/smallblocktest/values.yaml b/charts/physims/charts/smallblocktest/values.yaml
index 9dd791265f2416098e2a2406286337a10ca88a46..f2f113d9b6cc946957c44f9cc34a885992e37a87 100644
--- a/charts/physims/charts/smallblocktest/values.yaml
+++ b/charts/physims/charts/smallblocktest/values.yaml
@@ -33,7 +33,9 @@ podSecurityContext:
 
 securityContext:
   privileged: true
-  # capabilities:
+  capabilities:
+    add:
+      - SYS_CAP_PTRACE
   #   drop:
   #   - ALL
   # readOnlyRootFilesystem: true
diff --git a/charts/physims/charts/ulsim/values.yaml b/charts/physims/charts/ulsim/values.yaml
index f5110989d86bb5db489151e88202256f0e57c54e..35dc14d596cf6cbb05b844b84710645e2743479a 100644
--- a/charts/physims/charts/ulsim/values.yaml
+++ b/charts/physims/charts/ulsim/values.yaml
@@ -33,7 +33,9 @@ podSecurityContext:
 
 securityContext:
   privileged: true
-  # capabilities:
+  capabilities:
+    add:
+      - SYS_CAP_PTRACE
   #   drop:
   #   - ALL
   # readOnlyRootFilesystem: true
diff --git a/ci-scripts/cls_containerize.py b/ci-scripts/cls_containerize.py
index 2b19a8098461e1d2679a0d6f6f7bad065ec66848..fdc2bc1597078728190e669bf71e39e14b824f04 100644
--- a/ci-scripts/cls_containerize.py
+++ b/ci-scripts/cls_containerize.py
@@ -106,6 +106,9 @@ class Containerize():
 		self.registrySvrId = ''
 		self.testSvrId = ''
 
+		#checkers from xml
+		self.ran_checkers={}
+
 #-----------------------------------------------------------
 # Container management functions
 #-----------------------------------------------------------
@@ -624,7 +627,7 @@ class Containerize():
 		else:
 			if containerToKill:
 				logging.debug('\u001B[1m Analyzing ' + nodeB_prefix + 'NB logfile \u001B[0m ' + self.eNB_logFile[self.eNB_instance])
-				logStatus = RAN.AnalyzeLogFile_eNB(self.eNB_logFile[self.eNB_instance], HTML)
+				logStatus = RAN.AnalyzeLogFile_eNB(self.eNB_logFile[self.eNB_instance], HTML, self.ran_checkers)
 			else:
 				logStatus = 0
 			if (logStatus < 0):
@@ -788,9 +791,10 @@ class Containerize():
 					continue
 
 				logging.debug('\u001B[1m Analyzing xNB logfile ' + filename + ' \u001B[0m')
-				logStatus = RAN.AnalyzeLogFile_eNB(filename, HTML)
+				logStatus = RAN.AnalyzeLogFile_eNB(filename, HTML, self.ran_checkers)
 				if (logStatus < 0):
 					fullStatus = False
+					self.exitStatus = 1
 					HTML.CreateHtmlTestRow(RAN.runtime_stats, 'KO', logStatus)
 				else:
 					HTML.CreateHtmlTestRow(RAN.runtime_stats, 'OK', CONST.ALL_PROCESSES_OK)
diff --git a/ci-scripts/cls_log_mgt.py b/ci-scripts/cls_log_mgt.py
index cf7b91d3c057468ad922804aaf95a4001ce37f06..905a105512213e0c8ad80e450931d2dd43de99c8 100644
--- a/ci-scripts/cls_log_mgt.py
+++ b/ci-scripts/cls_log_mgt.py
@@ -30,11 +30,15 @@
 
 
 
-
+import logging
 import re
 import subprocess
-import logging
-import math
+import sshconnection
+
+logging.basicConfig(
+	level=logging.DEBUG,
+	format="[%(asctime)s] %(name)s:%(levelname)s: %(message)s"
+)
 
 class Log_Mgt:
 
@@ -49,40 +53,25 @@ class Log_Mgt:
 #-----------------$
 
 
-	def __CheckAvailSpace(self):
+	def __CheckUsedSpace(self):
 		HOST=self.Username+'@'+self.IPAddress
 		COMMAND="df "+ self.path
 		ssh = subprocess.Popen(["ssh", "%s" % HOST, COMMAND],shell=False,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
 		result = ssh.stdout.readlines()
 		s=result[1].decode('utf-8').rstrip()#result[1] is the second line with the results we are looking for
-		tmp=s.split()
-		return tmp[3] #return avail space from the line
+		used=s.split()[4] #get 4th field ex: 70%
+		m = re.match('^(\d+)\%',used)
+		if m is not None:
+			return int(m.group(1))
 
-	def __GetOldestFile(self):
-		HOST=self.Username+'@'+self.IPAddress
-		COMMAND="ls -rtl "+ self.path #-rtl will bring oldest file on top
-		ssh = subprocess.Popen(["ssh", "%s" % HOST, COMMAND],shell=False,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
-		result = ssh.stdout.readlines()
-		s=result[1].decode('utf-8').rstrip()
-		tmp=s.split()
-		return tmp[8]#return filename from the line
+	def __RemoveOldest(self):
+		mySSH = sshconnection.SSHConnection()
+		mySSH.open(self.IPAddress, self.Username, self.Password)
+		COMMAND='echo ' + self.Password + ' | sudo -S find ' + self.path + ' -type f -mtime +14 -delete'
+		mySSH.command(COMMAND,'\$',20)
+		mySSH.close()
 
 
-	def __AvgSize(self):
-		HOST=self.Username+'@'+self.IPAddress
-		COMMAND="ls -rtl "+ self.path
-		ssh = subprocess.Popen(["ssh", "%s" % HOST, COMMAND],shell=False,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
-		result = ssh.stdout.readlines()
-		if len(result)>1: #at least 1 file present
-			total_size=0
-			for i in range(1,len(result)):
-				s=result[i].decode('utf-8').rstrip()
-				tmp=s.split()
-				total_size+=int(tmp[4]) #get filesize
-			return math.floor(total_size/(len(result)-1)) #compute average file/artifact size
-		else:#empty,no files
-			return 0
-
 
 #-----------------$
 #PUBLIC Methods$
@@ -90,17 +79,15 @@ class Log_Mgt:
 
 
 	def LogRotation(self):
-		avail_space =int(self.__CheckAvailSpace())*1000 #avail space in target folder, initially displayed in Gb
-		avg_size=self.__AvgSize() #average size of artifacts in the target folder
-		logging.debug("Avail Space : " + str(avail_space) + " / Artifact Avg Size : " + str(avg_size))
-		if avail_space < 50*avg_size: #reserved space is 50x artifact file ; oldest file will be deleted
-			oldestfile=self.__GetOldestFile()
-			HOST=self.Username+'@'+self.IPAddress
-			COMMAND="echo " + self.Password + " | sudo -S rm "+ self.path + "/" + oldestfile
-			logging.debug(COMMAND)
-			ssh = subprocess.Popen(["ssh", "%s" % HOST, COMMAND],shell=False,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
+		used_space = self.__CheckUsedSpace() #avail space in target folder
+		if used_space > 80 :
+			logging.debug('\u001B[1;37;41m  Used Disk > 80%, on '  + self.Username+'@'+self.IPAddress + '\u001B[0m')
+			logging.debug('\u001B[1;37;41m  Removing Artifacts older than 14 days \u001B[0m')
+			self.__RemoveOldest()
 		else:
-			logging.debug("Still some space left for artifacts storage")
+			logging.debug('Used Disk < 80%, on '  + self.Username+'@'+self.IPAddress +', no cleaning required')
+
+
 			
 
 
diff --git a/ci-scripts/cls_physim1.py b/ci-scripts/cls_physim1.py
index b7a730e91c483110ad78df5ce6d34646a2321b42..83fb74b7cb0e030969dd82e654ad2eb4470d184c 100644
--- a/ci-scripts/cls_physim1.py
+++ b/ci-scripts/cls_physim1.py
@@ -246,7 +246,7 @@ class PhySim:
 		isFinished = False
 		# doing a deep copy!
 		tmpPodNames = podNames.copy()
-		while(count < 32 and isFinished == False):
+		while(count < 50 and isFinished == False):
 			time.sleep(60)
 			for podName in tmpPodNames:
 				mySSH.command2(f'oc logs --tail=1 {podName} 2>&1', 6, silent=True)
diff --git a/ci-scripts/conf_files/gnb.sa.band78.fr1.24PRB.usrpb210.conf b/ci-scripts/conf_files/gnb.sa.band78.fr1.24PRB.usrpb210.conf
new file mode 100644
index 0000000000000000000000000000000000000000..bd3076a014cc9d75098288ca4c0cca05cb8b0d29
--- /dev/null
+++ b/ci-scripts/conf_files/gnb.sa.band78.fr1.24PRB.usrpb210.conf
@@ -0,0 +1,301 @@
+Active_gNBs = ( "gNB-OAI");
+# Asn1_verbosity, choice in: none, info, annoying
+Asn1_verbosity = "none";
+
+gNBs =
+(
+ {
+    ////////// Identification parameters:
+    gNB_ID    =  0xe00;
+    gNB_name  =  "gNB-OAI";
+
+    // Tracking area code, 0x0000 and 0xfffe are reserved values
+    tracking_area_code  =  1;
+    plmn_list = ({
+                  mcc = 208;
+                  mnc = 99;
+                  mnc_length = 2;
+                  snssaiList = (
+                    {
+                      sst = 1;
+                      sd  = 0x1; // 0 false, else true
+                    },
+                    {
+                      sst = 1;
+                      sd  = 0x112233; // 0 false, else true
+                    }
+                  );
+
+                  });
+
+    nr_cellid = 12345678L;
+
+    ////////// Physical parameters:
+
+    ssb_SubcarrierOffset                                      = 0;
+    pdsch_AntennaPorts                                        = 1;
+    pusch_AntennaPorts                                        = 1;
+    sib1_tda                                                  = 15;
+    min_rxtxtime = 6;
+
+     pdcch_ConfigSIB1 = (
+      {
+        controlResourceSetZero = 2;
+        searchSpaceZero = 0;
+      }
+      );
+
+    servingCellConfigCommon = (
+    {
+ #spCellConfigCommon
+
+      physCellId                                                    = 0;
+
+#  downlinkConfigCommon
+    #frequencyInfoDL
+      # this is 3600 MHz + 12 PRBs@30kHz SCS (same as initial BWP)
+      absoluteFrequencySSB                                             = 640288;
+      dl_frequencyBand                                                 = 78;
+      # this is 3600 MHz
+      dl_absoluteFrequencyPointA                                       = 640000;
+      #scs-SpecificCarrierList
+        dl_offstToCarrier                                              = 0;
+# subcarrierSpacing
+# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
+        dl_subcarrierSpacing                                           = 1;
+        dl_carrierBandwidth                                            = 24;
+     #initialDownlinkBWP
+      #genericParameters
+        # this is RBstart=27,L=48 (275*(L-1))+RBstart
+        initialDLBWPlocationAndBandwidth                               = 6325;
+# subcarrierSpacing
+# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
+        initialDLBWPsubcarrierSpacing                                   = 1;
+      #pdcch-ConfigCommon
+        initialDLBWPcontrolResourceSetZero                              = 2;
+        initialDLBWPsearchSpaceZero                                     = 0;
+
+  #uplinkConfigCommon
+     #frequencyInfoUL
+      ul_frequencyBand                                              = 78;
+      #scs-SpecificCarrierList
+      ul_offstToCarrier                                             = 0;
+# subcarrierSpacing
+# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
+      ul_subcarrierSpacing                                          = 1;
+      ul_carrierBandwidth                                           = 24;
+      pMax                                                          = 20;
+     #initialUplinkBWP
+      #genericParameters
+        initialULBWPlocationAndBandwidth                            = 6325;
+# subcarrierSpacing
+# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
+        initialULBWPsubcarrierSpacing                               = 1;
+      #rach-ConfigCommon
+        #rach-ConfigGeneric
+          prach_ConfigurationIndex                                  = 98;
+#prach_msg1_FDM
+#0 = one, 1=two, 2=four, 3=eight
+          prach_msg1_FDM                                            = 0;
+          prach_msg1_FrequencyStart                                 = 0;
+          zeroCorrelationZoneConfig                                 = 13;
+          preambleReceivedTargetPower                               = -96;
+#preamblTransMax (0...10) = (3,4,5,6,7,8,10,20,50,100,200)
+          preambleTransMax                                          = 6;
+#powerRampingStep
+# 0=dB0,1=dB2,2=dB4,3=dB6
+        powerRampingStep                                            = 1;
+#ra_ReponseWindow
+#1,2,4,8,10,20,40,80
+        ra_ResponseWindow                                           = 4;
+#ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR
+#1=oneeighth,2=onefourth,3=half,4=one,5=two,6=four,7=eight,8=sixteen
+        ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR                = 4;
+#oneHalf (0..15) 4,8,12,16,...60,64
+        ssb_perRACH_OccasionAndCB_PreamblesPerSSB                   = 14;
+#ra_ContentionResolutionTimer
+#(0..7) 8,16,24,32,40,48,56,64
+        ra_ContentionResolutionTimer                                = 7;
+        rsrp_ThresholdSSB                                           = 19;
+#prach-RootSequenceIndex_PR
+#1 = 839, 2 = 139
+        prach_RootSequenceIndex_PR                                  = 2;
+        prach_RootSequenceIndex                                     = 1;
+        # SCS for msg1, can only be 15 for 30 kHz < 6 GHz, takes precendence over the one derived from prach-ConfigIndex
+        #
+        msg1_SubcarrierSpacing                                      = 1,
+# restrictedSetConfig
+# 0=unrestricted, 1=restricted type A, 2=restricted type B
+        restrictedSetConfig                                         = 0,
+
+        msg3_DeltaPreamble                                          = 1;
+        p0_NominalWithGrant                                         =-90;
+
+# pucch-ConfigCommon setup :
+# pucchGroupHopping
+# 0 = neither, 1= group hopping, 2=sequence hopping
+        pucchGroupHopping                                           = 0;
+        hoppingId                                                   = 40;
+        p0_nominal                                                  = -90;
+# ssb_PositionsInBurs_BitmapPR
+# 1=short, 2=medium, 3=long
+      ssb_PositionsInBurst_PR                                       = 2;
+      ssb_PositionsInBurst_Bitmap                                   = 1;
+
+# ssb_periodicityServingCell
+# 0 = ms5, 1=ms10, 2=ms20, 3=ms40, 4=ms80, 5=ms160, 6=spare2, 7=spare1
+      ssb_periodicityServingCell                                    = 2;
+
+# dmrs_TypeA_position
+# 0 = pos2, 1 = pos3
+      dmrs_TypeA_Position                                           = 0;
+
+# subcarrierSpacing
+# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
+      subcarrierSpacing                                             = 1;
+
+
+  #tdd-UL-DL-ConfigurationCommon
+# subcarrierSpacing
+# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
+      referenceSubcarrierSpacing                                    = 1;
+      # pattern1
+      # dl_UL_TransmissionPeriodicity
+      # 0=ms0p5, 1=ms0p625, 2=ms1, 3=ms1p25, 4=ms2, 5=ms2p5, 6=ms5, 7=ms10
+      dl_UL_TransmissionPeriodicity                                 = 6;
+      nrofDownlinkSlots                                             = 7;
+      nrofDownlinkSymbols                                           = 6;
+      nrofUplinkSlots                                               = 2;
+      nrofUplinkSymbols                                             = 4;
+
+      ssPBCH_BlockPower                                             = -25;
+  }
+
+  );
+
+
+    # ------- SCTP definitions
+    SCTP :
+    {
+        # Number of streams to use in input/output
+        SCTP_INSTREAMS  = 2;
+        SCTP_OUTSTREAMS = 2;
+    };
+
+
+    ////////// AMF parameters:
+    amf_ip_address      = ( { ipv4       = "192.168.70.132";
+                              ipv6       = "192:168:30::17";
+                              active     = "yes";
+                              preference = "ipv4";
+                            }
+                          );
+
+
+    NETWORK_INTERFACES :
+    {
+        GNB_INTERFACE_NAME_FOR_NG_AMF            = "demo-oai";
+        GNB_IPV4_ADDRESS_FOR_NG_AMF              = "192.168.70.129/24";
+        GNB_INTERFACE_NAME_FOR_NGU               = "demo-oai";
+        GNB_IPV4_ADDRESS_FOR_NGU                 = "192.168.70.129/24";
+        GNB_PORT_FOR_S1U                         = 2152; # Spec 2152
+    };
+
+  }
+);
+
+MACRLCs = (
+{
+  num_cc                      = 1;
+  tr_s_preference             = "local_L1";
+  tr_n_preference             = "local_RRC";
+  pusch_TargetSNRx10          = 150;
+  pucch_TargetSNRx10          = 200;
+  ulsch_max_frame_inactivity  = 1;
+}
+);
+
+L1s = (
+{
+  num_cc = 1;
+  tr_n_preference       = "local_mac";
+  pusch_proc_threads    = 8;
+  prach_dtx_threshold   = 120;
+  pucch0_dtx_threshold  = 150;
+  ofdm_offset_divisor   = 8; #set this to UINT_MAX for offset 0
+}
+);
+
+RUs = (
+{
+  local_rf       = "yes"
+  nb_tx          = 1
+  nb_rx          = 1
+  att_tx         = 0
+  att_rx         = 0;
+  bands          = [78];
+  max_pdschReferenceSignalPower = -27;
+  max_rxgain                    = 114;
+  sf_extension                  = 0;
+  eNB_instances  = [0];
+  #beamforming 1x4 matrix:
+  bf_weights = [0x00007fff, 0x0000, 0x0000, 0x0000];
+  clock_src = "internal";
+}
+);
+
+THREAD_STRUCT = (
+{
+  #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
+  parallel_config    = "PARALLEL_SINGLE_THREAD";
+  #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
+  worker_config      = "WORKER_ENABLE";
+}
+);
+
+rfsimulator :
+{
+  serveraddr = "server";
+  serverport = "4043";
+  options = (); #("saviq"); or/and "chanmod"
+  modelname = "AWGN";
+  IQfile = "/tmp/rfsimulator.iqs";
+};
+
+security = {
+  # preferred ciphering algorithms
+  # the first one of the list that an UE supports in chosen
+  # valid values: nea0, nea1, nea2, nea3
+  ciphering_algorithms = ( "nea0" );
+
+  # preferred integrity algorithms
+  # the first one of the list that an UE supports in chosen
+  # valid values: nia0, nia1, nia2, nia3
+  integrity_algorithms = ( "nia2", "nia0" );
+
+  # setting 'drb_ciphering' to "no" disables ciphering for DRBs, no matter
+  # what 'ciphering_algorithms' configures; same thing for 'drb_integrity'
+  drb_ciphering = "yes";
+  drb_integrity = "no";
+};
+
+log_config :
+{
+  global_log_level                      ="info";
+  global_log_verbosity                  ="medium";
+  hw_log_level                          ="info";
+  hw_log_verbosity                      ="medium";
+  phy_log_level                         ="info";
+  phy_log_verbosity                     ="medium";
+  mac_log_level                         ="info";
+  mac_log_verbosity                     ="high";
+  rlc_log_level                         ="info";
+  rlc_log_verbosity                     ="medium";
+  pdcp_log_level                        ="info";
+  pdcp_log_verbosity                    ="medium";
+  rrc_log_level                         ="info";
+  rrc_log_verbosity                     ="medium";
+  ngap_log_level                        ="debug";
+  ngap_log_verbosity                    ="medium";
+};
+
diff --git a/ci-scripts/constants.py b/ci-scripts/constants.py
index 3c056759283a973543e16d61f6a57d984dd2ac8c..4f82811ac1e8ee93067ea76bd40ffe200f3564bb 100644
--- a/ci-scripts/constants.py
+++ b/ci-scripts/constants.py
@@ -45,6 +45,7 @@ ENB_PROCESS_REALTIME_ISSUE = -13
 ENB_PROCESS_NOLOGFILE_TO_ANALYZE = -14
 ENB_PROCESS_SLAVE_RRU_NOT_SYNCED = -15
 ENB_REAL_TIME_PROCESSING_ISSUE = -16
+ENB_RETX_ISSUE = -17
 HSS_PROCESS_FAILED = -2
 HSS_PROCESS_OK = +2
 MME_PROCESS_FAILED = -3
diff --git a/ci-scripts/cppcheck_suppressions.list b/ci-scripts/cppcheck_suppressions.list
index f8438a4276aca187831d2dcf7d7150f57ea9250e..ff4cac20b375347454ecddef7e9dea6a9436c122 100644
--- a/ci-scripts/cppcheck_suppressions.list
+++ b/ci-scripts/cppcheck_suppressions.list
@@ -50,10 +50,6 @@ memleak:openair1/PHY/CODING/TESTBENCH/ltetest.c
 invalidPrintfArgType_sint:openair1/PHY/CODING/TESTBENCH/pdcch_test.c
 //
 //-----------------------------------------------------------------------------
-// oaisim deprecated, remove?
-doubleFree:openair3/TEST/oaisim_mme_list_benchmark.c
-//
-//-----------------------------------------------------------------------------
 // is itti analyzer deprecated
 nullPointer:common/utils/itti_analyzer/itti_analyzer.c
 nullPointerRedundantCheck:common/utils/itti_analyzer/libbuffers/buffers.c
diff --git a/ci-scripts/datalog_rt_stats.2x2.yaml b/ci-scripts/datalog_rt_stats.2x2.yaml
index 9e2b66862d6ab4cd53137c67695fe82fd4771a78..a93ef6aa8c879cee167e27360709511a1233ac97 100644
--- a/ci-scripts/datalog_rt_stats.2x2.yaml
+++ b/ci-scripts/datalog_rt_stats.2x2.yaml
@@ -4,16 +4,14 @@
 Title : Processing Time (us)
 ColNames :
   - Metric
-  - Average
-  - Max
-  - Average vs Reference Deviation (Reference Value ; Acceptability Threshold)
+  - Average; Max; Count
+  - Average vs Reference Deviation (Reference Value; Acceptability Threshold)
 Ref : 
   feprx : 120.0
   feptx_prec : 8.0
   feptx_ofdm : 50.0
   feptx_total : 75.0
-  L1 Tx processing thread 0 : 300.0
-  L1 Tx processing thread 1 : 300.0
+  L1 Tx processing : 300.0
   DLSCH encoding : 230.0
   L1 Rx processing : 175.0
   PUSCH inner-receiver : 100.0
@@ -25,8 +23,7 @@ Threshold :
   feptx_prec : 1.25
   feptx_ofdm : 1.25
   feptx_total : 1.25
-  L1 Tx processing thread 0 : 1.25
-  L1 Tx processing thread 1 : 1.25
+  L1 Tx processing : 1.25
   DLSCH encoding : 1.25
   L1 Rx processing : 1.25
   PUSCH inner-receiver : 1.25
diff --git a/ci-scripts/datalog_rt_stats.default.yaml b/ci-scripts/datalog_rt_stats.default.yaml
index a2d4768752250e35101d020598fd4d0da097e141..02a90c86f4e2fd7b97b408cebc89f122256e44ef 100644
--- a/ci-scripts/datalog_rt_stats.default.yaml
+++ b/ci-scripts/datalog_rt_stats.default.yaml
@@ -4,16 +4,14 @@
 Title : Processing Time (us)
 ColNames :
   - Metric
-  - Average
-  - Max
-  - Average vs Reference Deviation (Reference Value ; Acceptability Threshold)
+  - Average; Max; Count
+  - Average vs Reference Deviation (Reference Value; Acceptability Threshold)
 Ref : 
   feprx : 60.0
   feptx_prec : 8.0
   feptx_ofdm : 50.0
   feptx_total : 75.0
-  L1 Tx processing thread 0 : 300.0
-  L1 Tx processing thread 1 : 300.0
+  L1 Tx processing : 300.0
   DLSCH encoding : 230.0
   L1 Rx processing : 175.0
   PUSCH inner-receiver : 100.0
@@ -25,8 +23,7 @@ Threshold :
   feptx_prec : 1.25
   feptx_ofdm : 1.25
   feptx_total : 1.25
-  L1 Tx processing thread 0 : 1.25
-  L1 Tx processing thread 1 : 1.25
+  L1 Tx processing : 1.25
   DLSCH encoding : 1.25
   L1 Rx processing : 1.25
   PUSCH inner-receiver : 1.25
diff --git a/ci-scripts/html.py b/ci-scripts/html.py
index b172ffb71113b74dedbdf933545623933a85ed38..13a1ab869175175eb2c2fb102c0b4c367803d9c1 100644
--- a/ci-scripts/html.py
+++ b/ci-scripts/html.py
@@ -478,21 +478,19 @@ class HTMLManagement():
 		self.htmlFile.write('      </tr>\n')
 		self.htmlFile.write('      <tr bgcolor = "#33CCFF" >\n')
 		self.htmlFile.write('        <th colspan="3">'+ DataLog['ColNames'][0] +'</th>\n')
-		self.htmlFile.write('        <th>' + DataLog['ColNames'][1] + '</th>\n')
-		self.htmlFile.write('        <th>' + DataLog['ColNames'][2] + '</th>\n')
-		self.htmlFile.write('        <th colspan=' + str(1+self.htmlUEConnected) + '>'+ DataLog['ColNames'][3] +'</th>\n')
+		self.htmlFile.write('        <th colspan="2">' + DataLog['ColNames'][1] + '</th>\n')
+		self.htmlFile.write('        <th colspan=' + str(1+self.htmlUEConnected) + '>'+ DataLog['ColNames'][2] +'</th>\n')
 		self.htmlFile.write('      </tr>\n')
 
 		for k in DataLog['Data']:
 			# TestRow 
 			self.htmlFile.write('      <tr>\n')
 			self.htmlFile.write('        <td colspan="3" bgcolor = "lightcyan" >' + k  + ' </td>\n')				
-			self.htmlFile.write('        <td bgcolor = "lightcyan" >' + DataLog['Data'][k][0]  + ' </td>\n')
-			self.htmlFile.write('        <td bgcolor = "lightcyan" >' + DataLog['Data'][k][1]  + ' </td>\n')
-			if float(DataLog['Data'][k][2])> DataLog['Threshold'][k]:
-				self.htmlFile.write('        <th bgcolor = "red" >' + DataLog['Data'][k][2]  + ' (Ref = ' + str(DataLog['Ref'][k]) + ' ; Thres = '   +str(DataLog['Threshold'][k])+') ' + '</th>\n')
+			self.htmlFile.write('        <td colspan="2" bgcolor = "lightcyan" >' + DataLog['Data'][k][0] + '; ' + DataLog['Data'][k][1] + '; ' + DataLog['Data'][k][2] + ' </td>\n')
+			if float(DataLog['Data'][k][3])> DataLog['Threshold'][k]:
+				self.htmlFile.write('        <th bgcolor = "red" >' + DataLog['Data'][k][3]  + ' (Ref = ' + str(DataLog['Ref'][k]) + ' ; Thres = '   +str(DataLog['Threshold'][k])+') ' + '</th>\n')
 			else:
-				self.htmlFile.write('        <th bgcolor = "green" ><font color="white">' + DataLog['Data'][k][2]  + ' (Ref = ' + str(DataLog['Ref'][k]) + ' ; Thres = '   +str(DataLog['Threshold'][k])+') ' + '</th>\n')					
+				self.htmlFile.write('        <th bgcolor = "green" ><font color="white">' + DataLog['Data'][k][3]  + ' (Ref = ' + str(DataLog['Ref'][k]) + ' ; Thres = '   +str(DataLog['Threshold'][k])+') ' + '</th>\n')
 			self.htmlFile.write('      </tr>\n')
 		self.htmlFile.close()
 
diff --git a/ci-scripts/main.py b/ci-scripts/main.py
index 5357a90a3d6e5c280bcad66bbf8e63c145bfecc9..aa7d512b3dbc52352c429c047a1ca0f231010e49 100644
--- a/ci-scripts/main.py
+++ b/ci-scripts/main.py
@@ -401,6 +401,12 @@ def GetParametersFromXML(action):
 		string_field=test.findtext('nb_healthy')
 		if (string_field is not None):
 			CONTAINERS.nb_healthy[0] = int(string_field)
+		string_field=test.findtext('d_retx_th')
+		if (string_field is not None):
+			CONTAINERS.ran_checkers['d_retx_th']= string_field
+		string_field=test.findtext('u_retx_th')
+		if (string_field is not None):
+			CONTAINERS.ran_checkers['u_retx_th']= string_field
 
 	elif action == 'PingFromContainer':
 		string_field = test.findtext('container_name')
diff --git a/ci-scripts/ran.py b/ci-scripts/ran.py
index ad360d217979d30bcf982b7279a12f0b30f09938..e5d0f10ee4ce6b9a785df156fc2bd824dc5369d2 100644
--- a/ci-scripts/ran.py
+++ b/ci-scripts/ran.py
@@ -39,6 +39,7 @@ import time
 from multiprocessing import Process, Lock, SimpleQueue
 import yaml
 
+
 #-----------------------------------------------------------
 # OAI Testing modules
 #-----------------------------------------------------------
@@ -758,7 +759,7 @@ class RANManagement():
 		mySSH.command('echo ' + self.eNBPassword + ' | sudo -S rm enb*.log core* enb_*record.raw enb_*.pcap gnb_*.pcap enb_*txt physim_*.log *stats.log *monitor.pickle *monitor*.png ping*.log.png log/*/*.log log/*/*.pcap', '\$', 15)
 		mySSH.close()
 
-	def AnalyzeLogFile_eNB(self, eNBlogFile, HTML):
+	def AnalyzeLogFile_eNB(self, eNBlogFile, HTML, checkers={}):
 		if (not os.path.isfile('./' + eNBlogFile)):
 			return -1
 		enb_log_file = open('./' + eNBlogFile, 'r')
@@ -815,10 +816,12 @@ class RANManagement():
 		removing_ue = 0
 		#count"X2AP-PDU"
 		x2ap_pdu = 0
-		#NSA specific log markers
-		nsa_markers ={'SgNBReleaseRequestAcknowledge': [],'FAILURE': [], 'scgFailureInformationNR-r15': [], 'SgNBReleaseRequest': []}
+		#gnb specific log markers
+		gnb_markers ={'SgNBReleaseRequestAcknowledge': [],'FAILURE': [], 'scgFailureInformationNR-r15': [], 'SgNBReleaseRequest': [], 'Detected UL Failure on PUSCH':[]}
 		nodeB_prefix_found = False
 		RealTimeProcessingIssue = False
+		DLRetxIssue = False
+		ULRetxIssue = False
 	
 		line_cnt=0 #log file line counter
 		for line in enb_log_file.readlines():
@@ -1008,11 +1011,11 @@ class RANManagement():
 			result = re.search('X2AP-PDU', str(line))
 			if result is not None:
 				x2ap_pdu += 1
-			#nsa markers logging
-			for k in nsa_markers:
+			#gnb markers logging
+			for k in gnb_markers:
 				result = re.search(k, line)
 				if result is not None:
-					nsa_markers[k].append(line_cnt)					
+					gnb_markers[k].append(line_cnt)
 
 		enb_log_file.close()
 
@@ -1096,46 +1099,94 @@ class RANManagement():
 			htmlMsg = statMsg+'\n'
 			logging.debug(statMsg)
 			htmleNBFailureMsg += htmlMsg
-			#nsa markers
+			#gnb markers
 			statMsg = 'logfile line count = ' + str(line_cnt)			
 			htmlMsg = statMsg+'\n'
 			logging.debug(statMsg)
 			htmleNBFailureMsg += htmlMsg
-			if len(nsa_markers['SgNBReleaseRequestAcknowledge'])!=0:
-				statMsg = 'SgNBReleaseRequestAcknowledge = ' + str(len(nsa_markers['SgNBReleaseRequestAcknowledge'])) + ' occurences , starting line ' + str(nsa_markers['SgNBReleaseRequestAcknowledge'][0])
+			if len(gnb_markers['SgNBReleaseRequestAcknowledge'])!=0:
+				statMsg = 'SgNBReleaseRequestAcknowledge = ' + str(len(gnb_markers['SgNBReleaseRequestAcknowledge'])) + ' occurences , starting line ' + str(gnb_markers['SgNBReleaseRequestAcknowledge'][0])
 			else:
-				statMsg = 'SgNBReleaseRequestAcknowledge = ' + str(len(nsa_markers['SgNBReleaseRequestAcknowledge'])) + ' occurences' 
+				statMsg = 'SgNBReleaseRequestAcknowledge = ' + str(len(gnb_markers['SgNBReleaseRequestAcknowledge'])) + ' occurences' 
 			htmlMsg = statMsg+'\n'
 			logging.debug(statMsg)
 			htmleNBFailureMsg += htmlMsg
-			statMsg = 'FAILURE = ' + str(len(nsa_markers['FAILURE'])) + ' occurences'
+			statMsg = 'FAILURE = ' + str(len(gnb_markers['FAILURE'])) + ' occurences'
+			htmlMsg = statMsg+'\n'
+			logging.debug(statMsg)
+			htmleNBFailureMsg += htmlMsg
+			statMsg = 'Detected UL Failure on PUSCH = ' + str(len(gnb_markers['Detected UL Failure on PUSCH'])) + ' occurences'
 			htmlMsg = statMsg+'\n'
 			logging.debug(statMsg)
 			htmleNBFailureMsg += htmlMsg
 
-			#ulsch and dlsch statistics
+			#ulsch and dlsch statistics and checkers
+			#print statistics into html
 			if len(dlsch_ulsch_stats)!=0: #check if dictionary is not empty
+				#for each dictionary key, generate the msg for html as information
 				statMsg=''
-				for key in dlsch_ulsch_stats: #for each dictionary key
+				for key in dlsch_ulsch_stats: 
 					statMsg += dlsch_ulsch_stats[key] + '\n' 
 					logging.debug(dlsch_ulsch_stats[key])
 				htmleNBFailureMsg += statMsg
 
+			#checker
+			if (len(dlsch_ulsch_stats)!=0) and (len(checkers)!=0):
+				if 'd_retx_th' in checkers:
+					checkers['d_retx_th'] = [float(x) for x in checkers['d_retx_th'].split(',')]
+					dlsch_checker_status = list(0 for i in checkers['d_retx_th'])#status 0 / -1
+					d_perc_retx = list(0 for i in checkers['d_retx_th'])#results in %
+
+				if 'u_retx_th' in checkers:
+					checkers['u_retx_th'] = [float(x) for x in checkers['u_retx_th'].split(',')]
+					ulsch_checker_status = list(0 for i in checkers['u_retx_th'])
+					u_perc_retx = list(0 for i in checkers['u_retx_th'])
+
+				#ul and dl retransmissions checkers
+				#NOTICE:  DL and UL regex are different 
+
+				if ('dlsch_rounds' in dlsch_ulsch_stats) and ('d_retx_th' in checkers):
+					tmp=re.match(r'^.*dlsch_rounds\s+(\d+)\/(\d+)\/(\d+)\/(\d+),\s+dlsch_errors\s+(\d+)',dlsch_ulsch_stats['dlsch_rounds'])
+					if tmp is not None :
+						#captures the different groups from the regex
+						retx_data=[float(x) for x in tmp.groups()]
+						for i in range(0,len(d_perc_retx)):
+							#case where numerator > denumerator with denum ==0 is disregarded, cannot hapen in principle, will lead to 0%
+							d_perc_retx[i] = 0 if (retx_data[i] == 0)  else 100*retx_data[i+1]/retx_data[i]
+							#treating % > 100 , % > requirement
+							if (d_perc_retx[i] > 100) or (d_perc_retx[i] > checkers['d_retx_th'][i]): dlsch_checker_status[i] = -1
+					if -1 in dlsch_checker_status:
+						DLRetxIssue = True
+
+				if ('ulsch_rounds' in dlsch_ulsch_stats)  and ('u_retx_th' in checkers):
+					tmp=re.match(r'^.*ulsch_rounds\s+(\d+)\/(\d+)\/(\d+)\/(\d+),\s+.*,\s+ulsch_errors\s+(\d+)',dlsch_ulsch_stats['ulsch_rounds'])
+					if tmp is not None :
+						retx_data=[float(x) for x in tmp.groups()]
+						for i in range(0,len(d_perc_retx)):
+							u_perc_retx[i] = 0 if (retx_data[i] == 0) else 100*retx_data[i+1]/retx_data[i]
+							if (u_perc_retx[i] > 100) or (u_perc_retx[i] > checkers['u_retx_th'][i]): ulsch_checker_status[i] = -1
+					if -1 in ulsch_checker_status:
+						ULRetxIssue = True
+
+
+
 			#real time statistics
 			datalog_rt_stats['Data']={}
 			if len(real_time_stats)!=0: #check if dictionary is not empty
 				for k in real_time_stats:
-					tmp=re.match(r'^(?P<metric>.*):\s+(?P<avg>\d+\.\d+) us;\s+\d+;\s+(?P<max>\d+\.\d+) us;',real_time_stats[k])
+					tmp=re.match(r'^(?P<metric>.*):\s+(?P<avg>\d+\.\d+) us;\s+(?P<count>\d+);\s+(?P<max>\d+\.\d+) us;',real_time_stats[k])
 					if tmp is not None:
 						metric=tmp.group('metric')
 						avg=float(tmp.group('avg'))
 						max=float(tmp.group('max'))
-						datalog_rt_stats['Data'][metric]=["{:.0f}".format(avg),"{:.0f}".format(max),"{:.2f}".format(avg/datalog_rt_stats['Ref'][metric])]
+						count=int(tmp.group('count'))
+						datalog_rt_stats['Data'][metric]=["{:.0f}".format(avg),"{:.0f}".format(max),"{:d}".format(count),"{:.2f}".format(avg/datalog_rt_stats['Ref'][metric])]
 				#once all metrics are collected, store the data as a class attribute to build a dedicated HTML table afterward
 				self.datalog_rt_stats=datalog_rt_stats
 				#check if there is a fail => will render the test as failed
 				for k in datalog_rt_stats['Data']:
-					if float(datalog_rt_stats['Data'][k][2])> datalog_rt_stats['Threshold'][k]: #condition for fail : avg/ref is greater than the fixed threshold
+					if float(datalog_rt_stats['Data'][k][3])> datalog_rt_stats['Threshold'][k]: #condition for fail : avg/ref is greater than the fixed threshold
+						logging.debug('\u001B[1;30;43m datalog_rt_stats metric ' + k + '=' + datalog_rt_stats['Data'][k][3] + ' > threshold ' + str(datalog_rt_stats['Threshold'][k]) + ' \u001B[0m')
 						RealTimeProcessingIssue = True
 			else:
 				statMsg = 'No real time stats found in the log file\n'
@@ -1158,18 +1209,34 @@ class RANManagement():
 			htmlMsg = statMsg+'\n'
 			logging.debug(statMsg)
 			htmleNBFailureMsg += htmlMsg
-			if len(nsa_markers['SgNBReleaseRequest'])!=0:
-				statMsg = 'SgNBReleaseRequest = ' + str(len(nsa_markers['SgNBReleaseRequest'])) + ' occurences , starting line ' + str(nsa_markers['SgNBReleaseRequest'][0])
+			if len(gnb_markers['SgNBReleaseRequest'])!=0:
+				statMsg = 'SgNBReleaseRequest = ' + str(len(gnb_markers['SgNBReleaseRequest'])) + ' occurences , starting line ' + str(gnb_markers['SgNBReleaseRequest'][0])
 			else:
-				statMsg = 'SgNBReleaseRequest = ' + str(len(nsa_markers['SgNBReleaseRequest'])) + ' occurences'
+				statMsg = 'SgNBReleaseRequest = ' + str(len(gnb_markers['SgNBReleaseRequest'])) + ' occurences'
 			htmlMsg = statMsg+'\n'
 			logging.debug(statMsg)
 			htmleNBFailureMsg += htmlMsg
-			statMsg = 'scgFailureInformationNR-r15 = ' + str(len(nsa_markers['scgFailureInformationNR-r15'])) + ' occurences'
+			statMsg = 'scgFailureInformationNR-r15 = ' + str(len(gnb_markers['scgFailureInformationNR-r15'])) + ' occurences'
 			htmlMsg = statMsg+'\n'
 			logging.debug(statMsg)
 			htmleNBFailureMsg += htmlMsg			
 
+		if DLRetxIssue:
+			retx_checker_status_str = ''
+			for status in dlsch_checker_status : retx_checker_status_str+=str(status)+ ' '
+			logging.debug('\u001B[1;37;41m ' + nodeB_prefix + 'NB ended with too many retransmissions / errors issue in DL ! \u001B[0m')
+			logging.debug('\u001B[1;37;41m Status : ' + retx_checker_status_str + ' \u001B[0m')
+			htmleNBFailureMsg += 'Fail due to retransmissions / errors issue in DL, status : ' + retx_checker_status_str + '\n'
+			global_status = CONST.ENB_RETX_ISSUE
+
+		if ULRetxIssue:
+			retx_checker_status_str = ''
+			for status in ulsch_checker_status : retx_checker_status_str+=str(status)+ ' '
+			logging.debug('\u001B[1;37;41m ' + nodeB_prefix + 'NB ended with too many retransmissions / errors issue in UL ! \u001B[0m')
+			logging.debug('\u001B[1;37;41m Status : ' + retx_checker_status_str + ' \u001B[0m')
+			htmleNBFailureMsg += 'Fail due to retransmissions / errors issue in UL, status : ' + retx_checker_status_str + '\n'
+			global_status = CONST.ENB_RETX_ISSUE
+
 		if RealTimeProcessingIssue:
 			logging.debug('\u001B[1;37;41m ' + nodeB_prefix + 'NB ended with real time processing issue! \u001B[0m')
 			htmleNBFailureMsg += 'Fail due to real time processing issue\n'
diff --git a/ci-scripts/reportTestLocally.sh b/ci-scripts/reportTestLocally.sh
index 6ef6b2e254e80f55a60b0706e5555b7f61708f54..d22bfe177a88fa99b271067dc2337b00eb080f81 100755
--- a/ci-scripts/reportTestLocally.sh
+++ b/ci-scripts/reportTestLocally.sh
@@ -756,7 +756,7 @@ function report_test {
         EPC_CONFIGS=("noS1")
         TRANS_MODES=("tdd")
         FR_MODE=("SA")
-        BW_CASES=(106)
+        BW_CASES=(106 24)
         for CN_CONFIG in ${EPC_CONFIGS[@]}
         do
           for TMODE in ${TRANS_MODES[@]}
diff --git a/ci-scripts/runTestOnVM.sh b/ci-scripts/runTestOnVM.sh
index 8be4a47bfa13219686b8bce3c105363f81f44b32..b5abb5ff45257157c0a51fab84527a6ede4eb261 100755
--- a/ci-scripts/runTestOnVM.sh
+++ b/ci-scripts/runTestOnVM.sh
@@ -1401,8 +1401,11 @@ function start_rf_sim_nr_ue {
         elif [ $LOC_RA_SA_TEST -eq 1 ] #RA test => use --do-ra option
         then
             echo "echo \"./nr-uesoftmodem --rfsim --do-ra --log_config.global_log_options level,nocolor,time --rrc_config_path /home/ubuntu/tmp/cmake_targets/ran_build/build/\" > ./my-nr-softmodem-run.sh " >> $1
-        else #SA test => use --sa option
+        elif [ $LOC_RA_SA_TEST -eq 2 ] #SA test 106PRB => use --sa option
+        then
             echo "echo \"./nr-uesoftmodem -r 106 --numerology 1 --band 78 -C 3619200000 --rfsim --sa --log_config.global_log_options level,nocolor,time\" > ./my-nr-softmodem-run.sh " >> $1
+        else # -eq 3 SA test 24PRB 
+           echo "echo \"./nr-uesoftmodem -r 24 -s 24 --numerology 1 --band 78 -C 3604320000 --rfsim --sa --log_config.global_log_options level,nocolor,time\" > ./my-nr-softmodem-run.sh " >> $1
         fi
     fi
     echo "chmod 775 ./my-nr-softmodem-run.sh" >> $1
@@ -2270,7 +2273,7 @@ function run_test_on_vm {
         mkdir --parents $ARCHIVES_LOC
 
         echo "############################################################"
-        echo "SA TEST"
+        echo "SA TEST 106PRB"
         echo "############################################################"
         #SA test, attention : has a different config file from the rest of the test
         CN_CONFIG="noS1"
@@ -2305,7 +2308,7 @@ function run_test_on_vm {
             echo "${CN_CONFIG} : Starting the NR-UE"
             echo "############################################################"
             CURRENT_NR_UE_LOG_FILE=tdd_${PRB}prb_${CN_CONFIG}_ue_sa_test.log
-            #last argument = 2 is to enable --sa for SA test
+            #last argument = 2 is to enable --sa for SA test for 106PRB
             start_rf_sim_nr_ue $NR_UE_VM_CMDS $NR_UE_VM_IP_ADDR $GNB_VM_IP_ADDR $CURRENT_NR_UE_LOG_FILE $PRB $FREQUENCY $S1_NOS1_CFG 2
             if [ $NR_UE_SYNC -eq 0 ]
             then
@@ -2340,9 +2343,94 @@ function run_test_on_vm {
                 echo "SA test NOT OK"
                 echo "try_cnt = " $try_cnt
                 try_cnt=$((try_cnt+1))
+                SA_106PRB_STATUS = -1
+            else
+                echo "SA test OK"
+                try_cnt=$((try_cnt+10))
+                SA_106PRB_STATUS = 0
+            fi
+        done
+        ########### end SA test
+
+        sleep 30
+
+
+        echo "############################################################"
+        echo "SA TEST 24PRB"
+        echo "############################################################"
+        #SA test, attention : has a different config file from the rest of the test
+        CN_CONFIG="noS1"
+        CONF_FILE=gnb.sa.band78.fr1.24PRB.usrpb210.conf
+        S1_NOS1_CFG=0
+        PRB=24
+        FREQUENCY=3600
+
+        if [ ! -d $ARCHIVES_LOC ]
+        then
+            mkdir --parents $ARCHIVES_LOC
+        fi
+
+        local try_cnt=0
+
+        ######### start of SA TEST loop
+        while [ $try_cnt -lt 5 ] #5 because it hardly succeed within CI
+        do
+
+            SYNC_STATUS=0
+            SA_STATUS=0
+            rm -f $ARCHIVES_LOC/tdd_${PRB}prb_${CN_CONFIG}*sa_test.log
+
+            echo "############################################################"
+            echo "${CN_CONFIG} : Starting the gNB"
+            echo "############################################################"
+            CURRENT_GNB_LOG_FILE=tdd_${PRB}prb_${CN_CONFIG}_gnb_sa_test.log
+            #last argument = 2 is to enable --sa for SA test 
+            start_rf_sim_gnb $GNB_VM_CMDS "$GNB_VM_IP_ADDR" $CURRENT_GNB_LOG_FILE $PRB $CONF_FILE $S1_NOS1_CFG 2
+
+            echo "############################################################"
+            echo "${CN_CONFIG} : Starting the NR-UE"
+            echo "############################################################"
+            CURRENT_NR_UE_LOG_FILE=tdd_${PRB}prb_${CN_CONFIG}_ue_sa_test.log
+            #last argument = 3 is to enable --sa for SA test for 24PRB
+            start_rf_sim_nr_ue $NR_UE_VM_CMDS $NR_UE_VM_IP_ADDR $GNB_VM_IP_ADDR $CURRENT_NR_UE_LOG_FILE $PRB $FREQUENCY $S1_NOS1_CFG 3
+            if [ $NR_UE_SYNC -eq 0 ]
+            then
+                echo "Problem w/ gNB and NR-UE not syncing"
+                terminate_enb_ue_basic_sim $NR_UE_VM_CMDS $NR_UE_VM_IP_ADDR 2
+                terminate_enb_ue_basic_sim $GNB_VM_CMDS $GNB_VM_IP_ADDR 1
+                scp -o StrictHostKeyChecking=no ubuntu@$GNB_VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_GNB_LOG_FILE $ARCHIVES_LOC
+                scp -o StrictHostKeyChecking=no ubuntu@$NR_UE_VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_NR_UE_LOG_FILE $ARCHIVES_LOC
+                SYNC_STATUS=-1
+                try_cnt=$((try_cnt+1))
+                continue
+            fi
+
+            echo "############################################################"
+            echo "${CN_CONFIG} : Terminate gNB/NR-UE simulators"
+            echo "############################################################"
+            sleep 20
+            terminate_enb_ue_basic_sim $NR_UE_VM_CMDS $NR_UE_VM_IP_ADDR 2
+            terminate_enb_ue_basic_sim $GNB_VM_CMDS $GNB_VM_IP_ADDR 1
+            scp -o StrictHostKeyChecking=no ubuntu@$GNB_VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_GNB_LOG_FILE $ARCHIVES_LOC
+            scp -o StrictHostKeyChecking=no ubuntu@$NR_UE_VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_NR_UE_LOG_FILE $ARCHIVES_LOC
+
+            #check SA markers in gNB and NR UE log files
+            echo "############################################################"
+            echo "${CN_CONFIG} : Checking SA on gNB / NR-UE"
+            echo "############################################################"
+
+            # Proper check to be done when SA test is working!
+            check_sa_result $ARCHIVES_LOC/$CURRENT_GNB_LOG_FILE $ARCHIVES_LOC/$CURRENT_NR_UE_LOG_FILE
+            if [ $SA_STATUS -ne 0 ]
+            then
+                echo "SA test NOT OK"
+                echo "try_cnt = " $try_cnt
+                try_cnt=$((try_cnt+1))
+                SA_24PRB_STATUS = -1
             else
                 echo "SA test OK"
                 try_cnt=$((try_cnt+10))
+                SA_24PRB_STATUS = 0
             fi
         done
         ########### end SA test
@@ -2351,6 +2439,9 @@ function run_test_on_vm {
 
 
 
+
+
+
         echo "############################################################"
         echo "RA TEST FR2"
         echo "############################################################"
@@ -2661,7 +2752,8 @@ function run_test_on_vm {
         echo "Checking run status"
         echo "############################################################"
 
-        if [ $SA_STATUS -ne 0 ]; then NR_STATUS=-1; fi     
+        if [ $SA_106PRB_STATUS -ne 0 ]; then NR_STATUS=-1; fi 
+        if [ $SA_24PRB_STATUS -ne 0 ]; then NR_STATUS=-1; fi  
         if [ $RA_FR2_STATUS -ne 0 ]; then NR_STATUS=-1; fi        
         if [ $RA_FR1_STATUS -ne 0 ]; then NR_STATUS=-1; fi
         if [ $SYNC_STATUS -ne 0 ]; then NR_STATUS=-1; fi
diff --git a/ci-scripts/stats_monitor_conf.yaml b/ci-scripts/stats_monitor_conf.yaml
index 8760c067fccf2cd7cf7f8a7f10cae9547d863511..9a2ececd1833b93072844d6668a8120ecb50a307 100644
--- a/ci-scripts/stats_monitor_conf.yaml
+++ b/ci-scripts/stats_monitor_conf.yaml
@@ -20,8 +20,7 @@ gnb :
     feptx_prec:
     feptx_ofdm:
     feptx_total:
-    L1 Tx processing thread 0:
-    L1 Tx processing thread 1:
+    L1 Tx processing:
     DLSCH encoding:
     L1 Rx processing:
     PUSCH inner-receiver:
@@ -40,12 +39,11 @@ gnb :
       rt.feptx_ofdm:
       rt.feptx_total:
     page3:
-      rt.L1 Tx processing thread 0:
-      rt.L1 Tx processing thread 1:
+      rt.L1 Tx processing:
       rt.DLSCH encoding:
       rt.L1 Rx processing:
     page4:
       rt.PUSCH inner-receiver:
       rt.PUSCH decoding:
       rt.DL & UL scheduling timing stats:
-      rt.UL Indication:
\ No newline at end of file
+      rt.UL Indication:
diff --git a/ci-scripts/xml_files/container_5g_f1_rfsim.xml b/ci-scripts/xml_files/container_5g_f1_rfsim.xml
index fc24a3d67c50eb2a76827f47fcfc402fd13b6058..05b20afed3a568c4a48d4292a91642f20f63ef29 100644
--- a/ci-scripts/xml_files/container_5g_f1_rfsim.xml
+++ b/ci-scripts/xml_files/container_5g_f1_rfsim.xml
@@ -116,6 +116,8 @@
                 <class>UndeployGenObject</class>
                 <desc>Undeploy all OAI 5G stack</desc>
                 <yaml_path>yaml_files/5g_f1_rfsimulator</yaml_path>
+                <d_retx_th>5,0,0,0</d_retx_th>
+                <u_retx_th>5,0,0,0</u_retx_th>
         </testCase>
 
 </testCaseList>
diff --git a/ci-scripts/xml_files/container_5g_fdd_rfsim.xml b/ci-scripts/xml_files/container_5g_fdd_rfsim.xml
index 28269b2d038e92c49646c8b381797f081a9f4f8f..61a2af9e54b63064fc1e52270613dc7ff3a492bd 100644
--- a/ci-scripts/xml_files/container_5g_fdd_rfsim.xml
+++ b/ci-scripts/xml_files/container_5g_fdd_rfsim.xml
@@ -111,6 +111,8 @@
                 <class>UndeployGenObject</class>
                 <desc>Undeploy all OAI 5G stack</desc>
                 <yaml_path>yaml_files/5g_fdd_rfsimulator</yaml_path>
+                <d_retx_th>5,0,0,0</d_retx_th>
+                <u_retx_th>5,0,0,0</u_retx_th>
         </testCase>
 
 </testCaseList>
diff --git a/ci-scripts/xml_files/container_5g_rfsim.xml b/ci-scripts/xml_files/container_5g_rfsim.xml
index 7485b1f8ba6a951f1da104a866666d4d769c9dff..bab7f9637ad3ef6b187cec5e9edfd80deefca6d4 100644
--- a/ci-scripts/xml_files/container_5g_rfsim.xml
+++ b/ci-scripts/xml_files/container_5g_rfsim.xml
@@ -109,6 +109,8 @@
                 <class>UndeployGenObject</class>
                 <desc>Undeploy all OAI 5G stack</desc>
                 <yaml_path>yaml_files/5g_rfsimulator</yaml_path>
+                <d_retx_th>5,0,0,0</d_retx_th>
+                <u_retx_th>5,0,0,0</u_retx_th>
         </testCase>
 
 </testCaseList>
diff --git a/ci-scripts/xml_files/fr1_sa_quectel_162prb.xml b/ci-scripts/xml_files/fr1_sa_quectel_162prb.xml
index 23cc6d25b8415bb7937007f197bc9d842e5b5b38..f756083ea6668bf28e64b1fc9d6c357b1410cc29 100644
--- a/ci-scripts/xml_files/fr1_sa_quectel_162prb.xml
+++ b/ci-scripts/xml_files/fr1_sa_quectel_162prb.xml
@@ -96,8 +96,8 @@
 
 	<testCase id="072000">
 		<class>Iperf</class>
-		<desc>iperf (DL/140Mbps/UDP)(60 sec)(single-ue profile)</desc>
-		<iperf_args>-u -b 140M -t 60</iperf_args>
+		<desc>iperf (DL/200Mbps/UDP)(60 sec)(single-ue profile)</desc>
+		<iperf_args>-u -b 200M -t 60</iperf_args>
 		<direction>DL</direction>
 		<id>nrmodule2_quectel</id>
 		<iperf_packetloss_threshold>50</iperf_packetloss_threshold>
diff --git a/ci-scripts/xml_files/fr1_sa_quectel_stages.xml b/ci-scripts/xml_files/fr1_sa_quectel_stages.xml
index 3e497ede13caa63b094799b4d44a63406819cf92..0ab8bf6b0845f4a67f37196c84a61ca24ebc2483 100644
--- a/ci-scripts/xml_files/fr1_sa_quectel_stages.xml
+++ b/ci-scripts/xml_files/fr1_sa_quectel_stages.xml
@@ -42,6 +42,8 @@
  000001
  071004
  000001
+ 071005
+ 000001
  011002
  081000
 	</TestCaseRequestedList>
@@ -148,7 +150,16 @@
 		<iperf_bitrate_threshold>90</iperf_bitrate_threshold>
 		<iperf_profile>single-ue</iperf_profile>
 	</testCase>
-
+	<testCase id="071005">
+		<class>Iperf</class>
+		<desc>iperf (DL/130Mbps/UDP)(30 sec)(single-ue profile)</desc>
+		<iperf_args>-u -b 130M -t 30</iperf_args>
+		<direction>DL</direction>
+		<id>nrmodule2_quectel</id>
+		<iperf_packetloss_threshold>50</iperf_packetloss_threshold>
+		<iperf_bitrate_threshold>50</iperf_bitrate_threshold>
+		<iperf_profile>single-ue</iperf_profile>
+	</testCase>
 
 
 	<testCase id="081000">
diff --git a/cmake_targets/CMakeLists.txt b/cmake_targets/CMakeLists.txt
index 82022da78f3dfa9786471d94913bb9cf58a3f032..ffc2e26dc5840e9e9dff7e0c82841f8705c08976 100644
--- a/cmake_targets/CMakeLists.txt
+++ b/cmake_targets/CMakeLists.txt
@@ -21,8 +21,10 @@
 
 # Author: laurent THOMAS, Lionel GAUTHIER
 
-cmake_minimum_required (VERSION 3.0)
+cmake_minimum_required (VERSION 2.8)
+project (OpenAirInterface LANGUAGES C CXX)
 
+include("macros.cmake")
 
 # System packages that are required
 # We use either the cmake buildin, in ubuntu are in: /usr/share/cmake*/Modules/
@@ -48,6 +50,7 @@ include_directories(${CRYPTO_INCLUDE_DIRS})
 #uhd 4.0 and iris installs by default in /usr/local
 include_directories("/usr/local/include/")
 #use native cmake method as this package is not in pkg-config
+add_list2_option(RF_BOARD "None" "RF head type" "None" "OAI_USRP" "OAI_BLADERF" "OAI_LMSSDR" "OAI_SIMU" "EXMIMO")
 if (${RF_BOARD} STREQUAL "OAI_USRP")
   find_package(Boost REQUIRED)
   include_directories(${LIBBOOST_INCLUDE_DIR})
@@ -184,106 +187,6 @@ else (CUDA_FOUND)
    message ("No CUDA tool installed")
 endif ()
 
-
-###########################################
-# macros to define options as there is numerous options in oai
-################################################
-macro(add_option name val helpstr)
-  if(DEFINED ${name})
-    set(value ${${name}})
-  else(DEFINED ${name})
-    set(value ${val})
-  endif()
-  set(${name} ${value} CACHE STRING "${helpstr}")
-  add_definitions("-D${name}=${value}")
-endmacro(add_option)
-
-macro(add_boolean_option name val helpstr)
-  if(DEFINED ${name})
-    set(value ${${name}})
-  else(DEFINED ${name})
-    set(value ${val})
-  endif()
-  set(${name} ${value} CACHE STRING "${helpstr}")
-  set_property(CACHE ${name} PROPERTY TYPE BOOL)
-  if (${value})
-    add_definitions("-D${name}")
-  endif (${value})
-endmacro(add_boolean_option)
-
-macro(add_integer_option name val helpstr)
-  if(DEFINED ${name})
-    set(value ${${name}})
-  else(DEFINED ${name})
-    set(value ${val})
-  endif()
-  set(${name} ${value} CACHE STRING "${helpstr}")
-  add_definitions("-D${name}=${value}")
-endmacro(add_integer_option)
-
-macro(add_list1_option name val helpstr)
-  if(DEFINED ${name})
-    set(value ${${name}})
-  else(DEFINED ${name})
-    set(value ${val})
-  endif()
-  set(${name} ${value} CACHE STRING "${helpstr}")
-  set_property(CACHE ${name} PROPERTY STRINGS ${ARGN})
-  if(NOT "${value}" STREQUAL "False")
-    add_definitions("-D${name}=${value}")
-  endif()
-endmacro(add_list1_option)
-
-macro(add_list2_option name val helpstr)
-  if(DEFINED ${name})
-    set(value ${${name}})
-  else(DEFINED ${name})
-    set(value ${val})
-  endif()
-  set(${name} ${value} CACHE STRING "${helpstr}")
-  set_property(CACHE ${name} PROPERTY STRINGS ${ARGN})
-  if(NOT "${value}" STREQUAL "False")
-    add_definitions("-D${value}=1")
-  endif()
-endmacro(add_list2_option)
-
-macro(add_list_string_option name val helpstr)
-  if(DEFINED ${name})
-    set(value ${${name}})
-  else(DEFINED ${name})
-    set(value ${val})
-  endif()
-  set(${name} ${value} CACHE STRING "${helpstr}")
-  set_property(CACHE ${name} PROPERTY STRINGS ${ARGN})
-  if(NOT "${value}" STREQUAL "False")
-    add_definitions("-D${name}=\"${value}\"")
-  endif()
-endmacro(add_list_string_option)
-
-# this function should produce the same value as the macro MAKE_VERSION defined in the C code (file types.h)
-function(make_version VERSION_VALUE)
-  math(EXPR RESULT "0")
-  foreach (ARG ${ARGN})
-    math(EXPR RESULT "${RESULT} * 16 + ${ARG}")
-  endforeach()
-  set(${VERSION_VALUE} "${RESULT}" PARENT_SCOPE)
-endfunction()
-
-macro(compile_asn1 asn1Source asn1cCmd ResultFlag)
-   # Warning: if you modify ASN.1 source file to generate new C files, cmake should be re-run instead of make
-   execute_process(COMMAND ${asn1cCmd}  ${asn1Source} RESULT_VARIABLE ret)
-
-   if (NOT ${ret} STREQUAL 0)
-      message(FATAL_ERROR "${ret}: error")
-   endif (NOT ${ret} STREQUAL 0)
-
-   add_custom_target (
-     ${ResultFlag} ALL
-     ${asn1cCmd} ${asn1Source}
-     DEPENDS ${asn1Source}
-   )
-endmacro(compile_asn1)
-
 ####################################################
 # compilation flags
 #############################################
@@ -341,10 +244,10 @@ set(CMAKE_CXX_FLAGS
   "${CMAKE_CXX_FLAGS} ${C_FLAGS_PROCESSOR}  ${commonOpts} -std=c++11")
 
 
-
+add_boolean_option(SANITIZE_ADDRESS False "enable the address sanitizer (ASan)")
 if (SANITIZE_ADDRESS)
-  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address -fno-omit-frame-pointer -static-libasan -fno-common")
-  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address -fno-omit-frame-pointer -static-libasan -fno-common")
+  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address -fno-omit-frame-pointer -fno-common")
+  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address -fno-omit-frame-pointer -fno-common")
 endif ()
 
 add_definitions("-DASN_DISABLE_OER_SUPPORT")
@@ -786,23 +689,14 @@ add_library(F1AP ${F1AP_C_FILES} )
 add_list1_option(NB_ANTENNAS_RX "4" "Number of antennas in reception" "1" "2" "4")
 add_list1_option(NB_ANTENNAS_TX "4" "Number of antennas in transmission" "1" "2" "4")
 
-add_list2_option(RF_BOARD "EXMIMO" "RF head type" "None" "OAI_USRP" "OAI_BLADERF" "OAI_LMSSDR" "OAI_SIMU")
-
-add_list2_option(TRANSP_PRO "None" "Transport protocol type" "None" "ETHERNET")
 #NOKIA config enhancement
-set (CONFIG_ROOTDIR
-  ${OPENAIR_DIR}/common/config
-  )
-set (CONFIG_SOURCES
+set (CONFIG_ROOTDIR ${OPENAIR_DIR}/common/config)
+add_library(CONFIG_LIB
   ${CONFIG_ROOTDIR}/config_load_configmodule.c
   ${CONFIG_ROOTDIR}/config_userapi.c
   ${CONFIG_ROOTDIR}/config_cmdline.c
-  )
-set (CONFIG_LIBCONFIG_SOURCES
-  ${CONFIG_ROOTDIR}/libconfig/config_libconfig.c
-  )
-add_library(CONFIG_LIB ${CONFIG_SOURCES})
-add_library(params_libconfig MODULE ${CONFIG_LIBCONFIG_SOURCES} )
+)
+add_library(params_libconfig MODULE ${CONFIG_ROOTDIR}/libconfig/config_libconfig.c)
 target_link_libraries(params_libconfig config)
 # shared library loader
 set (SHLIB_LOADER_SOURCES
@@ -1261,15 +1155,6 @@ set(FSPT_MSG_LIB FSPT_MSG)
 message("fspt c dir is : ${FSPT_C_DIR}")
 include_directories (${FSPT_C_DIR})
 
-#  add_library(ASYNC_IF
-#    ${OPENAIR2_DIR}/UTIL/ASYNC_IF/socket_link.c
-#    ${OPENAIR2_DIR}/UTIL/ASYNC_IF/link_manager.c
-#    ${OPENAIR2_DIR}/UTIL/ASYNC_IF/message_queue.c
-#    ${OPENAIR2_DIR}/UTIL/ASYNC_IF/ringbuffer_queue.c
-#    )
-#  set(ASYNC_IF_LIB ASYNC_IF)
-#  include_directories(${OPENAIR2_DIR}/UTIL/ASYNC_IF)
-
 set(PROTOBUF_LIB "protobuf-c")
 
 #set(PROTOBUF_LIB "protobuf") #for Cpp
@@ -1280,55 +1165,19 @@ add_library(HASHTABLE
 )
 include_directories(${OPENAIR_DIR}/common/utils/hashtable)
 
-set(UTIL_SRC
-  #  ${OPENAIR2_DIR}/UTIL/CLI/cli.c
-  #  ${OPENAIR2_DIR}/UTIL/CLI/cli_cmd.c
-  #  ${OPENAIR2_DIR}/UTIL/CLI/cli_server.c
-  ${OPENAIR2_DIR}/UTIL/FIFO/pad_list.c
+add_library(UTIL
   ${OPENAIR2_DIR}/UTIL/LISTS/list.c
   ${OPENAIR2_DIR}/UTIL/LISTS/list2.c
   ${OPENAIR_DIR}/common/utils/LOG/log.c
   ${OPENAIR_DIR}/common/utils/LOG/vcd_signal_dumper.c
   ${OPENAIR2_DIR}/UTIL/MATH/oml.c
-  #  ${OPENAIR2_DIR}/UTIL/MEM/mem_block.c
-  #  ${OPENAIR2_DIR}/UTIL/OCG/OCG.c
-  #  ${OPENAIR2_DIR}/UTIL/OCG/OCG_create_dir.c
-  #  ${OPENAIR2_DIR}/UTIL/OCG/OCG_detect_file.c
-  #  ${OPENAIR2_DIR}/UTIL/OCG/OCG_generate_report.c
-  #  ${OPENAIR2_DIR}/UTIL/OCG/OCG_parse_filename.c
-  #  ${OPENAIR2_DIR}/UTIL/OCG/OCG_parse_XML.c
-  #  ${OPENAIR2_DIR}/UTIL/OCG/OCG_save_XML.c
-  #  ${OPENAIR2_DIR}/UTIL/OMG/common.c
-  #  ${OPENAIR2_DIR}/UTIL/OMG/grid.c
-  #  ${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/rwalk.c
-  #  ${OPENAIR2_DIR}/UTIL/OMG/rwp.c
-  #  ${OPENAIR2_DIR}/UTIL/OMG/static.c
-  #  ${OPENAIR2_DIR}/UTIL/OMG/steadystaterwp.c
-  #  ${OPENAIR2_DIR}/UTIL/OMG/trace.c
-  #  ${OPENAIR2_DIR}/UTIL/OMG/trace_hashtable.c
   ${OPENAIR2_DIR}/UTIL/OPT/probe.c
-  #  ${OPENAIR2_DIR}/UTIL/OTG/otg_tx.c
-  #  ${OPENAIR2_DIR}/UTIL/OTG/otg.c
-  #  ${OPENAIR2_DIR}/UTIL/OTG/otg_kpi.c
-  #  ${OPENAIR2_DIR}/UTIL/OTG/otg_models.c
-  #  ${OPENAIR2_DIR}/UTIL/OTG/otg_form.c
-  #  ${OPENAIR2_DIR}/UTIL/OTG/otg_rx.c
-  )
-add_library(UTIL ${UTIL_SRC})
-add_dependencies(UTIL rrc_flag)
-
-#set(OMG_SUMO_SRC
-#  ${OPENAIR2_DIR}/UTIL/OMG/client_traci_OMG.c
-#  ${OPENAIR2_DIR}/UTIL/OMG/id_manager.c
-#  ${OPENAIR2_DIR}/UTIL/OMG/sumo.c
-#  ${OPENAIR2_DIR}/UTIL/OMG/socket_traci_OMG.c
-#  ${OPENAIR2_DIR}/UTIL/OMG/storage_traci_OMG.c
-#  )
-#add_library(OMG_SUMO ${OMG_SUMO_SRC})
+  ${OPENAIR_DIR}/common/utils/threadPool/thread-pool.c
+  ${OPENAIR_DIR}/common/utils/utils.c
+  ${OPENAIR_DIR}/common/utils/system.c
+  ${OPENAIR_DIR}/common/utils/backtrace.c
+  ${OPENAIR_DIR}/common/utils/time_meas.c
+)
 
 set(SECU_OSA_SRC
   ${OPENAIR2_DIR}/UTIL/OSA/osa_key_deriver.c
@@ -1591,7 +1440,6 @@ set(PHY_SRC_COMMON
   ${OPENAIR1_DIR}/PHY/TOOLS/signal_energy.c
   ${OPENAIR1_DIR}/PHY/TOOLS/dB_routines.c
   ${OPENAIR1_DIR}/PHY/TOOLS/sqrt.c
-  ${OPENAIR1_DIR}/PHY/TOOLS/time_meas.c
   ${OPENAIR1_DIR}/PHY/TOOLS/lut.c
   )
 
@@ -1728,7 +1576,6 @@ set(PHY_SRC_UE
   ${OPENAIR1_DIR}/PHY/TOOLS/signal_energy.c
   ${OPENAIR1_DIR}/PHY/TOOLS/dB_routines.c
   ${OPENAIR1_DIR}/PHY/TOOLS/sqrt.c
-  ${OPENAIR1_DIR}/PHY/TOOLS/time_meas.c
   ${OPENAIR1_DIR}/PHY/TOOLS/lut.c
   ${PHY_POLARSRC}
   ${PHY_SMALLBLOCKSRC}
@@ -1782,7 +1629,6 @@ set(PHY_SRC_UE
   ${OPENAIR1_DIR}/PHY/TOOLS/signal_energy.c
   ${OPENAIR1_DIR}/PHY/TOOLS/dB_routines.c
   ${OPENAIR1_DIR}/PHY/TOOLS/sqrt.c
-  ${OPENAIR1_DIR}/PHY/TOOLS/time_meas.c
   ${OPENAIR1_DIR}/PHY/TOOLS/lut.c
   ${OPENAIR1_DIR}/PHY/INIT/nr_init_ue.c
   #  ${OPENAIR1_DIR}/SIMULATION/NR_UE_PHY/unit_tests/src/pucch_uci_test.c
@@ -2010,6 +1856,7 @@ set(NR_L2_SRC_UE
   ${NR_SDAP_SRC}
   ${NR_UE_RRC_DIR}/L2_interface_ue.c
   ${NR_UE_RRC_DIR}/main_ue.c
+  ${NR_RRC_DIR}/nr_rrc_config.c
   ${NR_UE_RRC_DIR}/rrc_UE.c
   ${NR_UE_RRC_DIR}/rrc_nsa.c
   )
@@ -2701,7 +2548,7 @@ add_library(minimal_lib
   ${OPENAIR_DIR}/common/utils/minimal_stub.c
   ${T_SOURCE}
   )
-target_link_libraries(minimal_lib pthread dl ${T_LIB} ${CONFIG_LIB})
+target_link_libraries(minimal_lib pthread dl ${T_LIB} CONFIG_LIB)
 
 add_executable(nfapi_test
   ${OPENAIR_DIR}/openair2/NR_PHY_INTERFACE/nfapi_5g_test.c
@@ -2730,7 +2577,6 @@ add_executable(lte-softmodem
   ${OPENAIR_TARGETS}/RT/USER/lte-ru.c
   ${OPENAIR_TARGETS}/RT/USER/ru_control.c
   ${OPENAIR_TARGETS}/RT/USER/lte-softmodem.c
-  ${OPENAIR_DIR}/common/utils/threadPool/thread-pool.c
   ${OPENAIR_DIR}/executables/softmodem-common.c
   ${OPENAIR2_DIR}/ENB_APP/NB_IoT_interface.c
   ${OPENAIR1_DIR}/SIMULATION/TOOLS/taus.c
@@ -2745,14 +2591,11 @@ add_executable(lte-softmodem
   ${OPENAIR1_DIR}/SIMULATION/ETH_TRANSPORT/multicast_link.c
   ${OPENAIR1_DIR}/SIMULATION/ETH_TRANSPORT/socket.c
   ${OPENAIR3_DIR}/NAS/UE/nas_ue_task.c
-  ${OPENAIR_DIR}/common/utils/utils.c
-  ${OPENAIR_DIR}/common/utils/system.c
   ${PHY_INTERFACE_DIR}/queue_t.c
   ${OPENAIR_DIR}/common/utils/lte/ue_power.c
   ${OPENAIR_DIR}/common/utils/lte/prach_utils.c
   ${XFORMSINTERFACE_SOURCE}
   ${T_SOURCE}
-  ${CONFIG_SOURCES}
   ${SHLIB_LOADER_SOURCES}
   )
 add_dependencies(lte-softmodem rrc_flag s1ap_flag x2_flag oai_iqplayer)
@@ -2765,14 +2608,13 @@ target_link_libraries (lte-softmodem
   -Wl,--end-group z dl)
 
 target_link_libraries (lte-softmodem ${LIBXML2_LIBRARIES})
-target_link_libraries (lte-softmodem pthread m ${CONFIG_LIB} rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} sctp ${PROTOBUF_LIB}  ${CMAKE_DL_LIBS} ${LIBYAML_LIBRARIES})
+target_link_libraries (lte-softmodem pthread m CONFIG_LIB rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} sctp ${PROTOBUF_LIB}  ${CMAKE_DL_LIBS} ${LIBYAML_LIBRARIES})
 target_link_libraries (lte-softmodem ${LIB_LMS_LIBRARIES})
 target_link_libraries (lte-softmodem ${T_LIB})
 
 
 add_executable(ocp-enb
   ${OPENAIR_DIR}/executables/main-ocp.c
-  ${OPENAIR_DIR}/common/utils/threadPool/thread-pool.c
   ${OPENAIR_DIR}/executables/softmodem-common.c
   ${OPENAIR_DIR}/executables/main-fs6.c
   ${OPENAIR_DIR}/executables/transport_split.c
@@ -2788,14 +2630,11 @@ add_executable(ocp-enb
   ${OPENAIR1_DIR}/SIMULATION/ETH_TRANSPORT/multicast_link.c
   ${OPENAIR1_DIR}/SIMULATION/ETH_TRANSPORT/socket.c
   ${OPENAIR3_DIR}/NAS/UE/nas_ue_task.c
-  ${OPENAIR_DIR}/common/utils/utils.c
-  ${OPENAIR_DIR}/common/utils/system.c
   ${OPENAIR_DIR}/common/utils/lte/ue_power.c
   ${OPENAIR_DIR}/common/utils/lte/prach_utils.c
   ${PHY_INTERFACE_DIR}/queue_t.c
   ${XFORMSINTERFACE_SOURCE}
   ${T_SOURCE}
-  ${CONFIG_SOURCES}
   ${SHLIB_LOADER_SOURCES}
   )
 add_dependencies(ocp-enb rrc_flag s1ap_flag x2_flag oai_iqplayer coding params_libconfig rfsimulator)
@@ -2807,7 +2646,7 @@ target_link_libraries (ocp-enb
   PHY_COMMON PHY PHY_RU LFDS L2 L2_LTE NFAPI_COMMON_LIB NFAPI_LIB MISC_NFAPI_LTE_LIB NFAPI_VNF_LIB NFAPI_PNF_LIB NFAPI_USER_LIB LFDS7 SIMU_COMMON
   ${RAL_LIB} ${NAS_UE_LIB} ITTI ${FLPT_MSG_LIB} ${ASYNC_IF_LIB} ${FLEXRAN_AGENT_LIB} ${FSPT_MSG_LIB}
   -Wl,--end-group z dl)
-target_link_libraries (ocp-enb ${LIBXML2_LIBRARIES} pthread m ${CONFIG_LIBRARIES} rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} sctp ${PROTOBUF_LIB}  ${CMAKE_DL_LIBS} ${LIBYAML_LIBRARIES} ${LIB_LMS_LIBRARIES} ${T_LIB})
+target_link_libraries (ocp-enb ${LIBXML2_LIBRARIES} pthread m CONFIG_LIB rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} sctp ${PROTOBUF_LIB}  ${CMAKE_DL_LIBS} ${LIBYAML_LIBRARIES} ${LIB_LMS_LIBRARIES} ${T_LIB})
 
 add_executable(oairu
   ${OPENAIR_TARGETS}/RT/USER/lte-ru.c
@@ -2816,23 +2655,18 @@ add_executable(oairu
   ${OPENAIR_TARGETS}/ARCH/COMMON/record_player.c
   ${OPENAIR_DIR}/executables/softmodem-common.c
   ${OPENAIR_DIR}/openair1/SCHED/phy_procedures_lte_common.c
-  ${OPENAIR_DIR}/common/utils/threadPool/thread-pool.c
   ${OPENAIR_DIR}/executables/main_ru.c
   ${T_SOURCE}
-  ${OPENAIR_DIR}/common/utils/LOG/log.c
-  ${CONFIG_SOURCES}
-  ${OPENAIR_DIR}/common/utils/utils.c
-  ${OPENAIR_DIR}/common/utils/system.c
   ${OPENAIR_DIR}/common/utils/lte/prach_utils.c
   ${SHLIB_LOADER_SOURCES}
 )
 target_link_libraries (oairu
   -Wl,--start-group
   SCHED_RU_LIB
-  PHY_COMMON PHY_RU
+  PHY_COMMON PHY_RU UTIL
   -Wl,--end-group z dl)
 
-target_link_libraries (oairu pthread m ${CONFIG_LIB} rt ${CMAKE_DL_LIBS} ${T_LIB})
+target_link_libraries (oairu pthread m CONFIG_LIB rt ${CMAKE_DL_LIBS} ${T_LIB})
 
 
 # lte-uesoftmodem is  UE implementation
@@ -2851,13 +2685,10 @@ add_executable(lte-uesoftmodem
   ${OPENAIR1_DIR}/SIMULATION/ETH_TRANSPORT/multicast_link.c
   ${OPENAIR1_DIR}/SIMULATION/ETH_TRANSPORT/socket.c
   ${OPENAIR3_DIR}/NAS/UE/nas_ue_task.c
-  ${OPENAIR_DIR}/common/utils/utils.c
-  ${OPENAIR_DIR}/common/utils/system.c
   ${OPENAIR_DIR}/common/utils/lte/ue_power.c
   ${OPENAIR_DIR}/common/utils/lte/prach_utils.c
   ${XFORMSINTERFACE_SOURCE}
   ${T_SOURCE}
-  ${CONFIG_SOURCES}
   ${SHLIB_LOADER_SOURCES}
   )
 
@@ -2875,7 +2706,7 @@ target_link_libraries (lte-uesoftmodem
   -Wl,--end-group z dl)
 
 target_link_libraries (lte-uesoftmodem ${LIBXML2_LIBRARIES})
-target_link_libraries (lte-uesoftmodem pthread m ${CONFIG_LIB} rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} sctp ${CMAKE_DL_LIBS} ${LIBYAML_LIBRARIES} ${ATLAS_LIBRARIES})
+target_link_libraries (lte-uesoftmodem pthread m CONFIG_LIB rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} sctp ${CMAKE_DL_LIBS} ${LIBYAML_LIBRARIES} ${ATLAS_LIBRARIES})
 target_link_libraries (lte-uesoftmodem ${LIB_LMS_LIBRARIES})
 target_link_libraries (lte-uesoftmodem ${T_LIB})
 
@@ -2888,7 +2719,6 @@ add_executable(nr-softmodem
   ${s1ap_h}
 #  ${OPENAIR_BIN_DIR}/messages_xml.h
   ${OPENAIR_DIR}/executables/nr-gnb.c
-  ${OPENAIR_DIR}/common/utils/threadPool/thread-pool.c
   ${OPENAIR_DIR}/executables/nr-ru.c
   ${OPENAIR_DIR}/executables/nr-softmodem.c
   ${OPENAIR_DIR}/executables/softmodem-common.c
@@ -2898,15 +2728,12 @@ add_executable(nr-softmodem
   ${OPENAIR2_DIR}/RRC/NAS/nas_config.c
   ${OPENAIR2_DIR}/RRC/NAS/rb_config.c
   ${OPENAIR1_DIR}/SIMULATION/ETH_TRANSPORT/netlink_init.c
-  ${OPENAIR_DIR}/common/utils/utils.c
-  ${OPENAIR_DIR}/common/utils/system.c
   ${OPENAIR_DIR}/common/utils/lte/ue_power.c
   ${OPENAIR_DIR}/common/utils/lte/prach_utils.c
   ${OPENAIR_DIR}/common/utils/nr/nr_common.c
   ${PHY_INTERFACE_DIR}/queue_t.c
   ${XFORMSINTERFACE_SOURCE}
   ${T_SOURCE}
-  ${CONFIG_SOURCES}
   ${SHLIB_LOADER_SOURCES}
   ${OPENAIR2_DIR}/ENB_APP/flexran_agent_ran_api_to_fix.c
   )
@@ -2920,52 +2747,12 @@ target_link_libraries (nr-softmodem
   -Wl,--end-group z dl)
 
 target_link_libraries (nr-softmodem ${LIBXML2_LIBRARIES})
-target_link_libraries (nr-softmodem pthread m ${CONFIG_LIB} rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} sctp  ${XFORMS_LIBRARIES} ${PROTOBUF_LIB}  ${CMAKE_DL_LIBS} ${LIBYAML_LIBRARIES} ${ATLAS_LIBRARIES})
+target_link_libraries (nr-softmodem pthread m CONFIG_LIB rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} sctp  ${XFORMS_LIBRARIES} ${PROTOBUF_LIB}  ${CMAKE_DL_LIBS} ${LIBYAML_LIBRARIES} ${ATLAS_LIBRARIES})
 target_link_libraries (nr-softmodem ${LIB_LMS_LIBRARIES})
 target_link_libraries (nr-softmodem ${T_LIB})
 
 add_dependencies( nr-softmodem ldpc_orig ldpc_optim ldpc_optim8seg ldpc )
 
-add_executable(ocp-gnb
-  ${rrc_h}
-  ${nr_rrc_h}
-  ${s1ap_h}
-#  ${OPENAIR_BIN_DIR}/messages_xml.h
-  ${OPENAIR_DIR}/executables/ocp-gnb.c
-  ${OPENAIR_DIR}/common/utils/threadPool/thread-pool.c
-  ${OPENAIR_DIR}/executables/softmodem-common.c
-  ${OPENAIR1_DIR}/SIMULATION/TOOLS/taus.c
-  ${OPENAIR_TARGETS}/ARCH/COMMON/common_lib.c
-  ${OPENAIR_TARGETS}/ARCH/COMMON/record_player.c
-  ${OPENAIR2_DIR}/RRC/NAS/nas_config.c
-  ${OPENAIR2_DIR}/RRC/NAS/rb_config.c
-  ${OPENAIR1_DIR}/SIMULATION/ETH_TRANSPORT/netlink_init.c
-  ${OPENAIR_DIR}/common/utils/nr/nr_common.c
-  ${OPENAIR_DIR}/common/utils/utils.c
-  ${OPENAIR_DIR}/common/utils/system.c
-  ${PHY_INTERFACE_DIR}/queue_t.c
-  ${XFORMS_SOURCE_NR}
-  ${T_SOURCE}
-  ${CONFIG_SOURCES}
-  ${SHLIB_LOADER_SOURCES}
-  ${XFORMSINTERFACE_SOURCE}
-  )
-
-target_link_libraries (ocp-gnb
-  -Wl,--start-group
-  UTIL HASHTABLE SCTP_CLIENT SCHED_LIB SCHED_RU_LIB SCHED_NR_LIB PHY_NR PHY PHY_COMMON PHY_NR_COMMON PHY_RU LFDS GTPV1U SECU_CN SECU_OSA
-  ITTI ${FLPT_MSG_LIB} ${ASYNC_IF_LIB} LFDS7 ${RAL_LIB} ${NAS_UE_LIB} RRC_LIB NR_RRC_LIB
-  NGAP_LIB NGAP_GNB S1AP_LIB S1AP_ENB L2_LTE_NR L2_NR MAC_NR_COMMON NFAPI_COMMON_LIB NFAPI_LIB NFAPI_VNF_LIB NFAPI_PNF_LIB NFAPI_USER_LIB
-  X2AP_LIB X2AP_ENB F1AP_LIB F1AP M2AP_LIB M2AP_ENB M3AP_LIB M3AP_ENB SIMU_COMMON
-  -Wl,--end-group z dl)
-
-target_link_libraries (ocp-gnb ${LIBXML2_LIBRARIES} )
-target_link_libraries (ocp-gnb pthread m ${CONFIG_LIB} rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} sctp  ${XFORMS_LIBRARIES} ${PROTOBUF_LIB}  ${CMAKE_DL_LIBS} ${LIBYAML_LIBRARIES} ${ATLAS_LIBRARIES})
-target_link_libraries (ocp-gnb ${LIB_LMS_LIBRARIES})
-target_link_libraries (ocp-gnb ${T_LIB})
-add_dependencies(ocp-gnb ldpc_orig ldpc_optim ldpc_optim8seg ldpc params_libconfig rfsimulator oai_usrpdevif rfsimulator nrscope)
-
-
 # nr-uesoftmodem is  UE implementation
 #######################################
 
@@ -2973,7 +2760,6 @@ add_executable(nr-uesoftmodem
   ${rrc_h}
   ${s1ap_h}
 #  ${OPENAIR_BIN_DIR}/messages_xml.h
-  ${OPENAIR_DIR}/common/utils/threadPool/thread-pool.c
   ${OPENAIR_DIR}/executables/nr-uesoftmodem.c
   ${OPENAIR_DIR}/executables/nr-ue.c
   ${OPENAIR_DIR}/executables/softmodem-common.c
@@ -2985,13 +2771,9 @@ add_executable(nr-uesoftmodem
   ${OPENAIR2_DIR}/RRC/NAS/rb_config.c
   ${OPENAIR1_DIR}/SIMULATION/ETH_TRANSPORT/netlink_init.c
   ${OPENAIR3_DIR}/NAS/UE/nas_ue_task.c
-  ${OPENAIR_DIR}/common/utils/utils.c
-  ${OPENAIR_DIR}/common/utils/system.c
   ${OPENAIR_DIR}/common/utils/nr/nr_common.c
   ${XFORMSINTERFACE_SOURCE}
   ${T_SOURCE}
-  ${UTIL_SRC}
-  ${CONFIG_SOURCES}
   ${SHLIB_LOADER_SOURCES}
   )
 
@@ -3006,7 +2788,7 @@ target_link_libraries (nr-uesoftmodem
   -Wl,--end-group z dl)
 
 target_link_libraries (nr-uesoftmodem ${LIBXML2_LIBRARIES})
-target_link_libraries (nr-uesoftmodem pthread m ${CONFIG_LIB} rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} sctp  ${XFORMS_LIBRARIES} ${CMAKE_DL_LIBS} ${LIBYAML_LIBRARIES} ${ATLAS_LIBRARIES})
+target_link_libraries (nr-uesoftmodem pthread m CONFIG_LIB rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} sctp  ${XFORMS_LIBRARIES} ${CMAKE_DL_LIBS} ${LIBYAML_LIBRARIES} ${ATLAS_LIBRARIES})
 target_link_libraries (nr-uesoftmodem ${LIB_LMS_LIBRARIES})
 target_link_libraries (nr-uesoftmodem ${T_LIB})
 
@@ -3014,7 +2796,6 @@ add_dependencies( nr-uesoftmodem ldpc_orig ldpc_optim ldpc_optim8seg ldpc )
 if (CUDA_FOUND)
    add_dependencies( nr-uesoftmodem ldpc_cuda)
    add_dependencies( nr-softmodem ldpc_cuda)
-   add_dependencies( ocp-gnb ldpc_cuda)
 endif (CUDA_FOUND)
 ###################################"
 # Addexecutables for tests
@@ -3028,30 +2809,25 @@ endif (CUDA_FOUND)
 add_executable(dlsim_tm4
   ${OPENAIR1_DIR}/SIMULATION/LTE_PHY/dlsim_tm4.c
   ${OPENAIR1_DIR}/PHY/TOOLS/lte_phy_scope_tm4.c
-  ${OPENAIR_DIR}/common/utils/system.c
   ${T_SOURCE}
   )
 target_link_libraries (dlsim_tm4
   -Wl,--start-group SIMU_COMMON SIMU UTIL SCHED_LIB SCHED_RU_LIB PHY LFDS ITTI -Wl,--end-group
-  pthread m rt ${CONFIG_LIB} ${ATLAS_LIBRARIES} ${T_LIB}
+  pthread m rt CONFIG_LIB ${ATLAS_LIBRARIES} ${T_LIB}
   )
 
 add_executable(rftest
   ${OPENAIR_DIR}/openair1/PHY/TOOLS/calibration_test.c
   ${OPENAIR_DIR}/openair1/PHY/TOOLS/calibration_scope.c
-  ${OPENAIR_DIR}/common/utils/system.c
   ${OPENAIR_TARGETS}/ARCH/COMMON/common_lib.c
   ${OPENAIR_DIR}/executables/softmodem-common.c
-  ${CONFIG_SOURCES}
   ${SHLIB_LOADER_SOURCES}
 )
-target_link_libraries(rftest minimal_lib PHY_NR_COMMON pthread dl m forms ${T_LIB} )
+target_link_libraries(rftest minimal_lib CONFIG_LIB PHY_NR_COMMON UTIL pthread dl m forms ${T_LIB} )
 
 add_executable(polartest
   ${OPENAIR1_DIR}/PHY/CODING/TESTBENCH/polartest.c
-  ${OPENAIR_DIR}/common/utils/backtrace.c
   ${OPENAIR_DIR}/common/utils/nr/nr_common.c
-  ${OPENAIR_DIR}/common/utils/system.c
   ${T_SOURCE}
   ${SHLIB_LOADER_SOURCES}
   )
@@ -3062,9 +2838,7 @@ target_link_libraries(polartest
 
 add_executable(smallblocktest
   ${OPENAIR1_DIR}/PHY/CODING/TESTBENCH/smallblocktest.c
-  ${OPENAIR_DIR}/common/utils/backtrace.c
   ${OPENAIR_DIR}/common/utils/nr/nr_common.c
-  ${OPENAIR_DIR}/common/utils/system.c
   ${T_SOURCE}
   ${SHLIB_LOADER_SOURCES}
 )
@@ -3094,11 +2868,7 @@ target_link_libraries(ldpctest
 
 add_executable(nr_dlschsim
   ${OPENAIR1_DIR}/SIMULATION/NR_PHY/dlschsim.c
-  ${OPENAIR_DIR}/common/utils/system.c
   ${OPENAIR_DIR}/common/utils/nr/nr_common.c
-  ${OPENAIR_DIR}/common/utils/utils.c
-  ${OPENAIR_DIR}/common/utils/threadPool/thread-pool.c
-  ${UTIL_SRC}
   ${T_SOURCE}
   ${SHLIB_LOADER_SOURCES}
   )
@@ -3109,11 +2879,7 @@ target_link_libraries(nr_dlschsim
 
 add_executable(nr_pbchsim
   ${OPENAIR1_DIR}/SIMULATION/NR_PHY/pbchsim.c
-  ${OPENAIR_DIR}/common/utils/system.c
   ${OPENAIR_DIR}/common/utils/nr/nr_common.c
-  ${OPENAIR_DIR}/common/utils/utils.c
-  ${OPENAIR_DIR}/common/utils/threadPool/thread-pool.c
-  ${UTIL_SRC}
   ${T_SOURCE}
   ${SHLIB_LOADER_SOURCES}
   )
@@ -3125,12 +2891,7 @@ target_link_libraries(nr_pbchsim
 #PUCCH ---> Prashanth
 add_executable(nr_pucchsim
   ${OPENAIR1_DIR}/SIMULATION/NR_PHY/pucchsim.c
-  ${OPENAIR_DIR}/common/utils/backtrace.c
   ${OPENAIR_DIR}/common/utils/nr/nr_common.c
-  ${OPENAIR_DIR}/common/utils/system.c
-  ${OPENAIR_DIR}/common/utils/utils.c
-  ${OPENAIR_DIR}/common/utils/threadPool/thread-pool.c
-  ${UTIL_SRC}
   ${T_SOURCE}
   ${SHLIB_LOADER_SOURCES}
   )
@@ -3141,17 +2902,13 @@ target_link_libraries(nr_pucchsim
 
 add_executable(nr_dlsim
   ${OPENAIR1_DIR}/SIMULATION/NR_PHY/dlsim.c
-  ${OPENAIR_DIR}/common/utils/utils.c
-  ${OPENAIR_DIR}/common/utils/system.c
   ${OPENAIR_DIR}/common/utils/nr/nr_common.c
   ${OPENAIR_DIR}/executables/softmodem-common.c
   ${OPENAIR2_DIR}/RRC/NAS/nas_config.c
   ${OPENAIR1_DIR}/SIMULATION/ETH_TRANSPORT/netlink_init.c
   ${NR_UE_RRC_DIR}/rrc_nsa.c
   ${NFAPI_USER_DIR}/nfapi.c
-  ${OPENAIR_DIR}/common/utils/threadPool/thread-pool.c
   ${PHY_INTERFACE_DIR}/queue_t.c
-  ${UTIL_SRC}
   ${T_SOURCE}
   ${SHLIB_LOADER_SOURCES}
   )
@@ -3163,17 +2920,13 @@ target_compile_definitions(nr_dlsim PUBLIC -DPHYSICAL_SIMULATOR)
 
 add_executable(nr_prachsim
   ${OPENAIR1_DIR}/SIMULATION/NR_PHY/prachsim.c
-  ${OPENAIR_DIR}/common/utils/utils.c
-  ${OPENAIR_DIR}/common/utils/system.c
   ${OPENAIR_DIR}/common/utils/nr/nr_common.c
   ${OPENAIR1_DIR}/SCHED_NR/phy_procedures_nr_common.c
   ${OPENAIR2_DIR}/RRC/NAS/nas_config.c
   ${OPENAIR1_DIR}/SIMULATION/ETH_TRANSPORT/netlink_init.c
   ${NR_UE_RRC_DIR}/rrc_nsa.c
   ${NFAPI_USER_DIR}/nfapi.c
-  ${OPENAIR_DIR}/common/utils/threadPool/thread-pool.c
   ${PHY_INTERFACE_DIR}/queue_t.c
-  ${UTIL_SRC}
   ${T_SOURCE}
   ${SHLIB_LOADER_SOURCES})
 target_link_libraries(nr_prachsim
@@ -3182,12 +2935,8 @@ target_link_libraries(nr_prachsim
 
 add_executable(nr_ulschsim
   ${OPENAIR1_DIR}/SIMULATION/NR_PHY/ulschsim.c
-  ${OPENAIR_DIR}/common/utils/threadPool/thread-pool.c
-  ${OPENAIR_DIR}/common/utils/utils.c
-  ${OPENAIR_DIR}/common/utils/system.c
   ${OPENAIR_DIR}/common/utils/nr/nr_common.c
   ${PHY_INTERFACE_DIR}/queue_t.c
-  ${UTIL_SRC}
   ${T_SOURCE}
   ${SHLIB_LOADER_SOURCES}
   )
@@ -3198,9 +2947,6 @@ target_link_libraries(nr_ulschsim
 
 add_executable(nr_ulsim
   ${OPENAIR1_DIR}/SIMULATION/NR_PHY/ulsim.c
-  ${OPENAIR_DIR}/common/utils/threadPool/thread-pool.c
-  ${OPENAIR_DIR}/common/utils/utils.c
-  ${OPENAIR_DIR}/common/utils/system.c
   ${OPENAIR_DIR}/common/utils/nr/nr_common.c
   ${OPENAIR_DIR}/executables/softmodem-common.c
   ${OPENAIR2_DIR}/RRC/NAS/nas_config.c
@@ -3208,7 +2954,6 @@ add_executable(nr_ulsim
   ${NR_UE_RRC_DIR}/rrc_nsa.c
   ${NFAPI_USER_DIR}/nfapi.c
   ${PHY_INTERFACE_DIR}/queue_t.c
-  ${UTIL_SRC}
   ${T_SOURCE}
   ${SHLIB_LOADER_SOURCES}
   )
@@ -3222,58 +2967,21 @@ foreach(myExe dlsim dlsim_tm7 ulsim pbchsim scansim mbmssim pdcchsim pucchsim pr
 
   add_executable(${myExe}
     ${OPENAIR1_DIR}/SIMULATION/LTE_PHY/${myExe}.c
-    ${OPENAIR_DIR}/common/utils/threadPool/thread-pool.c
-    ${OPENAIR_DIR}/common/utils/backtrace.c
-    ${OPENAIR_DIR}/common/utils/system.c
-    ${OPENAIR_DIR}/common/utils/utils.c
     ${OPENAIR_DIR}/common/utils/lte/ue_power.c
     ${OPENAIR_DIR}/common/utils/lte/prach_utils.c
     ${OPENAIR1_DIR}/PHY/INIT/lte_param_init.c
     ${XFORMS_SOURCE}
     ${T_SOURCE}
-    ${CONFIG_SOURCES}
     ${SHLIB_LOADER_SOURCES}
     ${NFAPI_USER_DIR}/nfapi.c
     )
   target_link_libraries (${myExe}
     -Wl,--start-group SIMU_COMMON SIMU UTIL SCHED_LIB SCHED_RU_LIB SCHED_UE_LIB PHY_COMMON PHY_NR_COMMON PHY PHY_UE PHY_RU LFDS ITTI LFDS7 -Wl,--end-group
-    pthread m rt ${CONFIG_LIB} ${ATLAS_LIBRARIES}  ${XFORMS_LIBRARIES} ${T_LIB} dl
+    pthread m rt CONFIG_LIB ${ATLAS_LIBRARIES}  ${XFORMS_LIBRARIES} ${T_LIB} dl
     )
 
 endforeach(myExe)
 
-add_executable(test_epc_generate_scenario
-  ${OPENAIR3_DIR}/TEST/EPC_TEST/generate_scenario.c
-  ${OPENAIR3_DIR}/TEST/EPC_TEST/generate_scenario.h
-  ${OPENAIR2_DIR}/ENB_APP/enb_config.h
-  ${OPENAIR2_DIR}/COMMON/commonDef.h
-  ${OPENAIR2_DIR}/COMMON/messages_def.h
-  ${OPENAIR3_DIR}/S1AP/s1ap_eNB_defs.h
-  )
-target_link_libraries (test_epc_generate_scenario
-  -Wl,--start-group RRC_LIB S1AP_LIB S1AP_ENB X2AP_LIB X2AP_ENB M2AP_LIB M2AP_ENB M3AP_LIB M3AP_ENB F1AP_LIB F1AP GTPV1U LIB_NAS_UE SECU_CN UTIL HASHTABLE SCTP_CLIENT MME_APP SCHED_LIB PHY LFDS ITTI L2 -Wl,--end-group pthread m rt crypt sctp ${LIBXML2_LIBRARIES} ${LIBXSLT_LIBRARIES} ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} ${CONFIG_LIB}
-  )
-
-add_executable(test_epc_play_scenario
-  ${OPENAIR3_DIR}/TEST/EPC_TEST/play_scenario.c
-  ${OPENAIR3_DIR}/TEST/EPC_TEST/play_scenario_decode.c
-  ${OPENAIR3_DIR}/TEST/EPC_TEST/play_scenario_display.c
-  ${OPENAIR3_DIR}/TEST/EPC_TEST/play_scenario_fsm.c
-  ${OPENAIR3_DIR}/TEST/EPC_TEST/play_scenario_parse.c
-  ${OPENAIR3_DIR}/TEST/EPC_TEST/play_scenario_s1ap.c
-  ${OPENAIR3_DIR}/TEST/EPC_TEST/play_scenario_s1ap_compare_ie.c
-  ${OPENAIR3_DIR}/TEST/EPC_TEST/play_scenario_s1ap_eNB_defs.h
-  ${OPENAIR3_DIR}/TEST/EPC_TEST/play_scenario_sctp.c
-  ${OPENAIR3_DIR}/TEST/EPC_TEST/play_scenario.h
-  ${OPENAIR2_DIR}/COMMON/commonDef.h
-  ${OPENAIR2_DIR}/COMMON/messages_def.h
-  )
-target_include_directories(test_epc_play_scenario PUBLIC /usr/local/share/asn1c)
-target_link_libraries (test_epc_play_scenario
-  -Wl,--start-group RRC_LIB S1AP_LIB X2AP_LIB X2AP_ENB M3AP_LIB M3AP_ENB F1AP_LIB F1AP GTPV1U LIB_NAS_UE SECU_CN UTIL HASHTABLE SCTP_CLIENT MME_APP SCHED_LIB PHY_NR_COMMON PHY_COMMON PHY PHY_UE LFDS ITTI -Wl,--end-group pthread m rt crypt sctp ${LIBXML2_LIBRARIES} ${LIBXSLT_LIBRARIES} ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} ${CONFIG_LIB}
-  )
-
-
 #unitary tests for Core NEtwork pieces
 #################################
 foreach(myExe s1ap
@@ -3290,7 +2998,7 @@ foreach(myExe s1ap
     ${OPENAIR3_DIR}/TEST/test_${myExe}.c
     )
   target_link_libraries (test_${myExe}
-    -Wl,--start-group SECU_CN UTIL LFDS -Wl,--end-group m rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} ${CONFIG_LIB}
+    -Wl,--start-group SECU_CN UTIL LFDS -Wl,--end-group m rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} CONFIG_LIB
     )
 endforeach(myExe)
 
@@ -3409,16 +3117,12 @@ add_executable(nr-ittisim
   ${OPENAIR2_DIR}/RRC/NAS/rb_config.c
   ${OPENAIR1_DIR}/SIMULATION/ETH_TRANSPORT/netlink_init.c
   ${OPENAIR3_DIR}/NAS/UE/nas_ue_task.c
-  ${OPENAIR_DIR}/common/utils/utils.c
-  ${OPENAIR_DIR}/common/utils/system.c
   ${OPENAIR_DIR}/common/utils/nr/nr_common.c
-  ${OPENAIR_DIR}/common/utils/threadPool/thread-pool.c
   ${OPENAIR_DIR}/common/utils/lte/ue_power.c
   ${OPENAIR_DIR}/common/utils/lte/prach_utils.c
   ${OPENAIR2_DIR}/ENB_APP/flexran_agent_ran_api_to_fix.c
   ${XFORMSINTERFACE_SOURCE}
   ${T_SOURCE}
-  ${CONFIG_SOURCES}
   ${SHLIB_LOADER_SOURCES}
   )
 
@@ -3432,7 +3136,7 @@ target_link_libraries (nr-ittisim
   -Wl,--end-group z dl)
 
 target_link_libraries (nr-ittisim ${LIBXML2_LIBRARIES})
-target_link_libraries (nr-ittisim pthread m ${CONFIG_LIB} rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} ${NETTLE_LIBRARIES} sctp  ${XFORMS_LIBRARIES} ${PROTOBUF_LIB}  ${CMAKE_DL_LIBS} ${LIBYAML_LIBRARIES} ${ATLAS_LIBRARIES})
+target_link_libraries (nr-ittisim pthread m CONFIG_LIB rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} ${NETTLE_LIBRARIES} sctp  ${XFORMS_LIBRARIES} ${PROTOBUF_LIB}  ${CMAKE_DL_LIBS} ${LIBYAML_LIBRARIES} ${ATLAS_LIBRARIES})
 target_link_libraries (nr-ittisim ${LIB_LMS_LIBRARIES})
 target_link_libraries (nr-ittisim ${T_LIB})
 
diff --git a/cmake_targets/autotests/test_case_list.xml b/cmake_targets/autotests/test_case_list.xml
index 6450b642989a88e5939233c8bc3ef717165ac96b..7497fb419c4a50659e2fd3ff0a80bd2945a7d625 100755
--- a/cmake_targets/autotests/test_case_list.xml
+++ b/cmake_targets/autotests/test_case_list.xml
@@ -1093,17 +1093,18 @@
                                  (Test8: 217 PRB 100 PDSCH-PRBs 110 PDSCH-Offset),
                                  (Test9: 106 PRBs 50 PDSCH-PRBs MCS Index 27),
                                  (Test10: 106 PRBs 50 PDSCH-PRBs MCS Index 16),
-                                 (Test11: HARQ test 25% TP (4 rounds),
-                                 (Test12: HARQ test 33% TP (3 rounds),
-                                 (Test13: HARQ test 50% TP (2 rounds),
-                                 (Test14: 3 PTRS, 8 Interpolated Symbols),
-                                 (Test15: 6 PTRS, 5 Interpolated Symbols),
-                                 (Test16: 11 PTRS, 0 Interpolated Symbols),
-                                 (Test17: Mapping type A, 2 DMRS Symbols),
-                                 (Test18: Mapping type A, 3 DMRS Symbols),
-                                 (Test19: Mapping type B, 4 DMRS Symbols),
-                                 (Test20: 4x4 MIMO, 1 Layer),
-                                 (Test21: 4x4 MIMO, 2 Layers)</desc>
+                                 (Test11: 106 MCS-TABLE 256 QAM MCS Index 26),
+                                 (Test12: HARQ test 25% TP (4 rounds),
+                                 (Test13: HARQ test 33% TP (3 rounds),
+                                 (Test14: HARQ test 50% TP (2 rounds),
+                                 (Test15: 3 PTRS, 8 Interpolated Symbols),
+                                 (Test16: 6 PTRS, 5 Interpolated Symbols),
+                                 (Test17: 11 PTRS, 0 Interpolated Symbols),
+                                 (Test18: Mapping type A, 2 DMRS Symbols),
+                                 (Test19: Mapping type A, 3 DMRS Symbols),
+                                 (Test20: Mapping type B, 4 DMRS Symbols),
+                                 (Test21: 4x4 MIMO, 1 Layer),
+                                 (Test22: 4x4 MIMO, 2 Layers)</desc>
       <pre_compile_prog></pre_compile_prog>
       <compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</compile_prog>
       <compile_prog_args> --phy_simulators  -c </compile_prog_args>
@@ -1118,8 +1119,9 @@
                   -n100 -R217 -b100 -s5
                   -n100 -R217 -a80 -s5
                   -n100 -R217 -a110 -s5 -b100
-                  -n100 -e27 -s30 
-                  -n100 -e16 -s10 
+                  -n100 -e27 -s30
+                  -n100 -e16 -s10
+                  -n100 -q1 -e27 -s30
                   -n100 -s1 -t25
                   -n100 -s1 -t33
                   -n100 -s1 -t50
@@ -1131,7 +1133,7 @@
                   -n100 -s2 -U 2 1 3
                   -n10 -s20 -U 3 0 0 2 -gR -x1 -y4 -z4
                   -n10 -s20 -U 3 0 0 2 -gR -x2 -y4 -z4</main_exec_args>
-      <tags>nr_dlsim.test1 nr_dlsim.test2 nr_dlsim.test3 nr_dlsim.test4 nr_dlsim.test5 nr_dlsim.test6 nr_dlsim.test7 nr_dlsim.test8 nr_dlsim.test9 nr_dlsim.test10 nr_dlsim.test11 nr_dlsim.test12 nr_dlsim.test13 nr_dlsim.test14 nr_dlsim.test15 nr_dlsim.test16 nr_dlsim.test17 nr_dlsim.test18 nr_dlsim.test19 nr_dlsim.test20 nr_dlsim.test21</tags>
+      <tags>nr_dlsim.test1 nr_dlsim.test2 nr_dlsim.test3 nr_dlsim.test4 nr_dlsim.test5 nr_dlsim.test6 nr_dlsim.test7 nr_dlsim.test8 nr_dlsim.test9 nr_dlsim.test10 nr_dlsim.test11 nr_dlsim.test12 nr_dlsim.test13 nr_dlsim.test14 nr_dlsim.test15 nr_dlsim.test16 nr_dlsim.test17 nr_dlsim.test18 nr_dlsim.test19 nr_dlsim.test20 nr_dlsim.test21 nr_dlsim.test22</tags>
       <search_expr_true>PDSCH test OK</search_expr_true>
       <search_expr_false>segmentation fault|assertion|exiting|fatal</search_expr_false>
       <nruns>3</nruns>
diff --git a/cmake_targets/build_oai b/cmake_targets/build_oai
index c2b63058315552bb3ee899cefae456ce320fab4f..930f2a7f77f6960553c613f85cadc6242bf03bf7 100755
--- a/cmake_targets/build_oai
+++ b/cmake_targets/build_oai
@@ -39,34 +39,24 @@ conf_nvram_path=$OPENAIR_DIR/openair3/NAS/TOOLS/ue_eurecom_test_sfr.conf
 
 XFORMS="True"
 SKIP_SHARED_LIB_FLAG="False"
-UE_EXPANSION="False"
 PRINT_STATS="False"
-VCD_TIMING="False"
 DEADLINE_SCHEDULER_FLAG_USER=""
-CPU_AFFINITY_FLAG_USER="False" #Only valid when low-latency flag is set to False
 REL="Rel15"
 HW="None"
 TP="Ethernet"
 EPC=0
 VERBOSE_CI=0
 VERBOSE_COMPILE=0
-CFLAGS_PROCESSOR_USER=""
 RUN_GROUP=0
 TEST_CASE_GROUP=""
+BUILD_DIR=ran_build
 BUILD_DOXYGEN=0
 BUILD_COVERITY_SCAN=0
-T_TRACER="True"
 DISABLE_HARDWARE_DEPENDENCY="False"
 CMAKE_BUILD_TYPE="RelWithDebInfo"
 CMAKE_CMD="$CMAKE"
-UE_AUTOTEST_TRACE="False"
-UE_DEBUG_TRACE="False"
-UE_TIMING_TRACE="False"
-USRP_REC_PLAY="False"
 BUILD_ECLIPSE=0
 NR="False"
-ITTI_SIM="False"
-SANITIZE_ADDRESS="False"
 OPTIONAL_LIBRARIES="telnetsrv enbscope uescope nrscope"
 RU=0
 trap handle_ctrl_c INT
@@ -82,6 +72,8 @@ Options
    Erase all files made by previous compilations, installations
 --clean-kernel
    Erase previously installed features in kernel: iptables, drivers, ...
+-d | --build-dir
+   Sets build directory (will be <oai-root>/cmake_targets/<build-dir>/build)
 -I | --install-external-packages
    Installs required packages such as LibXML, asn1.1 compiler, freediameter, ...
    This option will require root password
@@ -201,6 +193,9 @@ function main() {
             clean_kernel
             echo_info "Erased iptables config and removed modules from kernel"
             shift;;
+       -d | --build-dir)
+            BUILD_DIR=$2
+            shift;;
        -I | --install-external-packages)
             INSTALL_EXTERNAL=1
             echo_info "Will install external packages"
@@ -275,7 +270,7 @@ function main() {
             echo_info "Will compile NR UE"
             shift;;
        --mu)
-            UE_EXPANSION="True"
+            CMAKE_CMD="$CMAKE_CMD -DUE_EXPANSION=True -DPRE_SCD_THREAD=True"
             echo_info "Will compile with UE_EXPANSION"
             shift;;
        --UE-conf-nvram)
@@ -299,7 +294,9 @@ function main() {
                 *)
                     echo_fatal "Unknown HW type $HW: exit..."
             esac
-			echo_info "Setting hardware to: $HW"
+            echo_info "Setting hardware to: $HW"
+            #CMAKE_CMD="$CMAKE_CMD -DRF_BOARD=\"${HW}\""
+            CMAKE_CMD="$CMAKE_CMD -DRF_BOARD=${HW}"
             shift 2;;
        -t | --transport)
 	    TP=$2
@@ -323,7 +320,7 @@ function main() {
             shift 2;;
        -V | --vcd)
             echo_info "Setting gtk-wave output"
-            VCD_TIMING=1
+            CMAKE_CMD="$CMAKE_CMD -DENABLE_VCD_FIFO=True"
             EXE_ARGUMENTS="$EXE_ARGUMENTS -V"
             shift;;
        -x | --xforms)
@@ -348,8 +345,8 @@ function main() {
             echo_info "Will compile with verbose instructions"
             shift;;
        --cflags_processor)
-            CFLAGS_PROCESSOR_USER=$2
-            echo_info "Setting CPU FLAGS from USER to: $CFLAGS_PROCESSOR_USER"
+            CMAKE_CMD="$CMAKE_CMD -DCFLAGS_PROCESSOR_USER=\"$2\""
+            echo_info "Setting CPU FLAGS from USER to: $2"
             shift 2;;
        --build-doxygen)
 	        BUILD_DOXYGEN=1
@@ -361,22 +358,26 @@ function main() {
             shift;;
        --disable-deadline)
             DEADLINE_SCHEDULER_FLAG_USER="False"
+            CMAKE_CMD="$CMAKE_CMD -DDEADLINE_SCHEDULER=False"
             echo_info "Disabling the usage of deadline scheduler"
             shift 1;;
        --enable-deadline)
             DEADLINE_SCHEDULER_FLAG_USER="True"
+            CMAKE_CMD="$CMAKE_CMD -DDEADLINE_SCHEDULER=True"
             echo_info "Enabling the usage of deadline scheduler"
             shift 1;;
        --enable-cpu-affinity)
             CPU_AFFINITY_FLAG_USER="True"
+            CMAKE_CMD="$CMAKE_CMD -DCPU_AFFINITY=True"
             echo_info "Enabling CPU Affinity (only valid when not using deadline scheduler)"
             shift 1;;
        --disable-cpu-affinity)
             CPU_AFFINITY_FLAG_USER="False"
+            CMAKE_CMD="$CMAKE_CMD -DCPU_AFFINITY=False"
             echo_info "Disabling CPU Affinity (only valid when not using deadline scheduler)"
             shift 1;;
        --disable-T-Tracer)
-            T_TRACER="False"
+            CMAKE_CMD="$CMAKE_CMD -DT_TRACER=False"
             echo_info "Disabling the T tracer"
             shift 1;;
        --disable-hardware-dependency)
@@ -384,15 +385,15 @@ function main() {
             DISABLE_HARDWARE_DEPENDENCY="True"
             shift 1;;
        --ue-autotest-trace)
-            UE_AUTOTEST_TRACE="True"
+            CMAKE_CMD="$CMAKE_CMD -DUE_AUTOTEST_TRACE=True"
             echo_info "Enabling autotest specific trace for UE"
             shift 1;;
        --ue-trace)
-            UE_DEBUG_TRACE="True"
+            CMAKE_CMD="$CMAKE_CMD -DUE_DEBUG_TRACE=False"
             echo_info "Enabling UE trace for debug"
             shift 1;;
        --ue-timing)
-            UE_TIMING_TRACE="True"
+            CMAKE_CMD="$CMAKE_CMD -DUE_TIMING_TRACE=True"
             echo_info "Enabling UE timing trace"
             shift 1;;
        --uhd-images-dir)
@@ -423,24 +424,20 @@ function main() {
               fi
             fi
             shift 2;;		
-        --usrp-recplay)
-            USRP_REC_PLAY="True"
-            echo_info "Enabling USRP record playback mode"
-            shift 1;;
         -k | --skip-shared-libraries)
             SKIP_SHARED_LIB_FLAG="True"
             echo_info "Skipping build of shared libraries, rfsimulator and transport protocol libraries"
             shift;;
-    --ninja)
-        CMAKE_CMD="$CMAKE_CMD -GNinja"
-	MAKE_CMD=ninja
-	shift;;
-    --sanitize-address | -fsanitize=address)
-        SANITIZE_ADDRESS=True
-        shift;;
-      --ittiSIM)
+        --ninja)
+            CMAKE_CMD="$CMAKE_CMD -GNinja"
+            MAKE_CMD=ninja
+            shift;;
+        --sanitize-address | -fsanitize=address)
+            CMAKE_CMD="$CMAKE_CMD -DSANITIZE_ADDRESS=True"
+            shift;;
+        --ittiSIM)
             ittiSIM=1
-            ITTI_SIM="True"
+            CMAKE_CMD="$CMAKE_CMD -DITTI_SIM=True"
             echo_info "Will compile itti simulator"
             shift;;
         -h | --help)
@@ -466,9 +463,6 @@ function main() {
       fi
   fi
 
-  CMAKE_CMD="$CMAKE_CMD .."
-  echo_info "CMAKE_CMD=$CMAKE_CMD"
-
   ########################################################
   # Check validity of HW and TP parameters for eNB / gNB #
   ########################################################
@@ -508,6 +502,7 @@ function main() {
   #Disable CPU Affinity for deadline scheduler
   if [ "$DEADLINE_SCHEDULER_FLAG_USER" = "True" ] ; then 
      CPU_AFFINITY_FLAG_USER="False"
+     CMAKE_CMD="$CMAKE_CMD -DCPU_AFFINITY=False"
   fi
 
   echo_info "Flags for Deadline scheduler: $DEADLINE_SCHEDULER_FLAG_USER"
@@ -585,46 +580,13 @@ function main() {
   echo_info "3. building the compilation directives ..."
 
   DIR=$OPENAIR_DIR/cmake_targets
-  if [ "$T_TRACER" =  "False" ] ; then
-      build_dir=ran_build_noLOG
-  else
-      build_dir=ran_build  
-  fi
 
-  [ "$CLEAN" = "1" ] && rm -rf $DIR/$build_dir/build
-  mkdir -p $DIR/$build_dir/build
+  [ "$CLEAN" = "1" ] && rm -rf $DIR/$BUILD_DIR/build
+  mkdir -p $DIR/$BUILD_DIR/build
 
-# configuration module libraries, one currently available, using libconfig 
-  config_libconfig_shlib=params_libconfig
-  
-  # first generate the CMakefile in the right directory
-  # softmodem compilation
-  
-  cmake_file=$DIR/$build_dir/CMakeLists.txt
-  echo "cmake_minimum_required(VERSION 2.8)"                             >  $cmake_file
-  echo "project (OpenAirInterface)"                                    >> $cmake_file
-  echo "set ( CMAKE_BUILD_TYPE $CMAKE_BUILD_TYPE )"                     >> $cmake_file
-  echo "set ( CFLAGS_PROCESSOR_USER \"$CFLAGS_PROCESSOR_USER\" )"       >> $cmake_file
-  echo "set ( UE_EXPANSION $UE_EXPANSION )"                             >> $cmake_file
-  #    echo "set ( PHY_TX_THREAD $UE_EXPANSION )"                            >> $cmake_file
-  echo "set ( PRE_SCD_THREAD $UE_EXPANSION )"                           >> $cmake_file
-  echo "set ( ENABLE_VCD_FIFO $VCD_TIMING )"                            >> $cmake_file
-  echo "set ( RF_BOARD \"${HW}\")"                                      >> $cmake_file
-  echo "set ( TRANSP_PRO \"${TP}\")"                                    >> $cmake_file
-  echo "set ( PACKAGE_NAME \"${exec}\")"                                >> $cmake_file
-  echo "set ( DEADLINE_SCHEDULER \"${DEADLINE_SCHEDULER_FLAG_USER}\" )" >> $cmake_file
-  echo "set ( CPU_AFFINITY \"${CPU_AFFINITY_FLAG_USER}\" )"             >> $cmake_file
-  echo "set ( T_TRACER $T_TRACER )"                                     >> $cmake_file
-  echo "set ( UE_AUTOTEST_TRACE $UE_AUTOTEST_TRACE )"                   >> $cmake_file
-  echo "set ( UE_DEBUG_TRACE $UE_DEBUG_TRACE )"                         >> $cmake_file
-  echo "set ( UE_TIMING_TRACE $UE_TIMING_TRACE )"                       >> $cmake_file
-  echo "set ( USRP_REC_PLAY $USRP_REC_PLAY )"                           >> $cmake_file
-  echo "set ( SKIP_SHARED_LIB_FLAG $SKIP_SHARED_LIB_FLAG )"             >> $cmake_file
-  echo "set ( ITTI_SIM $ITTI_SIM )"                                     >> $cmake_file
-  echo "set ( SANITIZE_ADDRESS $SANITIZE_ADDRESS )"                     >> $cmake_file
-  echo 'include(${CMAKE_CURRENT_SOURCE_DIR}/../CMakeLists.txt)'         >> $cmake_file
-  cd  $DIR/$build_dir/build
-  eval $CMAKE_CMD
+  cd  $DIR/$BUILD_DIR/build
+  echo_info "running $CMAKE_CMD"
+  eval $CMAKE_CMD ../..
 
   execlist=""
   if [ "$eNB" = "1" ] ; then
@@ -653,7 +615,7 @@ function main() {
   for f in $execlist ; do
       echo_info "Compiling $f..."
       compilations \
-          $build_dir $f \
+          $BUILD_DIR $f \
           $f $dbin/$f.$REL
   done
   
@@ -662,13 +624,16 @@ function main() {
   
   if [ "$SKIP_SHARED_LIB_FLAG" = "False" ]; then
       echo_info "Building shared libraries common to UE and gNB"
+
+      # configuration module libraries, one currently available, using libconfig
+      config_libconfig_shlib=params_libconfig
       
       compilations \
-          $build_dir $config_libconfig_shlib \
+          $BUILD_DIR $config_libconfig_shlib \
           lib$config_libconfig_shlib.so $dbin/lib$config_libconfig_shlib.so
       
       compilations \
-          $build_dir coding \
+          $BUILD_DIR coding \
           libcoding.so $dbin/libcoding.so
       
   fi
@@ -681,7 +646,7 @@ function main() {
     then
       echo_info "Building ue_ip module"
       compilations \
-        $build_dir ue_ip \
+        $BUILD_DIR ue_ip \
         CMakeFiles/ue_ip/ue_ip.ko $dbin/ue_ip.ko
     else
       echo_info "Bypassing ue_ip build"
@@ -698,7 +663,7 @@ function main() {
     mkdir -p $DIR/nas_sim_tools/build
     cd $DIR/nas_sim_tools/build
 
-    eval $CMAKE_CMD
+    eval $CMAKE_CMD ..
     compilations \
       nas_sim_tools usim \
       usim $dbin/usim
@@ -712,16 +677,16 @@ function main() {
     # generate USIM data
     if [ -f $dbin/conf2uedata ]; then
       install_nas_tools $conf_nvram_path $gen_nvram_path "$dlog/conf2uedata.txt"
-      echo_info "Copying UE specific part to $DIR/$build_dir/build"
-      cp -Rvf $dbin/.ue_emm.nvram0 $DIR/$build_dir/build
-      cp -Rvf $dbin/.ue.nvram0 $DIR/$build_dir/build
-      cp -Rvf $dbin/.usim.nvram0 $DIR/$build_dir/build
+      echo_info "Copying UE specific part to $DIR/$BUILD_DIR/build"
+      cp -Rvf $dbin/.ue_emm.nvram0 $DIR/$BUILD_DIR/build
+      cp -Rvf $dbin/.ue.nvram0 $DIR/$BUILD_DIR/build
+      cp -Rvf $dbin/.usim.nvram0 $DIR/$BUILD_DIR/build
     else
       echo_warning "not generated UE NAS files: binaries not found"
     fi
   fi
 
-  cd  $DIR/$build_dir/build
+  cd  $DIR/$BUILD_DIR/build
   
   ##################
   # PHY simulators #
@@ -739,9 +704,6 @@ function main() {
     compilations \
       ran_build coding \
       libcoding.so $dbin/libcoding.so
-#    compilations \
-#	   lte-simulators $config_libconfig_shlib \
-#	   lib$config_libconfig_shlib.so $dbin/lib$config_libconfig_shlib.so
   fi
 
   ###################
@@ -763,14 +725,14 @@ function main() {
   if [ "$HW" = "EXMIMO" ] ; then
     echo_info "Compiling Express MIMO 2 board drivers"
     compilations \
-      $build_dir openair_rf \
+      $BUILD_DIR openair_rf \
       CMakeFiles/openair_rf/openair_rf.ko $dbin/openair_rf.ko
     compilations \
-	  $build_dir updatefw \
+	  $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/$build_dir/build oarf > $dlog/oarf.txt 2>&1
-    cp $OPENAIR_DIR/cmake_targets/$build_dir/build/*.oct $dbin
+    make -C $OPENAIR_DIR/cmake_targets/$BUILD_DIR/build oarf > $dlog/oarf.txt 2>&1
+    cp $OPENAIR_DIR/cmake_targets/$BUILD_DIR/build/*.oct $dbin
     if [ -s $dbin/oarf_config_exmimo.oct ] ; then
 	  echo_success "oarf tools compiled"
     else
@@ -785,7 +747,7 @@ function main() {
   if [ ! -z "$BUILD_OPTLIB" ] ; then 
      for oklib in $BUILD_OPTLIB ; do
          compilations \
-             $build_dir $oklib \
+             $BUILD_DIR $oklib \
              lib${oklib}.so $dbin/lib${oklib}.so
      done
   fi
@@ -859,7 +821,7 @@ function main() {
           # link liboai_device.so with the selected RF device library
           if [ "$HW" == "EXMIMO" ] ; then
               compilations \
-                  $build_dir oai_exmimodevif \
+                  $BUILD_DIR oai_exmimodevif \
                   liboai_exmimodevif.so $dbin/liboai_exmimodevif.so.$REL
 
               ln -sf liboai_exmimodevif.so liboai_device.so
@@ -867,7 +829,7 @@ function main() {
               echo_info "liboai_device.so is linked to EXMIMO device library"
           elif [ "$HW" == "OAI_USRP" ] ; then
               compilations \
-                  $build_dir oai_usrpdevif \
+                  $BUILD_DIR oai_usrpdevif \
                   liboai_usrpdevif.so $dbin/liboai_usrpdevif.so.$REL
 
               ln -sf liboai_usrpdevif.so liboai_device.so
@@ -876,7 +838,7 @@ function main() {
           elif [ "$HW" == "OAI_BLADERF" ] ; then
               if [ -f "/usr/include/libbladeRF.h" ] ; then
                   compilations \
-                      $build_dir oai_bladerfdevif \
+                      $BUILD_DIR oai_bladerfdevif \
                       liboai_bladerfdevif.so $dbin/liboai_bladerfdevif.so.$REL
               fi
 
@@ -886,7 +848,7 @@ function main() {
           elif [ "$HW" == "OAI_LMSSDR" ] ; then
 #              if [ -f "/usr/include/libbladeRF.h" ] ; then
                   compilations \
-                      $build_dir oai_lmssdrdevif \
+                      $BUILD_DIR oai_lmssdrdevif \
                       liboai_lmssdrdevif.so $dbin/liboai_lmssdrdevif.so.$REL
 #              fi
 
@@ -895,7 +857,7 @@ function main() {
               echo_info "liboai_device.so is linked to LMSSDR device library"	 
           elif [ "$HW" == "OAI_IRIS" ] ; then
               compilations \
-                  $build_dir oai_irisdevif \
+                  $BUILD_DIR oai_irisdevif \
                   liboai_irisdevif.so $dbin/liboai_irisdevif.so.$REL
 
               ln -s liboai_irisdevif.so liboai_device.so
@@ -915,7 +877,7 @@ function main() {
               echo_info "liboai_device.so is linked to ADRV9371_ZC706 device library for Kernel $SYRIQ_KMAJ.$SYRIQ_KMIN"
           elif [ "$HW" == "OAI_AW2SORI" ] ; then
 	      compilations \
-		  $build_dir aw2sori_transpro \
+		  $BUILD_DIR aw2sori_transpro \
                   libaw2sori_transpro.so $dbin/libaw2sori_transpro.so.$REL 
 
               ln -sf libaw2sori_transpro.so libthirdparty_transpro.so
@@ -930,12 +892,12 @@ function main() {
       if [ "$SKIP_SHARED_LIB_FLAG" = "False" ]; then
           echo_info "Compiling rfsimulator"
           compilations \
-              $build_dir rfsimulator \
+              $BUILD_DIR rfsimulator \
               librfsimulator.so $dbin/librfsimulator.so.$REL
 
           echo_info "Compiling tcp_bridge_oai"
           compilations \
-              $build_dir tcp_bridge_oai \
+              $BUILD_DIR tcp_bridge_oai \
               libtcp_bridge_oai.so $dbin/libtcp_bridge_oai.so.$REL
       fi
 
@@ -946,7 +908,7 @@ function main() {
           rm -f $dbin/liboai_transpro.so
 	  if [ "$TP" == "Ethernet" ]; then
               compilations \
-		  $build_dir oai_eth_transpro \
+		  $BUILD_DIR oai_eth_transpro \
 		  liboai_eth_transpro.so $dbin/liboai_eth_transpro.so.$REL
               ln -sf liboai_eth_transpro.so liboai_transpro.so
               ln -sf $dbin/liboai_eth_transpro.so.$REL $dbin/liboai_transpro.so
@@ -954,7 +916,7 @@ function main() {
 	  fi
 	  if [ "$TP" == "benetel4g" ]; then
               compilations \
-		  $build_dir benetel_4g \
+		  $BUILD_DIR benetel_4g \
 		  libbenetel_4g.so $dbin/libbenetel_4g.$REL
               ln -sf libbenetel_4g.so liboai_transpro.so
               ln -sf $dbin/libbenetel_4g.so.$REL $dbin/liboai_transpro.so
@@ -962,7 +924,7 @@ function main() {
 	  fi
 	  if [ "$TP" == "benetel5g" ]; then
               compilations \
-		  $build_dir benetel_5g \
+		  $BUILD_DIR benetel_5g \
 		  libbenetel_5g.so $dbin/libbenetel_5g.$REL
               ln -sf libbenetel_5g.so liboai_transpro.so
               ln -sf $dbin/libbenetel_5g.so.$REL $dbin/liboai_transpro.so
@@ -983,7 +945,7 @@ function main() {
     [ "$CLEAN" = "1" ] && rm -rf $OPENAIR_DIR/cmake_targets/doxygen/build
     mkdir -p $OPENAIR_DIR/cmake_targets/doxygen/build
     cd $OPENAIR_DIR/cmake_targets/doxygen/build
-    eval $CMAKE_CMD
+    eval $CMAKE_CMD ..
     make doc
     ) >& $doxygen_log
   fi
diff --git a/cmake_targets/install_external_packages.ubuntu20 b/cmake_targets/install_external_packages.ubuntu20
index 1f10ca53c7f3f7ab503ec6bebc4349872e2bc59a..a2f6a9709c31e001bc3772ce9b4ff0dd4e5bfe18 100755
--- a/cmake_targets/install_external_packages.ubuntu20
+++ b/cmake_targets/install_external_packages.ubuntu20
@@ -86,6 +86,7 @@ check_supported_distribution() {
         "ubuntu20.04") return 0 ;;
         "ubuntu20.10") return 0 ;;
         "ubuntu21.04") return 0 ;;
+        "ubuntu21.10") return 0 ;;
     esac
     return 1
 }
diff --git a/cmake_targets/macros.cmake b/cmake_targets/macros.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..0417420af44757a16a3cefbca84a036615d2fc41
--- /dev/null
+++ b/cmake_targets/macros.cmake
@@ -0,0 +1,98 @@
+###########################################
+# macros to define options as there is numerous options in oai
+################################################
+macro(add_option name val helpstr)
+  if(DEFINED ${name})
+    set(value ${${name}})
+  else(DEFINED ${name})
+    set(value ${val})
+  endif()
+  set(${name} ${value} CACHE STRING "${helpstr}")
+  add_definitions("-D${name}=${value}")
+endmacro(add_option)
+
+macro(add_boolean_option name val helpstr)
+  if(DEFINED ${name})
+    set(value ${${name}})
+  else(DEFINED ${name})
+    set(value ${val})
+  endif()
+  set(${name} ${value} CACHE STRING "${helpstr}")
+  set_property(CACHE ${name} PROPERTY TYPE BOOL)
+  if (${value})
+    add_definitions("-D${name}")
+  endif (${value})
+endmacro(add_boolean_option)
+
+macro(add_integer_option name val helpstr)
+  if(DEFINED ${name})
+    set(value ${${name}})
+  else(DEFINED ${name})
+    set(value ${val})
+  endif()
+  set(${name} ${value} CACHE STRING "${helpstr}")
+  add_definitions("-D${name}=${value}")
+endmacro(add_integer_option)
+
+macro(add_list1_option name val helpstr)
+  if(DEFINED ${name})
+    set(value ${${name}})
+  else(DEFINED ${name})
+    set(value ${val})
+  endif()
+  set(${name} ${value} CACHE STRING "${helpstr}")
+  set_property(CACHE ${name} PROPERTY STRINGS ${ARGN})
+  if(NOT "${value}" STREQUAL "False")
+    add_definitions("-D${name}=${value}")
+  endif()
+endmacro(add_list1_option)
+
+macro(add_list2_option name val helpstr)
+  if(DEFINED ${name})
+    set(value ${${name}})
+  else(DEFINED ${name})
+    set(value ${val})
+  endif()
+  set(${name} ${value} CACHE STRING "${helpstr}")
+  set_property(CACHE ${name} PROPERTY STRINGS ${ARGN})
+  if(NOT "${value}" STREQUAL "False")
+    add_definitions("-D${value}=1")
+  endif()
+endmacro(add_list2_option)
+
+macro(add_list_string_option name val helpstr)
+  if(DEFINED ${name})
+    set(value ${${name}})
+  else(DEFINED ${name})
+    set(value ${val})
+  endif()
+  set(${name} ${value} CACHE STRING "${helpstr}")
+  set_property(CACHE ${name} PROPERTY STRINGS ${ARGN})
+  if(NOT "${value}" STREQUAL "False")
+    add_definitions("-D${name}=\"${value}\"")
+  endif()
+endmacro(add_list_string_option)
+
+# this function should produce the same value as the macro MAKE_VERSION defined in the C code (file types.h)
+function(make_version VERSION_VALUE)
+  math(EXPR RESULT "0")
+  foreach (ARG ${ARGN})
+    math(EXPR RESULT "${RESULT} * 16 + ${ARG}")
+  endforeach()
+  set(${VERSION_VALUE} "${RESULT}" PARENT_SCOPE)
+endfunction()
+
+macro(compile_asn1 asn1Source asn1cCmd ResultFlag)
+   # Warning: if you modify ASN.1 source file to generate new C files, cmake should be re-run instead of make
+   execute_process(COMMAND ${asn1cCmd}  ${asn1Source} RESULT_VARIABLE ret)
+
+   if (NOT ${ret} STREQUAL 0)
+      message(FATAL_ERROR "${ret}: error")
+   endif (NOT ${ret} STREQUAL 0)
+
+   add_custom_target (
+     ${ResultFlag} ALL
+     ${asn1cCmd} ${asn1Source}
+     DEPENDS ${asn1Source}
+   )
+endmacro(compile_asn1)
diff --git a/common/utils/LOG/log.c b/common/utils/LOG/log.c
index a65a9732e7d0b201f7ea37ce9ac0cbabf5204cc5..5b047c082d057b2bcd795a7d9c98084b5ad34fd3 100644
--- a/common/utils/LOG/log.c
+++ b/common/utils/LOG/log.c
@@ -411,6 +411,16 @@ int register_log_component(char *name,
   return computed_compidx;
 }
 
+static void unregister_all_log_components(void)
+{
+  log_component_t* lc = &g_log->log_component[0];
+  while (lc->name) {
+    free((char *)lc->name); // defined as const, but assigned through strdup()
+    free(lc->filelog_name);
+    lc++;
+  }
+}
+
 int isLogInitDone (void)
 {
   if (g_log == NULL)
@@ -502,6 +512,12 @@ int logInit (void)
   return 0;
 }
 
+void logTerm(void)
+{
+  unregister_all_log_components();
+  free_and_zero(g_log);
+}
+
 #include <sys/syscall.h>
 static inline int log_header(log_component_t *c,
 			     char *log_buffer,
diff --git a/common/utils/LOG/log.h b/common/utils/LOG/log.h
index 8299c48fbb0ff873cf9be6b7518332c31c28f5db..1f19d5587818f50da9333a74eb8ff2d8986ac13d 100644
--- a/common/utils/LOG/log.h
+++ b/common/utils/LOG/log.h
@@ -302,6 +302,7 @@ extern "C" {
 #    include "log_if.h"
 /*----------------------------------------------------------------------------*/
 int  logInit (void);
+void logTerm (void);
 int  isLogInitDone (void);
 void logRecord_mt(const char *file, const char *func, int line,int comp, int level, const char *format, ...) __attribute__ ((format (printf, 6, 7)));
 void vlogRecord_mt(const char *file, const char *func, int line, int comp, int level, const char *format, va_list args );
@@ -472,130 +473,6 @@ int32_t write_file_matlab(const char *fname, const char *vname, void *data, int
 
 /* @}*/
 
-static __inline__ uint64_t rdtsc(void) {
-  uint32_t a, d;
-  __asm__ volatile ("rdtsc" : "=a" (a), "=d" (d));
-  return (((uint64_t)d)<<32) | ((uint64_t)a);
-}
-
-#define DEBUG_REALTIME 1
-#if DEBUG_REALTIME
-
-extern double cpuf;
-
-static inline uint64_t checkTCPU(int timeout,
-		                         char *file,
-								 int line)
-{
-  static uint64_t __thread lastCPUTime=0;
-  static uint64_t __thread last=0;
-  uint64_t cur=rdtsc();
-  struct timespec CPUt;
-  clock_gettime(CLOCK_THREAD_CPUTIME_ID, &CPUt);
-  uint64_t CPUTime=CPUt.tv_sec*1000*1000+CPUt.tv_nsec/1000;
-  double microCycles=(double)(cpuf*1000);
-  int duration=(int)((cur-last)/microCycles);
-
-  if ( last!=0 && duration > timeout ) {
-    //struct timespec ts;
-    //clock_gettime(CLOCK_MONOTONIC, &ts);
-    printf("%s:%d lte-ue delay %d (exceed %d), CPU for this period: %lld\n", file, line,
-           duration, timeout, (long long)CPUTime-lastCPUTime );
-  }
-
-  last=cur;
-  lastCPUTime=CPUTime;
-  return cur;
-}
-
-static inline unsigned long long checkT(int timeout,
-		                                char *file,
-										int line)
-{
-  static unsigned long long __thread last=0;
-  unsigned long long cur=rdtsc();
-  int microCycles=(int)(cpuf*1000);
-  int duration=(int)((cur-last)/microCycles);
-
-  if ( last!=0 && duration > timeout )
-    printf("%s:%d lte-ue delay %d (exceed %d)\n", file, line,
-           duration, timeout);
-
-  last=cur;
-  return cur;
-}
-
-typedef struct m {
-  uint64_t iterations;
-  uint64_t sum;
-  uint64_t maxArray[11];
-} Meas;
-
-static inline void printMeas(char *txt,
-		                     Meas *M,
-							 int period)
-{
-  if (M->iterations%period == 0 ) {
-    char txt2[512];
-    sprintf(txt2,"%s avg=%" PRIu64 " iterations=%" PRIu64 " max=%"
-            PRIu64 ":%" PRIu64 ":%" PRIu64 ":%" PRIu64 ":%" PRIu64 ":%" PRIu64 ":%" PRIu64 ":%" PRIu64 ":%" PRIu64 ":%" PRIu64 "\n",
-            txt,
-            M->sum/M->iterations,
-            M->iterations,
-            M->maxArray[1],M->maxArray[2], M->maxArray[3],M->maxArray[4], M->maxArray[5],
-            M->maxArray[6],M->maxArray[7], M->maxArray[8],M->maxArray[9],M->maxArray[10]);
-#if T_TRACER
-    LOG_W(PHY,"%s",txt2);
-#else
-    printf("%s",txt2);
-#endif
-  }
-}
-
-static inline int cmpint(const void *a,
-		                 const void *b)
-{
-  uint64_t *aa=(uint64_t *)a;
-  uint64_t *bb=(uint64_t *)b;
-  return (int)(*aa-*bb);
-}
-
-static inline void updateTimes(uint64_t start,
-		                       Meas *M,
-							   int period,
-							   char *txt)
-{
-  if (start!=0) {
-    uint64_t end=rdtsc();
-    long long diff=(end-start)/(cpuf*1000);
-    M->maxArray[0]=diff;
-    M->sum+=diff;
-    M->iterations++;
-    qsort(M->maxArray, 11, sizeof(uint64_t), cmpint);
-    printMeas(txt,M,period);
-  }
-}
-
-#define check(a) do { checkT(a,__FILE__,__LINE__); } while (0)
-#define checkcpu(a) do { checkTCPU(a,__FILE__,__LINE__); } while (0)
-#define initRefTimes(a) static __thread Meas a= {0}
-#define pickTime(a) uint64_t a=rdtsc()
-#define readTime(a) a
-#define initStaticTime(a) static __thread uint64_t a={0}
-#define pickStaticTime(a) do { a=rdtsc(); } while (0)
-
-#else
-#define check(a) do {} while (0)
-#define checkcpu(a) do {} while (0)
-#define initRefTimes(a) do {} while (0)
-#define initStaticTime(a) do {} while (0)
-#define pickTime(a) do {} while (0)
-#define readTime(a) 0
-#define pickStaticTime(a) do {} while (0)
-#define updateTimes(a,b,c,d) do {} while (0)
-#define printMeas(a,b,c) do {} while (0)
-#endif
-
 #ifdef __cplusplus
 }
 #endif
diff --git a/common/utils/load_module_shlib.c b/common/utils/load_module_shlib.c
index 2b0d339358e78c0985f1ed000199f1658960157c..1c9aa8cab9ab27c0faa1e0073f32ae80f981901e 100644
--- a/common/utils/load_module_shlib.c
+++ b/common/utils/load_module_shlib.c
@@ -69,7 +69,6 @@ char *loader_format_shlibpath(char *modname, char *version)
 char *tmpstr;
 char *shlibpath   =NULL;
 char *shlibversion=NULL;
-char *cfgprefix;
 paramdef_t LoaderParams[] ={{"shlibpath", NULL, 0, strptr:&shlibpath, defstrval:NULL, TYPE_STRING, 0, NULL},
                             {"shlibversion", NULL, 0, strptr:&shlibversion, defstrval:"", TYPE_STRING, 0, NULL}};
 
@@ -81,16 +80,11 @@ int ret;
 /* looks for specific path for this module in the config file */
 /* specific value for a module path and version is located in a modname subsection of the loader section */
 /* shared lib name is formatted as lib<module name><module version>.so */
-  cfgprefix = malloc(sizeof(LOADER_CONFIG_PREFIX)+strlen(modname)+16);
-  if (cfgprefix == NULL) {
-      fprintf(stderr,"[LOADER] %s %d malloc error loading module %s, %s\n",__FILE__, __LINE__, modname, strerror(errno));
-      exit_fun("[LOADER] unrecoverable error");
-  } else {
-      sprintf(cfgprefix,LOADER_CONFIG_PREFIX ".%s",modname);
-      int ret = config_get( LoaderParams,sizeof(LoaderParams)/sizeof(paramdef_t),cfgprefix);
-      if (ret <0) {
-          fprintf(stderr,"[LOADER]  %s %d couldn't retrieve config from section %s\n",__FILE__, __LINE__,cfgprefix);
-      }
+  char cfgprefix[sizeof(LOADER_CONFIG_PREFIX)+strlen(modname)+16];
+  sprintf(cfgprefix,LOADER_CONFIG_PREFIX ".%s",modname);
+  ret = config_get( LoaderParams,sizeof(LoaderParams)/sizeof(paramdef_t),cfgprefix);
+  if (ret <0) {
+      fprintf(stderr,"[LOADER]  %s %d couldn't retrieve config from section %s\n",__FILE__, __LINE__,cfgprefix);
    }
 /* no specific path, use loader default shared lib path */
    if (shlibpath == NULL) {
@@ -142,6 +136,7 @@ int load_module_version_shlib(char *modname, char *version, loader_shlibfunc_t *
   }
 
   shlib_path = loader_format_shlibpath(modname, version);
+  printf("shlib_path %s\n", shlib_path);
 
   for (int i = 0; i < loader_data.numshlibs; i++) {
     if (strcmp(loader_data.shlibs[i].name, modname) == 0) {
@@ -198,15 +193,17 @@ int load_module_version_shlib(char *modname, char *version, loader_shlibfunc_t *
   }
 
   if (farray) {
-    if (!loader_data.shlibs[lib_idx].funcarray) {
-      loader_data.shlibs[lib_idx].funcarray = malloc(numf*sizeof(loader_shlibfunc_t));
-      if (!loader_data.shlibs[lib_idx].funcarray) {
+    loader_shlibdesc_t *shlib = &loader_data.shlibs[lib_idx];
+    if (!shlib->funcarray) {
+      shlib->funcarray = calloc(numf, sizeof(loader_shlibfunc_t));
+      if (!shlib->funcarray) {
         fprintf(stderr, "[LOADER] load_module_shlib(): unable to allocate memory\n");
         ret = -1;
         goto load_module_shlib_exit;
       }
+      shlib->len_funcarray = numf;
+      shlib->numfunc = 0;
     }
-    loader_data.shlibs[lib_idx].numfunc = 0;
     for (int i = 0; i < numf; i++) {
       farray[i].fptr = dlsym(lib_handle,farray[i].fname);
       if (!farray[i].fptr) {
@@ -215,9 +212,32 @@ int load_module_version_shlib(char *modname, char *version, loader_shlibfunc_t *
         ret = -1;
         goto load_module_shlib_exit;
       }
-      loader_data.shlibs[lib_idx].funcarray[i].fname=strdup(farray[i].fname);
-      loader_data.shlibs[lib_idx].funcarray[i].fptr = farray[i].fptr;
-      loader_data.shlibs[lib_idx].numfunc++;
+      /* check whether this function has been loaded before */
+      int j = 0;
+      for (; j < shlib->numfunc; ++j) {
+        if (shlib->funcarray[j].fptr == farray[i].fptr) {
+          int rc = strcmp(shlib->funcarray[i].fname, farray[i].fname);
+          AssertFatal(rc == 0,
+                      "reloading the same fptr with different fnames (%s, %s)\n",
+                      shlib->funcarray[i].fname, farray[i].fname);
+          break;
+        }
+      }
+      if (j == shlib->numfunc) {
+        if (shlib->numfunc == shlib->len_funcarray) {
+          loader_shlibfunc_t *n = realloc(shlib->funcarray, shlib->numfunc * 2 * sizeof(loader_shlibfunc_t));
+          if (!n) {
+            fprintf(stderr, "[LOADER] %s(): unable to allocate memory\n", __func__);
+            ret = -1;
+            goto load_module_shlib_exit;
+          }
+          shlib->funcarray = n;
+          shlib->len_funcarray = shlib->numfunc * 2;
+        }
+        shlib->funcarray[j].fname = strdup(farray[i].fname);
+        shlib->funcarray[j].fptr = farray[i].fptr;
+        shlib->numfunc++;
+      }
     } /* for int i... */
   } else {  /* farray ! NULL */
     sprintf(afname,"%s_getfarray",modname);
@@ -248,3 +268,18 @@ void * get_shlibmodule_fptr(char *modname, char *fname)
     } /* for i loop on modules */
     return NULL;
 }
+
+void loader_reset()
+{
+  for (int i = 0; i < loader_data.numshlibs && loader_data.shlibs[i].name != NULL; i++) {
+    loader_shlibdesc_t *shlib = &loader_data.shlibs[i];
+    free(shlib->name);
+    free(shlib->thisshlib_path);
+    for (int j = 0; j < shlib->numfunc; ++j)
+      free(shlib->funcarray[j].fname);
+    free(shlib->funcarray);
+    shlib->numfunc = 0;
+    shlib->len_funcarray = 0;
+  }
+  free(loader_data.shlibs);
+}
diff --git a/common/utils/load_module_shlib.h b/common/utils/load_module_shlib.h
index 0e80a5353c7f39f87a3cf3bc820d23e71e01bceb..8139c21909616e9aede8765c66cb79a57713f265 100644
--- a/common/utils/load_module_shlib.h
+++ b/common/utils/load_module_shlib.h
@@ -47,6 +47,7 @@ typedef struct {
    char               *thisshlib_path;
    uint32_t           numfunc;
    loader_shlibfunc_t *funcarray;
+   uint32_t           len_funcarray;
 }loader_shlibdesc_t;
 
 typedef struct {
@@ -90,5 +91,6 @@ extern void * get_shlibmodule_fptr(char *modname, char *fname);
 extern loader_data_t loader_data;
 #endif /* LOAD_MODULE_SHLIB_MAIN */
 #define load_module_shlib(M, F, N, I) load_module_version_shlib(M, NULL, F, N, I)
+void loader_reset();
 #endif
 
diff --git a/common/utils/nr/nr_common.c b/common/utils/nr/nr_common.c
index b0a6266d349ce3328cbf6161cd6aab136861eb36..febfe7db7d77bacc0c7382c32706a86f351a004b 100644
--- a/common/utils/nr/nr_common.c
+++ b/common/utils/nr/nr_common.c
@@ -36,6 +36,27 @@
 
 const char *duplex_mode[]={"FDD","TDD"};
 
+int tables_5_3_2[5][11] = {
+  {25, 52, 79, 106, 133, 160, 216, 270, -1, -1, -1}, // 15 FR1
+  {11, 24, 38, 51, 65, 78, 106, 133, 162, 217, 273}, // 30 FR1
+  {-1, 11, 18, 24, 31, 38, 51, 65, 79, 107, 135},    // 60 FR1
+  {66, 132, 264, -1 , -1, -1, -1, -1, -1, -1, -1},   // 60 FR2
+  {32, 66, 132, 264, -1, -1, -1, -1, -1, -1, -1}     // 120FR2
+};
+
+int get_supported_band_index(int scs, int band, int n_rbs){
+
+  int scs_index = scs;
+  if (band>256)
+    scs_index++;
+  for (int i=0; i<11; i++) {
+    if(n_rbs == tables_5_3_2[scs][i])
+      return i;
+  }
+  return (-1); // not found
+}
+
+
 // Table 5.2-1 NR operating bands in FR1 & FR2 (3GPP TS 38.101)
 // Table 5.4.2.3-1 Applicable NR-ARFCN per operating band in FR1 & FR2 (3GPP TS 38.101)
 // Notes:
diff --git a/common/utils/nr/nr_common.h b/common/utils/nr/nr_common.h
index 882f99338c3533c785a567adbaafe0db88bf843d..0150cf59f8b7edf983edfea180628d0a2d187611 100644
--- a/common/utils/nr/nr_common.h
+++ b/common/utils/nr/nr_common.h
@@ -80,6 +80,7 @@ void SLIV2SL(int SLIV,int *S,int *L);
 int get_dmrs_port(int nl, uint16_t dmrs_ports);
 uint16_t SL_to_bitmap(int startSymbolIndex, int nrOfSymbols);
 int get_nb_periods_per_frame(uint8_t tdd_period);
+int get_supported_band_index(int scs, int band, int n_rbs);
 long rrc_get_max_nr_csrs(uint8_t max_rbs, long b_SRS);
 
 #define CEILIDIV(a,b) ((a+b-1)/b)
diff --git a/common/utils/telnetsrv/telnetsrv_measurements.c b/common/utils/telnetsrv/telnetsrv_measurements.c
index 786cbd094cc432619906b38fde0b7a70ff3917ef..2af76753b880befd64a7a7445aca3d8f547705b0 100644
--- a/common/utils/telnetsrv/telnetsrv_measurements.c
+++ b/common/utils/telnetsrv/telnetsrv_measurements.c
@@ -51,6 +51,7 @@
 
 static char                    *grouptypes[] = {"ltestats","cpustats"};
 static double                  cpufreq;
+extern notifiedFIFO_t          measur_fifo;
 #define TELNET_NUM_MEASURTYPES (sizeof(grouptypes)/sizeof(char *))
 
 #define HDR "---------------------------------"
diff --git a/common/utils/threadPool/measurement_display.c b/common/utils/threadPool/measurement_display.c
index 0f5a3e0f69c81b2860b7275ec30a932693aaba5c..cf2febaf330c9b66ebf90f04ab213691fbde5176 100644
--- a/common/utils/threadPool/measurement_display.c
+++ b/common/utils/threadPool/measurement_display.c
@@ -43,9 +43,9 @@ int main(int argc, char *argv[]) {
     exit(1);
   }
 
-  uint64_t deb=rdtsc();
+  uint64_t deb=rdtsc_oai();
   usleep(100000);
-  cpuCyclesMicroSec=(rdtsc()-deb)/100000;
+  cpuCyclesMicroSec=(rdtsc_oai()-deb)/100000;
   printf("Cycles per µs: %lu\n",cpuCyclesMicroSec);
   printf("Key" SEP "delay to process" SEP "processing time" SEP "delay to be read answer\n");
   notifiedFIFO_elt_t doneRequest;
diff --git a/common/utils/threadPool/thread-pool.c b/common/utils/threadPool/thread-pool.c
index fff09528a856edbe39f2bbff52bad368ce7b1842..de9091de7934b4126c727f6a928263ff27d541cd 100644
--- a/common/utils/threadPool/thread-pool.c
+++ b/common/utils/threadPool/thread-pool.c
@@ -72,11 +72,11 @@ void *one_thread(void *arg) {
   do {
     notifiedFIFO_elt_t *elt=pullNotifiedFifoRemember(&tp->incomingFifo, myThread);
 
-    if (tp->measurePerf) elt->startProcessingTime=rdtsc();
+    if (tp->measurePerf) elt->startProcessingTime=rdtsc_oai();
 
     elt->processingFunc(NotifiedFifoData(elt));
 
-    if (tp->measurePerf) elt->endProcessingTime=rdtsc();
+    if (tp->measurePerf) elt->endProcessingTime=rdtsc_oai();
 
     if (elt->reponseFifo) {
       // Check if the job is still alive, else it has been aborted
@@ -97,7 +97,7 @@ void initNamedTpool(char *params,tpool_t *pool, bool performanceMeas, char *name
   char *measr=getenv("threadPoolMeasurements");
   pool->measurePerf=performanceMeas;
   // force measurement if the output is defined
-  pool->measurePerf=measr!=NULL;
+  pool->measurePerf |= measr!=NULL;
 
   if (measr) {
     mkfifo(measr,0666);
diff --git a/common/utils/threadPool/thread-pool.h b/common/utils/threadPool/thread-pool.h
index a8f8572cfe9ff379fa277507fbf69593f1ed97de..d06f2195ee7921c40cfef5f5e5a1a5acf3885e3c 100644
--- a/common/utils/threadPool/thread-pool.h
+++ b/common/utils/threadPool/thread-pool.h
@@ -27,11 +27,11 @@
 #include <stdbool.h>
 #include <stdint.h>
 #include <pthread.h>
+#include <unistd.h>
 #include <sys/syscall.h>
-#include <assertions.h>
-#include <LOG/log.h>
-#include <common/utils/system.h>
-//#include <stdatomic.h>
+#include "assertions.h"
+#include "common/utils/time_meas.h"
+#include "common/utils/system.h"
 
 #ifdef DEBUG
   #define THREADINIT   PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP
@@ -60,10 +60,10 @@ typedef struct notifiedFIFO_elt_s {
   struct notifiedFIFO_s *reponseFifo;
   void (*processingFunc)(void *);
   bool malloced;
-  uint64_t creationTime;
-  uint64_t startProcessingTime;
-  uint64_t endProcessingTime;
-  uint64_t returnTime;
+  oai_cputime_t creationTime;
+  oai_cputime_t startProcessingTime;
+  oai_cputime_t endProcessingTime;
+  oai_cputime_t returnTime;
   void *msgData;
 }  notifiedFIFO_elt_t;
 
@@ -97,12 +97,11 @@ static inline void *NotifiedFifoData(notifiedFIFO_elt_t *elt) {
 
 static inline void delNotifiedFIFO_elt(notifiedFIFO_elt_t *elt) {
   if (elt->malloced) {
-    elt->malloced=false;
+    elt->malloced = false;
     free(elt);
-  } else
-    printf("delNotifiedFIFO on something not allocated by newNotifiedFIFO\n");
-
-  //LOG_W(UTIL,"delNotifiedFIFO on something not allocated by newNotifiedFIFO\n");
+  }
+  /* it is allowed to call delNotifiedFIFO_elt when the memory is managed by
+   * the caller */
 }
 
 static inline void initNotifiedFIFO_nothreadSafe(notifiedFIFO_t *nf) {
@@ -141,8 +140,7 @@ static inline  notifiedFIFO_elt_t *pullNotifiedFIFO_nothreadSafe(notifiedFIFO_t
 
   notifiedFIFO_elt_t *ret=nf->outF;
 
-  if (nf->outF==nf->outF->next)
-    LOG_E(UTIL,"Circular list in thread pool: push several times the same buffer is forbidden\n");
+  AssertFatal(nf->outF != nf->outF->next,"Circular list in thread pool: push several times the same buffer is forbidden\n");
 
   nf->outF=nf->outF->next;
 
@@ -174,6 +172,20 @@ static inline  notifiedFIFO_elt_t *pollNotifiedFIFO(notifiedFIFO_t *nf) {
   return ret;
 }
 
+static inline time_stats_t exec_time_stats_NotifiedFIFO(const notifiedFIFO_elt_t* elt)
+{
+  time_stats_t ts = {0};
+  if (elt->startProcessingTime == 0 && elt->endProcessingTime == 0)
+    return ts; /* no measurements done */
+  ts.in = elt->startProcessingTime;
+  ts.diff = elt->endProcessingTime - ts.in;
+  ts.p_time = ts.diff;
+  ts.diff_square = ts.diff * ts.diff;
+  ts.max = ts.diff;
+  ts.trials = 1;
+  return ts;
+}
+
 // This function aborts all messages matching the key
 // If the queue is used in thread pools, it doesn't cancels already running processing
 // because the message has already been picked
@@ -224,18 +236,18 @@ typedef struct thread_pool {
 } tpool_t;
 
 static inline void pushTpool(tpool_t *t, notifiedFIFO_elt_t *msg) {
-  if (t->measurePerf) msg->creationTime=rdtsc();
+  if (t->measurePerf) msg->creationTime=rdtsc_oai();
 
   if ( t->activated)
     pushNotifiedFIFO(&t->incomingFifo, msg);
   else {
     if (t->measurePerf)
-      msg->startProcessingTime=rdtsc();
+      msg->startProcessingTime=rdtsc_oai();
 
     msg->processingFunc(NotifiedFifoData(msg));
 
     if (t->measurePerf)
-      msg->endProcessingTime=rdtsc();
+      msg->endProcessingTime=rdtsc_oai();
 
     if (msg->reponseFifo)
       pushNotifiedFIFO(msg->reponseFifo, msg);
@@ -246,7 +258,7 @@ static inline notifiedFIFO_elt_t *pullTpool(notifiedFIFO_t *responseFifo, tpool_
   notifiedFIFO_elt_t *msg= pullNotifiedFIFO(responseFifo);
   AssertFatal(t->traceFd, "Thread pool used while not initialized");
   if (t->measurePerf)
-    msg->returnTime=rdtsc();
+    msg->returnTime=rdtsc_oai();
 
   if (t->traceFd > 0)
     if(write(t->traceFd, msg, sizeof(*msg)));
@@ -261,7 +273,7 @@ static inline notifiedFIFO_elt_t *tryPullTpool(notifiedFIFO_t *responseFifo, tpo
     return NULL;
 
   if (t->measurePerf)
-    msg->returnTime=rdtsc();
+    msg->returnTime=rdtsc_oai();
 
   if (t->traceFd)
     if(write(t->traceFd, msg, sizeof(*msg)));
diff --git a/openair1/PHY/TOOLS/time_meas.c b/common/utils/time_meas.c
similarity index 97%
rename from openair1/PHY/TOOLS/time_meas.c
rename to common/utils/time_meas.c
index 353f170434a2d4ddbc2cff2d6d4b2a5704186cda..df2bfd64de32b6c8b97c3450170e2ff5f9cc71a5 100644
--- a/openair1/PHY/TOOLS/time_meas.c
+++ b/common/utils/time_meas.c
@@ -267,6 +267,15 @@ void init_meas(void) {
   AssertFatal(rt==0, "couldn't create cpu measurment thread: %s\n",strerror(errno));
 }
 
+void send_meas(time_stats_t *ts, int msgid) {
+    if (MEASURE_ENABLED(ts) ) {
+      ts->tstatptr->timestat_id=ts->meas_index;
+      ts->tstatptr->msgid = msgid ;
+      ts->tstatptr->ts = rdtsc_oai();
+      pushNotifiedFIFO(&measur_fifo, ts->tpoolmsg);
+    }
+  }
+
 void end_meas(void) {
     notifiedFIFO_elt_t *nfe = newNotifiedFIFO_elt(sizeof(time_stats_msg_t),0,NULL,NULL);
 	time_stats_msg_t *msg = (time_stats_msg_t *)NotifiedFifoData(nfe);
diff --git a/openair1/PHY/TOOLS/time_meas.h b/common/utils/time_meas.h
similarity index 83%
rename from openair1/PHY/TOOLS/time_meas.h
rename to common/utils/time_meas.h
index ed4e9a125f1c5cf496c8819937a8d45df01a711d..382dd7455a0e4a5d44146b4c6054c971071d7809 100644
--- a/openair1/PHY/TOOLS/time_meas.h
+++ b/common/utils/time_meas.h
@@ -31,15 +31,14 @@
 #include <pthread.h>
 #include <linux/kernel.h>
 #include <linux/types.h>
-#include "common/utils/threadPool/thread-pool.h"
 // global var to enable openair performance profiler
 extern int opp_enabled;
 extern double cpu_freq_GHz  __attribute__ ((aligned(32)));;
 // structure to store data to compute cpu measurment
 #if defined(__x86_64__) || defined(__i386__)
-  #define OAI_CPUTIME_TYPE long long
+  typedef long long oai_cputime_t;
 #elif defined(__arm__)
-  #define OAI_CPUTIME_TYPE uint32_t
+  typedef uint32_t oai_cputime_t;
 #else
   #error "building on unsupported CPU architecture"
 #endif
@@ -54,23 +53,23 @@ typedef void(*meas_printfunc_t)(const char* format, ...);
 typedef struct {
   int               msgid;                  /*!< \brief message id, as defined by TIMESTAT_MSGID_X macros */
   int               timestat_id;            /*!< \brief points to the time_stats_t entry in cpumeas table */
-  OAI_CPUTIME_TYPE  ts;                     /*!< \brief time stamp */
+  oai_cputime_t  ts;                        /*!< \brief time stamp */
   meas_printfunc_t  displayFunc;            /*!< \brief function to call when DISPLAY message is received*/
 } time_stats_msg_t;
 
-
-typedef struct {
-  OAI_CPUTIME_TYPE in;      /*!< \brief time at measure starting point */
-  OAI_CPUTIME_TYPE diff;     /*!< \brief average difference between time at starting point and time at endpoint*/
-  OAI_CPUTIME_TYPE p_time; /*!< \brief absolute process duration */
-  OAI_CPUTIME_TYPE diff_square; /*!< \brief process duration square */
-  OAI_CPUTIME_TYPE max;      /*!< \brief maximum difference between time at starting point and time at endpoint*/
+struct notifiedFIFO_elt_s;
+typedef struct time_stats {
+  oai_cputime_t in;          /*!< \brief time at measure starting point */
+  oai_cputime_t diff;        /*!< \brief average difference between time at starting point and time at endpoint*/
+  oai_cputime_t p_time;      /*!< \brief absolute process duration */
+  oai_cputime_t diff_square; /*!< \brief process duration square */
+  oai_cputime_t max;         /*!< \brief maximum difference between time at starting point and time at endpoint*/
   int trials;                /*!< \brief number of start point - end point iterations */
   int meas_flag;             /*!< \brief 1: stop_meas not called (consecutive calls of start_meas) */
   char *meas_name;           /*!< \brief name to use when printing the measure (not used for PHY simulators)*/
   int meas_index;            /*!< \brief index of this measure in the measure array (not used for PHY simulators)*/
   int meas_enabled;         /*!< \brief per measure enablement flag. send_meas tests this flag, unused today in start_meas and stop_meas*/
-  notifiedFIFO_elt_t *tpoolmsg; /*!< \brief message pushed to the cpu measurment queue to report a measure START or STOP */
+  struct notifiedFIFO_elt_s *tpoolmsg; /*!< \brief message pushed to the cpu measurment queue to report a measure START or STOP */
   time_stats_msg_t *tstatptr;   /*!< \brief pointer to the time_stats_msg_t data in the tpoolmsg, stored here for perf considerations*/
 } time_stats_t;
 #define MEASURE_ENABLED(X)       (X->meas_enabled)
@@ -179,7 +178,7 @@ static inline void copy_meas(time_stats_t *dst_ts,time_stats_t *src_ts) {
   }
 }
 
-static inline void merge_meas(time_stats_t *dst_ts, time_stats_t *src_ts)
+static inline void merge_meas(time_stats_t *dst_ts, const time_stats_t *src_ts)
 {
   if (!opp_enabled)
     return;
@@ -189,25 +188,17 @@ static inline void merge_meas(time_stats_t *dst_ts, time_stats_t *src_ts)
     dst_ts->max = src_ts->max;
 }
 
-extern notifiedFIFO_t measur_fifo;
 #define CPUMEASUR_SECTION "cpumeasur"
 
 #define CPUMEASUR_PARAMS_DESC { \
     {"max_cpumeasur",     "Max number of cpu measur entries",      0,       uptr:&max_cpumeasur,           defintval:100,         TYPE_UINT,   0},\
   }
 
-  void init_meas(void);
-  time_stats_t *register_meas(char *name);
-  #define START_MEAS(X) send_meas(X, TIMESTAT_MSGID_START)
-  #define STOP_MEAS(X)  send_meas(X, TIMESTAT_MSGID_STOP)
-  static inline void send_meas(time_stats_t *ts, int msgid) {
-    if (MEASURE_ENABLED(ts) ) {
-      ts->tstatptr->timestat_id=ts->meas_index;
-      ts->tstatptr->msgid = msgid ;
-      ts->tstatptr->ts = rdtsc_oai();
-      pushNotifiedFIFO(&measur_fifo, ts->tpoolmsg);
-    }
-  }
-  void end_meas(void);
+void init_meas(void);
+time_stats_t *register_meas(char *name);
+#define START_MEAS(X) send_meas(X, TIMESTAT_MSGID_START)
+#define STOP_MEAS(X)  send_meas(X, TIMESTAT_MSGID_STOP)
+void send_meas(time_stats_t *ts, int msgid);
+void end_meas(void);
 
 #endif
diff --git a/doc/5Gnas.md b/doc/5Gnas.md
index 3d33af426c401b81e1f3acfd704a531c5dc18369..db0c19f07ea6ba4b193a1b37cd67a54aa67d4bfa 100644
--- a/doc/5Gnas.md
+++ b/doc/5Gnas.md
@@ -23,7 +23,6 @@ This tuto for 5G gNB NAS design
 
 # source files
 
-executables/ocp-gnb.c: a main loop to create a debuggable gNB, see document SW_archi.md
 openair2/RRC/NR/nr_ngap_gNB.c: skeleton for interface with NGAP
 openair3/NAS/COMMON/milenage.h: a simple milenage implementation, depend only on crypto library
 openair3/NAS/COMMON/NR_NAS_defs.h: messages defined for NAS implemented in C: C struct, C enums and automatic conversion to labels for debug messages
diff --git a/doc/SW_archi.md b/doc/SW_archi.md
index 7648fb2e167ece0f133013e7339685b8de6674d8..0a53bf3793b7158220ce1312076476de90b662a1 100644
--- a/doc/SW_archi.md
+++ b/doc/SW_archi.md
@@ -85,10 +85,6 @@ end
 This tuto for 5G gNB design, with Open Cells main
 {: .text-center}
 
-# Top file: executables/ocp-gnb.c
-
-the function main() initializes the data from configuration file
-
 # The main thread is in ru_thread()
 The infinite loop:
 ## rx_rf()
diff --git a/doc/TESTING_5GSA_setup.md b/doc/TESTING_5GSA_setup.md
index 048d8c86ff2e7a212693f3c1a65becef2bfa962f..f8c85bf2ca51f012ed578fd99cf145d12f6b649c 100644
--- a/doc/TESTING_5GSA_setup.md
+++ b/doc/TESTING_5GSA_setup.md
@@ -169,8 +169,7 @@ MACRLCs = (
 
 
 At the point of writing this document the control-plane exchanges between the CU and the DU over *F1-C* interface, as well as some IP traffic tests over *F1-U* have been validated using the OAI gNB/nrUE in RFSIMULATOR mode. 
-
-*These extensions are not yet fully integrated into develop branch, as they are under merge request. Until they get fully integrated, the CU/DU functionalities can be tested in [NR_F1C_F1U_extensions](https://gitlab.eurecom.fr/oai/openairinterface5g/-/tree/NR_F1C_F1U_extensions) branch.* 
+ 
 
 ## 1.2  OAI 5G Core Network installation and configuration
 The instructions for the installation of OAI CN components (AMF, SMF, NRF, UPF) using `docker-compose` can be found [here](https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-fed/-/blob/master/README.md).
@@ -264,12 +263,12 @@ the gNB can be launched in 2 modes:
     1. Launch the CU component:
     ```bash
     sudo RFSIMULATOR=server ./nr-softmodem --rfsim --sa \
-        -O ../../../targets/PROJECTS/GENERIC-NR-5GC/CONF/cu_gnb.conf
+        -O ../../../ci-scripts/conf_files/gNB_SA_CU.conf
     ```
     2. Launch the DU component:
     ```bash
     sudo RFSIMULATOR=server ./nr-softmodem --rfsim --sa \
-        -O ../../../targets/PROJECTS/GENERIC-NR-5GC/CONF/du_gnb.conf
+        -O ../../../ci-scripts/conf_files/gNB_SA_DU.conf
     ```
 
 - To launch the OAI UE (valid in `monolithic` gNB and `CU/DU split` gNB):
diff --git a/docker/Dockerfile.phySim.rhel8.2 b/docker/Dockerfile.phySim.rhel8.2
index 9f4b27ec0e4255a4b2bb4938fd67359e561a4e6f..2627a9eafdf503e6e1abbcf346e7ea60ce0a7c49 100644
--- a/docker/Dockerfile.phySim.rhel8.2
+++ b/docker/Dockerfile.phySim.rhel8.2
@@ -31,11 +31,14 @@ RUN rm -Rf /oai-ran
 WORKDIR /oai-ran
 COPY . .
 
+#only install address sanitizer for this container, the others don't need it
+RUN yum install -y libasan
+
 #run build_oai to build the target image
 RUN /bin/sh oaienv && \ 
     cd cmake_targets && \
     mkdir -p log && \
-    ./build_oai --phy_simulators --ninja --verbose-ci
+    ./build_oai --phy_simulators --ninja --verbose-ci --sanitize-address
 
 #start from scratch for target executable
 FROM registry.access.redhat.com/ubi8/ubi:latest as oai-physim
@@ -85,6 +88,7 @@ COPY --from=phy-sim-build \
     /lib64/liblapack.so.3 \
     /lib64/libexslt.so.0 \
     /lib64/libxslt.so.1 \
+    /usr/lib64/libasan.so.5 \
     /oai-ran/cmake_targets/ran_build/build/libdfts.so \
     /oai-ran/cmake_targets/ran_build/build/libSIMU.so \
     /oai-ran/cmake_targets/ran_build/build/libldpc.so \
diff --git a/executables/main-fs6.c b/executables/main-fs6.c
index 9e92f2e41af1b9fcdadca62d0c1c6cb0909560a7..fff4c511554cc5a1e90ca8fd95bdd533028417ff 100644
--- a/executables/main-fs6.c
+++ b/executables/main-fs6.c
@@ -55,6 +55,59 @@ int sum(uint8_t *b, int s) {
   return sum;
 }
 
+
+extern double cpuf;
+
+typedef struct m {
+  uint64_t iterations;
+  uint64_t sum;
+  uint64_t maxArray[11];
+} Meas;
+
+int cmpint(const void *a, const void *b)
+{
+  uint64_t *aa=(uint64_t *)a;
+  uint64_t *bb=(uint64_t *)b;
+  return (int)(*aa-*bb);
+}
+
+static inline void printMeas(char *txt,
+                                    Meas *M,
+                                                        int period)
+{
+  if (M->iterations%period == 0 ) {
+    char txt2[512];
+    sprintf(txt2,"%s avg=%" PRIu64 " iterations=%" PRIu64 " max=%"
+            PRIu64 ":%" PRIu64 ":%" PRIu64 ":%" PRIu64 ":%" PRIu64 ":%" PRIu64 ":%" PRIu64 ":%" PRIu64 ":%" PRIu64 ":%" PRIu64 "\n",
+            txt,
+            M->sum/M->iterations,
+            M->iterations,
+            M->maxArray[1],M->maxArray[2], M->maxArray[3],M->maxArray[4], M->maxArray[5],
+            M->maxArray[6],M->maxArray[7], M->maxArray[8],M->maxArray[9],M->maxArray[10]);
+#if T_TRACER
+    LOG_W(PHY,"%s",txt2);
+#else
+    printf("%s",txt2);
+#endif
+  }
+}
+
+void updateTimes(uint64_t start, Meas *M, int period, char *txt)
+{
+  if (start!=0) {
+    uint64_t end=rdtsc_oai();
+    long long diff=(end-start)/(cpuf*1000);
+    M->maxArray[0]=diff;
+    M->sum+=diff;
+    M->iterations++;
+    qsort(M->maxArray, 11, sizeof(uint64_t), cmpint);
+    printMeas(txt,M,period);
+  }
+}
+
+#define initStaticTime(a) static __thread uint64_t a={0}
+#define pickStaticTime(a) do { a=rdtsc_oai(); } while (0)
+#define initRefTimes(a) static __thread Meas a= {0}
 static inline int cmpintRev(const void *a, const void *b) {
   uint64_t *aa=(uint64_t *)a;
   uint64_t *bb=(uint64_t *)b;
@@ -82,7 +135,7 @@ static inline void printMeas2(char *txt, Meas *M, int period, bool MaxMin) {
 
 static inline void updateTimesReset(uint64_t start, Meas *M, int period, bool MaxMin, char *txt) {
   if (start!=0) {
-    uint64_t end=rdtsc();
+    uint64_t end=rdtsc_oai();
     long long diff=(end-start)/(cpuf*1000);
     M->maxArray[0]=diff;
     M->sum+=diff;
@@ -107,7 +160,7 @@ static inline void updateTimesReset(uint64_t start, Meas *M, int period, bool Ma
 
 static inline void measTransportTime(uint64_t DuSend, uint64_t CuMicroSec, Meas *M, int period, bool MaxMin, char *txt) {
   if (DuSend!=0) {
-    uint64_t end=rdtsc();
+    uint64_t end=rdtsc_oai();
     long long diff=(end-DuSend)/(cpuf*1000)-CuMicroSec;
     M->maxArray[0]=diff;
     M->sum+=diff;
@@ -894,7 +947,7 @@ void phy_procedures_eNB_TX_fromsplit(uint8_t *bufferZone, int nbBlocks, PHY_VARS
   memcpy(eNB->pbch_pdu,hDL(bufferZone)->pbch_pdu, 4);
 
   // Remove all scheduled DL, we will populate from the CU sending
-  for (int UE_id=0; UE_id<NUMBER_OF_UE_MAX; UE_id++) {
+  for (int UE_id=0; UE_id<NUMBER_OF_DLSCH_MAX; UE_id++) {
     LTE_eNB_DLSCH_t *dlsch0 = eNB->dlsch[UE_id][0];
 
     if ( dlsch0 && dlsch0->rnti>0 ) {
@@ -1463,7 +1516,7 @@ void DL_cu_fs6(RU_t *ru, L1_rxtx_proc_t *proc, uint64_t  DuClock, uint64_t start
   }
 
   hDL(bufferZone)->DuClock=DuClock;
-  hDL(bufferZone)->CuSpentMicroSec=(rdtsc()-startCycle)/(cpuf*1000);
+  hDL(bufferZone)->CuSpentMicroSec=(rdtsc_oai()-startCycle)/(cpuf*1000);
   updateTimesReset(startCycle, &CUprocessing, 1000,  true,"CU entire processing from recv to send");
   sendSubFrame(&sockFS6, bufferZone, sizeof(fs6_dl_t), CTsentCUv0 );
   return;
@@ -1476,7 +1529,7 @@ void UL_cu_fs6(RU_t *ru, L1_rxtx_proc_t *proc, uint64_t *TS, uint64_t *DuClock,
   pickStaticTime(begingWait);
   int nb_blocks=receiveSubFrame(&sockFS6, bufferZone, sizeof(bufferZone), CTsentDUv0 );
   * DuClock=hUDP(bufferZone)->senderClock;
-  * startProcessing=rdtsc();
+  * startProcessing=rdtsc_oai();
   updateTimesReset(begingWait, &fullLoop, 1000, false, "CU wait DU");
 
   if (nb_blocks ==0) {
diff --git a/executables/main-ocp.c b/executables/main-ocp.c
index 04315a4d57f3939e9187a7cf5b0a20113614039e..c9388e179d167e9fef5da4a1908fa3e4ecd68445 100644
--- a/executables/main-ocp.c
+++ b/executables/main-ocp.c
@@ -87,10 +87,10 @@ AGENT_RRC_xface *agent_rrc_xface[NUM_MAX_ENB]= {0};
 AGENT_MAC_xface *agent_mac_xface[NUM_MAX_ENB]= {0};
 void flexran_agent_slice_update(mid_t module_idP) {
 }
-int proto_agent_start(mod_id_t mod_id, const cudu_params_t *p) {
+int proto_agent_start(mid_t mod_id, const cudu_params_t *p) {
   return 0;
 }
-void proto_agent_stop(mod_id_t mod_id) {
+void proto_agent_stop(mid_t mod_id) {
 }
 
 static void *ru_thread( void *param );
diff --git a/executables/nr-gnb.c b/executables/nr-gnb.c
index 2b1c36407bd7073198d89539b103ab72b6c0bf20..fa0c3a1f63a15e40fe9b3c0db9fec46fc7faba24 100644
--- a/executables/nr-gnb.c
+++ b/executables/nr-gnb.c
@@ -300,8 +300,7 @@ void rx_func(void *param) {
 }
 static void dump_L1_meas_stats(PHY_VARS_gNB *gNB, RU_t *ru, char *output) {
   int stroff = 0;
-  stroff += print_meas_log(gNB->phy_proc_tx[0], "L1 Tx processing thread 0", NULL, NULL, output);
-  //stroff += print_meas_log(gNB->phy_proc_tx[1], "L1 Tx processing thread 1", NULL, NULL, output+stroff);
+  stroff += print_meas_log(&gNB->phy_proc_tx, "L1 Tx processing", NULL, NULL, output);
   stroff += print_meas_log(&gNB->dlsch_encoding_stats, "DLSCH encoding", NULL, NULL, output+stroff);
   stroff += print_meas_log(&gNB->phy_proc_rx, "L1 Rx processing", NULL, NULL, output+stroff);
   stroff += print_meas_log(&gNB->ul_indication_stats, "UL Indication", NULL, NULL, output+stroff);
@@ -337,8 +336,7 @@ void *nrL1_stats_thread(void *param) {
   fd=fopen("nrL1_stats.log","w");
   AssertFatal(fd!=NULL,"Cannot open nrL1_stats.log\n");
 
-  reset_meas(gNB->phy_proc_tx[0]);
-  //reset_meas(gNB->phy_proc_tx[1]);
+  reset_meas(&gNB->phy_proc_tx);
   reset_meas(&gNB->dlsch_encoding_stats);
   reset_meas(&gNB->phy_proc_rx);
   reset_meas(&gNB->ul_indication_stats);
@@ -425,7 +423,7 @@ void init_gNB_Tpool(int inst) {
     s_offset += 3;
   }
   if (getenv("noThreads")) strcpy(pool, "n");
-  initTpool(pool, gNB->threadPool, false);
+  initTpool(pool, gNB->threadPool, cpumeas(CPUMEAS_GETSTATE));
   // ULSCH decoder result FIFO
   gNB->respDecode = (notifiedFIFO_t*) malloc(sizeof(notifiedFIFO_t));
   initNotifiedFIFO(gNB->respDecode);
@@ -450,8 +448,6 @@ void init_gNB_Tpool(int inst) {
     processingData_L1tx_t *msgDataTx = (processingData_L1tx_t *)NotifiedFifoData(msgL1Tx);
     init_DLSCH_struct(gNB, msgDataTx);
     memset(msgDataTx->ssb, 0, 64*sizeof(NR_gNB_SSB_t));
-    reset_meas(&msgDataTx->phy_proc_tx);
-    gNB->phy_proc_tx[i] = &msgDataTx->phy_proc_tx;
     pushNotifiedFIFO(gNB->L1_tx_free,msgL1Tx); // to unblock the process in the beginning
   }
 
diff --git a/executables/nr-softmodem.c b/executables/nr-softmodem.c
index 7410e303b1a22eca1cf01f6df51d3a5210977cae..ac5a1b01320e6916e8dac8123138618ea88536ac 100644
--- a/executables/nr-softmodem.c
+++ b/executables/nr-softmodem.c
@@ -62,8 +62,6 @@ unsigned short config_frames[4] = {2,9,11,13};
 #include "common/utils/LOG/vcd_signal_dumper.h"
 #include "UTIL/OPT/opt.h"
 
-//#include "PHY/TOOLS/time_meas.h"
-
 #include "intertask_interface.h"
 
 #include "PHY/INIT/phy_init.h"
@@ -593,6 +591,7 @@ void init_pdcp(void) {
   
   if (!get_softmodem_params()->nsa) {
     if (!NODE_IS_DU(RC.nrrrc[0]->node_type)) {
+      pdcp_layer_init();
       nr_pdcp_module_init(pdcp_initmask, 0);
     }
   } else {
diff --git a/executables/nr-ue.c b/executables/nr-ue.c
index d1b26601b4d61506879c5d75b5c99f4e9d07fd90..543be7a8b5eac91821cba05b9b30b9f150573b4c 100644
--- a/executables/nr-ue.c
+++ b/executables/nr-ue.c
@@ -167,10 +167,10 @@ void init_nr_ue_vars(PHY_VARS_NR_UE *ue,
   }
 
   // initialize all signal buffers
-  init_nr_ue_signal(ue, nb_connected_gNB, abstraction_flag);
+  init_nr_ue_signal(ue, nb_connected_gNB);
 
   // intialize transport
-  init_nr_ue_transport(ue, abstraction_flag);
+  init_nr_ue_transport(ue);
 
   // init N_TA offset
   init_N_TA_offset(ue);
@@ -766,9 +766,9 @@ void processSlotRX(void *arg) {
 #ifdef UE_SLOT_PARALLELISATION
     phy_procedures_slot_parallelization_nrUE_RX( UE, proc, 0, 0, 1, no_relay, NULL );
 #else
-    uint64_t a=rdtsc();
+    uint64_t a=rdtsc_oai();
     phy_procedures_nrUE_RX(UE, proc, gNB_id, get_nrUE_params()->nr_dlsch_parallel, &rxtxD->txFifo);
-    LOG_D(PHY, "In %s: slot %d, time %lu\n", __FUNCTION__, proc->nr_slot_rx, (rdtsc()-a)/3500);
+    LOG_D(PHY, "In %s: slot %d, time %llu\n", __FUNCTION__, proc->nr_slot_rx, (rdtsc_oai()-a)/3500);
 #endif
 
     if(IS_SOFTMODEM_NOS1 || get_softmodem_params()->sa){
diff --git a/executables/nr-uesoftmodem.c b/executables/nr-uesoftmodem.c
index 7663e9ebd8da5d439ae7fb35a8600dfa5ee34aca..76c21bb422043d1aa1e00111d366e0a21a6401ed 100644
--- a/executables/nr-uesoftmodem.c
+++ b/executables/nr-uesoftmodem.c
@@ -61,7 +61,6 @@ unsigned short config_frames[4] = {2,9,11,13};
 
 #include "UTIL/OPT/opt.h"
 #include "enb_config.h"
-//#include "PHY/TOOLS/time_meas.h"
 
 #include "intertask_interface.h"
 
diff --git a/executables/ocp-gnb.c b/executables/ocp-gnb.c
deleted file mode 100644
index 23fd3ae1329737e44470eeb1223632f083cdb0b6..0000000000000000000000000000000000000000
--- a/executables/ocp-gnb.c
+++ /dev/null
@@ -1,1006 +0,0 @@
-/*
- * Author: Laurent Thomas, Open Cells Project
- * all rights reserved
- */
-
-#define _GNU_SOURCE
-#include <pthread.h>
-#include "assertions.h"
-#include <common/utils/LOG/log.h>
-#include <common/utils/system.h>
-
-#include "PHY/types.h"
-
-#include "PHY/INIT/phy_init.h"
-
-#include "PHY/defs_gNB.h"
-#include "SCHED/sched_eNB.h"
-#include "SCHED_NR/sched_nr.h"
-#include "SCHED_NR/fapi_nr_l1.h"
-#include "PHY/LTE_TRANSPORT/transport_proto.h"
-#include "../../ARCH/COMMON/common_lib.h"
-
-#include "PHY/phy_extern.h"
-#include "LAYER2/MAC/mac.h"
-#include "LAYER2/NR_MAC_COMMON/nr_mac_extern.h"
-#include "LAYER2/MAC/mac_proto.h"
-#include "RRC/LTE/rrc_extern.h"
-#include "PHY_INTERFACE/phy_interface.h"
-#include "common/utils/LOG/log_extern.h"
-#include "UTIL/OTG/otg_tx.h"
-#include "UTIL/OTG/otg_externs.h"
-#include "UTIL/MATH/oml.h"
-#include "common/utils/LOG/vcd_signal_dumper.h"
-#include "UTIL/OPT/opt.h"
-#include "enb_config.h"
-#include "s1ap_eNB.h"
-#include "SIMULATION/ETH_TRANSPORT/proto.h"
-#include <executables/nr-softmodem.h>
-#include <openair2/GNB_APP/gnb_config.h>
-#include <executables/softmodem-common.h>
-#include <openair2/GNB_APP/gnb_app.h>
-#include <openair2/RRC/NR/nr_rrc_extern.h>
-#include <openair2/X2AP/x2ap_eNB.h>
-#include <openair1/PHY/NR_TRANSPORT/nr_transport_proto.h>
-#include <nfapi/oai_integration/nfapi_pnf.h>
-
-// should be in a shared lib
-#include <forms.h>
-#include <executables/stats.h>
-#include <openair1/PHY/TOOLS/nr_phy_scope.h>
-#include <openair1/PHY/TOOLS/phy_scope_interface.h>
-
-// Global vars
-#include <openair2/LAYER2/MAC/mac_vars.h>
-#include <openair1/PHY/phy_vars.h>
-#include <openair2/RRC/LTE/rrc_vars.h>
-#include <openair1/SCHED/sched_common_vars.h>
-volatile int oai_exit;
-int single_thread_flag=1;
-uint32_t do_forms=0;
-unsigned int mmapped_dma=0;
-int8_t threequarter_fs=0;
-
-int chain_offset=0;
-uint16_t sl_ahead=6;
-uint16_t sf_ahead=6;
-uint32_t timing_advance = 0;
-int transmission_mode=1;
-int emulate_rf = 0;
-int numerology = 0;
-
-
-int config_sync_var=-1;
-pthread_mutex_t nfapi_sync_mutex;
-pthread_cond_t nfapi_sync_cond;
-int nfapi_sync_var=-1;
-double cpuf;
-
-THREAD_STRUCT thread_struct;
-
-pthread_cond_t sync_cond;
-pthread_mutex_t sync_mutex;
-int sync_var=-1; //!< protected by mutex \ref sync_mutex.
-
-
-uint64_t downlink_frequency[MAX_NUM_CCs][4];
-int32_t uplink_frequency_offset[MAX_NUM_CCs][4];
-time_stats_t softmodem_stats_mt; // main thread
-time_stats_t softmodem_stats_hw; //  hw acquisition
-time_stats_t softmodem_stats_rxtx_sf; // total tx time
-time_stats_t nfapi_meas; // total tx time
-time_stats_t softmodem_stats_rx_sf; // total rx time
-// not used but needed for link
-openair0_config_t openair0_cfg[MAX_CARDS];
-uint16_t slot_ahead=6;
-AGENT_RRC_xface *agent_rrc_xface[NUM_MAX_ENB];
-AGENT_MAC_xface *agent_mac_xface[NUM_MAX_ENB];
-int flexran_agent_start(mid_t mod_id) {
-  memset (agent_rrc_xface, 0, sizeof(agent_rrc_xface));
-  memset (agent_mac_xface, 0, sizeof(agent_mac_xface));
-  return 0;
-}
-void flexran_agent_slice_update(mid_t module_idP) {
-}
-int proto_agent_start(mod_id_t mod_id, const cudu_params_t *p) {
-  return 0;
-}
-void proto_agent_stop(mod_id_t mod_id) {
-}
-int split73=0;
-void sendFs6Ul(PHY_VARS_eNB *eNB, int UE_id, int harq_pid, int segmentID, int16_t *data, int dataLen, int r_offset) {
-  AssertFatal(false, "Must not be called in this context\n");
-}
-int stop_L1L2(module_id_t gnb_id) {
-  AssertFatal(false, "Must not be called in this context\n");
-}
-int restart_L1L2(module_id_t gnb_id) {
-  AssertFatal(false, "Must not be called in this context\n");
-}
-
-static int wait_for_sync = 0;
-static double snr_dB=20;
-static int DEFBANDS[] = {7};
-static int DEFENBS[] = {0};
-static int DEFBFW[] = {0x00007fff};
-
-extern double cpuf;
-
-short nr_mod_table[NR_MOD_TABLE_SIZE_SHORT] = {0,0,16384,16384,-16384,-16384,16384,16384,16384,-16384,-16384,16384,-16384,-16384,7327,7327,7327,21981,21981,7327,21981,21981,7327,-7327,7327,-21981,21981,-7327,21981,-21981,-7327,7327,-7327,21981,-21981,7327,-21981,21981,-7327,-7327,-7327,-21981,-21981,-7327,-21981,-21981,10726,10726,10726,3576,3576,10726,3576,3576,10726,17876,10726,25027,3576,17876,3576,25027,17876,10726,17876,3576,25027,10726,25027,3576,17876,17876,17876,25027,25027,17876,25027,25027,10726,-10726,10726,-3576,3576,-10726,3576,-3576,10726,-17876,10726,-25027,3576,-17876,3576,-25027,17876,-10726,17876,-3576,25027,-10726,25027,-3576,17876,-17876,17876,-25027,25027,-17876,25027,-25027,-10726,10726,-10726,3576,-3576,10726,-3576,3576,-10726,17876,-10726,25027,-3576,17876,-3576,25027,-17876,10726,-17876,3576,-25027,10726,-25027,3576,-17876,17876,-17876,25027,-25027,17876,-25027,25027,-10726,-10726,-10726,-3576,-3576,-10726,-3576,-3576,-10726,-17876,-10726,-25027,-3576,-17876,-3576,-25027,-17876,-10726,-17876,-3576,-25027,-10726,-25027,-3576,-17876,-17876,-17876,-25027,-25027,-17876,-25027,-25027,8886,8886,8886,12439,12439,8886,12439,12439,8886,5332,8886,1778,12439,5332,12439,1778,5332,8886,5332,12439,1778,8886,1778,12439,5332,5332,5332,1778,1778,5332,1778,1778,8886,19547,8886,15993,12439,19547,12439,15993,8886,23101,8886,26655,12439,23101,12439,26655,5332,19547,5332,15993,1778,19547,1778,15993,5332,23101,5332,26655,1778,23101,1778,26655,19547,8886,19547,12439,15993,8886,15993,12439,19547,5332,19547,1778,15993,5332,15993,1778,23101,8886,23101,12439,26655,8886,26655,12439,23101,5332,23101,1778,26655,5332,26655,1778,19547,19547,19547,15993,15993,19547,15993,15993,19547,23101,19547,26655,15993,23101,15993,26655,23101,19547,23101,15993,26655,19547,26655,15993,23101,23101,23101,26655,26655,23101,26655,26655,8886,-8886,8886,-12439,12439,-8886,12439,-12439,8886,-5332,8886,-1778,12439,-5332,12439,-1778,5332,-8886,5332,-12439,1778,-8886,1778,-12439,5332,-5332,5332,-1778,1778,-5332,1778,-1778,8886,-19547,8886,-15993,12439,-19547,12439,-15993,8886,-23101,8886,-26655,12439,-23101,12439,-26655,5332,-19547,5332,-15993,1778,-19547,1778,-15993,5332,-23101,5332,-26655,1778,-23101,1778,-26655,19547,-8886,19547,-12439,15993,-8886,15993,-12439,19547,-5332,19547,-1778,15993,-5332,15993,-1778,23101,-8886,23101,-12439,26655,-8886,26655,-12439,23101,-5332,23101,-1778,26655,-5332,26655,-1778,19547,-19547,19547,-15993,15993,-19547,15993,-15993,19547,-23101,19547,-26655,15993,-23101,15993,-26655,23101,-19547,23101,-15993,26655,-19547,26655,-15993,23101,-23101,23101,-26655,26655,-23101,26655,-26655,-8886,8886,-8886,12439,-12439,8886,-12439,12439,-8886,5332,-8886,1778,-12439,5332,-12439,1778,-5332,8886,-5332,12439,-1778,8886,-1778,12439,-5332,5332,-5332,1778,-1778,5332,-1778,1778,-8886,19547,-8886,15993,-12439,19547,-12439,15993,-8886,23101,-8886,26655,-12439,23101,-12439,26655,-5332,19547,-5332,15993,-1778,19547,-1778,15993,-5332,23101,-5332,26655,-1778,23101,-1778,26655,-19547,8886,-19547,12439,-15993,8886,-15993,12439,-19547,5332,-19547,1778,-15993,5332,-15993,1778,-23101,8886,-23101,12439,-26655,8886,-26655,12439,-23101,5332,-23101,1778,-26655,5332,-26655,1778,-19547,19547,-19547,15993,-15993,19547,-15993,15993,-19547,23101,-19547,26655,-15993,23101,-15993,26655,-23101,19547,-23101,15993,-26655,19547,-26655,15993,-23101,23101,-23101,26655,-26655,23101,-26655,26655,-8886,-8886,-8886,-12439,-12439,-8886,-12439,-12439,-8886,-5332,-8886,-1778,-12439,-5332,-12439,-1778,-5332,-8886,-5332,-12439,-1778,-8886,-1778,-12439,-5332,-5332,-5332,-1778,-1778,-5332,-1778,-1778,-8886,-19547,-8886,-15993,-12439,-19547,-12439,-15993,-8886,-23101,-8886,-26655,-12439,-23101,-12439,-26655,-5332,-19547,-5332,-15993,-1778,-19547,-1778,-15993,-5332,-23101,-5332,-26655,-1778,-23101,-1778,-26655,-19547,-8886,-19547,-12439,-15993,-8886,-15993,-12439,-19547,-5332,-19547,-1778,-15993,-5332,-15993,-1778,-23101,-8886,-23101,-12439,-26655,-8886,-26655,-12439,-23101,-5332,-23101,-1778,-26655,-5332,-26655,-1778,-19547,-19547,-19547,-15993,-15993,-19547,-15993,-15993,-19547,-23101,-19547,-26655,-15993,-23101,-15993,-26655,-23101,-19547,-23101,-15993,-26655,-19547,-26655,-15993,-23101,-23101,-23101,-26655,-26655,-23101,-26655,-26655};
-
-static inline int ocp_rxtx(PHY_VARS_gNB *gNB, gNB_L1_rxtx_proc_t *proc) {
-  nfapi_nr_config_request_scf_t *cfg = &gNB->gNB_config;
-  start_meas(&softmodem_stats_rxtx_sf);
-
-  // *******************************************************************
-
-  if (nfapi_mode == NFAPI_MODE_PNF) {
-    // I am a PNF and I need to let nFAPI know that we have a (sub)frame tick
-    //add_subframe(&frame, &subframe, 4);
-    //oai_subframe_ind(proc->frame_tx, proc->subframe_tx);
-    //LOG_D(PHY, "oai_subframe_ind(frame:%u, subframe:%d) - NOT CALLED ********\n", frame, subframe);
-    start_meas(&nfapi_meas);
-    oai_subframe_ind(proc->frame_rx, proc->slot_rx);
-    stop_meas(&nfapi_meas);
-    /*if (gNB->UL_INFO.rx_ind.rx_indication_body.number_of_pdus||
-      gNB->UL_INFO.harq_ind.harq_indication_body.number_of_harqs ||
-      gNB->UL_INFO.crc_ind.crc_indication_body.number_of_crcs ||
-      gNB->UL_INFO.rach_ind.rach_indication_body.number_of_preambles ||
-      gNB->UL_INFO.cqi_ind.number_of_cqis
-      ) {
-      LOG_D(PHY, "UL_info[rx_ind:%05d:%d harqs:%05d:%d crcs:%05d:%d preambles:%05d:%d cqis:%d] RX:%04d%d TX:%04d%d \n",
-      NFAPI_SFNSF2DEC(gNB->UL_INFO.rx_ind.sfn_sf),   gNB->UL_INFO.rx_ind.rx_indication_body.number_of_pdus,
-      NFAPI_SFNSF2DEC(gNB->UL_INFO.harq_ind.sfn_sf), gNB->UL_INFO.harq_ind.harq_indication_body.number_of_harqs,
-      NFAPI_SFNSF2DEC(gNB->UL_INFO.crc_ind.sfn_sf),  gNB->UL_INFO.crc_ind.crc_indication_body.number_of_crcs,
-      NFAPI_SFNSF2DEC(gNB->UL_INFO.rach_ind.sfn_sf), gNB->UL_INFO.rach_ind.rach_indication_body.number_of_preambles,
-      gNB->UL_INFO.cqi_ind.number_of_cqis,
-      frame_rx, slot_rx,
-      frame_tx, slot_tx);
-      }*/
-  }
-
-  /// NR disabling
-  // ****************************************
-  // Common RX procedures subframe n
-  pthread_mutex_lock(&gNB->UL_INFO_mutex);
-  gNB->UL_INFO.frame     = proc->frame_rx;
-  gNB->UL_INFO.slot      = proc->slot_rx;
-  gNB->UL_INFO.module_id = gNB->Mod_id;
-  gNB->UL_INFO.CC_id     = gNB->CC_id;
-  gNB->if_inst->NR_UL_indication(&gNB->UL_INFO);
-  pthread_mutex_unlock(&gNB->UL_INFO_mutex);
-  // RX processing
-  int tx_slot_type         = nr_slot_select(cfg,proc->frame_tx,proc->slot_tx);
-  int rx_slot_type         = nr_slot_select(cfg,proc->frame_rx,proc->slot_rx);
-
-  if (rx_slot_type == NR_UPLINK_SLOT || rx_slot_type == NR_MIXED_SLOT) {
-    // Do PRACH RU processing
-    L1_nr_prach_procedures(gNB,proc->frame_rx,proc->slot_rx);
-    phy_procedures_gNB_uespec_RX(gNB, proc->frame_rx, proc->slot_rx);
-  }
-
-  if (oai_exit) return(-1);
-
-  // *****************************************
-  // TX processing for subframe n+sf_ahead
-  // run PHY TX procedures the one after the other for all CCs to avoid race conditions
-  // (may be relaxed in the future for performance reasons)
-  // *****************************************
-
-  if (tx_slot_type == NR_DOWNLINK_SLOT || tx_slot_type == NR_MIXED_SLOT) {
-    phy_procedures_gNB_TX(gNB, proc->frame_tx,proc->slot_tx, 1);
-  }
-
-  stop_meas( &softmodem_stats_rxtx_sf );
-  LOG_D(PHY,"%s() Exit proc[rx:%d%d tx:%d%d]\n", __FUNCTION__, proc->frame_rx, proc->slot_rx, proc->frame_tx, proc->slot_tx);
-  return(0);
-}
-
-
-static void *process_stats_thread(void *param) {
-  PHY_VARS_gNB *gNB  = (PHY_VARS_gNB *)param;
-  reset_meas(&gNB->dlsch_encoding_stats);
-  reset_meas(&gNB->dlsch_scrambling_stats);
-  reset_meas(&gNB->dlsch_modulation_stats);
-
-  while(!oai_exit) {
-    sleep(1);
-    print_meas(&gNB->dlsch_encoding_stats, "pdsch_encoding", NULL, NULL);
-    print_meas(&gNB->dlsch_scrambling_stats, "pdsch_scrambling", NULL, NULL);
-    print_meas(&gNB->dlsch_modulation_stats, "pdsch_modulation", NULL, NULL);
-  }
-
-  return(NULL);
-}
-
-void init_gNB_proc(int inst) {
-  PHY_VARS_gNB *gNB = RC.gNB[inst];
-  gNB_L1_proc_t *proc = &gNB->proc;
-  gNB_L1_rxtx_proc_t *L1_proc    = &proc->L1_proc;
-  gNB_L1_rxtx_proc_t *L1_proc_tx = &proc->L1_proc_tx;
-  L1_proc->instance_cnt          = -1;
-  L1_proc_tx->instance_cnt       = -1;
-  L1_proc->instance_cnt_RUs      = 0;
-  L1_proc_tx->instance_cnt_RUs   = 0;
-  proc->instance_cnt_prach       = -1;
-  proc->instance_cnt_asynch_rxtx = -1;
-  proc->CC_id                    = 0;
-  proc->first_rx                 =1;
-  proc->first_tx                 =1;
-  proc->RU_mask                  =0;
-  proc->RU_mask_tx               = (1<<gNB->num_RU)-1;
-  proc->RU_mask_prach            =0;
-  pthread_mutex_init( &gNB->UL_INFO_mutex, NULL);
-  gNB->threadPool = (tpool_t *)malloc(sizeof(tpool_t));
-  gNB->respDecode = (notifiedFIFO_t *) malloc(sizeof(notifiedFIFO_t));
-  char ul_pool[] = "-1,-1";
-  initTpool(ul_pool, gNB->threadPool, false);
-  initNotifiedFIFO(gNB->respDecode);
-}
-
-/// eNB kept in function name for nffapi calls, TO FIX
-void init_gNB_phase2(RU_t *ru) {
-  int inst;
-  LOG_I(PHY,"%s() RC.nb_nr_inst:%d\n", __FUNCTION__, RC.nb_nr_inst);
-
-  for (inst=0; inst<RC.nb_nr_inst; inst++) {
-    LOG_I(PHY,"RC.nb_nr_CC[inst:%d]:%p\n", inst, RC.gNB[inst]);
-    PHY_VARS_gNB *gNB =  RC.gNB[inst];
-    LOG_E(PHY,"hard coded gNB->num_RU:%d\n", gNB->num_RU);
-    phy_init_nr_gNB(gNB,0,0);
-    RC.gNB[inst]->num_RU=1;
-    RC.gNB[inst]->RU_list[0]=ru;
-    //init_precoding_weights(RC.gNB[inst][CC_id]);
-  }
-}
-
-void init_gNB(int single_thread_flag,int wait_for_sync) {
-  for (int inst=0; inst<RC.nb_nr_L1_inst; inst++) {
-    AssertFatal( RC.gNB[inst] != NULL, "Must be allocated in init_main_gNB->RCconfig_NR_L1\n");
-    PHY_VARS_gNB *gNB= RC.gNB[inst];
-    gNB->abstraction_flag   = false;
-    gNB->single_thread_flag = true;
-    /*nr_polar_init(&gNB->nrPolar_params,
-      NR_POLAR_PBCH_MESSAGE_TYPE,
-      NR_POLAR_PBCH_PAYLOAD_BITS,
-      NR_POLAR_PBCH_AGGREGATION_LEVEL);*/
-    LOG_I(PHY,"Registering with MAC interface module\n");
-    AssertFatal((gNB->if_inst = NR_IF_Module_init(inst))!=NULL,"Cannot register interface");
-    gNB->if_inst->NR_Schedule_response   = nr_schedule_response;
-    gNB->if_inst->NR_PHY_config_req      = nr_phy_config_request;
-    memset((void *)&gNB->UL_INFO,0,sizeof(gNB->UL_INFO));
-    memset((void *)&gNB->UL_tti_req,0,sizeof(nfapi_nr_ul_tti_request_t));
-    //memset((void *)&gNB->Sched_INFO,0,sizeof(gNB->Sched_INFO));
-    LOG_I(PHY,"Setting indication lists\n");
-    gNB->UL_INFO.rx_ind.pdu_list = gNB->rx_pdu_list;
-    gNB->UL_INFO.crc_ind.crc_list = gNB->crc_pdu_list;
-    /*gNB->UL_INFO.sr_ind.sr_indication_body.sr_pdu_list = gNB->sr_pdu_list;
-      gNB->UL_INFO.harq_ind.harq_indication_body.harq_pdu_list = gNB->harq_pdu_list;
-      gNB->UL_INFO.cqi_ind.cqi_pdu_list = gNB->cqi_pdu_list;
-      gNB->UL_INFO.cqi_ind.cqi_raw_pdu_list = gNB->cqi_raw_pdu_list;*/
-    gNB->prach_energy_counter = 0;
-  }
-
-  LOG_I(PHY,"[nr-softmodem.c] gNB structure allocated\n");
-}
-
-
-void stop_gNB(int nb_inst) {
-}
-
-static void get_options(void) {
-  paramdef_t cmdline_params[] = CMDLINE_PARAMS_DESC_GNB ;
-  config_process_cmdline( cmdline_params,sizeof(cmdline_params)/sizeof(paramdef_t),NULL);
-
-  if ( !(CONFIG_ISFLAGSET(CONFIG_ABORT)) ) {
-    memset((void *)&RC,0,sizeof(RC));
-    /* Read RC configuration file */
-    NRRCConfig();
-    printf("Configuration: nb_rrc_inst %d, nb_nr_L1_inst %d, nb_ru %hhd\n", RC.nb_nr_inst,RC.nb_nr_L1_inst,RC.nb_RU);
-  }
-
-  AssertFatal(RC.nb_nr_L1_inst == 1 && RC.nb_RU == 1, "Only one gNB, one RU and one carrier is supported\n");
-}
-
-void set_default_frame_parms(nfapi_nr_config_request_t *config[MAX_NUM_CCs],
-                             NR_DL_FRAME_PARMS *frame_parms[MAX_NUM_CCs]) {
-  for (int CC_id=0; CC_id<MAX_NUM_CCs; CC_id++) {
-    frame_parms[CC_id] = (NR_DL_FRAME_PARMS *) malloc(sizeof(NR_DL_FRAME_PARMS));
-    config[CC_id] = (nfapi_nr_config_request_t *) malloc(sizeof(nfapi_nr_config_request_t));
-    config[CC_id]->subframe_config.numerology_index_mu.value =1;
-    config[CC_id]->subframe_config.duplex_mode.value = 1; //FDD
-    config[CC_id]->subframe_config.dl_cyclic_prefix_type.value = 0; //NORMAL
-    config[CC_id]->rf_config.dl_carrier_bandwidth.value = 106;
-    config[CC_id]->rf_config.ul_carrier_bandwidth.value = 106;
-    config[CC_id]->sch_config.physical_cell_id.value = 0;
-  }
-}
-
-static void init_pdcp(void) {
-  //if (!NODE_IS_DU(RC.rrc[0]->node_type)) {
-  pdcp_layer_init();
-  uint32_t pdcp_initmask = (IS_SOFTMODEM_NOS1) ?
-                           (PDCP_USE_NETLINK_BIT | LINK_ENB_PDCP_TO_IP_DRIVER_BIT) : LINK_ENB_PDCP_TO_GTPV1U_BIT;
-
-  if (IS_SOFTMODEM_NOS1) {
-    printf("IS_SOFTMODEM_NOS1 option enabled \n");
-    pdcp_initmask = pdcp_initmask | ENB_NAS_USE_TUN_BIT | SOFTMODEM_NOKRNMOD_BIT  ;
-  }
-
-  nr_pdcp_module_init(pdcp_initmask, 0);
-  pdcp_set_rlc_data_req_func(rlc_data_req);
-  pdcp_set_pdcp_data_ind_func(pdcp_data_ind);
-}
-
-void init_main_gNB(void) {
-  RCconfig_NR_L1();
-  RCconfig_nr_macrlc();
-
-  if (RC.nb_nr_L1_inst>0)
-    AssertFatal(l1_north_init_gNB()==0,"could not initialize L1 north interface\n");
-
-  LOG_I(GNB_APP,"Allocating gNB_RRC_INST for %d instances\n",RC.nb_nr_inst);
-  RC.nrrrc = (gNB_RRC_INST **)calloc(RC.nb_nr_inst*sizeof(gNB_RRC_INST *),1);
-  LOG_I(PHY, "%s() RC.nb_nr_inst:%d RC.nrrrc:%p\n", __FUNCTION__, RC.nb_nr_inst, RC.nrrrc);
-  int gnb_id=0; // only 1 gnb per process, index 0 for now
-  RC.nrrrc[gnb_id] = (gNB_RRC_INST *)calloc(sizeof(gNB_RRC_INST),1);
-  MessageDef *msg_p = itti_alloc_new_message (TASK_GNB_APP, 0, NRRRC_CONFIGURATION_REQ);
-  RCconfig_NRRRC(msg_p,gnb_id, RC.nrrrc[gnb_id]);
-  openair_rrc_gNB_configuration(GNB_INSTANCE_TO_MODULE_ID(ITTI_MSG_DESTINATION_INSTANCE(msg_p)), &NRRRC_CONFIGURATION_REQ(msg_p));
-  //AssertFatal(itti_create_task(TASK_GNB_APP, gNB_app_task, NULL) >= 0, "");
-  AssertFatal(itti_create_task(TASK_RRC_GNB, rrc_gnb_task, NULL) >= 0, "");
-  //AssertFatal(itti_create_task(TASK_X2AP, x2ap_task, NULL) >= 0, "");
-}
-
-static  void wait_nfapi_init(char *thread_name) {
-  printf( "waiting for NFAPI PNF connection and population of global structure (%s)\n",thread_name);
-  pthread_mutex_lock( &nfapi_sync_mutex );
-
-  while (nfapi_sync_var<0)
-    pthread_cond_wait( &nfapi_sync_cond, &nfapi_sync_mutex );
-
-  pthread_mutex_unlock(&nfapi_sync_mutex);
-  printf( "NFAPI: got sync (%s)\n", thread_name);
-}
-
-void exit_function(const char *file, const char *function, const int line, const char *s) {
-  if (s != NULL) {
-    printf("%s:%d %s() Exiting OAI softmodem: %s\n",file,line, function, s);
-  }
-
-  oai_exit = 1;
-  sleep(1); //allow lte-softmodem threads to exit first
-  exit(1);
-}
-
-void stop_RU(int nb_ru) {
-  return;
-}
-
-void OCPconfig_RU(RU_t *ru) {
-  int i = 0, j = 0; // Ru and gNB cardinality
-  paramdef_t RUParams[] = RUPARAMS_DESC;
-  paramlist_def_t RUParamList = {CONFIG_STRING_RU_LIST,NULL,0};
-  config_getlist( &RUParamList, RUParams, sizeof(RUParams)/sizeof(paramdef_t), NULL);
-  AssertFatal( RUParamList.numelt == 1 && RC.nb_nr_L1_inst ==1,""  );
-  ru->idx=0;
-  ru->nr_frame_parms                      = (NR_DL_FRAME_PARMS *)calloc(sizeof(NR_DL_FRAME_PARMS),1);
-  ru->frame_parms                         = (LTE_DL_FRAME_PARMS *)calloc(sizeof(LTE_DL_FRAME_PARMS),1);
-  ru->if_timing                           = synch_to_ext_device;
-  ru->num_gNB                           = RUParamList.paramarray[j][RU_ENB_LIST_IDX].numelt;
-  ru->gNB_list[i] = &RC.gNB[RUParamList.paramarray[j][RU_ENB_LIST_IDX].iptr[i]][0];
-
-  if (config_isparamset(RUParamList.paramarray[j], RU_SDR_ADDRS)) {
-    ru->openair0_cfg.sdr_addrs = strdup(*(RUParamList.paramarray[j][RU_SDR_ADDRS].strptr));
-  }
-
-  if (config_isparamset(RUParamList.paramarray[j], RU_SDR_CLK_SRC)) {
-    if (strcmp(*(RUParamList.paramarray[j][RU_SDR_CLK_SRC].strptr), "internal") == 0) {
-      ru->openair0_cfg.clock_source = internal;
-      LOG_D(PHY, "RU clock source set as internal\n");
-    } else if (strcmp(*(RUParamList.paramarray[j][RU_SDR_CLK_SRC].strptr), "external") == 0) {
-      ru->openair0_cfg.clock_source = external;
-      LOG_D(PHY, "RU clock source set as external\n");
-    } else if (strcmp(*(RUParamList.paramarray[j][RU_SDR_CLK_SRC].strptr), "gpsdo") == 0) {
-      ru->openair0_cfg.clock_source = gpsdo;
-      LOG_D(PHY, "RU clock source set as gpsdo\n");
-    } else {
-      LOG_E(PHY, "Erroneous RU clock source in the provided configuration file: '%s'\n", *(RUParamList.paramarray[j][RU_SDR_CLK_SRC].strptr));
-    }
-  } else {
-    ru->openair0_cfg.clock_source = unset;
-  }
-
-  if (strcmp(*(RUParamList.paramarray[j][RU_LOCAL_RF_IDX].strptr), "yes") == 0) {
-    if ( !(config_isparamset(RUParamList.paramarray[j],RU_LOCAL_IF_NAME_IDX)) ) {
-      ru->if_south                        = REMOTE_IF5; //TBD: max value to avoid to call "ru" functions
-      ru->function                        = gNodeB_3GPP;
-      printf("Setting function for RU %d to gNodeB_3GPP\n",j);
-    } else {
-    }
-
-    ru->max_pdschReferenceSignalPower     = *(RUParamList.paramarray[j][RU_MAX_RS_EPRE_IDX].uptr);;
-    ru->max_rxgain                        = *(RUParamList.paramarray[j][RU_MAX_RXGAIN_IDX].uptr);
-    ru->num_bands                         = RUParamList.paramarray[j][RU_BAND_LIST_IDX].numelt;
-
-    for (i=0; i<ru->num_bands; i++) ru->band[i] = RUParamList.paramarray[j][RU_BAND_LIST_IDX].iptr[i];
-  } //strcmp(local_rf, "yes") == 0
-  else {
-  }
-
-  ru->nb_tx                             = *(RUParamList.paramarray[j][RU_NB_TX_IDX].uptr);
-  ru->nb_rx                             = *(RUParamList.paramarray[j][RU_NB_RX_IDX].uptr);
-  ru->att_tx                            = *(RUParamList.paramarray[j][RU_ATT_TX_IDX].uptr);
-  ru->att_rx                            = *(RUParamList.paramarray[j][RU_ATT_RX_IDX].uptr);
-
-  if (config_isparamset(RUParamList.paramarray[j], RU_BF_WEIGHTS_LIST_IDX)) {
-    ru->nb_bfw = RUParamList.paramarray[j][RU_BF_WEIGHTS_LIST_IDX].numelt;
-
-    for (i=0; i<ru->num_gNB; i++)  {
-      ru->bw_list[i] = (int32_t *)malloc16_clear((ru->nb_bfw)*sizeof(int32_t));
-
-      for (int b=0; b<ru->nb_bfw; b++) ru->bw_list[i][b] = RUParamList.paramarray[j][RU_BF_WEIGHTS_LIST_IDX].iptr[b];
-    }
-  }
-
-  return;
-}
-
-// this is for RU with local RF unit
-void fill_rf_config(RU_t *ru, char *rf_config_file) {
-  int i;
-  NR_DL_FRAME_PARMS *fp   = ru->nr_frame_parms;
-  nfapi_nr_config_request_scf_t *gNB_config = &ru->gNB_list[0]->gNB_config; //tmp index
-  openair0_config_t *cfg   = &ru->openair0_cfg;
-  int mu = gNB_config->ssb_config.scs_common.value;
-  int N_RB = gNB_config->carrier_config.dl_grid_size[gNB_config->ssb_config.scs_common.value].value;
-  fp->threequarter_fs=threequarter_fs;
-
-  if (mu == NR_MU_0) { //or if LTE
-    if(N_RB == 100) {
-      if (fp->threequarter_fs) {
-        cfg->sample_rate=23.04e6;
-        cfg->samples_per_frame = 230400;
-        cfg->tx_bw = 10e6;
-        cfg->rx_bw = 10e6;
-      } else {
-        cfg->sample_rate=30.72e6;
-        cfg->samples_per_frame = 307200;
-        cfg->tx_bw = 10e6;
-        cfg->rx_bw = 10e6;
-      }
-    } else if(N_RB == 50) {
-      cfg->sample_rate=15.36e6;
-      cfg->samples_per_frame = 153600;
-      cfg->tx_bw = 5e6;
-      cfg->rx_bw = 5e6;
-    } else if (N_RB == 25) {
-      cfg->sample_rate=7.68e6;
-      cfg->samples_per_frame = 76800;
-      cfg->tx_bw = 2.5e6;
-      cfg->rx_bw = 2.5e6;
-    } else if (N_RB == 6) {
-      cfg->sample_rate=1.92e6;
-      cfg->samples_per_frame = 19200;
-      cfg->tx_bw = 1.5e6;
-      cfg->rx_bw = 1.5e6;
-    } else AssertFatal(1==0,"Unknown N_RB %d\n",N_RB);
-  } else if (mu == NR_MU_1) {
-    if(N_RB == 273) {
-      if (fp->threequarter_fs) {
-        AssertFatal(0 == 1,"three quarter sampling not supported for N_RB 273\n");
-      } else {
-        cfg->sample_rate=122.88e6;
-        cfg->samples_per_frame = 1228800;
-        cfg->tx_bw = 100e6;
-        cfg->rx_bw = 100e6;
-      }
-    } else if(N_RB == 217) {
-      if (fp->threequarter_fs) {
-        cfg->sample_rate=92.16e6;
-        cfg->samples_per_frame = 921600;
-        cfg->tx_bw = 80e6;
-        cfg->rx_bw = 80e6;
-      } else {
-        cfg->sample_rate=122.88e6;
-        cfg->samples_per_frame = 1228800;
-        cfg->tx_bw = 80e6;
-        cfg->rx_bw = 80e6;
-      }
-    } else if(N_RB == 106) {
-      if (fp->threequarter_fs) {
-        cfg->sample_rate=46.08e6;
-        cfg->samples_per_frame = 460800;
-        cfg->tx_bw = 40e6;
-        cfg->rx_bw = 40e6;
-      } else {
-        cfg->sample_rate=61.44e6;
-        cfg->samples_per_frame = 614400;
-        cfg->tx_bw = 40e6;
-        cfg->rx_bw = 40e6;
-      }
-    } else {
-      AssertFatal(0==1,"N_RB %d not yet supported for numerology %d\n",N_RB,mu);
-    }
-  } else if (mu == NR_MU_3) {
-    if (N_RB == 66) {
-      cfg->sample_rate = 122.88e6;
-      cfg->samples_per_frame = 1228800;
-      cfg->tx_bw = 100e6;
-      cfg->rx_bw = 100e6;
-    } else if(N_RB == 32) {
-      cfg->sample_rate=61.44e6;
-      cfg->samples_per_frame = 614400;
-      cfg->tx_bw = 50e6;
-      cfg->rx_bw = 50e6;
-    }
-  } else {
-    AssertFatal(0 == 1,"Numerology %d not supported for the moment\n",mu);
-  }
-
-  if (gNB_config->cell_config.frame_duplex_type.value==TDD)
-    cfg->duplex_mode = duplex_mode_TDD;
-  else //FDD
-    cfg->duplex_mode = duplex_mode_FDD;
-
-  cfg->Mod_id = 0;
-  cfg->num_rb_dl=N_RB;
-  cfg->tx_num_channels=ru->nb_tx;
-  cfg->rx_num_channels=ru->nb_rx;
-
-  for (i=0; i<ru->nb_tx; i++) {
-    if (ru->if_frequency == 0) {
-      cfg->tx_freq[i] = (double)fp->dl_CarrierFreq;
-      cfg->rx_freq[i] = (double)fp->ul_CarrierFreq;
-    } else {
-      cfg->tx_freq[i] = (double)ru->if_frequency;
-      cfg->rx_freq[i] = (double)(ru->if_frequency+fp->ul_CarrierFreq-fp->dl_CarrierFreq);
-    }
-
-    cfg->tx_gain[i] = ru->att_tx;
-    cfg->rx_gain[i] = ru->max_rxgain-ru->att_rx;
-    cfg->configFilename = rf_config_file;
-    printf("channel %d, Setting tx_gain offset %f, rx_gain offset %f, tx_freq %f, rx_freq %f\n",
-           i, cfg->tx_gain[i],
-           cfg->rx_gain[i],
-           cfg->tx_freq[i],
-           cfg->rx_freq[i]);
-  }
-}
-
-/* this function maps the RU tx and rx buffers to the available rf chains.
-   Each rf chain is is addressed by the card number and the chain on the card. The
-   rf_map specifies for each antenna port, on which rf chain the mapping should start. Multiple
-   antennas are mapped to successive RF chains on the same card. */
-int setup_RU_buffers(RU_t *ru) {
-  int i,j;
-  int card,ant;
-  //uint16_t N_TA_offset = 0;
-  NR_DL_FRAME_PARMS *frame_parms;
-  nfapi_nr_config_request_scf_t *config = &ru->config;
-
-  if (ru) {
-    frame_parms = ru->nr_frame_parms;
-    printf("setup_RU_buffers: frame_parms = %p\n",frame_parms);
-  } else {
-    printf("ru pointer is NULL\n");
-    return(-1);
-  }
-
-  int mu = config->ssb_config.scs_common.value;
-  int N_RB = config->carrier_config.dl_grid_size[config->ssb_config.scs_common.value].value;
-
-  if (config->cell_config.frame_duplex_type.value == TDD) {
-    int N_TA_offset =  config->carrier_config.uplink_frequency.value < 6000000 ? 400 : 431; // reference samples  for 25600Tc @ 30.72 Ms/s for FR1, same @ 61.44 Ms/s for FR2
-    double factor=1;
-
-    switch (mu) {
-      case 0: //15 kHz scs
-        AssertFatal(N_TA_offset == 400,"scs_common 15kHz only for FR1\n");
-
-        if (N_RB <= 25) factor = .25;      // 7.68 Ms/s
-        else if (N_RB <=50) factor = .5;   // 15.36 Ms/s
-        else if (N_RB <=75) factor = 1.0;  // 30.72 Ms/s
-        else if (N_RB <=100) factor = 1.0; // 30.72 Ms/s
-        else AssertFatal(1==0,"Too many PRBS for mu=0\n");
-
-        break;
-
-      case 1: //30 kHz sc
-        AssertFatal(N_TA_offset == 400,"scs_common 30kHz only for FR1\n");
-
-        if (N_RB <= 106) factor = 2.0; // 61.44 Ms/s
-        else if (N_RB <= 275) factor = 4.0; // 122.88 Ms/s
-
-        break;
-
-      case 2: //60 kHz scs
-        AssertFatal(1==0,"scs_common should not be 60 kHz\n");
-        break;
-
-      case 3: //120 kHz scs
-        AssertFatal(N_TA_offset == 431,"scs_common 120kHz only for FR2\n");
-        break;
-
-      case 4: //240 kHz scs
-        AssertFatal(1==0,"scs_common should not be 60 kHz\n");
-
-        if (N_RB <= 32) factor = 1.0; // 61.44 Ms/s
-        else if (N_RB <= 66) factor = 2.0; // 122.88 Ms/s
-        else AssertFatal(1==0,"N_RB %d is too big for curretn FR2 implementation\n",N_RB);
-
-        break;
-
-        if      (N_RB == 100) ru->N_TA_offset = 624;
-        else if (N_RB == 50)  ru->N_TA_offset = 624/2;
-        else if (N_RB == 25)  ru->N_TA_offset = 624/4;
-    }
-
-    if (frame_parms->threequarter_fs == 1) factor = factor*.75;
-
-    ru->N_TA_offset = (int)(N_TA_offset * factor);
-    LOG_I(PHY,"RU %d Setting N_TA_offset to %d samples (factor %f, UL Freq %d, N_RB %d)\n",ru->idx,ru->N_TA_offset,factor,
-          config->carrier_config.uplink_frequency.value, N_RB);
-  } else ru->N_TA_offset = 0;
-
-  if (ru->openair0_cfg.mmapped_dma == 1) {
-    // replace RX signal buffers with mmaped HW versions
-    for (i=0; i<ru->nb_rx; i++) {
-      card = i/4;
-      ant = i%4;
-      printf("Mapping RU id %u, rx_ant %d, on card %d, chain %d\n",ru->idx,i,ru->rf_map.card+card, ru->rf_map.chain+ant);
-      free(ru->common.rxdata[i]);
-      ru->common.rxdata[i] = ru->openair0_cfg.rxbase[ru->rf_map.chain+ant];
-      printf("rxdata[%d] @ %p\n",i,ru->common.rxdata[i]);
-
-      for (j=0; j<16; j++) {
-        printf("rxbuffer %d: %x\n",j,ru->common.rxdata[i][j]);
-        ru->common.rxdata[i][j] = 16-j;
-      }
-    }
-
-    for (i=0; i<ru->nb_tx; i++) {
-      card = i/4;
-      ant = i%4;
-      printf("Mapping RU id %u, tx_ant %d, on card %d, chain %d\n",ru->idx,i,ru->rf_map.card+card, ru->rf_map.chain+ant);
-      free(ru->common.txdata[i]);
-      ru->common.txdata[i] = ru->openair0_cfg.txbase[ru->rf_map.chain+ant];
-      printf("txdata[%d] @ %p\n",i,ru->common.txdata[i]);
-
-      for (j=0; j<16; j++) {
-        printf("txbuffer %d: %x\n",j,ru->common.txdata[i][j]);
-        ru->common.txdata[i][j] = 16-j;
-      }
-    }
-  } else { // not memory-mapped DMA
-    //nothing to do, everything already allocated in lte_init
-  }
-
-  return(0);
-}
-int rx_rf(int rxBufOffet, int nbSamples, int nb_rx, int32_t **rxdata, openair0_device *rfdevice,  openair0_timestamp *HWtimeStamp) {
-  void *rxp[nb_rx];
-
-  for (int i=0; i<nb_rx; i++)
-    rxp[i] = (void *)&rxdata[i][rxBufOffet];
-
-  unsigned int rxs = rfdevice->trx_read_func(rfdevice,
-                     HWtimeStamp,
-                     rxp,
-                     nbSamples,
-                     nb_rx);
-
-  if (rxs != nbSamples )
-    LOG_E(PHY, "rx_rf: Asked for %d samples, got %d from USRP\n",nbSamples,rxs);
-
-  return rxs;
-}
-
-void tx_rf(RU_t *ru,int frame,int slot, uint64_t timestamp) {
-  RU_proc_t *proc = &ru->proc;
-  NR_DL_FRAME_PARMS *fp = ru->nr_frame_parms;
-  nfapi_nr_config_request_scf_t *cfg = &ru->gNB_list[0]->gNB_config;
-  int i,txsymb;
-  int slot_type         = nr_slot_select(cfg,frame,slot%fp->slots_per_frame);
-  int prevslot_type     = nr_slot_select(cfg,frame,(slot+(fp->slots_per_frame-1))%fp->slots_per_frame);
-  int nextslot_type     = nr_slot_select(cfg,frame,(slot+1)%fp->slots_per_frame);
-  int sf_extension  = 0;                 //sf_extension = ru->sf_extension;
-  int siglen=fp->get_samples_per_slot(slot,fp);
-  int flags=1;
-
-  //nr_subframe_t SF_type     = nr_slot_select(cfg,slot%fp->slots_per_frame);
-  if (slot_type == NR_DOWNLINK_SLOT || slot_type == NR_MIXED_SLOT || IS_SOFTMODEM_RFSIM) {
-    if(slot_type == NR_MIXED_SLOT) {
-      txsymb = 0;
-
-      for(int symbol_count =0; symbol_count<NR_NUMBER_OF_SYMBOLS_PER_SLOT; symbol_count++) {
-        if (cfg->tdd_table.max_tdd_periodicity_list[slot].max_num_of_symbol_per_slot_list[symbol_count].slot_config.value==0)
-          txsymb++;
-      }
-
-      AssertFatal(txsymb>0,"illegal txsymb %d\n",txsymb);
-
-      if(slot%(fp->slots_per_subframe/2))
-        siglen = txsymb * (fp->ofdm_symbol_size + fp->nb_prefix_samples);
-      else
-        siglen = (fp->ofdm_symbol_size + fp->nb_prefix_samples0) + (txsymb - 1) * (fp->ofdm_symbol_size + fp->nb_prefix_samples);
-
-      //+ ru->end_of_burst_delay;
-      flags=3; // end of burst
-    }
-
-    if (cfg->cell_config.frame_duplex_type.value == TDD &&
-        slot_type == NR_DOWNLINK_SLOT &&
-        prevslot_type == NR_UPLINK_SLOT) {
-      flags = 2; // start of burst
-    }
-
-    if (cfg->cell_config.frame_duplex_type.value == TDD &&
-        slot_type == NR_DOWNLINK_SLOT &&
-        nextslot_type == NR_UPLINK_SLOT) {
-      flags = 3; // end of burst
-    }
-
-    if (fp->freq_range==nr_FR2) {
-      // the beam index is written in bits 8-10 of the flags
-      // bit 11 enables the gpio programming
-      int beam=0;
-
-      if (slot==0) beam = 11; //3 for boresight & 8 to enable
-
-      /*
-        if (slot==0 || slot==40) beam=0&8;
-        if (slot==10 || slot==50) beam=1&8;
-        if (slot==20 || slot==60) beam=2&8;
-        if (slot==30 || slot==70) beam=3&8;
-      */
-      flags |= beam<<8;
-    }
-
-    void *txp[ru->nb_tx];
-
-    for (i=0; i<ru->nb_tx; i++)
-      txp[i] = (void *)&ru->common.txdata[i][fp->get_samples_slot_timestamp(slot,fp,0)-sf_extension];
-
-    // prepare tx buffer pointers
-    unsigned int txs = ru->rfdevice.trx_write_func(&ru->rfdevice,
-                       timestamp+ru->ts_offset-ru->openair0_cfg.tx_sample_advance-sf_extension,
-                       txp,
-                       siglen+sf_extension,
-                       ru->nb_tx,
-                       flags);
-    LOG_D(PHY,"[TXPATH] RU %d tx_rf, writing to TS %llu, frame %d, unwrapped_frame %d, slot %d\n",ru->idx,
-          (long long unsigned int)timestamp,frame,proc->frame_tx_unwrap,slot);
-    AssertFatal(txs ==  siglen+sf_extension,"TX : Timeout (sent %u/%d)\n", txs, siglen);
-  }
-}
-
-static void *ru_thread( void *param ) {
-  RU_t               *ru      = (RU_t *)param;
-  NR_DL_FRAME_PARMS  *fp      = ru->nr_frame_parms;
-  LOG_I(PHY,"Starting RU %d (%s,%s),\n",ru->idx,NB_functions[ru->function],NB_timing[ru->if_timing]);
-  nr_dump_frame_parms(fp);
-  AssertFatal(openair0_device_load(&ru->rfdevice,&ru->openair0_cfg)==0,"Cannot connect to local radio\n");
-  AssertFatal(ru->rfdevice.trx_start_func(&ru->rfdevice) == 0,"Could not start the RF device\n");
-  int64_t slot=-1;
-  int64_t nextHWTSshouldBe=0, nextRxTSlogical=0;
-  // weird globals, used in NR_IF_Module.c
-  sf_ahead = (uint16_t) ceil((float)6/(0x01<<fp->numerology_index));
-  sl_ahead = sf_ahead*fp->slots_per_subframe;
-
-  // This is a forever while loop, it loops over subframes which are scheduled by incoming samples from HW devices
-
-  while (!oai_exit) {
-    int nextSlot=(slot+1)%fp->slots_per_frame;
-    uint32_t samples_per_slot = fp->get_samples_per_slot(nextSlot,fp);
-    int rxBuffOffset=fp->get_samples_slot_timestamp(nextSlot,fp,0);
-    AssertFatal(rxBuffOffset + samples_per_slot <= fp->samples_per_frame, "Will read outside allocated buffer\n");
-    int samples=fp->get_samples_per_slot(nextSlot,fp);
-    openair0_timestamp HWtimeStamp=0; //for multi RU
-    int rxs=rx_rf(rxBuffOffset,
-                  samples,
-                  ru->nb_rx,
-                  ru->common.rxdata,
-                  &ru->rfdevice,
-                  &HWtimeStamp);
-    LOG_D(PHY,"Reading %d samples for slot %d\n",samples_per_slot,nextSlot);
-
-    if ( HWtimeStamp !=  nextHWTSshouldBe)
-      LOG_E(HW,"reading a stream must be continuous, %ld, %ld\n", HWtimeStamp, nextHWTSshouldBe);
-
-    nextHWTSshouldBe=HWtimeStamp+rxs;
-    ru->proc.timestamp_rx=nextRxTSlogical;
-    nextRxTSlogical+=samples_per_slot;
-    int64_t HW_to_logical_RxTSoffset=(int64_t)HWtimeStamp-(int64_t)ru->proc.timestamp_rx;
-    ru->proc.frame_rx    = (ru->proc.timestamp_rx / (fp->samples_per_subframe*10))&1023;
-    uint32_t idx_sf = ru->proc.timestamp_rx / fp->samples_per_subframe;
-    float offsetInSubframe=ru->proc.timestamp_rx % fp->samples_per_subframe;
-    ru->proc.tti_rx = (idx_sf * fp->slots_per_subframe +
-                       lroundf(offsetInSubframe / fp->samples_per_slot0))%
-                      fp->slots_per_frame;
-    LOG_D(PHY,"RU %d/%d TS %llu (off %d), frame %d, slot %d.%d / %d\n",
-          ru->idx, 0,
-          (unsigned long long int)ru->proc.timestamp_rx,
-          (int)ru->ts_offset,ru->proc.frame_rx,ru->proc.tti_rx,ru->proc.tti_tx,fp->slots_per_frame);
-    int slot_type = nr_slot_select(&ru->gNB_list[0]->gNB_config,ru->proc.frame_rx,ru->proc.tti_rx);
-
-    if (slot_type == NR_UPLINK_SLOT || slot_type == NR_MIXED_SLOT) {
-      nr_fep_full(ru,ru->proc.tti_rx);
-
-      for (int aa=0; aa<ru->nb_rx; aa++)
-        memcpy((void *)RC.gNB[0]->common_vars.rxdataF[aa],
-               (void *)ru->common.rxdataF[aa], fp->symbols_per_slot*fp->ofdm_symbol_size*sizeof(int32_t));
-
-      LOG_D(PHY, "rxdataF energy: %d\n", signal_energy(ru->common.rxdataF[0], fp->symbols_per_slot*fp->ofdm_symbol_size));
-    }
-
-    gNB_L1_proc_t *gNBproc=&RC.gNB[0][0].proc;
-    gNB_L1_rxtx_proc_t *L1_proc = &gNBproc->L1_proc;
-    NR_DL_FRAME_PARMS *fp = ru->nr_frame_parms;
-    gNBproc->timestamp_rx  = ru->proc.timestamp_rx;
-    L1_proc->frame_rx = gNBproc->frame_rx = gNBproc->frame_prach = ru->proc.frame_rx =
-        (ru->proc.timestamp_rx / (fp->samples_per_subframe*10))&1023;
-    L1_proc->slot_rx = gNBproc->slot_rx = gNBproc->slot_prach =
-                                            ru->proc.tti_rx; // computed before in caller function
-    L1_proc->timestamp_tx = gNBproc->timestamp_tx = ru->proc.timestamp_tx =
-                              ru->proc.timestamp_rx +
-                              sf_ahead*fp->samples_per_subframe;
-    L1_proc->frame_tx  = gNBproc->frame_tx = ru->proc.frame_tx =
-                           (gNBproc->timestamp_tx / (fp->samples_per_subframe*10))&1023;
-    L1_proc->slot_tx   =  ru->proc.tti_tx =
-                            (L1_proc->slot_rx + sl_ahead)%fp->slots_per_frame;
-
-    if (ocp_rxtx(&RC.gNB[0][0],L1_proc) < 0)
-      LOG_E(PHY,"gNB %d CC_id %d failed during execution\n",RC.gNB[0][0].Mod_id,RC.gNB[0][0].CC_id);
-
-    // do TX front-end processing if needed (precoding and/or IDFTs)
-    //ru->feptx_prec(ru,proc->frame_tx,proc->tti_tx);
-    nr_feptx_prec(ru,ru->proc.frame_tx,ru->proc.tti_tx);
-    // do OFDM with/without TX front-end processing  if needed
-    //ru->feptx_ofdm
-    nfapi_nr_config_request_scf_t *cfg = &ru->gNB_list[0]->gNB_config;
-
-    if (nr_slot_select(cfg,ru->proc.frame_tx, ru->proc.tti_tx ) != NR_UPLINK_SLOT) {
-      int aa=0; // antenna 0 hardcoded
-      NR_DL_FRAME_PARMS *fp=ru->nr_frame_parms;
-      nr_feptx0(ru,ru->proc.tti_tx,0,fp->symbols_per_slot,aa);
-      int *txdata = &ru->common.txdata[aa][fp->get_samples_slot_timestamp(ru->proc.tti_tx,fp,0)];
-      int slot_sizeF = (fp->ofdm_symbol_size)*
-                       ((NFAPI_CP_NORMAL == 1) ? 12 : 14);
-      LOG_D(PHY,"feptx_ofdm (TXPATH): frame %d, slot %d: txp (time %ld) %d dB, txp (freq) %d dB\n",
-            ru->proc.frame_tx,ru->proc.tti_tx,ru->proc.timestamp_tx,
-            dB_fixed(signal_energy((int32_t *)txdata,fp->get_samples_per_slot(ru->proc.tti_tx,fp))),
-            dB_fixed(signal_energy_nodc(ru->common.txdataF_BF[aa],2*slot_sizeF)));
-    }
-
-    // do outgoing fronthaul (south) if needed
-    tx_rf(ru,ru->proc.frame_tx,ru->proc.tti_tx,ru->proc.timestamp_tx+HW_to_logical_RxTSoffset);
-    slot++;
-  }
-
-  printf( "Exiting ru_thread \n");
-  ru->rfdevice.trx_end_func(&ru->rfdevice);
-  static int ru_thread_status = 0;
-  return &ru_thread_status;
-}
-
-void launch_NR_RU(RU_t *ru, char *rf_config_file) {
-  LOG_I(PHY,"number of L1 instances %d, number of RU %d, number of CPU cores %d\n",
-        RC.nb_nr_L1_inst,RC.nb_RU,get_nprocs());
-  LOG_D(PHY,"Process RUs RC.nb_RU:%d\n",RC.nb_RU);
-
-  for (int ru_id=0; ru_id<RC.nb_RU; ru_id++) {
-    LOG_D(PHY,"Process RC.ru[%d]\n",ru_id);
-    ru->rf_config_file = rf_config_file;
-    ru->idx            = ru_id;
-    ru->ts_offset      = 0;
-    // use gNB_list[0] as a reference for RU frame parameters
-    // NOTE: multiple CC_id are not handled here yet!
-    LOG_D(PHY, "%s() RC.ru[%d].num_gNB:%d ru->gNB_list[0]:%p rf_config_file:%s\n",
-          __FUNCTION__, ru_id, ru->num_gNB, ru->gNB_list[0],  ru->rf_config_file);
-    LOG_E(PHY,"ru->gNB_list ru->num_gNB hardcoded: one RU connected to carrier 0 of gNB 0\n");
-    ru->gNB_list[0] = &RC.gNB[0][0];
-    ru->num_gNB=1;
-    LOG_I(PHY,"Copying frame parms from gNB in RC to ru %d and frame_parms in ru\n",ru->idx);
-    RU_proc_t *proc = &ru->proc;
-    threadCreate( &proc->pthread_FH, ru_thread, (void *)ru, "MainLoop", -1, OAI_PRIORITY_RT_MAX );
-  }
-}
-
-void init_eNB_afterRU(void) {
-  AssertFatal(false,"");
-}
-
-int main( int argc, char **argv ) {
-  AssertFatal(load_configmodule(argc,argv,CONFIG_ENABLECMDLINEONLY),
-              "[SOFTMODEM] Error, configuration module init failed\n");
-  logInit();
-#ifndef PACKAGE_VERSION
-#  define PACKAGE_VERSION "UNKNOWN"
-#endif
-  LOG_I(HW, "Version: %s\n", PACKAGE_VERSION);
-  set_latency_target();
-  get_options ();
-  get_common_options(SOFTMODEM_GNB_BIT );
-  AssertFatal(!CONFIG_ISFLAGSET(CONFIG_ABORT),"Getting configuration failed\n");
-  cpuf=get_cpu_freq_GHz();
-  itti_init(TASK_MAX, tasks_info);
-  set_taus_seed (0);
-  init_opt();
-  init_pdcp();
-  init_main_gNB();
-  init_gNB(true, wait_for_sync);
-  /* Start the agent. If it is turned off in the configuration, it won't start */
-  RCconfig_nr_flexran();
-
-  for (int i = 0; i < RC.nb_nr_L1_inst; i++) {
-    flexran_agent_start(i);
-  }
-
-  /*
-   *nfapi stuff very buggy in 4G, not yet implemented in 5G
-   */
-  // init UE_PF_PO and mutex lock (paging from S1AP)
-  pthread_mutex_init(&ue_pf_po_mutex, NULL);
-  printf("NFAPI*** - mutex and cond created - will block shortly for completion of PNF connection\n");
-  pthread_cond_init(&nfapi_sync_cond,NULL);
-  pthread_mutex_init(&nfapi_sync_mutex, NULL);
-  const char *nfapi_mode_str[] = {
-    "MONOLITHIC", "PNF", "VNF",
-  };
-  AssertFatal(nfapi_mode < 3,"");
-  printf("NFAPI MODE:%s\n", nfapi_mode_str[nfapi_mode]);
-
-  if (nfapi_mode==NFAPI_MODE_VNF) // VNF
-    wait_nfapi_init("main?");
-
-  for (int i=0; i<RC.nb_nr_L1_inst; i++)
-    AssertFatal(RC.gNB[i]->configured, "Remain threads to manage\n");
-
-  printf("About to Init RU threads RC.nb_RU:%d\n", RC.nb_RU);
-  config_sync_var=0;
-
-  if (nfapi_mode==NFAPI_MODE_PNF) { // PNF
-    wait_nfapi_init("main?");
-  }
-
-  printf("wait RUs\n");
-  printf("ALL RUs READY!\n");
-  printf("RC.nb_RU:%d\n", RC.nb_RU);
-  // once all RUs are ready initialize the rest of the gNBs ((dependence on final RU parameters after configuration)
-  printf("ALL RUs ready - init gNBs\n");
-  LOG_E(PHY,"configuring RU from file,  hardcoded one gNB for one RU, one carrier\n");
-  RU_t ru= {0};
-  OCPconfig_RU(&ru);
-  ru.nr_frame_parms->threequarter_fs=threequarter_fs;
-  fill_rf_config(&ru,ru.rf_config_file);
-  init_gNB_phase2(&ru);
-  memcpy((void *)ru.nr_frame_parms,&RC.gNB[0][0].frame_parms,sizeof(NR_DL_FRAME_PARMS));
-  memcpy((void *)&ru.config,(void *)&RC.gNB[0]->gNB_config,sizeof(ru.config));
-  AssertFatal(setup_RU_buffers(&ru)==0,"Inconsistent configuration");
-  nr_phy_init_RU(&ru);
-  init_gNB_proc(0); // only instance 0 (one gNB per process)
-
-  if (RC.nb_RU >0) {
-    printf("Initializing RU threads\n");
-    launch_NR_RU(&ru, get_softmodem_params()->rf_config_file);
-  }
-
-  if (opp_enabled ==1) {
-    pthread_t t;
-    threadCreate(&t, process_stats_thread,
-                 (void *)NULL, "time_meas", -1, OAI_PRIORITY_RT_LOW);
-  }
-
-  if(IS_SOFTMODEM_DOSCOPE) {
-    scopeParms_t tmp= {&argc, argv, &ru, RC.gNB[0]};
-    load_softscope("nr",&tmp);
-  }
-
-  while(!oai_exit)
-    sleep(1);
-
-  logClean();
-  printf("Bye.\n");
-  return 0;
-}
diff --git a/executables/softmodem-common.h b/executables/softmodem-common.h
index 16014c60249de31967f70c6d22c6d264c0520515..1f73720e703a7017f886278b0c3c7c09d06e327d 100644
--- a/executables/softmodem-common.h
+++ b/executables/softmodem-common.h
@@ -120,7 +120,6 @@ extern "C"
 #define TIMING_SOURCE       softmodem_params.timing_source
 #define SEND_DMRSSYNC       softmodem_params.send_dmrs_sync
 #define USIM_TEST           softmodem_params.usim_test
-#define USE_256QAM_TABLE    softmodem_params.use_256qam_table
 #define PRB_INTERPOLATION   softmodem_params.prb_interpolation
 #define NFAPI               softmodem_params.nfapi
 #define NSA                 softmodem_params.nsa
@@ -158,14 +157,13 @@ extern int usrp_tx_thread;
     {"basicsim",             CONFIG_HLP_RFSIM,        PARAMFLAG_BOOL, uptr:&basicsim,                     defintval:0,           TYPE_INT,    0},                     \
     {"nokrnmod",             CONFIG_HLP_NOKRNMOD,     PARAMFLAG_BOOL, uptr:&nokrnmod,                     defintval:0,           TYPE_INT,    0},                     \
     {"nbiot-disable",        CONFIG_HLP_DISABLNBIOT,  PARAMFLAG_BOOL, uptr:&nonbiot,                      defuintval:0,          TYPE_INT,    0},                     \
-    {"use-256qam-table",     CONFIG_HLP_256QAM,       PARAMFLAG_BOOL, iptr:&USE_256QAM_TABLE,             defintval:0,           TYPE_INT,    0},                     \
     {"nsa",                  CONFIG_HLP_NSA,          PARAMFLAG_BOOL, iptr:&NSA,                          defintval:0,           TYPE_INT,    0},                     \
     {"node-number",          NULL,                    0,              u16ptr:&NODE_NUMBER,                defuintval:0,          TYPE_UINT16, 0},                     \
     {"usrp-tx-thread-config", CONFIG_HLP_USRP_THREAD, 0,              iptr:&usrp_tx_thread,               defstrval:0,           TYPE_INT,    0},                     \
     {"do-prb-interpolation", CONFIG_HLP_PRBINTER,     PARAMFLAG_BOOL, iptr:&PRB_INTERPOLATION,            defintval:0,           TYPE_INT,    0},                     \
     {"nfapi",                CONFIG_HLP_NFAPI,        0,              u8ptr:&nfapi_mode,                  defintval:0,           TYPE_UINT8,  0},                     \
     {"non-stop",             CONFIG_HLP_NONSTOP,      PARAMFLAG_BOOL, iptr:&NON_STOP,                     defintval:0,           TYPE_INT,    0},                     \
-    {"emulate-l1",           CONFIG_L1_EMULATOR,      PARAMFLAG_BOOL, iptr:&EMULATE_L1,                   defintval:0,           TYPE_INT,    0},                     \
+    {"emulate-l1",           CONFIG_L1_EMULATOR,      PARAMFLAG_BOOL, iptr:&EMULATE_L1,                   defintval:0,           TYPE_INT,    0}                      \
   }
 
 #define CONFIG_HLP_NSA           "Enable NSA mode \n"
@@ -250,7 +248,6 @@ typedef struct {
   uint32_t       timing_source;
   int            hw_timing_advance;
   uint32_t       send_dmrs_sync;
-  int            use_256qam_table;
   int            prb_interpolation;
   uint8_t        nfapi;
   int            nsa;
diff --git a/executables/transport_split.c b/executables/transport_split.c
index f380eb90e36977727e7b493b200999fa3edf6316..e7199637ccf505bd9b011a981d100d6f3c5e45c9 100644
--- a/executables/transport_split.c
+++ b/executables/transport_split.c
@@ -156,7 +156,7 @@ int receiveSubFrame(UDPsock_t *sock, void *bufferZone,  int bufferSize, uint16_t
 int sendSubFrame(UDPsock_t *sock, void *bufferZone, ssize_t secondHeaderSize, uint16_t contentType) {
   commonUDP_t *UDPheader=(commonUDP_t *)bufferZone ;
   UDPheader->contentType=contentType;
-  UDPheader->senderClock=rdtsc();
+  UDPheader->senderClock=rdtsc_oai();
   int nbBlocks=UDPheader->nbBlocks;
   int blockId=0;
 
diff --git a/nfapi/open-nFAPI/nfapi/public_inc/fapi_nr_ue_constants.h b/nfapi/open-nFAPI/nfapi/public_inc/fapi_nr_ue_constants.h
index f107b5b9736c6418d12a896f8628fd4c24d8c909..7fb42e566aa5c1812ef62394ff5c458c753a444b 100644
--- a/nfapi/open-nFAPI/nfapi/public_inc/fapi_nr_ue_constants.h
+++ b/nfapi/open-nFAPI/nfapi/public_inc/fapi_nr_ue_constants.h
@@ -46,7 +46,9 @@
 #define FAPI_NR_DL_CONFIG_TYPE_RA_DLSCH 0x03
 #define FAPI_NR_DL_CONFIG_TYPE_SI_DLSCH 0x04
 #define FAPI_NR_DL_CONFIG_TYPE_P_DLSCH 0x05
-#define FAPI_NR_DL_CONFIG_TYPES 0x05
+#define FAPI_NR_DL_CONFIG_TYPE_CSI_RS 0x06
+#define FAPI_NR_DL_CONFIG_TYPE_CSI_IM 0x07
+#define FAPI_NR_DL_CONFIG_TYPES 0x07
 
 #define FAPI_NR_CCE_REG_MAPPING_TYPE_INTERLEAVED 0x01
 #define FAPI_NR_CCE_REG_MAPPING_TYPE_NON_INTERLEAVED 0x02
diff --git a/nfapi/open-nFAPI/nfapi/public_inc/fapi_nr_ue_interface.h b/nfapi/open-nFAPI/nfapi/public_inc/fapi_nr_ue_interface.h
index dac75bd6ec542d5b654fb59a46adae660ae59721..284ef22fc4c8fe9f72007c82aee0e3a63d49930e 100644
--- a/nfapi/open-nFAPI/nfapi/public_inc/fapi_nr_ue_interface.h
+++ b/nfapi/open-nFAPI/nfapi/public_inc/fapi_nr_ue_interface.h
@@ -473,11 +473,53 @@ typedef struct {
   fapi_nr_dl_config_dlsch_pdu_rel15_t dlsch_config_rel15;
 } fapi_nr_dl_config_dlsch_pdu;
 
+
+typedef struct {
+  uint16_t bwp_size;//
+  uint16_t bwp_start;//
+  uint8_t  subcarrier_spacing;//
+  uint8_t  cyclic_prefix;//
+  uint16_t start_rb;
+  uint16_t nr_of_rbs;
+  uint8_t  csi_type;//Value: 0:TRS 1:CSI-RS NZP 2:CSI-RS ZP
+  uint8_t  row;//Row entry into the CSI Resource location table. [TS38.211, sec 7.4.1.5.3 and table 7.4.1.5.3-1] Value: 1-18
+  uint16_t freq_domain;//Value: Up to the 12 LSBs, actual size is determined by the Row parameter
+  uint8_t  symb_l0;//The time domain location l0 and firstOFDMSymbolInTimeDomain Value: 0->13
+  uint8_t  symb_l1;//
+  uint8_t  cdm_type;
+  uint8_t  freq_density;//The density field, p and comb offset (for dot5).0: dot5 (even RB), 1: dot5 (odd RB), 2: one, 3: three
+  uint16_t scramb_id;//ScramblingID of the CSI-RS [TS38.214, sec 5.2.2.3.1] Value: 0->1023
+} fapi_nr_dl_config_csirs_pdu_rel15_t;
+
+
+typedef struct {
+  uint16_t bwp_size;
+  uint16_t bwp_start;
+  uint8_t  subcarrier_spacing;
+  uint16_t start_rb;
+  uint16_t nr_of_rbs;
+  uint8_t k_csiim[4];
+  uint8_t l_csiim[4];
+} fapi_nr_dl_config_csiim_pdu_rel15_t;
+
+
+typedef struct {
+  fapi_nr_dl_config_csirs_pdu_rel15_t csirs_config_rel15;
+} fapi_nr_dl_config_csirs_pdu;
+
+
+typedef struct {
+  fapi_nr_dl_config_csiim_pdu_rel15_t csiim_config_rel15;
+} fapi_nr_dl_config_csiim_pdu;
+
+
 typedef struct {
   uint8_t pdu_type;
   union {
     fapi_nr_dl_config_dci_pdu dci_config_pdu;
     fapi_nr_dl_config_dlsch_pdu dlsch_config_pdu;
+    fapi_nr_dl_config_csirs_pdu csirs_config_pdu;
+    fapi_nr_dl_config_csiim_pdu csiim_config_pdu;
   };
 } fapi_nr_dl_config_request_pdu_t;
 
diff --git a/openair1/PHY/CODING/TESTBENCH/ldpctest.c b/openair1/PHY/CODING/TESTBENCH/ldpctest.c
index 371deba3f28546e5a01f0107c03f88e2fa6b8c14..58d649d0119b35edcd1781042acd9b52dc0cc354 100644
--- a/openair1/PHY/CODING/TESTBENCH/ldpctest.c
+++ b/openair1/PHY/CODING/TESTBENCH/ldpctest.c
@@ -25,6 +25,7 @@
 #include <string.h>
 #include "assertions.h"
 #include "SIMULATION/TOOLS/sim.h"
+#include "common/utils/load_module_shlib.h"
 #include "PHY/CODING/nrLDPC_extern.h"
 //#include "openair1/SIMULATION/NR_PHY/nr_unitary_defs.h"
 #include "openair1/PHY/CODING/nrLDPC_decoder_LYC/nrLDPC_decoder_LYC.h"
@@ -118,15 +119,13 @@ int test_ldpc(short No_iteration,
   //short test_input[block_length];
   unsigned char *test_input[MAX_NUM_NR_DLSCH_SEGMENTS]={NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL};;
   //short *c; //padded codeword
-  unsigned char *estimated_output[MAX_NUM_DLSCH_SEGMENTS];
-  unsigned char *estimated_output_bit[MAX_NUM_DLSCH_SEGMENTS];
-  unsigned char *test_input_bit;
+  unsigned char estimated_output[MAX_NUM_DLSCH_SEGMENTS][block_length];
+  memset(estimated_output, 0, sizeof(estimated_output));
   unsigned char *channel_input[MAX_NUM_DLSCH_SEGMENTS];
-  unsigned char *channel_output_uncoded[MAX_NUM_DLSCH_SEGMENTS];
   unsigned char *channel_input_optim[MAX_NUM_DLSCH_SEGMENTS];
-  double *channel_output;
-  double *modulated_input[MAX_NUM_DLSCH_SEGMENTS];
-  char *channel_output_fixed[MAX_NUM_DLSCH_SEGMENTS];
+  //double channel_output[68 * 384];
+  double modulated_input[MAX_NUM_DLSCH_SEGMENTS][68 * 384] = { 0 };
+  char channel_output_fixed[MAX_NUM_DLSCH_SEGMENTS][68  * 384] = { 0 };
   unsigned int i,j,trial=0;
   short BG=0,nrows=0;//,ncols;
   int no_punctured_columns,removed_bit;
@@ -155,24 +154,12 @@ int test_ldpc(short No_iteration,
   // generate input block
   for(j=0;j<MAX_NUM_DLSCH_SEGMENTS;j++) {
     test_input[j]=(unsigned char *)malloc16(sizeof(unsigned char) * block_length/8);
+    memset(test_input[j], 0, sizeof(unsigned char) * block_length / 8);
     channel_input[j] = (unsigned char *)malloc16(sizeof(unsigned char) * 68*384);
+    memset(channel_input[j], 0, sizeof(unsigned char) * 68 * 384);
     channel_input_optim[j] = (unsigned char *)malloc16(sizeof(unsigned char) * 68*384);
-    channel_output_uncoded[j] = (unsigned char *)malloc16(sizeof(unsigned char) * 68*384);
-    estimated_output[j] = (unsigned char*) malloc16(sizeof(unsigned char) * block_length);
-    estimated_output_bit[j] = (unsigned char*) malloc16(sizeof(unsigned char) * block_length);
-    modulated_input[j] = (double *)malloc16(sizeof(double) * 68*384);
-    channel_output_fixed[j]  =  (char *)malloc16(sizeof( char) * 68*384);
+    memset(channel_input_optim[j], 0, sizeof(unsigned char) * 68 * 384);
   }
-  //modulated_input = (double *)malloc(sizeof(double) * 68*384);
-  //channel_output  = (double *)malloc(sizeof(double) * 68*384);
-  //channel_output_fixed  = (char *)malloc16(sizeof(char) * 68*384);
-  //modulated_input = (double *)calloc(68*384, sizeof(double));
-  channel_output  =  (double *)calloc(68*384, sizeof(double));
-  //channel_output_fixed  =  (double *)calloc(68*384, sizeof(double));
-  //channel_output_fixed  =  (unsigned char*)calloc(68*384, sizeof(unsigned char*));
-  //estimated_output = (unsigned char*) malloc16(sizeof(unsigned char) * block_length);///8);
-  //estimated_output_bit = (unsigned char*) malloc16(sizeof(unsigned char) * block_length);
-  test_input_bit = (unsigned char*) malloc16(sizeof(unsigned char) * block_length);
 
   reset_meas(&time);
   reset_meas(time_optim);
@@ -319,7 +306,6 @@ int test_ldpc(short No_iteration,
         for (i = 0; i < block_length+(nrows-no_punctured_columns) * Zc - removed_bit; i++)
           if (channel_input[j][i]!=channel_input_optim[j][i]) {
             printf("differ in seg %u pos %u (%u,%u)\n", j, i, channel_input[j][i], channel_input_optim[j][i]);
-            free(channel_output);
             return (-1);
           }
       //else{
@@ -367,12 +353,9 @@ int test_ldpc(short No_iteration,
         //channel_output_fixed[i] = (char)quantize(1,channel_output_fixed[i],qbits);
 
         //Uncoded BER
-        if (channel_output_fixed[j][i]<0)
-            channel_output_uncoded[j][i]=1;  //QPSK demod
-        else
-            channel_output_uncoded[j][i]=0;
+        unsigned char channel_output_uncoded = channel_output_fixed[j][i]<0 ? 1 /* QPSK demod */ : 0;
 
-        if (channel_output_uncoded[j][i] != channel_input_optim[j][i-2*Zc])
+        if (channel_output_uncoded != channel_input_optim[j][i-2*Zc])
 	  *errors_bit_uncoded = (*errors_bit_uncoded) + 1;
 
 	}
@@ -423,12 +406,10 @@ int test_ldpc(short No_iteration,
 
       for (i=0; i<block_length; i++)
         {
-          estimated_output_bit[j][i] = (estimated_output[j][i/8]&(1<<(i&7)))>>(i&7);
-          test_input_bit[i] = (test_input[j][i/8]&(1<<(i&7)))>>(i&7); // Further correct for multiple segments
-          if (estimated_output_bit[j][i] != test_input_bit[i])
-          {
+          unsigned char estoutputbit = (estimated_output[j][i/8]&(1<<(i&7)))>>(i&7);
+          unsigned char inputbit = (test_input[j][i/8]&(1<<(i&7)))>>(i&7); // Further correct for multiple segments
+          if (estoutputbit != inputbit)
             *errors_bit = (*errors_bit) + 1;
-          }
         }
 
       //if (*errors == 1000)
@@ -460,17 +441,8 @@ int test_ldpc(short No_iteration,
   for(j=0;j<MAX_NUM_DLSCH_SEGMENTS;j++) {
     free(test_input[j]);
     free(channel_input[j]);
-    free(channel_output_uncoded[j]);
     free(channel_input_optim[j]);
-    free(modulated_input[j]);
-    free(channel_output_fixed[j]);
-    free(estimated_output[j]);
-    free(estimated_output_bit[j]);
   }
-  //free(modulated_input);
-  free(channel_output);
-  //free(channel_output_fixed);
-  //free(estimated_output);
 
   nrLDPC_free_mem(p_nrLDPC_procBuf);
 
@@ -728,5 +700,8 @@ int main(int argc, char *argv[])
   }
   fclose(fd);
 
+  loader_reset();
+  logTerm();
+
   return(0);
 }
diff --git a/openair1/PHY/CODING/TESTBENCH/polartest.c b/openair1/PHY/CODING/TESTBENCH/polartest.c
index 8e7e37754259a5b4051303032a55163a378ec36e..18946dac900619eb3d7abd7cedace868755bbff6 100644
--- a/openair1/PHY/CODING/TESTBENCH/polartest.c
+++ b/openair1/PHY/CODING/TESTBENCH/polartest.c
@@ -20,7 +20,7 @@
 
 int main(int argc, char *argv[])
 {
-  //Default simulation values (Aim for iterations = 1000000.)
+  //Default simulation values (Aim for iterations = 1000000.) 
   int decoder_int16=0;
   int itr, iterations = 1000, arguments, polarMessageType = 0; //0=PBCH, 1=DCI, 2=UCI
   double SNRstart = -20.0, SNRstop = 0.0, SNRinc= 0.5; //dB
@@ -158,20 +158,25 @@ if (logFlag){
 #endif
 }
 
-  uint8_t testArrayLength = ceil(testLength / 32.0);
-  uint8_t coderArrayLength = ceil(coderLength / 32.0);
-  uint32_t testInput[testArrayLength]; //generate randomly
+  const uint8_t testArrayLength = ceil(testLength / 32.0);
+  const uint8_t coderArrayLength = ceil(coderLength / 32.0);
+  // in the polar code, often uint64_t arrays are used, but we work with
+  // uint32_t arrays below, so realArrayLength is the length that always
+  // satisfies uint64_t array length
+  const uint8_t realArrayLength = ((testArrayLength + 1) / 2) * 2;
+  printf("testArrayLength %d realArrayLength %d\n", testArrayLength, realArrayLength);
+  uint32_t testInput[realArrayLength]; //generate randomly
   uint32_t encoderOutput[coderArrayLength];
-  uint32_t estimatedOutput[testArrayLength]; //decoder output
-  memset(testInput,0,sizeof(uint32_t) * testArrayLength);
+  uint32_t estimatedOutput[realArrayLength]; //decoder output
+  memset(testInput,0,sizeof(uint32_t) * realArrayLength); // does not reset all
   memset(encoderOutput,0,sizeof(uint32_t) * coderArrayLength);
-  memset(estimatedOutput,0,sizeof(uint32_t) * testArrayLength);
+  memset(estimatedOutput,0,sizeof(uint32_t) * realArrayLength);
   uint8_t encoderOutputByte[coderLength];
   double modulatedInput[coderLength]; //channel input
   double channelOutput[coderLength];  //add noise
   int16_t channelOutput_int16[coderLength];
 
-  t_nrPolar_params *currentPtr = nr_polar_params(polarMessageType, testLength, aggregation_level, 1, NULL);
+  t_nrPolar_params *currentPtr = nr_polar_params(polarMessageType, testLength, aggregation_level, true);
 
 #ifdef DEBUG_DCI_POLAR_PARAMS
   uint32_t dci_pdu[4];
@@ -206,7 +211,8 @@ if (logFlag){
 		  modulated_input[i]=(-1)/sqrt(2);
 	  channel_output[i] = modulated_input[i] + (gaussdouble(0.0,1.0) * (1/sqrt(2*SNR_lin)));
   }
-  decoderState = polar_decoder_dci(channel_output, dci_est, currentPtrDCI, NR_POLAR_DECODER_LISTSIZE, rnti);
+  decoderState = polar_decoder_dci(channel_output, dci_est, NR_POLAR_DECODER_LISTSIZE, rnti,
+                                   1, size, aggregation_level);
   printf("dci_est: [0]->0x%08x \t [1]->0x%08x \t [2]->0x%08x \t [3]->0x%08x\n", dci_est[0], dci_est[1], dci_est[2], dci_est[3]);
   free(encoder_outputByte);
   free(channel_output);
@@ -239,13 +245,13 @@ if (logFlag){
 
 		  start_meas(&timeEncoder);
 		  if (decoder_int16==1) {
-			  polar_encoder_fast((uint64_t *)testInput, encoderOutput, 0, 0, currentPtr);
+			  polar_encoder_fast((uint64_t *)testInput, encoderOutput, 0, 0, polarMessageType, testLength, aggregation_level);
 			  //polar_encoder_fast((uint64_t*)testInput, (uint64_t*)encoderOutput,0,0,currentPtr);
 		  } else { //0 --> PBCH, 1 --> DCI, -1 --> UCI
 			  if (polarMessageType == 0)
-				  polar_encoder(testInput, encoderOutput, currentPtr);
+				  polar_encoder(testInput, encoderOutput, polarMessageType, testLength, aggregation_level);
 			  else if (polarMessageType == 1)
-				  polar_encoder_dci(testInput, encoderOutput, currentPtr, rnti);
+                            polar_encoder_dci(testInput, encoderOutput, rnti, polarMessageType, testLength, aggregation_level);
 		  }
 		  stop_meas(&timeEncoder);
 
@@ -276,19 +282,20 @@ if (logFlag){
       start_meas(&timeDecoder);
 
       if (decoder_int16==1) {
-    	  decoderState = polar_decoder_int16(channelOutput_int16, (uint64_t *)estimatedOutput, 0, currentPtr);
+    	  decoderState = polar_decoder_int16(channelOutput_int16, (uint64_t *)estimatedOutput, 0,
+                                             polarMessageType, testLength, aggregation_level);
       } else { //0 --> PBCH, 1 --> DCI, -1 --> UCI
     	  if (polarMessageType == 0) {
-    		  decoderState = polar_decoder(channelOutput,
-    				                       estimatedOutput,
-										   currentPtr,
-										   decoderListSize);
+            decoderState = polar_decoder(channelOutput,
+                                         estimatedOutput,
+                                         decoderListSize,
+                                         polarMessageType, testLength, aggregation_level);
     	  } else if (polarMessageType == 1) {
-    		  decoderState = polar_decoder_dci(channelOutput,
-    				  	  	  	  	  	  	   estimatedOutput,
-											   currentPtr,
-											   decoderListSize,
-											   rnti);
+            decoderState = polar_decoder_dci(channelOutput,
+                                             estimatedOutput,
+                                             decoderListSize,
+                                             rnti,
+                                             polarMessageType, testLength, aggregation_level);
     	  }
       }
       stop_meas(&timeDecoder);
@@ -334,9 +341,9 @@ if (logFlag){
       decoderState=0;
       nBitError=0;
       blockErrorState=0;
-	  memset(testInput,0,sizeof(uint32_t) * testArrayLength);
+	  memset(testInput,0,sizeof(uint32_t) * realArrayLength);
 	  memset(encoderOutput,0,sizeof(uint32_t) * coderArrayLength);
-	  memset(estimatedOutput,0,sizeof(uint32_t) * testArrayLength);
+	  memset(estimatedOutput,0,sizeof(uint32_t) * realArrayLength);
     }
 
     //Calculate error statistics for the SNR.
diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_types.h b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_types.h
index 99b6f75f93453f782bc0aacc0e00c2ad6a8bbda4..b7b15b5d334e78546aa2130dc2290377c3ab4650 100644
--- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_types.h
+++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_types.h
@@ -31,7 +31,7 @@
 #ifndef __NR_LDPC_TYPES__H__
 #define __NR_LDPC_TYPES__H__
 
-#include "PHY/TOOLS/time_meas.h"
+#include "time_meas.h"
 #include "nrLDPCdecoder_defs.h"
 // ==============================================================================
 // TYPES
diff --git a/openair1/PHY/CODING/nrLDPC_encoder/ldpc_encode_parity_check.c b/openair1/PHY/CODING/nrLDPC_encoder/ldpc_encode_parity_check.c
index 69d2ac4972663846ed6ac9bc45ab12d512c1b897..d36398a13a71f833725325c65c6b949cce6da005 100644
--- a/openair1/PHY/CODING/nrLDPC_encoder/ldpc_encode_parity_check.c
+++ b/openair1/PHY/CODING/nrLDPC_encoder/ldpc_encode_parity_check.c
@@ -33,7 +33,6 @@
 #include <math.h>
 #include <stdio.h>
 #include <string.h>
-#include <types.h>
 #include "assertions.h"
 #include "common/utils/LOG/log.h"
 
diff --git a/openair1/PHY/CODING/nrLDPC_encoder/ldpc_encoder.c b/openair1/PHY/CODING/nrLDPC_encoder/ldpc_encoder.c
index 76f92574bad3498c416a6318c1f84cbdc8ea5378..d5669fbbabe0fd41effaad17138cdca12dda1b03 100644
--- a/openair1/PHY/CODING/nrLDPC_encoder/ldpc_encoder.c
+++ b/openair1/PHY/CODING/nrLDPC_encoder/ldpc_encoder.c
@@ -35,7 +35,6 @@
 #include <math.h>
 #include <stdio.h>
 #include <string.h>
-#include <types.h>
 #include "defs.h"
 #include "assertions.h"
 #include "openair1/PHY/CODING/nrLDPC_defs.h"
@@ -280,4 +279,4 @@ int ldpc_encoder_orig(unsigned char *test_input,unsigned char *channel_input,int
 
 int nrLDPC_encod(unsigned char **test_input,unsigned char **channel_input,int Zc,int Kb,short block_length, short BG, encoder_implemparams_t *impp) {
   return ldpc_encoder_orig(test_input[0],channel_input[0],Zc,Kb,block_length,BG,impp->gen_code);
-}
\ No newline at end of file
+}
diff --git a/openair1/PHY/CODING/nrLDPC_encoder/ldpc_encoder2.c b/openair1/PHY/CODING/nrLDPC_encoder/ldpc_encoder2.c
index bef5b291dc61b5e02af028e34fc80571f2c2b091..73c165a2c80cad74c3e90e2b4fc0c4435140733b 100644
--- a/openair1/PHY/CODING/nrLDPC_encoder/ldpc_encoder2.c
+++ b/openair1/PHY/CODING/nrLDPC_encoder/ldpc_encoder2.c
@@ -36,7 +36,7 @@
 #include <types.h>
 #include "assertions.h"
 #include "common/utils/LOG/log.h"
-#include "PHY/TOOLS/time_meas.h"
+#include "time_meas.h"
 #include "defs.h"
 
 #include "ldpc384_byte.c"
diff --git a/openair1/PHY/CODING/nrLDPC_encoder/ldpc_encoder_optim.c b/openair1/PHY/CODING/nrLDPC_encoder/ldpc_encoder_optim.c
index 07062f612311c95de6c845543f07132314b4385a..d05ced18c67965ede543f32b06cc72cb67113406 100644
--- a/openair1/PHY/CODING/nrLDPC_encoder/ldpc_encoder_optim.c
+++ b/openair1/PHY/CODING/nrLDPC_encoder/ldpc_encoder_optim.c
@@ -33,10 +33,9 @@
 #include <math.h>
 #include <stdio.h>
 #include <string.h>
-#include <types.h>
 #include "assertions.h"
 #include "common/utils/LOG/log.h"
-#include "PHY/TOOLS/time_meas.h"
+#include "time_meas.h"
 #include "openair1/PHY/CODING/nrLDPC_defs.h"
 #include "ldpc_encode_parity_check.c"
 #include "ldpc_generate_coefficient.c"
diff --git a/openair1/PHY/CODING/nrLDPC_encoder/ldpc_encoder_optim8seg.c b/openair1/PHY/CODING/nrLDPC_encoder/ldpc_encoder_optim8seg.c
index 6fa9c5ff53c9f5b245c01a9482a16c48fb1e0202..958ef5aca7eabe81b920e5e10aa4080560e2acc8 100644
--- a/openair1/PHY/CODING/nrLDPC_encoder/ldpc_encoder_optim8seg.c
+++ b/openair1/PHY/CODING/nrLDPC_encoder/ldpc_encoder_optim8seg.c
@@ -33,10 +33,9 @@
 #include <math.h>
 #include <stdio.h>
 #include <string.h>
-#include <types.h>
 #include "assertions.h"
 #include "common/utils/LOG/log.h"
-#include "PHY/TOOLS/time_meas.h"
+#include "time_meas.h"
 #include "openair1/PHY/CODING/nrLDPC_defs.h"
 #include "ldpc_encode_parity_check.c" 
 #include "ldpc_generate_coefficient.c"
diff --git a/openair1/PHY/CODING/nrLDPC_encoder/ldpc_encoder_optim8segmulti.c b/openair1/PHY/CODING/nrLDPC_encoder/ldpc_encoder_optim8segmulti.c
index 15d4481eb605cccb2f4473ce11fee324a2a3aacc..9ef8cbfe658dc07234fd86f4e095cc9fc4ca6ba9 100644
--- a/openair1/PHY/CODING/nrLDPC_encoder/ldpc_encoder_optim8segmulti.c
+++ b/openair1/PHY/CODING/nrLDPC_encoder/ldpc_encoder_optim8segmulti.c
@@ -33,10 +33,9 @@
 #include <math.h>
 #include <stdio.h>
 #include <string.h>
-#include <types.h>
 #include "assertions.h"
 #include "common/utils/LOG/log.h"
-#include "PHY/TOOLS/time_meas.h"
+#include "time_meas.h"
 #include "openair1/PHY/CODING/nrLDPC_defs.h"
 
 #include "ldpc_encode_parity_check.c"
diff --git a/openair1/PHY/CODING/nrPolar_tools/nr_crc_byte.c b/openair1/PHY/CODING/nrPolar_tools/nr_crc_byte.c
index 461eb7d6f699d577ab9df125c200a273546f3f05..3a484ff99115d9c7dbb88b0409d83e96fd8781c5 100644
--- a/openair1/PHY/CODING/nrPolar_tools/nr_crc_byte.c
+++ b/openair1/PHY/CODING/nrPolar_tools/nr_crc_byte.c
@@ -29,12 +29,13 @@ uint8_t **crc24c_generator_matrix(uint16_t payloadSizeBits){
 	uint8_t crcPolynomialSize = 24;
 	uint8_t temp1[crcPolynomialSize], temp2[crcPolynomialSize];
 
-	uint8_t **crc_generator_matrix = malloc(payloadSizeBits * sizeof(uint8_t *));
+	uint8_t **crc_generator_matrix = malloc(payloadSizeBits*sizeof(uint8_t *) + payloadSizeBits*crcPolynomialSize*sizeof(uint8_t));
 	if (crc_generator_matrix)
 	  for (int i = 0; i < payloadSizeBits; i++)
-		  crc_generator_matrix[i] = malloc(crcPolynomialSize * sizeof(uint8_t));
+	    crc_generator_matrix[i] = ((uint8_t*)&crc_generator_matrix[payloadSizeBits])+i*crcPolynomialSize;
 
-	for (int i = 0; i < crcPolynomialSize; i++) crc_generator_matrix[payloadSizeBits-1][i]=crcPolynomialPattern[i+1];
+	for (int i = 0; i < crcPolynomialSize; i++)
+	  crc_generator_matrix[payloadSizeBits-1][i]=crcPolynomialPattern[i+1];
 
 	for (int i = payloadSizeBits-2; i >= 0; i--){
 		for (int j = 0; j < crcPolynomialSize-1; j++) temp1[j]=crc_generator_matrix[i+1][j+1];
diff --git a/openair1/PHY/CODING/nrPolar_tools/nr_polar_decoder.c b/openair1/PHY/CODING/nrPolar_tools/nr_polar_decoder.c
index 8fe115b23a1aed0416503985d2793be985634c82..62ce034f5990b3d93a0db616efe88f562e111501 100644
--- a/openair1/PHY/CODING/nrPolar_tools/nr_polar_decoder.c
+++ b/openair1/PHY/CODING/nrPolar_tools/nr_polar_decoder.c
@@ -39,19 +39,44 @@
 #include "PHY/CODING/nrPolar_tools/nr_polar_defs.h"
 #include "assertions.h"
 
+static inline void updateCrcChecksum2(int xlen,
+				      int ylen,
+				      uint8_t crcChecksum[xlen][ylen],
+				      int gxlen,
+				      int gylen,
+				      uint8_t crcGen[gxlen][gylen],
+				      uint8_t listSize,
+				      uint32_t i2,
+				      uint8_t len)
+{
+  for (uint8_t i = 0; i < listSize; i++) {
+    for (uint8_t j = 0; j < len; j++) {
+      crcChecksum[j][i+listSize] = ( (crcChecksum[j][i] + crcGen[i2][j]) % 2 );
+    }
+  }
+}
+
 int8_t polar_decoder(double *input,
                      uint32_t *out,
-                     const t_nrPolar_params *polarParams,
-                     uint8_t listSize)
+                     uint8_t listSize,
+                     int8_t messageType,
+                     uint16_t messageLength,
+                     uint8_t aggregation_level
+                     )
 {
+  t_nrPolar_params *polarParams=nr_polar_params(messageType, messageLength, aggregation_level, true);
   //Assumes no a priori knowledge.
-  uint8_t ***bit = nr_alloc_uint8_3D_array(polarParams->N, (polarParams->n+1), 2*listSize);
-  uint8_t **bitUpdated = nr_alloc_uint8_2D_array(polarParams->N, (polarParams->n+1)); //0=False, 1=True
-  uint8_t **llrUpdated = nr_alloc_uint8_2D_array(polarParams->N, (polarParams->n+1)); //0=False, 1=True
-  double ***llr = nr_alloc_double_3D_array(polarParams->N, (polarParams->n+1), 2*listSize);
-  uint8_t **crcChecksum = nr_alloc_uint8_2D_array(polarParams->crcParityBits, 2*listSize);
-  double *pathMetric = malloc(sizeof(double)*(2*listSize));
-  uint8_t *crcState = malloc(sizeof(uint8_t)*(2*listSize)); //0=False, 1=True
+  uint8_t bit[polarParams->N][polarParams->n+1][2*listSize];
+  memset(bit,0,sizeof bit);
+  uint8_t bitUpdated[polarParams->N][polarParams->n+1]; //0=False, 1=True
+  memset(bitUpdated,0,sizeof bitUpdated);
+  uint8_t llrUpdated[polarParams->N][polarParams->n+1]; //0=False, 1=True
+  memset(llrUpdated,0,sizeof llrUpdated);
+  double  llr[polarParams->N][polarParams->n+1][2*listSize];
+  uint8_t crcChecksum[polarParams->crcParityBits][2*listSize];
+  memset(crcChecksum,0,sizeof crcChecksum);
+  double  pathMetric[2*listSize];
+  uint8_t crcState[2*listSize]; //0=False, 1=True
 
   for (int i=0; i<(2*listSize); i++) {
     pathMetric[i] = 0;
@@ -63,13 +88,8 @@ int8_t polar_decoder(double *input,
     bitUpdated[i][0]=((polarParams->information_bit_pattern[i]+1) % 2);
   }
 
-  uint8_t **extended_crc_generator_matrix = malloc(polarParams->K * sizeof(uint8_t *)); //G_P3
-  uint8_t **tempECGM = malloc(polarParams->K * sizeof(uint8_t *)); //G_P2
-
-  for (int i = 0; i < polarParams->K; i++) {
-    extended_crc_generator_matrix[i] = malloc(polarParams->crcParityBits * sizeof(uint8_t));
-    tempECGM[i] = malloc(polarParams->crcParityBits * sizeof(uint8_t));
-  }
+  uint8_t extended_crc_generator_matrix[polarParams->K][polarParams->crcParityBits]; //G_P3
+  uint8_t tempECGM[polarParams->K][polarParams->crcParityBits]; //G_P2
 
   for (int i=0; i<polarParams->payloadBits; i++) {
     for (int j=0; j<polarParams->crcParityBits; j++) {
@@ -102,7 +122,7 @@ int8_t polar_decoder(double *input,
     }
   }
 
-  double *d_tilde = malloc(sizeof(double) * polarParams->N);
+  double d_tilde[polarParams->N];
   nr_polar_rate_matching(input, d_tilde, polarParams->rate_matching_pattern, polarParams->K, polarParams->N, polarParams->encoderLength);
 
   for (int j = 0; j < polarParams->N; j++) llr[j][polarParams->n][0]=d_tilde[j];
@@ -117,31 +137,33 @@ int8_t polar_decoder(double *input,
   uint8_t listIndex[2*listSize], copyIndex;
 
   for (uint16_t currentBit=0; currentBit<polarParams->N; currentBit++) {
-    updateLLR(llr, llrUpdated, bit, bitUpdated, currentListSize, currentBit, 0, polarParams->N, (polarParams->n+1));
+    updateLLR(currentListSize, currentBit, 0, polarParams->N, polarParams->n+1, 2*listSize, llr, llrUpdated, bit, bitUpdated);
 
     if (polarParams->information_bit_pattern[currentBit]==0) { //Frozen bit.
-      updatePathMetric(pathMetric, llr, currentListSize, 0, currentBit);
+      updatePathMetric(pathMetric, currentListSize, 0, currentBit, polarParams->N, polarParams->n+1, 2*listSize, llr);
     } else { //Information or CRC bit.
-      updatePathMetric2(pathMetric, llr, currentListSize, currentBit);
+      updatePathMetric2(pathMetric, currentListSize, currentBit, polarParams->N, polarParams->n+1, 2*listSize, llr);
 
       for (int i = 0; i < currentListSize; i++) {
-        for (int j = 0; j < polarParams->N; j++) {
-          for (int k = 0; k < (polarParams->n+1); k++) {
+      for (int j = 0; j < polarParams->N; j++) {
+	for (int k = 0; k < (polarParams->n+1); k++) {
             bit[j][k][i+currentListSize]=bit[j][k][i];
             llr[j][k][i+currentListSize]=llr[j][k][i];
           }
-        }
+	}
       }
 
-      for (int i = 0; i < currentListSize; i++) {
-        bit[currentBit][0][i]=0;
-        crcState[i+currentListSize]=crcState[i];
-      }
+	for (int i = 0; i < currentListSize; i++) {
+	  bit[currentBit][0][i]=0;
+	  crcState[i+currentListSize]=crcState[i];
+	}
 
       for (int i = currentListSize; i < 2*currentListSize; i++) bit[currentBit][0][i]=1;
 
       bitUpdated[currentBit][0]=1;
-      updateCrcChecksum2(crcChecksum, extended_crc_generator_matrix, currentListSize, nonFrozenBit, polarParams->crcParityBits);
+      updateCrcChecksum2(polarParams->crcParityBits, 2*listSize, crcChecksum,
+			 polarParams->K, polarParams->crcParityBits, extended_crc_generator_matrix, 
+                         currentListSize, nonFrozenBit, polarParams->crcParityBits);
       currentListSize*=2;
 
       //Keep only the best "listSize" number of entries.
@@ -246,14 +268,7 @@ int8_t polar_decoder(double *input,
 
       if (decoderIterationCheck==0) {
         //perror("[SCL polar decoder] All list entries have failed the CRC checks.");
-        free(d_tilde);
-        free(pathMetric);
-        free(crcState);
-        nr_free_uint8_3D_array(bit, polarParams->N, (polarParams->n+1));
-        nr_free_double_3D_array(llr, polarParams->N, (polarParams->n+1));
-        nr_free_uint8_2D_array(crcChecksum, polarParams->crcParityBits);
-        free(tempECGM);
-        return(-1);
+        polarReturn(-1);
       }
 
       nonFrozenBit++;
@@ -282,33 +297,34 @@ int8_t polar_decoder(double *input,
     }
   }
 
-  free(d_tilde);
-  free(pathMetric);
-  free(crcState);
-  nr_free_uint8_3D_array(bit, polarParams->N, (polarParams->n+1));
-  nr_free_double_3D_array(llr, polarParams->N, (polarParams->n+1));
-  nr_free_uint8_2D_array(crcChecksum, polarParams->crcParityBits);
-  nr_free_uint8_2D_array(extended_crc_generator_matrix, polarParams->K);
-  nr_free_uint8_2D_array(tempECGM, polarParams->K);
   /*
    * Return bits.
    */
   nr_byte2bit_uint8_32(polarParams->nr_polar_A, polarParams->payloadBits, out);
-  return(0);
+
+  polarReturn 0;
 }
 
 int8_t polar_decoder_dci(double *input,
                          uint32_t *out,
-                         const t_nrPolar_params *polarParams,
                          uint8_t listSize,
-                         uint16_t n_RNTI) {
-  uint8_t ***bit = nr_alloc_uint8_3D_array(polarParams->N, (polarParams->n+1), 2*listSize);
-  uint8_t **bitUpdated = nr_alloc_uint8_2D_array(polarParams->N, (polarParams->n+1)); //0=False, 1=True
-  uint8_t **llrUpdated = nr_alloc_uint8_2D_array(polarParams->N, (polarParams->n+1)); //0=False, 1=True
-  double ***llr = nr_alloc_double_3D_array(polarParams->N, (polarParams->n+1), 2*listSize);
-  uint8_t **crcChecksum = nr_alloc_uint8_2D_array(polarParams->crcParityBits, 2*listSize);
-  double *pathMetric = malloc(sizeof(double)*(2*listSize));
-  uint8_t *crcState = malloc(sizeof(uint8_t)*(2*listSize)); //0=False, 1=True
+                         uint16_t n_RNTI,
+                         int8_t messageType,
+                         uint16_t messageLength,
+                         uint8_t aggregation_level ) {
+  t_nrPolar_params *polarParams=nr_polar_params(messageType, messageLength, aggregation_level, true);
+
+  uint8_t bit[polarParams->N][polarParams->n+1][2*listSize];
+  memset(bit,0,sizeof bit);
+  uint8_t bitUpdated[polarParams->N][polarParams->n+1]; //0=False, 1=True
+  memset(bitUpdated,0,sizeof bitUpdated);
+  uint8_t llrUpdated[polarParams->N][polarParams->n+1]; //0=False, 1=True
+  memset(llrUpdated,0,sizeof llrUpdated);
+  double  llr[polarParams->N][polarParams->n+1][2*listSize];
+  uint8_t crcChecksum[polarParams->crcParityBits][2*listSize];
+  memset(crcChecksum,0,sizeof crcChecksum);
+  double  pathMetric[2*listSize];
+  uint8_t crcState[2*listSize]; //0=False, 1=True
   uint8_t extended_crc_scrambling_pattern[polarParams->crcParityBits];
 
   for (int i=0; i<(2*listSize); i++) {
@@ -321,13 +337,8 @@ int8_t polar_decoder_dci(double *input,
     bitUpdated[i][0]=((polarParams->information_bit_pattern[i]+1) % 2);
   }
 
-  uint8_t **extended_crc_generator_matrix = malloc(polarParams->K * sizeof(uint8_t *)); //G_P3: K-by-P
-  uint8_t **tempECGM = malloc(polarParams->K * sizeof(uint8_t *)); //G_P2: K-by-P
-
-  for (int i = 0; i < polarParams->K; i++) {
-    extended_crc_generator_matrix[i] = malloc(polarParams->crcParityBits * sizeof(uint8_t));
-    tempECGM[i] = malloc(polarParams->crcParityBits * sizeof(uint8_t));
-  }
+  uint8_t extended_crc_generator_matrix[polarParams->K][polarParams->crcParityBits]; //G_P3: K-by-P
+  uint8_t tempECGM[polarParams->K][polarParams->crcParityBits]; //G_P2: K-by-P
 
   for (int i=0; i<polarParams->payloadBits; i++) {
     for (int j=0; j<polarParams->crcParityBits; j++) {
@@ -366,17 +377,19 @@ int8_t polar_decoder_dci(double *input,
     extended_crc_scrambling_pattern[i]=(n_RNTI>>(23-i))&1;
   }
 
-  double *d_tilde = malloc(sizeof(double) * polarParams->N);
+  double d_tilde[polarParams->N];
   nr_polar_rate_matching(input, d_tilde, polarParams->rate_matching_pattern, polarParams->K, polarParams->N, polarParams->encoderLength);
 
-  for (int j = 0; j < polarParams->N; j++) llr[j][polarParams->n][0]=d_tilde[j];
+  for (int j = 0; j < polarParams->N; j++)
+    llr[j][polarParams->n][0]=d_tilde[j];
 
   /*
    * SCL polar decoder.
    */
 
   for (int i=0; i<polarParams->crcParityBits; i++) {
-    for (int j=0; j<polarParams->crcParityBits; j++) crcChecksum[i][0]=crcChecksum[i][0]+polarParams->crc_generator_matrix[j][i];
+    for (int j=0; j<polarParams->crcParityBits; j++)
+      crcChecksum[i][0]=crcChecksum[i][0]+polarParams->crc_generator_matrix[j][i];
 
     crcChecksum[i][0]=(crcChecksum[i][0]%2);
   }
@@ -388,12 +401,12 @@ int8_t polar_decoder_dci(double *input,
   uint8_t listIndex[2*listSize], copyIndex;
 
   for (uint16_t currentBit=0; currentBit<polarParams->N; currentBit++) {
-    updateLLR(llr, llrUpdated, bit, bitUpdated, currentListSize, currentBit, 0, polarParams->N, (polarParams->n+1));
+    updateLLR(currentListSize, currentBit, 0, polarParams->N, polarParams->n+1, 2*listSize, llr, llrUpdated, bit, bitUpdated);
 
     if (polarParams->information_bit_pattern[currentBit]==0) { //Frozen bit.
-      updatePathMetric(pathMetric, llr, currentListSize, 0, currentBit);
+      updatePathMetric(pathMetric, currentListSize, 0, currentBit,polarParams->N, polarParams->n+1, 2*listSize, llr);
     } else { //Information or CRC bit.
-      updatePathMetric2(pathMetric, llr, currentListSize, currentBit);
+      updatePathMetric2(pathMetric, currentListSize, currentBit, polarParams->N, polarParams->n+1, 2*listSize, llr);
 
       for (int i = 0; i < currentListSize; i++) {
         for (int j = 0; j < polarParams->N; j++) {
@@ -412,7 +425,9 @@ int8_t polar_decoder_dci(double *input,
       for (int i = currentListSize; i < 2*currentListSize; i++) bit[currentBit][0][i]=1;
 
       bitUpdated[currentBit][0]=1;
-      updateCrcChecksum2(crcChecksum, extended_crc_generator_matrix, currentListSize, nonFrozenBit, polarParams->crcParityBits);
+      updateCrcChecksum2(polarParams->crcParityBits, 2*listSize, crcChecksum,
+			 polarParams->K, polarParams->crcParityBits, extended_crc_generator_matrix,
+			 currentListSize, nonFrozenBit, polarParams->crcParityBits);
       currentListSize*=2;
 
       //Keep only the best "listSize" number of entries.
@@ -513,18 +528,12 @@ int8_t polar_decoder_dci(double *input,
         }
       }
 
-      for (uint8_t i = 0; i < currentListSize; i++) decoderIterationCheck+=crcState[i];
+      for (uint8_t i = 0; i < currentListSize; i++)
+	decoderIterationCheck+=crcState[i];
 
       if (decoderIterationCheck==0) {
         //perror("[SCL polar decoder] All list entries have failed the CRC checks.");
-        free(d_tilde);
-        free(pathMetric);
-        free(crcState);
-        nr_free_uint8_3D_array(bit, polarParams->N, (polarParams->n+1));
-        nr_free_double_3D_array(llr, polarParams->N, (polarParams->n+1));
-        nr_free_uint8_2D_array(crcChecksum, polarParams->crcParityBits);
-        free(tempECGM);
-        return(-1);
+        polarReturn -1;
       }
 
       nonFrozenBit++;
@@ -553,19 +562,12 @@ int8_t polar_decoder_dci(double *input,
     }
   }
 
-  free(d_tilde);
-  free(pathMetric);
-  free(crcState);
-  nr_free_uint8_3D_array(bit, polarParams->N, (polarParams->n+1));
-  nr_free_double_3D_array(llr, polarParams->N, (polarParams->n+1));
-  nr_free_uint8_2D_array(crcChecksum, polarParams->crcParityBits);
-  nr_free_uint8_2D_array(extended_crc_generator_matrix, polarParams->K);
-  nr_free_uint8_2D_array(tempECGM, polarParams->K);
   /*
    * Return bits.
    */
   nr_byte2bit_uint8_32(polarParams->nr_polar_A, polarParams->payloadBits, out);
-  return(0);
+
+  polarReturn 0;
 }
 
 void init_polar_deinterleaver_table(t_nrPolar_params *polarParams) {
@@ -604,8 +606,11 @@ void init_polar_deinterleaver_table(t_nrPolar_params *polarParams) {
 uint32_t polar_decoder_int16(int16_t *input,
                              uint64_t *out,
                              uint8_t ones_flag,
-                             const t_nrPolar_params *polarParams)
+                             int8_t messageType,
+                             uint16_t messageLength,
+                             uint8_t aggregation_level )
 {
+  t_nrPolar_params *polarParams=nr_polar_params(messageType, messageLength, aggregation_level, true);
   int16_t d_tilde[polarParams->N];// = malloc(sizeof(double) * polarParams->N);
   nr_polar_rate_matching_int16(input, d_tilde, polarParams->rate_matching_pattern, polarParams->K, polarParams->N, polarParams->encoderLength);
 
@@ -702,5 +707,6 @@ uint32_t polar_decoder_int16(int16_t *input,
          rxcrc,polarParams->payloadBits);
 #endif
   out[0]=Ar;
-  return(crc^rxcrc);
+
+  polarReturn crc^rxcrc;
 }
diff --git a/openair1/PHY/CODING/nrPolar_tools/nr_polar_decoding_tools.c b/openair1/PHY/CODING/nrPolar_tools/nr_polar_decoding_tools.c
index 42d500ae8670f509e3ccecde96558d0e102d8fcd..b201db2ba62211209075bcccae40e0e166454659 100644
--- a/openair1/PHY/CODING/nrPolar_tools/nr_polar_decoding_tools.c
+++ b/openair1/PHY/CODING/nrPolar_tools/nr_polar_decoding_tools.c
@@ -36,63 +36,86 @@
 
 //#define DEBUG_NEW_IMPL 1
 
-void updateLLR(double ***llr,
-			   uint8_t **llrU,
-			   uint8_t ***bit,
-			   uint8_t **bitU,
-			   uint8_t listSize,
-			   uint16_t row,
-			   uint16_t col,
-			   uint16_t xlen,
-			   uint8_t ylen)
+
+static inline void updateBit(uint8_t listSize,
+			     uint16_t row,
+			     uint16_t col,
+			     uint16_t xlen,
+			     uint8_t ylen,
+			     int zlen,
+			     uint8_t bit[xlen][ylen][zlen],
+			     uint8_t bitU[xlen][ylen])
 {
-	uint16_t offset = (xlen/(pow(2,(ylen-col-1))));
+	uint16_t offset = ( xlen/(pow(2,(ylen-col))) );
+
 	for (uint8_t i=0; i<listSize; i++) {
 		if (( (row) % (2*offset) ) >= offset ) {
-			if(bitU[row-offset][col]==0) updateBit(bit, bitU, listSize, (row-offset), col, xlen, ylen);
-			if(llrU[row-offset][col+1]==0) updateLLR(llr, llrU, bit, bitU, listSize, (row-offset), (col+1), xlen, ylen);
-			if(llrU[row][col+1]==0) updateLLR(llr, llrU, bit, bitU, listSize, row, (col+1), xlen, ylen);
-			llr[row][col][i] = (pow((-1),bit[row-offset][col][i])*llr[row-offset][col+1][i]) + llr[row][col+1][i];
+		  if (bitU[row][col-1]==0) updateBit(listSize, row, (col-1), xlen, ylen, zlen, bit, bitU);
+			bit[row][col][i] = bit[row][col-1][i];
 		} else {
-			if(llrU[row][col+1]==0) updateLLR(llr, llrU, bit, bitU, listSize, row, (col+1), xlen, ylen);
-			if(llrU[row+offset][col+1]==0) updateLLR(llr, llrU, bit, bitU, listSize, (row+offset), (col+1), xlen, ylen);
-			computeLLR(llr, row, col, i, offset);
+		  if (bitU[row][col-1]==0) updateBit(listSize, row, (col-1), xlen, ylen, zlen, bit, bitU);
+		  if (bitU[row+offset][col-1]==0) updateBit(listSize, (row+offset), (col-1), xlen, ylen, zlen, bit, bitU);
+			bit[row][col][i] = ( (bit[row][col-1][i]+bit[row+offset][col-1][i]) % 2);
 		}
 	}
-	llrU[row][col]=1;
 
-	//	printf("LLR (a %f, b %f): llr[%d][%d] %f\n",32*a,32*b,col,row,32*llr[col][row]);
+	bitU[row][col]=1;
 }
 
-void updateBit(uint8_t ***bit,
-			   uint8_t **bitU,
-			   uint8_t listSize,
-			   uint16_t row,
-			   uint16_t col,
-			   uint16_t xlen,
-			   uint8_t ylen)
+static inline void computeLLR(uint16_t row,
+			      uint16_t col,
+			      uint8_t i,
+			      uint16_t offset,
+			      int xlen,
+			      int ylen,
+			      int zlen,
+			      double llr[xlen][ylen][zlen])
 {
-	uint16_t offset = ( xlen/(pow(2,(ylen-col))) );
+  double a = llr[row][col + 1][i];
+  double b = llr[row + offset][col + 1][i];
+  llr[row][col][i] = log((exp(a + b) + 1) / (exp(a) + exp(b))); //eq. (8a)
+}
+
 
+void updateLLR(uint8_t listSize,
+	       uint16_t row,
+	       uint16_t col,
+	        uint16_t xlen,
+	       uint8_t ylen,
+	       int zlen,
+	       double  llr[xlen][ylen][zlen],
+	       uint8_t llrU[xlen][ylen],
+	       uint8_t bit[xlen][ylen][zlen],
+	       uint8_t bitU[xlen][ylen]
+	       )
+{
+	uint16_t offset = (xlen/(pow(2,(ylen-col-1))));
 	for (uint8_t i=0; i<listSize; i++) {
 		if (( (row) % (2*offset) ) >= offset ) {
-			if (bitU[row][col-1]==0) updateBit(bit, bitU, listSize, row, (col-1), xlen, ylen);
-			bit[row][col][i] = bit[row][col-1][i];
+		  if(bitU[row-offset][col]==0) updateBit(listSize, (row-offset), col, xlen, ylen, zlen, bit, bitU);
+		  if(llrU[row-offset][col+1]==0) updateLLR(listSize, (row-offset), (col+1), xlen, ylen, zlen, llr, llrU, bit, bitU );
+		  if(llrU[row][col+1]==0) updateLLR(listSize, row, (col+1), xlen, ylen, zlen, llr, llrU, bit, bitU);
+			llr[row][col][i] = (pow((-1),bit[row-offset][col][i])*llr[row-offset][col+1][i]) + llr[row][col+1][i];
 		} else {
-			if (bitU[row][col-1]==0) updateBit(bit, bitU, listSize, row, (col-1), xlen, ylen);
-			if (bitU[row+offset][col-1]==0) updateBit(bit, bitU, listSize, (row+offset), (col-1), xlen, ylen);
-			bit[row][col][i] = ( (bit[row][col-1][i]+bit[row+offset][col-1][i]) % 2);
+		  if(llrU[row][col+1]==0) updateLLR(listSize, row, (col+1), xlen, ylen, zlen, llr, llrU, bit, bitU );
+		  if(llrU[row+offset][col+1]==0) updateLLR(listSize, (row+offset), (col+1), xlen, ylen, zlen, llr, llrU, bit, bitU );
+		  computeLLR(row, col, i, offset, xlen, ylen, zlen, llr);
 		}
 	}
+	llrU[row][col]=1;
 
-	bitU[row][col]=1;
+	//	printf("LLR (a %f, b %f): llr[%d][%d] %f\n",32*a,32*b,col,row,32*llr[col][row]);
 }
 
 void updatePathMetric(double *pathMetric,
-		              double ***llr,
-					  uint8_t listSize,
-					  uint8_t bitValue,
-					  uint16_t row)
+		      uint8_t listSize,
+		      uint8_t bitValue,
+		      uint16_t row,
+		      int xlen,
+		      int ylen,
+		      int zlen,
+		      double llr[xlen][ylen][zlen]
+		      )
 {
 	int8_t multiplier = (2*bitValue) - 1;
 	for (uint8_t i=0; i<listSize; i++)
@@ -101,11 +124,14 @@ void updatePathMetric(double *pathMetric,
 }
 
 void updatePathMetric2(double *pathMetric,
-					   double ***llr,
-					   uint8_t listSize,
-					   uint16_t row)
+		       uint8_t listSize,
+		       uint16_t row,
+		       int xlen,
+		       int ylen,
+		       int zlen,
+		       double llr[xlen][ylen][zlen])
 {
-	double *tempPM = malloc(sizeof(double) * listSize);
+	double tempPM[listSize];
 	memcpy(tempPM, pathMetric, (sizeof(double) * listSize));
 
 	uint8_t bitValue = 0;
@@ -118,48 +144,8 @@ void updatePathMetric2(double *pathMetric,
 	for (uint8_t i = listSize; i < 2*listSize; i++)
 		pathMetric[i] = tempPM[(i-listSize)] + log(1 + exp(multiplier * llr[row][0][(i-listSize)])); //eq. (11b)
 
-	free(tempPM);
 }
 
-void computeLLR(double ***llr,
-				uint16_t row,
-				uint16_t col,
-				uint8_t i,
-				uint16_t offset)
-{
-	double a = llr[row][col + 1][i];
-	double b = llr[row + offset][col + 1][i];
-	llr[row][col][i] = log((exp(a + b) + 1) / (exp(a) + exp(b))); //eq. (8a)
-}
-
-void updateCrcChecksum(uint8_t **crcChecksum,
-					   uint8_t **crcGen,
-					   uint8_t listSize,
-					   uint32_t i2,
-					   uint8_t len)
-{
-	for (uint8_t i = 0; i < listSize; i++) {
-		for (uint8_t j = 0; j < len; j++) {
-			crcChecksum[j][i] = ( (crcChecksum[j][i] + crcGen[i2][j]) % 2 );
-		}
-	}
-}
-
-void updateCrcChecksum2(uint8_t **crcChecksum,
-						uint8_t **crcGen,
-						uint8_t listSize,
-						uint32_t i2,
-						uint8_t len)
-{
-	for (uint8_t i = 0; i < listSize; i++) {
-		for (uint8_t j = 0; j < len; j++) {
-			crcChecksum[j][i+listSize] = ( (crcChecksum[j][i] + crcGen[i2][j]) % 2 );
-		}
-	}
-}
-
-
-
 decoder_node_t *new_decoder_node(int first_leaf_index, int level) {
 
   decoder_node_t *node=(decoder_node_t *)malloc(sizeof(decoder_node_t));
@@ -222,6 +208,23 @@ decoder_node_t *add_nodes(int level, int first_leaf_index, t_nrPolar_params *pol
   return(new_node);
 }
 
+void delete_nodes(decoder_node_t * n) {
+  if (n) {
+    if(n->left)
+      delete_nodes(n->left);
+    if(n->right)
+      delete_nodes(n->right);
+    free(n->alpha);
+    free(n->beta);
+    free(n);
+  }
+}
+
+void delete_decoder_tree(t_nrPolar_params *polarParams) {
+  if (polarParams->tree.root)
+    delete_nodes(polarParams->tree.root);
+}
+
 void build_decoder_tree(t_nrPolar_params *polarParams)
 {
   polarParams->tree.num_nodes=0;
diff --git a/openair1/PHY/CODING/nrPolar_tools/nr_polar_defs.h b/openair1/PHY/CODING/nrPolar_tools/nr_polar_defs.h
index c2e9fd938105fe2846f69f305fe0419632060fa0..79af311e4524901af67b5c16ab60f19a7d6fe1a3 100644
--- a/openair1/PHY/CODING/nrPolar_tools/nr_polar_defs.h
+++ b/openair1/PHY/CODING/nrPolar_tools/nr_polar_defs.h
@@ -79,9 +79,10 @@ typedef struct decoder_tree_t_s {
 
 struct nrPolar_params {
   //messageType: 0=PBCH, 1=DCI, -1=UCI
-  int idx; //idx = (messageType * messageLength * aggregation_prime);
-  struct nrPolar_params *nextPtr;
 
+  struct nrPolar_params *nextPtr __attribute__((aligned(16)));
+  bool busy;
+  uint32_t idx;
   uint8_t n_max;
   uint8_t i_il;
   uint8_t i_seg;
@@ -138,34 +139,46 @@ typedef struct nrPolar_params t_nrPolar_params;
 
 void polar_encoder(uint32_t *input,
                    uint32_t *output,
-                   const t_nrPolar_params *polarParams);
+                   int8_t messageType,
+                   uint16_t messageLength,
+                   uint8_t aggregation_level);
 
 void polar_encoder_dci(uint32_t *in,
                        uint32_t *out,
-                       const t_nrPolar_params *polarParams,
-                       uint16_t n_RNTI);
+                       uint16_t n_RNTI,
+                       int8_t messageType,
+                       uint16_t messageLength,
+                       uint8_t aggregation_level);
 
 void polar_encoder_fast(uint64_t *A,
                         void *out,
                         int32_t crcmask,
                         uint8_t ones_flag,
-                        const t_nrPolar_params *polarParams);
+                        int8_t messageType,
+                        uint16_t messageLength,
+                        uint8_t aggregation_level);
 
 int8_t polar_decoder(double *input,
                      uint32_t *output,
-                     const t_nrPolar_params *polarParams,
-                     uint8_t listSize);
+                     uint8_t listSize,
+                     int8_t messageType,
+                     uint16_t messageLength,
+                     uint8_t aggregation_level);
 
 uint32_t polar_decoder_int16(int16_t *input,
                              uint64_t *out,
                              uint8_t ones_flag,
-                             const t_nrPolar_params *polarParams);
+                             int8_t messageType,
+                             uint16_t messageLength,
+                             uint8_t aggregation_level);
 
 int8_t polar_decoder_dci(double *input,
                          uint32_t *out,
-                         const t_nrPolar_params *polarParams,
                          uint8_t listSize,
-                         uint16_t n_RNTI);
+                         uint16_t n_RNTI,
+                         int8_t messageType,
+                         uint16_t messageLength,
+                         uint8_t aggregation_level);
 
 void generic_polar_decoder(const t_nrPolar_params *pp,
                            decoder_node_t *node);
@@ -183,13 +196,12 @@ void build_decoder_tree(t_nrPolar_params *pp);
 void build_polar_tables(t_nrPolar_params *polarParams);
 void init_polar_deinterleaver_table(t_nrPolar_params *polarParams);
 
-void nr_polar_print_polarParams(t_nrPolar_params *polarParams);
+void nr_polar_print_polarParams(void);
 
 t_nrPolar_params *nr_polar_params (int8_t messageType,
                                    uint16_t messageLength,
                                    uint8_t aggregation_level,
-				   int decoder_flag,
-				   t_nrPolar_params **polarList_ext);
+				   int decoder_flag);
 
 uint16_t nr_polar_aggregation_prime (uint8_t aggregation_level);
 
@@ -278,34 +290,6 @@ void nr_matrix_multiplication_uint8_1D_uint8_2D(uint8_t *matrix1,
     uint16_t row,
     uint16_t col);
 
-uint8_t ***nr_alloc_uint8_3D_array(uint16_t xlen,
-                                   uint16_t ylen,
-                                   uint16_t zlen);
-
-uint8_t **nr_alloc_uint8_2D_array(uint16_t xlen,
-                                  uint16_t ylen);
-
-double ***nr_alloc_double_3D_array(uint16_t xlen,
-                                   uint16_t ylen,
-                                   uint16_t zlen);
-
-double **nr_alloc_double_2D_array(uint16_t xlen,
-                                  uint16_t ylen);
-
-void nr_free_double_3D_array(double ***input,
-                             uint16_t xlen,
-                             uint16_t ylen);
-
-void nr_free_double_2D_array(double **input,
-                             uint16_t xlen);
-
-void nr_free_uint8_3D_array(uint8_t ***input,
-                            uint16_t xlen,
-                            uint16_t ylen);
-
-void nr_free_uint8_2D_array(uint8_t **input,
-                            uint16_t xlen);
-
 void nr_sort_asc_double_1D_array_ind(double *matrix,
                                      uint8_t *ind,
                                      uint8_t len);
@@ -316,52 +300,33 @@ void nr_sort_asc_int16_1D_array_ind(int32_t *matrix,
 
 void nr_free_double_2D_array(double **input, uint16_t xlen);
 
-void updateLLR(double ***llr,
-               uint8_t **llrU,
-               uint8_t ***bit,
-               uint8_t **bitU,
-               uint8_t listSize,
-               uint16_t row,
-               uint16_t col,
-               uint16_t xlen,
-               uint8_t ylen);
-
-void updateBit(uint8_t ***bit,
-               uint8_t **bitU,
-               uint8_t listSize,
-               uint16_t row,
-               uint16_t col,
-               uint16_t xlen,
-               uint8_t ylen);
-
+void updateLLR(uint8_t listSize,
+	       uint16_t row,
+	       uint16_t col,
+	        uint16_t xlen,
+	       uint8_t ylen,
+	       int zlen,
+	       double  llr[xlen][ylen][zlen],
+	       uint8_t llrU[xlen][ylen],
+	       uint8_t bit[xlen][ylen][zlen],
+	       uint8_t bitU[xlen][ylen]
+	       );
 void updatePathMetric(double *pathMetric,
-                      double ***llr,
-                      uint8_t listSize,
-                      uint8_t bitValue,
-                      uint16_t row);
-
+		      uint8_t listSize,
+		      uint8_t bitValue,
+		      uint16_t row,
+		      int xlen,
+		      int ylen,
+		      int zlen,
+		      double llr[xlen][ylen][zlen]
+		      );
 void updatePathMetric2(double *pathMetric,
-                       double ***llr,
-                       uint8_t listSize,
-                       uint16_t row);
-
-void computeLLR(double ***llr,
-                uint16_t row,
-                uint16_t col,
-                uint8_t i,
-                uint16_t offset);
-
-void updateCrcChecksum(uint8_t **crcChecksum,
-                       uint8_t **crcGen,
-                       uint8_t listSize,
-                       uint32_t i2,
-                       uint8_t len);
-
-void updateCrcChecksum2(uint8_t **crcChecksum,
-                        uint8_t **crcGen,
-                        uint8_t listSize,
-                        uint32_t i2,
-                        uint8_t len);
+		       uint8_t listSize,
+		       uint16_t row,
+		       int xlen,
+		       int ylen,
+		       int zlen,
+		       double llr[xlen][ylen][zlen]);
 
 //Also nr_polar_rate_matcher
 static inline void nr_polar_interleaver(uint8_t *input,
@@ -379,5 +344,13 @@ static inline void nr_polar_deinterleaver(uint8_t *input,
 {
 	for (int i=0; i<size; i++) output[pattern[i]]=input[i];
 }
+void delete_decoder_tree(t_nrPolar_params *);
+
+extern pthread_mutex_t PolarListMutex;
+#define polarReturn                          \
+pthread_mutex_lock(&PolarListMutex);            \
+polarParams->busy=false;                         \
+pthread_mutex_unlock(&PolarListMutex);          \
+return
 
 #endif
diff --git a/openair1/PHY/CODING/nrPolar_tools/nr_polar_encoder.c b/openair1/PHY/CODING/nrPolar_tools/nr_polar_encoder.c
index 1dfaed8b941c7810ce9f05f9501fad1ce001b9c0..4cba3fe078353bcb1c61f5e766b3e5dffc74e3dc 100644
--- a/openair1/PHY/CODING/nrPolar_tools/nr_polar_encoder.c
+++ b/openair1/PHY/CODING/nrPolar_tools/nr_polar_encoder.c
@@ -43,7 +43,10 @@
 
 void polar_encoder(uint32_t *in,
                    uint32_t *out,
-                   const t_nrPolar_params *polarParams) {
+                   int8_t messageType,
+                   uint16_t messageLength,
+                   uint8_t aggregation_level) {
+  t_nrPolar_params *polarParams=nr_polar_params(messageType, messageLength, aggregation_level, false);
   if (1) {//polarParams->idx == 0 || polarParams->idx == 1) { //PBCH or PDCCH
     /*
     uint64_t B = (((uint64_t)*in)&((((uint64_t)1)<<32)-1)) | (((uint64_t)crc24c((uint8_t*)in,polarParams->payloadBits)>>8)<<polarParams->payloadBits);
@@ -57,10 +60,10 @@ void polar_encoder(uint32_t *in,
      */
     //Calculate CRC.
     nr_matrix_multiplication_uint8_1D_uint8_2D(polarParams->nr_polar_A,
-    										   polarParams->crc_generator_matrix,
-											   polarParams->nr_polar_crc,
-											   polarParams->payloadBits,
-											   polarParams->crcParityBits);
+                                               polarParams->crc_generator_matrix,
+                                               polarParams->nr_polar_crc,
+                                               polarParams->payloadBits,
+                                               polarParams->crcParityBits);
 
     for (uint8_t i = 0; i < polarParams->crcParityBits; i++)
       polarParams->nr_polar_crc[i] = (polarParams->nr_polar_crc[i] % 2);
@@ -150,12 +153,19 @@ void polar_encoder(uint32_t *in,
 
 #endif
   nr_byte2bit_uint8_32(polarParams->nr_polar_E, polarParams->encoderLength, out);
+
+  polarReturn;
+
 }
 
 void polar_encoder_dci(uint32_t *in,
                        uint32_t *out,
-                       const t_nrPolar_params *polarParams,
-                       uint16_t n_RNTI) {
+                       uint16_t n_RNTI,
+                       int8_t messageType,
+                       uint16_t messageLength,
+                       uint8_t aggregation_level) {
+  t_nrPolar_params *polarParams=nr_polar_params(messageType, messageLength, aggregation_level, false);
+
 #ifdef DEBUG_POLAR_ENCODER_DCI
   printf("[polar_encoder_dci] in: [0]->0x%08x \t [1]->0x%08x \t [2]->0x%08x \t [3]->0x%08x\n", in[0], in[1], in[2], in[3]);
 #endif
@@ -249,6 +259,7 @@ void polar_encoder_dci(uint32_t *in,
   printf("\n[polar_encoder_dci] out: ");
   for (int i = 0; i < outputInd; i++) printf("[%d]->0x%08x\t", i, out[i]);
 #endif
+  polarReturn;
 }
 
 static inline void polar_rate_matching(const t_nrPolar_params *polarParams,void *in,void *out) __attribute__((always_inline));
@@ -334,7 +345,7 @@ void build_polar_tables(t_nrPolar_params *polarParams) {
   AssertFatal(polarParams->N==512 || polarParams->N==256 || polarParams->N==128,"N = %d, not done yet\n",polarParams->N);
   // build G bit vectors for information bit positions and convert the bit as bytes tables in nr_polar_kronecker_power_matrices.c to 64 bit packed vectors.
   // keep only rows of G which correspond to information/crc bits
-  polarParams->G_N_tab = (uint64_t **)malloc((polarParams->K + polarParams->n_pc) * sizeof(int64_t *));
+  polarParams->G_N_tab = (uint64_t **)calloc((polarParams->K + polarParams->n_pc),sizeof(int64_t *));
   int k=0;
 
   for (int i=0; i<polarParams->N; i++) {
@@ -418,11 +429,14 @@ void polar_encoder_fast(uint64_t *A,
                         void *out,
                         int32_t crcmask,
                         uint8_t ones_flag,
-                        const t_nrPolar_params *polarParams) {
+                        int8_t messageType,
+                        uint16_t messageLength,
+                        uint8_t aggregation_level) {
+                        
+  t_nrPolar_params *polarParams=nr_polar_params(messageType, messageLength, aggregation_level, false);
   //  AssertFatal(polarParams->K > 32, "K = %d < 33, is not supported yet\n",polarParams->K);
   AssertFatal(polarParams->K < 129, "K = %d > 128, is not supported yet\n",polarParams->K);
   AssertFatal(polarParams->payloadBits < 65, "payload bits = %d > 64, is not supported yet\n",polarParams->payloadBits);
-  uint64_t B[4]= {0,0,0,0},Cprime[4]= {0,0,0,0};
   int bitlen = polarParams->payloadBits;
   // append crc
   AssertFatal(bitlen<129,"support for payloads <= 128 bits\n");
@@ -451,9 +465,12 @@ void polar_encoder_fast(uint64_t *A,
     A32_flip[1+offset]=((uint8_t *)&Aprime)[2];
     A32_flip[2+offset]=((uint8_t *)&Aprime)[1];
     A32_flip[3+offset]=((uint8_t *)&Aprime)[0];
-    if      (polarParams->crcParityBits == 24) tcrc = (uint64_t)(((crcmask^(crc24c(A32_flip,8*offset+bitlen)>>8)))&0xffffff);
-    else if (polarParams->crcParityBits == 11) tcrc = (uint64_t)(((crcmask^(crc11(A32_flip,bitlen)>>21)))&0x7ff);
-    else if (polarParams->crcParityBits == 6) tcrc = (uint64_t)(((crcmask^(crc6(A32_flip,bitlen)>>26)))&0x3f);
+    if      (polarParams->crcParityBits == 24)
+      tcrc = (uint64_t)(((crcmask^(crc24c(A32_flip,8*offset+bitlen)>>8)))&0xffffff);
+    else if (polarParams->crcParityBits == 11)
+      tcrc = (uint64_t)(((crcmask^(crc11(A32_flip,bitlen)>>21)))&0x7ff);
+    else if (polarParams->crcParityBits == 6)
+      tcrc = (uint64_t)(((crcmask^(crc6(A32_flip,bitlen)>>26)))&0x3f);
   } else if (bitlen<=64) {
     uint8_t A64_flip[8+offset];
     if (ones_flag) {
@@ -470,8 +487,10 @@ void polar_encoder_fast(uint64_t *A,
     A64_flip[5+offset]=((uint8_t *)&Aprime)[2];
     A64_flip[6+offset]=((uint8_t *)&Aprime)[1];
     A64_flip[7+offset]=((uint8_t *)&Aprime)[0];
-    if (polarParams->crcParityBits == 24)      tcrc = (uint64_t)((crcmask^(crc24c(A64_flip,8*offset+bitlen)>>8)))&0xffffff;
-    else if (polarParams->crcParityBits == 11) tcrc = (uint64_t)((crcmask^(crc11(A64_flip,bitlen)>>21)))&0x7ff;
+    if (polarParams->crcParityBits == 24)
+      tcrc = (uint64_t)((crcmask^(crc24c(A64_flip,8*offset+bitlen)>>8)))&0xffffff;
+    else if (polarParams->crcParityBits == 11)
+      tcrc = (uint64_t)((crcmask^(crc11(A64_flip,bitlen)>>21)))&0x7ff;
   }
   else if (bitlen<=128) {
     uint8_t A128_flip[16+offset];
@@ -481,38 +500,37 @@ void polar_encoder_fast(uint64_t *A,
       A128_flip[2] = 0xff;
     }
     uint128_t Aprime= (uint128_t)(((uint128_t)*A)<<(128-bitlen));
-    A128_flip[0+offset]=((uint8_t*)&Aprime)[15];	  A128_flip[1+offset]=((uint8_t*)&Aprime)[14];
-    A128_flip[2+offset]=((uint8_t*)&Aprime)[13];	  A128_flip[3+offset]=((uint8_t*)&Aprime)[12];
-    A128_flip[4+offset]=((uint8_t*)&Aprime)[11];	  A128_flip[5+offset]=((uint8_t*)&Aprime)[10];
-    A128_flip[6+offset] =((uint8_t*)&Aprime)[9];	  A128_flip[7+offset] =((uint8_t*)&Aprime)[8];
-    A128_flip[8+offset] =((uint8_t*)&Aprime)[7];	  A128_flip[9+offset] =((uint8_t*)&Aprime)[6];
-    A128_flip[10+offset]=((uint8_t*)&Aprime)[5];	  A128_flip[11+offset]=((uint8_t*)&Aprime)[4];
-    A128_flip[12+offset]=((uint8_t*)&Aprime)[3];	  A128_flip[13+offset]=((uint8_t*)&Aprime)[2];
-    A128_flip[14+offset]=((uint8_t*)&Aprime)[1];	  A128_flip[15+offset]=((uint8_t*)&Aprime)[0];
-    if (polarParams->crcParityBits == 24) tcrc = (uint64_t)((crcmask^(crc24c(A128_flip,8*offset+bitlen)>>8)))&0xffffff;
-    else if (polarParams->crcParityBits == 11) tcrc = (uint64_t)((crcmask^(crc11(A128_flip,bitlen)>>21)))&0x7ff;
+    for (int i=0; i<16 ; i++)
+      A128_flip[i+offset]=((uint8_t*)&Aprime)[15-i];
+    if (polarParams->crcParityBits == 24)
+      tcrc = (uint64_t)((crcmask^(crc24c(A128_flip,8*offset+bitlen)>>8)))&0xffffff;
+    else if (polarParams->crcParityBits == 11)
+      tcrc = (uint64_t)((crcmask^(crc11(A128_flip,bitlen)>>21)))&0x7ff;
   }
 
   int n;
   // this is number of quadwords in the bit string
-  int quadwlen = (polarParams->K>>6);
-
-  if ((polarParams->K&63) > 0) quadwlen++;
+  int quadwlen = (polarParams->K+63)/64;
 
   // Create the B bit string as
   // 0, 0, ..., 0, a'_0, a'_1, ..., a'_A-1, p_0, p_1, ..., p_{N_parity-1}
 
   //??? b_{N'-1} b_{N'-2} ... b_{N'-A} b_{N'-A-1} ... b_{N'-A-Nparity} = a_{N-1} a_{N-2} ... a_{N-A} p_{N_parity-1} ... p_0
-
-  for (n=0; n<quadwlen; n++) if (n==0) B[n] = (A[n] << polarParams->crcParityBits) | tcrc;
-                             else      B[n] = (A[n] << polarParams->crcParityBits) | (A[n-1]>>(64-polarParams->crcParityBits));
+  uint64_t B[4]= {0};
+  B[0] = (A[0] << polarParams->crcParityBits) | tcrc;
+  for (n=1; n<quadwlen; n++)
+    if ((bitlen+63)/64 > n)
+      B[n] = (A[n] << polarParams->crcParityBits) | (A[n-1]>>(64-polarParams->crcParityBits));
+    else
+      B[n] = (A[n-1]>>(64-polarParams->crcParityBits));
 
   uint8_t *Bbyte = (uint8_t *)B;
 
   // for each byte of B, lookup in corresponding table for 64-bit word corresponding to that byte and its position
+  uint64_t Cprime[4]= {0};
   if (polarParams->K<65)
     Cprime[0] = polarParams->cprime_tab0[0][Bbyte[0]] |
-                polarParams->cprime_tab0[1][Bbyte[1]] |
+      polarParams->cprime_tab0[1][Bbyte[1]] |
                 polarParams->cprime_tab0[2][Bbyte[2]] |
                 polarParams->cprime_tab0[3][Bbyte[3]] |
                 polarParams->cprime_tab0[4][Bbyte[4]] |
@@ -684,4 +702,7 @@ void polar_encoder_fast(uint64_t *A,
   }
   memset((void*)out,0,polarParams->encoderLength>>3);
   polar_rate_matching(polarParams,(void *)D, out);
+
+  polarReturn;
+
 }
diff --git a/openair1/PHY/CODING/nrPolar_tools/nr_polar_matrix_and_array.c b/openair1/PHY/CODING/nrPolar_tools/nr_polar_matrix_and_array.c
index c4c68e4e0e4a0a9827cc1c2c49df2bb7f2682de9..ffeacb6be1bd8629bd204a887dcb5ed274a037b3 100644
--- a/openair1/PHY/CODING/nrPolar_tools/nr_polar_matrix_and_array.c
+++ b/openair1/PHY/CODING/nrPolar_tools/nr_polar_matrix_and_array.c
@@ -43,163 +43,6 @@ void nr_matrix_multiplication_uint8_1D_uint8_2D(uint8_t *matrix1, uint8_t **matr
 	}
 }
 
-uint8_t ***nr_alloc_uint8_3D_array(uint16_t xlen, uint16_t ylen, uint16_t zlen) {
-	uint8_t ***output;
-	int i, j;
-
-	if ((output = malloc(xlen * sizeof(*output))) == NULL) {
-		perror("[nr_alloc_uint8_3D_array] Problem at 1D allocation");
-		return NULL;
-	}
-	for (i = 0; i < xlen; i++)
-		output[i] = NULL;
-
-
-	for (i = 0; i < xlen; i++)
-		if ((output[i] = malloc(ylen * sizeof *output[i])) == NULL) {
-			perror("[nr_alloc_uint8_3D_array] Problem at 2D allocation");
-			nr_free_uint8_3D_array(output, xlen, ylen);
-			return NULL;
-		}
-	for (i = 0; i < xlen; i++)
-		for (j = 0; j < ylen; j++)
-			output[i][j] = NULL;
-
-
-	for (i = 0; i < xlen; i++)
-		for (j = 0; j < ylen; j++)
-			if ((output[i][j] = malloc(zlen * sizeof *output[i][j])) == NULL) {
-				perror("[nr_alloc_uint8_3D_array] Problem at 3D allocation");
-				nr_free_uint8_3D_array(output, xlen, ylen);
-				return NULL;
-			}
-
-	return output;
-}
-
-uint8_t **nr_alloc_uint8_2D_array(uint16_t xlen, uint16_t ylen) {
-	uint8_t **output;
-	int i, j;
-
-	if ((output = malloc(xlen * sizeof(*output))) == NULL) {
-		perror("[nr_alloc_uint8_2D_array] Problem at 1D allocation");
-		return NULL;
-	}
-	for (i = 0; i < xlen; i++)
-		output[i] = NULL;
-
-
-	for (i = 0; i < xlen; i++)
-		if ((output[i] = malloc(ylen * sizeof *output[i])) == NULL) {
-			perror("[nr_alloc_uint8_2D_array] Problem at 2D allocation");
-			nr_free_uint8_2D_array(output, xlen);
-			return NULL;
-		}
-	for (i = 0; i < xlen; i++)
-		for (j = 0; j < ylen; j++)
-			output[i][j] = 0;
-
-	return output;
-}
-
-double ***nr_alloc_double_3D_array(uint16_t xlen, uint16_t ylen, uint16_t zlen) {
-	double ***output;
-	int i, j;
-
-	if ((output = malloc(xlen * sizeof(*output))) == NULL) {
-		perror("[nr_alloc_double_3D_array] Problem at 1D allocation");
-		return NULL;
-	}
-	for (i = 0; i < xlen; i++)
-		output[i] = NULL;
-
-
-	for (i = 0; i < xlen; i++)
-		if ((output[i] = malloc(ylen * sizeof *output[i])) == NULL) {
-			perror("[nr_alloc_double_3D_array] Problem at 2D allocation");
-			nr_free_double_3D_array(output, xlen, ylen);
-			return NULL;
-		}
-	for (i = 0; i < xlen; i++)
-		for (j = 0; j < ylen; j++)
-			output[i][j] = NULL;
-
-
-	for (i = 0; i < xlen; i++)
-		for (j = 0; j < ylen; j++)
-			if ((output[i][j] = malloc(zlen * sizeof *output[i][j])) == NULL) {
-				perror("[nr_alloc_double_3D_array] Problem at 3D allocation");
-				nr_free_double_3D_array(output, xlen, ylen);
-				return NULL;
-			}
-
-	return output;
-}
-
-double **nr_alloc_double_2D_array(uint16_t xlen, uint16_t ylen) {
-  double **output;
-  int i, j;
-  
-  if ((output = malloc(xlen * sizeof(*output))) == NULL) {
-    perror("[nr_alloc_double_3D_array] Problem at 1D allocation");
-    return NULL;
-  }
-  for (i = 0; i < xlen; i++)
-    output[i] = NULL;
-  
-  
-  for (i = 0; i < xlen; i++)
-    if ((output[i] = malloc(ylen * sizeof *output[i])) == NULL) {
-      perror("[nr_alloc_double_2D_array] Problem at 2D allocation");
-      nr_free_double_2D_array(output, xlen);
-      return NULL;
-    }
-  for (i = 0; i < xlen; i++)
-    for (j = 0; j < ylen; j++)
-      output[i][j] = 0;
-  
-
-  return output;
-}
-
-void nr_free_double_3D_array(double ***input, uint16_t xlen, uint16_t ylen) {
-	int i, j;
-
-	for (i = 0; i < xlen; i++) {
-		for (j = 0; j < ylen; j++) {
-			free(input[i][j]);
-		}
-		free(input[i]);
-	}
-	free(input);
-}
-
-void nr_free_double_2D_array(double **input, uint16_t xlen) {
-  int i;
-
-  for (i = 0; i < xlen; i++) {
-    free(input[i]);
-  }
-  free(input);
-}
-
-void nr_free_uint8_3D_array(uint8_t ***input, uint16_t xlen, uint16_t ylen) {
-	int i, j;
-
-	for (i = 0; i < xlen; i++) {
-		for (j = 0; j < ylen; j++) {
-			free(input[i][j]);
-		}
-		free(input[i]);
-	}
-	free(input);
-}
-
-void nr_free_uint8_2D_array(uint8_t **input, uint16_t xlen) {
-  for (int i = 0; i < xlen; i++) free(input[i]);
-  free(input);
-}
-
 // Modified Bubble Sort.
 void nr_sort_asc_double_1D_array_ind(double *matrix, uint8_t *ind, uint8_t len) {
 	int swaps;
diff --git a/openair1/PHY/CODING/nr_polar_init.c b/openair1/PHY/CODING/nr_polar_init.c
index f6a700117dd4a4ac9b2b98d2f78ebd1a319dbba1..38a1ae86ae9317d1f6cf0d04f10c7d8b6d9959b7 100644
--- a/openair1/PHY/CODING/nr_polar_init.c
+++ b/openair1/PHY/CODING/nr_polar_init.c
@@ -33,178 +33,236 @@
 #include "PHY/CODING/nrPolar_tools/nr_polar_defs.h"
 #include "PHY/NR_TRANSPORT/nr_dci.h"
 
+#define PolarKey ((messageType<<24)|(messageLength<<8)|aggregation_level)
+static t_nrPolar_params * PolarList=NULL;
+pthread_mutex_t PolarListMutex=PTHREAD_MUTEX_INITIALIZER;
+
 static int intcmp(const void *p1,const void *p2) {
   return(*(int16_t *)p1 > *(int16_t *)p2);
 }
 
-static void nr_polar_init(t_nrPolar_params * *polarParams,
-                          int8_t messageType,
+static void nr_polar_delete_list(t_nrPolar_params * polarParams) {
+  if (!polarParams)
+    return;
+  if (polarParams->nextPtr)
+    nr_polar_delete_list(polarParams->nextPtr);
+  
+  delete_decoder_tree(polarParams);
+  //From build_polar_tables()
+  for (int k=0; k < polarParams->K + polarParams->n_pc; k++)
+    if (polarParams->G_N_tab[k]) 
+      free(polarParams->G_N_tab[k]);
+  free(polarParams->G_N_tab);
+  free(polarParams->rm_tab);
+  if (polarParams->crc_generator_matrix)
+    free(polarParams->crc_generator_matrix);
+  //polar_encoder vectors:
+  free(polarParams->nr_polar_crc);
+  free(polarParams->nr_polar_aPrime);
+  free(polarParams->nr_polar_APrime);
+  free(polarParams->nr_polar_D);
+  free(polarParams->nr_polar_E);
+    //Polar Coding vectors
+  free(polarParams->nr_polar_U);
+  free(polarParams->nr_polar_CPrime);
+  free(polarParams->nr_polar_B);
+  free(polarParams->nr_polar_A);
+  free(polarParams->interleaving_pattern);
+  free(polarParams->deinterleaving_pattern);
+  free(polarParams->rate_matching_pattern);
+  free(polarParams->information_bit_pattern);
+  free(polarParams->Q_I_N);
+  free(polarParams->Q_F_N);
+  free(polarParams->Q_PC_N);
+  free(polarParams->channel_interleaver_pattern);
+  free(polarParams);
+}
+
+static void nr_polar_delete(void) {
+  pthread_mutex_lock(&PolarListMutex);
+  nr_polar_delete_list(PolarList);
+  PolarList=NULL;
+  pthread_mutex_unlock(&PolarListMutex);  
+}
+
+t_nrPolar_params * nr_polar_params(int8_t messageType,
                           uint16_t messageLength,
                           uint8_t aggregation_level,
 			  int decoder_flag) {
-  t_nrPolar_params *currentPtr = *polarParams;
-  uint16_t aggregation_prime = (messageType >= 2) ? aggregation_level : nr_polar_aggregation_prime(aggregation_level);
-
+  // The lock is weak, because we never delete in the list, only at exit time
+  // therefore, returning t_nrPolar_params * from the list is safe for future usage
+  pthread_mutex_lock(&PolarListMutex);
+  if(!PolarList)
+    atexit(nr_polar_delete);
+  
+  t_nrPolar_params *currentPtr = PolarList;
   //Parse the list. If the node is already created, return without initialization.
   while (currentPtr != NULL) {
     //printf("currentPtr->idx %d, (%d,%d)\n",currentPtr->idx,currentPtr->payloadBits,currentPtr->encoderLength);
     //LOG_D(PHY,"Looking for index %d\n",(messageType * messageLength * aggregation_prime));
-    if (currentPtr->idx == (messageType * messageLength * aggregation_prime)) return;
-    else currentPtr = currentPtr->nextPtr;
+    if (currentPtr->busy == false && currentPtr->idx == PolarKey ) {
+      currentPtr->busy=true;
+      pthread_mutex_unlock(&PolarListMutex);
+      if (decoder_flag && !currentPtr->tree.root)
+        build_decoder_tree(currentPtr);
+      return currentPtr ;
+    }
+    else
+      currentPtr = currentPtr->nextPtr;
   }
 
   //  printf("currentPtr %p (polarParams %p)\n",currentPtr,polarParams);
   //Else, initialize and add node to the end of the linked list.
   t_nrPolar_params *newPolarInitNode = calloc(sizeof(t_nrPolar_params),1);
- 
-  if (newPolarInitNode != NULL) {
-    //   LOG_D(PHY,"Setting new polarParams index %d, messageType %d, messageLength %d, aggregation_prime %d\n",(messageType * messageLength * aggregation_prime),messageType,messageLength,aggregation_prime);
-    newPolarInitNode->idx = (messageType * messageLength * aggregation_prime);
-    newPolarInitNode->nextPtr = NULL;
-    //printf("newPolarInitNode->idx %d, (%d,%d,%d:%d)\n",newPolarInitNode->idx,messageType,messageLength,aggregation_prime,aggregation_level);
-
-    if (messageType == 0) { //PBCH
-      newPolarInitNode->n_max = NR_POLAR_PBCH_N_MAX;
-      newPolarInitNode->i_il = NR_POLAR_PBCH_I_IL;
-      newPolarInitNode->i_seg = NR_POLAR_PBCH_I_SEG;
-      newPolarInitNode->n_pc = NR_POLAR_PBCH_N_PC;
-      newPolarInitNode->n_pc_wm = NR_POLAR_PBCH_N_PC_WM;
-      newPolarInitNode->i_bil = NR_POLAR_PBCH_I_BIL;
-      newPolarInitNode->crcParityBits = NR_POLAR_PBCH_CRC_PARITY_BITS;
-      newPolarInitNode->payloadBits = NR_POLAR_PBCH_PAYLOAD_BITS;
-      newPolarInitNode->encoderLength = NR_POLAR_PBCH_E;
-      newPolarInitNode->crcCorrectionBits = NR_POLAR_PBCH_CRC_ERROR_CORRECTION_BITS;
-      newPolarInitNode->crc_generator_matrix = crc24c_generator_matrix(newPolarInitNode->payloadBits);//G_P
-      //printf("Initializing polar parameters for PBCH (K %d, E %d)\n",newPolarInitNode->payloadBits,newPolarInitNode->encoderLength);
-    } else if (messageType == 1) { //DCI
-      newPolarInitNode->n_max = NR_POLAR_DCI_N_MAX;
-      newPolarInitNode->i_il = NR_POLAR_DCI_I_IL;
-      newPolarInitNode->i_seg = NR_POLAR_DCI_I_SEG;
-      newPolarInitNode->n_pc = NR_POLAR_DCI_N_PC;
-      newPolarInitNode->n_pc_wm = NR_POLAR_DCI_N_PC_WM;
-      newPolarInitNode->i_bil = NR_POLAR_DCI_I_BIL;
-      newPolarInitNode->crcParityBits = NR_POLAR_DCI_CRC_PARITY_BITS;
-      newPolarInitNode->payloadBits = messageLength;
-      newPolarInitNode->encoderLength = aggregation_level*108;
-      newPolarInitNode->crcCorrectionBits = NR_POLAR_DCI_CRC_ERROR_CORRECTION_BITS;
-      newPolarInitNode->crc_generator_matrix=crc24c_generator_matrix(newPolarInitNode->payloadBits+newPolarInitNode->crcParityBits);//G_P
-      //printf("Initializing polar parameters for DCI (K %d, E %d, L %d)\n",newPolarInitNode->payloadBits,newPolarInitNode->encoderLength,aggregation_level);
-    } else if (messageType == 2) { //UCI PUCCH2
-      AssertFatal(aggregation_level>2,"Aggregation level (%d) for PUCCH 2 encoding is NPRB and should be > 2\n",aggregation_level);
-      AssertFatal(messageLength>11,"Message length %d is too short for polar encoding of UCI\n",messageLength);
-      newPolarInitNode->n_max = NR_POLAR_PUCCH_N_MAX;
-      newPolarInitNode->i_il = NR_POLAR_PUCCH_I_IL;
-      newPolarInitNode->encoderLength = aggregation_level * 16;
-
-      newPolarInitNode->i_seg = 0;
-      
-      if ((messageLength >= 360 && newPolarInitNode->encoderLength >= 1088)||
-	  (messageLength >= 1013)) newPolarInitNode->i_seg = 1;
+  newPolarInitNode->busy=true;
+  pthread_mutex_unlock(&PolarListMutex);
 
-      newPolarInitNode->crcParityBits = 11;
-      newPolarInitNode->n_pc = 0;
-      newPolarInitNode->n_pc_wm = 0;
+  AssertFatal(newPolarInitNode != NULL, "[nr_polar_init] New t_nrPolar_params * could not be created");
+  
+  //   LOG_D(PHY,"Setting new polarParams index %d, messageType %d, messageLength %d, aggregation_prime %d\n",(messageType * messageLength * aggregation_prime),messageType,messageLength,aggregation_prime);
+  newPolarInitNode->idx = PolarKey;
+  newPolarInitNode->nextPtr = NULL;
+  //printf("newPolarInitNode->idx %d, (%d,%d,%d:%d)\n",newPolarInitNode->idx,messageType,messageLength,aggregation_prime,aggregation_level);
+  
+  if (messageType == 0) { //PBCH
+    newPolarInitNode->n_max = NR_POLAR_PBCH_N_MAX;
+    newPolarInitNode->i_il = NR_POLAR_PBCH_I_IL;
+    newPolarInitNode->i_seg = NR_POLAR_PBCH_I_SEG;
+    newPolarInitNode->n_pc = NR_POLAR_PBCH_N_PC;
+    newPolarInitNode->n_pc_wm = NR_POLAR_PBCH_N_PC_WM;
+    newPolarInitNode->i_bil = NR_POLAR_PBCH_I_BIL;
+    newPolarInitNode->crcParityBits = NR_POLAR_PBCH_CRC_PARITY_BITS;
+    newPolarInitNode->payloadBits = NR_POLAR_PBCH_PAYLOAD_BITS;
+    newPolarInitNode->encoderLength = NR_POLAR_PBCH_E;
+    newPolarInitNode->crcCorrectionBits = NR_POLAR_PBCH_CRC_ERROR_CORRECTION_BITS;
+    newPolarInitNode->crc_generator_matrix = crc24c_generator_matrix(newPolarInitNode->payloadBits);//G_P
+    //printf("Initializing polar parameters for PBCH (K %d, E %d)\n",newPolarInitNode->payloadBits,newPolarInitNode->encoderLength);
+  } else if (messageType == 1) { //DCI
+    newPolarInitNode->n_max = NR_POLAR_DCI_N_MAX;
+    newPolarInitNode->i_il = NR_POLAR_DCI_I_IL;
+    newPolarInitNode->i_seg = NR_POLAR_DCI_I_SEG;
+    newPolarInitNode->n_pc = NR_POLAR_DCI_N_PC;
+    newPolarInitNode->n_pc_wm = NR_POLAR_DCI_N_PC_WM;
+    newPolarInitNode->i_bil = NR_POLAR_DCI_I_BIL;
+    newPolarInitNode->crcParityBits = NR_POLAR_DCI_CRC_PARITY_BITS;
+    newPolarInitNode->payloadBits = messageLength;
+    newPolarInitNode->encoderLength = aggregation_level*108;
+    newPolarInitNode->crcCorrectionBits = NR_POLAR_DCI_CRC_ERROR_CORRECTION_BITS;
+    newPolarInitNode->crc_generator_matrix=crc24c_generator_matrix(newPolarInitNode->payloadBits+newPolarInitNode->crcParityBits);//G_P
+    //printf("Initializing polar parameters for DCI (K %d, E %d, L %d)\n",newPolarInitNode->payloadBits,newPolarInitNode->encoderLength,aggregation_level);
+  } else if (messageType == 2) { //UCI PUCCH2
+    AssertFatal(aggregation_level>2,"Aggregation level (%d) for PUCCH 2 encoding is NPRB and should be > 2\n",aggregation_level);
+    AssertFatal(messageLength>11,"Message length %d is too short for polar encoding of UCI\n",messageLength);
+    newPolarInitNode->n_max = NR_POLAR_PUCCH_N_MAX;
+    newPolarInitNode->i_il = NR_POLAR_PUCCH_I_IL;
+    newPolarInitNode->encoderLength = aggregation_level * 16;
 
-      if (messageLength < 20) {
-	newPolarInitNode->crcParityBits = 6;
-	newPolarInitNode->n_pc = 3;
-	if ((newPolarInitNode->encoderLength - messageLength - 6 + 3) < 193) newPolarInitNode->n_pc_wm = 1; 
-      }
+    newPolarInitNode->i_seg = 0;
+      
+    if ((messageLength >= 360 && newPolarInitNode->encoderLength >= 1088)||
+        (messageLength >= 1013)) newPolarInitNode->i_seg = 1;
 
+    newPolarInitNode->crcParityBits = 11;
+    newPolarInitNode->n_pc = 0;
+    newPolarInitNode->n_pc_wm = 0;
 
+    if (messageLength < 20) {
+      newPolarInitNode->crcParityBits = 6;
+      newPolarInitNode->n_pc = 3;
+      if ((newPolarInitNode->encoderLength - messageLength - 6 + 3) < 193) newPolarInitNode->n_pc_wm = 1; 
+    }
 
-      newPolarInitNode->i_bil = NR_POLAR_PUCCH_I_BIL;
 
-      newPolarInitNode->payloadBits = messageLength;
-      newPolarInitNode->crcCorrectionBits = NR_POLAR_PUCCH_CRC_ERROR_CORRECTION_BITS;
-      //newPolarInitNode->crc_generator_matrix=crc24c_generator_matrix(newPolarInitNode->payloadBits+newPolarInitNode->crcParityBits);//G_P
-      //LOG_D(PHY,"New polar node, encoderLength %d, aggregation_level %d\n",newPolarInitNode->encoderLength,aggregation_level);
-    } else {
-      AssertFatal(1 == 0, "[nr_polar_init] Incorrect Message Type(%d)", messageType);
-    }
 
-    newPolarInitNode->K = newPolarInitNode->payloadBits + newPolarInitNode->crcParityBits; // Number of bits to encode.
-    newPolarInitNode->N = nr_polar_output_length(newPolarInitNode->K,
-						 newPolarInitNode->encoderLength,
-						 newPolarInitNode->n_max);
-    newPolarInitNode->n = log2(newPolarInitNode->N);
-    newPolarInitNode->G_N = nr_polar_kronecker_power_matrices(newPolarInitNode->n);
-    //polar_encoder vectors:
-    newPolarInitNode->nr_polar_crc = malloc(sizeof(uint8_t) * newPolarInitNode->crcParityBits);
-    newPolarInitNode->nr_polar_aPrime = malloc(sizeof(uint8_t) * ((ceil((newPolarInitNode->payloadBits)/32.0)*4)+3));
-    newPolarInitNode->nr_polar_APrime = malloc(sizeof(uint8_t) * newPolarInitNode->K);
-    newPolarInitNode->nr_polar_D = malloc(sizeof(uint8_t) * newPolarInitNode->N);
-    newPolarInitNode->nr_polar_E = malloc(sizeof(uint8_t) * newPolarInitNode->encoderLength);
-    //Polar Coding vectors
-    newPolarInitNode->nr_polar_U = malloc(sizeof(uint8_t) * newPolarInitNode->N); //Decoder: nr_polar_uHat
-    newPolarInitNode->nr_polar_CPrime = malloc(sizeof(uint8_t) * newPolarInitNode->K); //Decoder: nr_polar_cHat
-    newPolarInitNode->nr_polar_B = malloc(sizeof(uint8_t) * newPolarInitNode->K); //Decoder: nr_polar_bHat
-    newPolarInitNode->nr_polar_A = malloc(sizeof(uint8_t) * newPolarInitNode->payloadBits); //Decoder: nr_polar_aHat
-    newPolarInitNode->Q_0_Nminus1 = nr_polar_sequence_pattern(newPolarInitNode->n);
-    newPolarInitNode->interleaving_pattern = malloc(sizeof(uint16_t) * newPolarInitNode->K);
-    nr_polar_interleaving_pattern(newPolarInitNode->K,
-                                  newPolarInitNode->i_il,
-                                  newPolarInitNode->interleaving_pattern);
-    newPolarInitNode->deinterleaving_pattern = malloc(sizeof(uint16_t) * newPolarInitNode->K);
-
-    for (int i=0; i<newPolarInitNode->K; i++)
-      newPolarInitNode->deinterleaving_pattern[newPolarInitNode->interleaving_pattern[i]] = i;
-
-    newPolarInitNode->rate_matching_pattern = malloc(sizeof(uint16_t) * newPolarInitNode->encoderLength);
-    uint16_t *J = malloc(sizeof(uint16_t) * newPolarInitNode->N);
-    nr_polar_rate_matching_pattern(newPolarInitNode->rate_matching_pattern,
-                                   J,
-                                   nr_polar_subblock_interleaver_pattern,
-                                   newPolarInitNode->K,
-                                   newPolarInitNode->N,
-                                   newPolarInitNode->encoderLength);
-    newPolarInitNode->information_bit_pattern = malloc(sizeof(uint8_t) * newPolarInitNode->N);
-    newPolarInitNode->Q_I_N = malloc(sizeof(int16_t) * (newPolarInitNode->K + newPolarInitNode->n_pc));
-    newPolarInitNode->Q_F_N = malloc( sizeof(int16_t) * (newPolarInitNode->N + 1)); // Last element shows the final array index assigned a value.
-    newPolarInitNode->Q_PC_N = malloc( sizeof(int16_t) * (newPolarInitNode->n_pc));
-
-    for (int i = 0; i <= newPolarInitNode->N; i++)
-      newPolarInitNode->Q_F_N[i] = -1; // Empty array.
-
-    nr_polar_info_bit_pattern(newPolarInitNode->information_bit_pattern,
-                              newPolarInitNode->Q_I_N,
-                              newPolarInitNode->Q_F_N,
-                              J,
-                              newPolarInitNode->Q_0_Nminus1,
-                              newPolarInitNode->K,
-                              newPolarInitNode->N,
-                              newPolarInitNode->encoderLength,
-                              newPolarInitNode->n_pc);
-    // sort the Q_I_N array in ascending order (first K positions)
-    qsort((void *)newPolarInitNode->Q_I_N,newPolarInitNode->K,sizeof(int16_t),intcmp);
-    newPolarInitNode->channel_interleaver_pattern = malloc(sizeof(uint16_t) * newPolarInitNode->encoderLength);
-    nr_polar_channel_interleaver_pattern(newPolarInitNode->channel_interleaver_pattern,
-                                         newPolarInitNode->i_bil,
-                                         newPolarInitNode->encoderLength);
-    free(J);
-    if (decoder_flag == 1) build_decoder_tree(newPolarInitNode);
-    build_polar_tables(newPolarInitNode);
-    init_polar_deinterleaver_table(newPolarInitNode);
-    //printf("decoder tree nodes %d\n",newPolarInitNode->tree.num_nodes);
+    newPolarInitNode->i_bil = NR_POLAR_PUCCH_I_BIL;
+
+    newPolarInitNode->payloadBits = messageLength;
+    newPolarInitNode->crcCorrectionBits = NR_POLAR_PUCCH_CRC_ERROR_CORRECTION_BITS;
+    //newPolarInitNode->crc_generator_matrix=crc24c_generator_matrix(newPolarInitNode->payloadBits+newPolarInitNode->crcParityBits);//G_P
+    //LOG_D(PHY,"New polar node, encoderLength %d, aggregation_level %d\n",newPolarInitNode->encoderLength,aggregation_level);
   } else {
-    AssertFatal(1 == 0, "[nr_polar_init] New t_nrPolar_params * could not be created");
+    AssertFatal(1 == 0, "[nr_polar_init] Incorrect Message Type(%d)", messageType);
   }
 
-  //Fixme: the list is not thread safe
-  //The defect is not critical: we always append (never delete items) and adding two times the same is fine
-  newPolarInitNode->nextPtr=*polarParams;
-  *polarParams=newPolarInitNode;
-  return;
+  newPolarInitNode->K = newPolarInitNode->payloadBits + newPolarInitNode->crcParityBits; // Number of bits to encode.
+  newPolarInitNode->N = nr_polar_output_length(newPolarInitNode->K,
+                                               newPolarInitNode->encoderLength,
+                                               newPolarInitNode->n_max);
+  newPolarInitNode->n = log2(newPolarInitNode->N);
+  newPolarInitNode->G_N = nr_polar_kronecker_power_matrices(newPolarInitNode->n);
+  //polar_encoder vectors:
+  newPolarInitNode->nr_polar_crc = malloc(sizeof(uint8_t) * newPolarInitNode->crcParityBits);
+  newPolarInitNode->nr_polar_aPrime = malloc(sizeof(uint8_t) * ((ceil((newPolarInitNode->payloadBits)/32.0)*4)+3));
+  newPolarInitNode->nr_polar_APrime = malloc(sizeof(uint8_t) * newPolarInitNode->K);
+  newPolarInitNode->nr_polar_D = malloc(sizeof(uint8_t) * newPolarInitNode->N);
+  newPolarInitNode->nr_polar_E = malloc(sizeof(uint8_t) * newPolarInitNode->encoderLength);
+  //Polar Coding vectors
+  newPolarInitNode->nr_polar_U = malloc(sizeof(uint8_t) * newPolarInitNode->N); //Decoder: nr_polar_uHat
+  newPolarInitNode->nr_polar_CPrime = malloc(sizeof(uint8_t) * newPolarInitNode->K); //Decoder: nr_polar_cHat
+  newPolarInitNode->nr_polar_B = malloc(sizeof(uint8_t) * newPolarInitNode->K); //Decoder: nr_polar_bHat
+  newPolarInitNode->nr_polar_A = malloc(sizeof(uint8_t) * newPolarInitNode->payloadBits); //Decoder: nr_polar_aHat
+  newPolarInitNode->Q_0_Nminus1 = nr_polar_sequence_pattern(newPolarInitNode->n);
+  newPolarInitNode->interleaving_pattern = malloc(sizeof(uint16_t) * newPolarInitNode->K);
+  nr_polar_interleaving_pattern(newPolarInitNode->K,
+                                newPolarInitNode->i_il,
+                                newPolarInitNode->interleaving_pattern);
+  newPolarInitNode->deinterleaving_pattern = malloc(sizeof(uint16_t) * newPolarInitNode->K);
+
+  for (int i=0; i<newPolarInitNode->K; i++)
+    newPolarInitNode->deinterleaving_pattern[newPolarInitNode->interleaving_pattern[i]] = i;
+
+  newPolarInitNode->rate_matching_pattern = malloc(sizeof(uint16_t) * newPolarInitNode->encoderLength);
+  uint16_t J[newPolarInitNode->N];
+  nr_polar_rate_matching_pattern(newPolarInitNode->rate_matching_pattern,
+                                 J,
+                                 nr_polar_subblock_interleaver_pattern,
+                                 newPolarInitNode->K,
+                                 newPolarInitNode->N,
+                                 newPolarInitNode->encoderLength);
+  newPolarInitNode->information_bit_pattern = malloc(sizeof(uint8_t) * newPolarInitNode->N);
+  newPolarInitNode->Q_I_N = malloc(sizeof(int16_t) * (newPolarInitNode->K + newPolarInitNode->n_pc));
+  newPolarInitNode->Q_F_N = malloc( sizeof(int16_t) * (newPolarInitNode->N + 1)); // Last element shows the final array index assigned a value.
+  newPolarInitNode->Q_PC_N = malloc( sizeof(int16_t) * (newPolarInitNode->n_pc));
+
+  for (int i = 0; i <= newPolarInitNode->N; i++)
+    newPolarInitNode->Q_F_N[i] = -1; // Empty array.
+
+  nr_polar_info_bit_pattern(newPolarInitNode->information_bit_pattern,
+                            newPolarInitNode->Q_I_N,
+                            newPolarInitNode->Q_F_N,
+                            J,
+                            newPolarInitNode->Q_0_Nminus1,
+                            newPolarInitNode->K,
+                            newPolarInitNode->N,
+                            newPolarInitNode->encoderLength,
+                            newPolarInitNode->n_pc);
+  // sort the Q_I_N array in ascending order (first K positions)
+  qsort((void *)newPolarInitNode->Q_I_N,newPolarInitNode->K,sizeof(int16_t),intcmp);
+  newPolarInitNode->channel_interleaver_pattern = malloc(sizeof(uint16_t) * newPolarInitNode->encoderLength);
+  nr_polar_channel_interleaver_pattern(newPolarInitNode->channel_interleaver_pattern,
+                                       newPolarInitNode->i_bil,
+                                       newPolarInitNode->encoderLength);
+  if (decoder_flag == 1) 
+    build_decoder_tree(newPolarInitNode);
+  build_polar_tables(newPolarInitNode);
+  init_polar_deinterleaver_table(newPolarInitNode);
+  //printf("decoder tree nodes %d\n",newPolarInitNode->tree.num_nodes);
+
+  newPolarInitNode->nextPtr=PolarList;
+  PolarList=newPolarInitNode;
+  return newPolarInitNode;
 }
 
-void nr_polar_print_polarParams(t_nrPolar_params *polarParams) {
+void nr_polar_print_polarParams() {
   uint8_t i = 0;
 
-  if (polarParams == NULL) {
+  if (PolarList == NULL) {
     printf("polarParams is empty.\n");
   } else {
+    t_nrPolar_params * polarParams=PolarList;
     while (polarParams != NULL) {
-      printf("polarParams[%d] = %d\n", i, polarParams->idx);
+      printf("polarParams[%d] = %d, %d, %d\n", i,
+             polarParams->idx>>24, (polarParams->idx>>8)&0xFFFF, polarParams->idx&0xFF);
       polarParams = polarParams->nextPtr;
       i++;
     }
@@ -213,31 +271,6 @@ void nr_polar_print_polarParams(t_nrPolar_params *polarParams) {
   return;
 }
 
-t_nrPolar_params *nr_polar_params (int8_t messageType,
-                                   uint16_t messageLength,
-                                   uint8_t aggregation_level,
-	 		           int decoding_flag,
-				   t_nrPolar_params **polarList_ext) {
-  static t_nrPolar_params *polarList = NULL;
-  nr_polar_init(polarList_ext != NULL ? polarList_ext : &polarList, 
-		messageType,messageLength,aggregation_level,decoding_flag);
-  t_nrPolar_params *polarParams=polarList_ext != NULL ? *polarList_ext : polarList;
-  const int tag=messageType * messageLength * (messageType>=2 ? aggregation_level : nr_polar_aggregation_prime(aggregation_level));
-
-
-	
-  while (polarParams != NULL) {
-    //    LOG_D(PHY,"nr_polar_params : tag %d (from nr_polar_init %d)\n",tag,polarParams->idx);
-    if (polarParams->idx == tag)
-      return polarParams;
-
-    polarParams = polarParams->nextPtr;
-  }
-
-  AssertFatal(false,"Polar Init tables internal failure, no polarParams found\n");
-  return NULL;
-}
-
 uint16_t nr_polar_aggregation_prime (uint8_t aggregation_level) {
   if (aggregation_level == 0) return 0;
   else if (aggregation_level == 1) return NR_POLAR_AGGREGATION_LEVEL_1_PRIME;
diff --git a/openair1/PHY/INIT/nr_init.c b/openair1/PHY/INIT/nr_init.c
index e6b6c828346fa849b0c014953e7d95fa90b3c9fd..bf360d347a3dd0227c772a099180fb7d81444b04 100644
--- a/openair1/PHY/INIT/nr_init.c
+++ b/openair1/PHY/INIT/nr_init.c
@@ -242,37 +242,9 @@ int phy_init_nr_gNB(PHY_VARS_gNB *gNB,
   common_vars->debugBuff = (int32_t*)malloc16_clear(fp->samples_per_frame*sizeof(int32_t)*100);	
   common_vars->debugBuff_sample_offset = 0; 
 
-
-  // Channel estimates for SRS
-/*
-  for (UE_id=0; UE_id<NUMBER_OF_UE_MAX; UE_id++) {
-    srs_vars[UE_id].srs_ch_estimates      = (int32_t **)malloc16( 64*sizeof(int32_t *) );
-    srs_vars[UE_id].srs_ch_estimates_time = (int32_t **)malloc16( 64*sizeof(int32_t *) );
-
-    for (i=0; i<64; i++) {
-      srs_vars[UE_id].srs_ch_estimates[i]      = (int32_t *)malloc16_clear( sizeof(int32_t)*fp->ofdm_symbol_size );
-      srs_vars[UE_id].srs_ch_estimates_time[i] = (int32_t *)malloc16_clear( sizeof(int32_t)*fp->ofdm_symbol_size*2 );
-    }
-  } //UE_id
-*/
-  /*generate_ul_ref_sigs_rx();
-
-  init_ulsch_power_LUT();*/
-
-/*
-  // SRS
-  for (UE_id=0; UE_id<NUMBER_OF_UE_MAX; UE_id++) {
-    srs_vars[UE_id].srs = (int32_t *)malloc16_clear(2*fp->ofdm_symbol_size*sizeof(int32_t));
-  }
-*/
   // PRACH
   prach_vars->prachF = (int16_t *)malloc16_clear( 1024*2*sizeof(int16_t) );
   prach_vars->rxsigF = (int16_t **)malloc16_clear(Prx*sizeof(int16_t*));
-  /* 
-  for (i=0;i<Prx;i++){
-    prach_vars->rxsigF[i] = (int16_t *)malloc16_clear( 1024*2*sizeof(int16_t) );
-  }
-  */
   prach_vars->prach_ifft       = (int32_t *)malloc16_clear(1024*2*sizeof(int32_t));
 
   init_prach_list(gNB);
@@ -328,51 +300,102 @@ int phy_init_nr_gNB(PHY_VARS_gNB *gNB,
 void phy_free_nr_gNB(PHY_VARS_gNB *gNB)
 {
   NR_DL_FRAME_PARMS* const fp       = &gNB->frame_parms;
-  NR_gNB_COMMON *const common_vars  = &gNB->common_vars;
-  NR_gNB_PUSCH **const pusch_vars   = gNB->pusch_vars;
-  /*LTE_eNB_SRS *const srs_vars        = gNB->srs_vars;
-  LTE_eNB_PRACH *const prach_vars    = &gNB->prach_vars;*/
-  uint32_t ***pdcch_dmrs             = gNB->nr_gold_pdcch_dmrs;
-  int Ptx=gNB->gNB_config.carrier_config.num_tx_ant.value;
+  const int Ptx = gNB->gNB_config.carrier_config.num_tx_ant.value;
+  const int Prx = gNB->gNB_config.carrier_config.num_rx_ant.value;
+  const int max_ul_mimo_layers = 4; // taken from phy_init_nr_gNB()
+  const int n_buf = Prx * max_ul_mimo_layers;
+
+  uint32_t ***pdcch_dmrs = gNB->nr_gold_pdcch_dmrs;
+  for (int slot = 0; slot < fp->slots_per_frame; slot++) {
+    for (int symb = 0; symb < fp->symbols_per_slot; symb++)
+      free_and_zero(pdcch_dmrs[slot][symb]);
+    free_and_zero(pdcch_dmrs[slot]);
+  }
+  free_and_zero(pdcch_dmrs);
+
+  uint32_t ****pdsch_dmrs = gNB->nr_gold_pdsch_dmrs;
+  for (int slot = 0; slot < fp->slots_per_frame; slot++) {
+    for (int symb = 0; symb < fp->symbols_per_slot; symb++) {
+      for (int q = 0; q < NR_MAX_NB_CODEWORDS; q++)
+        free_and_zero(pdsch_dmrs[slot][symb][q]);
+      free_and_zero(pdsch_dmrs[slot][symb]);
+    }
+    free_and_zero(pdsch_dmrs[slot]);
+  }
+  free_and_zero(gNB->nr_gold_pdsch_dmrs);
 
+  uint32_t ****pusch_dmrs = gNB->nr_gold_pusch_dmrs;
+  for(int nscid = 0; nscid < 2; nscid++) {
+    for (int slot = 0; slot < fp->slots_per_frame; slot++) {
+      for (int symb = 0; symb < fp->symbols_per_slot; symb++)
+        free_and_zero(pusch_dmrs[nscid][slot][symb]);
+      free_and_zero(pusch_dmrs[nscid][slot]);
+    }
+    free_and_zero(pusch_dmrs[nscid]);
+  }
+  free_and_zero(pusch_dmrs);
+
+  uint32_t ***csi_rs = gNB->nr_gold_csi_rs;
+  for (int slot = 0; slot < fp->slots_per_frame; slot++) {
+    for (int symb = 0; symb < fp->symbols_per_slot; symb++)
+      free_and_zero(csi_rs[slot][symb]);
+    free_and_zero(csi_rs[slot]);
+  }
+  free_and_zero(csi_rs);
+
+  for (int id = 0; id < NUMBER_OF_NR_SRS_MAX; id++) {
+    for (int i = 0; i < Prx; i++){
+      free_and_zero(gNB->nr_srs_info[id]->srs_received_signal[i]);
+      free_and_zero(gNB->nr_srs_info[id]->srs_ls_estimated_channel[i]);
+      free_and_zero(gNB->nr_srs_info[id]->srs_estimated_channel_freq[i]);
+      free_and_zero(gNB->nr_srs_info[id]->srs_estimated_channel_time[i]);
+      free_and_zero(gNB->nr_srs_info[id]->srs_estimated_channel_time_shifted[i]);
+    }
+    free_and_zero(gNB->nr_srs_info[id]->srs_generated_signal);
+    free_and_zero(gNB->nr_srs_info[id]->noise_power);
+    free_and_zero(gNB->nr_srs_info[id]->srs_received_signal);
+    free_and_zero(gNB->nr_srs_info[id]->srs_ls_estimated_channel);
+    free_and_zero(gNB->nr_srs_info[id]->srs_estimated_channel_freq);
+    free_and_zero(gNB->nr_srs_info[id]->srs_estimated_channel_time);
+    free_and_zero(gNB->nr_srs_info[id]->srs_estimated_channel_time_shifted);
+    free_and_zero(gNB->nr_srs_info[id]);
+  }
+
+  free_ul_reference_signal_sequences();
+  free_gnb_lowpapr_sequences();
+
+  reset_nr_transport(gNB);
+
+  NR_gNB_COMMON * common_vars = &gNB->common_vars;
   for (int i = 0; i < Ptx; i++) {
     free_and_zero(common_vars->txdataF[i]);
-    /* rxdataF[i] is not allocated -> don't free */
+    free_and_zero(common_vars->beam_id[i]);
+  }
+
+  for (int i = 0; i < Prx; ++i) {
+    free_and_zero(common_vars->rxdataF[i]);
+    free_and_zero(common_vars->rxdata[i]);
   }
 
   free_and_zero(common_vars->txdataF);
+  free_and_zero(common_vars->rxdata);
   free_and_zero(common_vars->rxdataF);
-  // PDCCH DMRS sequences
-  free_and_zero(pdcch_dmrs);
-/*
-  // Channel estimates for SRS
-  for (UE_id = 0; UE_id < NUMBER_OF_UE_MAX; UE_id++) {
-    for (i=0; i<64; i++) {
-      free_and_zero(srs_vars[UE_id].srs_ch_estimates[i]);
-      free_and_zero(srs_vars[UE_id].srs_ch_estimates_time[i]);
-    }
-
-    free_and_zero(srs_vars[UE_id].srs_ch_estimates);
-    free_and_zero(srs_vars[UE_id].srs_ch_estimates_time);
-  } //UE_id
+  free_and_zero(common_vars->beam_id);
 
-  //free_ul_ref_sigs();
-
-  for (UE_id=0; UE_id<NUMBER_OF_UE_MAX; UE_id++) free_and_zero(srs_vars[UE_id].srs);
+  free_and_zero(common_vars->debugBuff);
 
+  NR_gNB_PRACH* prach_vars = &gNB->prach_vars;
   free_and_zero(prach_vars->prachF);
+  free_and_zero(prach_vars->rxsigF);
+  free_and_zero(prach_vars->prach_ifft);
 
-  for (i = 0; i < 64; i++) free_and_zero(prach_vars->prach_ifft[0][i]);
-
-  free_and_zero(prach_vars->prach_ifft[0]);
-  free_and_zero(prach_vars->rxsigF[0]);
-*/
+  NR_gNB_PUSCH** pusch_vars = gNB->pusch_vars;
   for (int ULSCH_id=0; ULSCH_id<gNB->number_of_nr_ulsch_max; ULSCH_id++) {
-    for (int i = 0; i < fp->nb_antennas_rx; i++) {
+    for (int i = 0; i < Prx; i++) {
       free_and_zero(pusch_vars[ULSCH_id]->rxdataF_ext[i]);
       free_and_zero(pusch_vars[ULSCH_id]->rxdataF_ext2[i]);
     }
-    for (int i = 0; i < 4*fp->nb_antennas_rx; i++) {
+    for (int i = 0; i < n_buf; i++) {
       free_and_zero(pusch_vars[ULSCH_id]->ul_ch_estimates[i]);
       free_and_zero(pusch_vars[ULSCH_id]->ul_ch_estimates_ext[i]);
       free_and_zero(pusch_vars[ULSCH_id]->ul_ch_estimates_time[i]);
@@ -392,8 +415,8 @@ void phy_free_nr_gNB(PHY_VARS_gNB *gNB)
     free_and_zero(pusch_vars[ULSCH_id]->ul_ch_estimates_ext);
     free_and_zero(pusch_vars[ULSCH_id]->ul_ch_ptrs_estimates);
     free_and_zero(pusch_vars[ULSCH_id]->ul_ch_ptrs_estimates_ext);
-    free_and_zero(pusch_vars[ULSCH_id]->ul_ch_estimates_time);
     free_and_zero(pusch_vars[ULSCH_id]->ptrs_phase_per_slot);
+    free_and_zero(pusch_vars[ULSCH_id]->ul_ch_estimates_time);
     free_and_zero(pusch_vars[ULSCH_id]->ul_valid_re_per_slot);
     free_and_zero(pusch_vars[ULSCH_id]->rxdataF_comp);
     free_and_zero(pusch_vars[ULSCH_id]->ul_ch_mag0);
@@ -405,14 +428,6 @@ void phy_free_nr_gNB(PHY_VARS_gNB *gNB)
     free_and_zero(pusch_vars[ULSCH_id]->llr);
     free_and_zero(pusch_vars[ULSCH_id]);
   } //ULSCH_id
-/*
-  for (UE_id = 0; UE_id < NUMBER_OF_UE_MAX; UE_id++) gNB->UE_stats_ptr[UE_id] = NULL;
-*/
-
-
-  free_gnb_lowpapr_sequences();
-
-
 }
 
 //Adding nr_schedule_handler
@@ -553,6 +568,16 @@ void init_DLSCH_struct(PHY_VARS_gNB *gNB, processingData_L1tx_t *msg) {
   }
 }
 
+void reset_DLSCH_struct(const PHY_VARS_gNB *gNB, processingData_L1tx_t *msg)
+{
+  const NR_DL_FRAME_PARMS *fp = &gNB->frame_parms;
+  const nfapi_nr_config_request_scf_t *cfg = &gNB->gNB_config;
+  const uint16_t grid_size = cfg->carrier_config.dl_grid_size[fp->numerology_index].value;
+  for (int i=0; i<gNB->number_of_nr_dlsch_max; i++)
+    for (int j=0; j<2; j++)
+      free_gNB_dlsch(&msg->dlsch[i][j], grid_size);
+}
+
 void init_nr_transport(PHY_VARS_gNB *gNB) {
   NR_DL_FRAME_PARMS *fp = &gNB->frame_parms;
   LOG_I(PHY, "Initialise nr transport\n");
@@ -577,7 +602,7 @@ void init_nr_transport(PHY_VARS_gNB *gNB) {
 
     for (int j=0; j<2; j++) {
       // ULSCH for data
-      gNB->ulsch[i][j] = new_gNB_ulsch(MAX_LDPC_ITERATIONS, fp->N_RB_UL, 0);
+      gNB->ulsch[i][j] = new_gNB_ulsch(MAX_LDPC_ITERATIONS, fp->N_RB_UL);
 
       if (!gNB->ulsch[i][j]) {
         LOG_E(PHY,"Can't get gNB ulsch structures\n");
@@ -593,3 +618,18 @@ void init_nr_transport(PHY_VARS_gNB *gNB) {
 
   //fp->pucch_config_common.deltaPUCCH_Shift = 1;
 }
+
+void reset_nr_transport(PHY_VARS_gNB *gNB)
+{
+  const NR_DL_FRAME_PARMS *fp = &gNB->frame_parms;
+
+  for (int i = 0; i < NUMBER_OF_NR_PUCCH_MAX; i++)
+    free_gNB_pucch(gNB->pucch[i]);
+
+  for (int i = 0; i < NUMBER_OF_NR_SRS_MAX; i++)
+    free_gNB_srs(gNB->srs[i]);
+
+  for (int i=0; i<gNB->number_of_nr_ulsch_max; i++)
+    for (int j=0; j<2; j++)
+      free_gNB_ulsch(&gNB->ulsch[i][j], fp->N_RB_UL);
+}
diff --git a/openair1/PHY/INIT/nr_init_ru.c b/openair1/PHY/INIT/nr_init_ru.c
index d032746718b215e190288af832a6815677cc074e..07f1d3b9e3c4578dd9495bfea3b6213b22e5b51d 100644
--- a/openair1/PHY/INIT/nr_init_ru.c
+++ b/openair1/PHY/INIT/nr_init_ru.c
@@ -174,17 +174,13 @@ void nr_phy_free_RU(RU_t *ru)
 
   LOG_I(PHY, "Feeing RU signal buffers (if_south %s) nb_tx %d\n", ru_if_types[ru->if_south], ru->nb_tx);
 
-  free_and_zero(ru->nr_frame_parms);
-  free_and_zero(ru->frame_parms);
-
   if (ru->if_south <= REMOTE_IF5) { // this means REMOTE_IF5 or LOCAL_RF, so free memory for time-domain signals
-    int32_t *ptr;
-    for (i = 0; i < ru->nb_tx; i++) {
-      ptr=&ru->common.txdata[i][-ru->sf_extension];
-      free_and_zero(ptr);
-    }
-    for (i = 0; i < ru->nb_rx; i++) free_and_zero(ru->common.rxdata[i]);
+    for (i = 0; i < ru->nb_tx; i++)
+      free_and_zero(ru->common.txdata[i]);
     free_and_zero(ru->common.txdata);
+
+    for (i = 0; i < ru->nb_rx; i++)
+      free_and_zero(ru->common.rxdata[i]);
     free_and_zero(ru->common.rxdata);
   } // else: IF5 or local RF -> nothing to free()
 
@@ -193,7 +189,7 @@ void nr_phy_free_RU(RU_t *ru)
     free_and_zero(ru->common.rxdata_7_5kHz);
 
     // free beamforming input buffers (TX)
-    for (i = 0; i < 15; i++) free_and_zero(ru->common.txdataF[i]);
+    for (i = 0; i < ru->nb_tx; i++) free_and_zero(ru->common.txdataF[i]);
     free_and_zero(ru->common.txdataF);
 
     // free IFFT input buffers (TX)
@@ -205,15 +201,21 @@ void nr_phy_free_RU(RU_t *ru)
     free_and_zero(ru->common.rxdataF);
 
     for (j=0;j<NUMBER_OF_NR_RU_PRACH_OCCASIONS_MAX;j++) {
-      for (i = 0; i < ru->nb_rx; i++) {
+      for (i = 0; i < ru->nb_rx; i++)
 	free_and_zero(ru->prach_rxsigF[j][i]);
-      }
+      free_and_zero(ru->prach_rxsigF[j]);
     }
-    for (i = 0; i < ru->num_gNB; i++) {
-      for (p = 0; p < 15; p++) {
-	  for (j=0; j<ru->nb_tx; j++) free_and_zero(ru->beam_weights[i][p][j]);
-	  free_and_zero(ru->beam_weights[i][p]);
+
+    if (ru->do_precoding == 1) {
+      for (i = 0; i < ru->num_gNB; i++) {
+        for (p = 0; p < ru->nb_log_antennas; p++) {
+            for (j=0; j<ru->nb_tx; j++) free_and_zero(ru->beam_weights[i][p][j]);
+            free_and_zero(ru->beam_weights[i][p]);
+        }
       }
+      for(i=0; i< ru->nb_tx; ++i)
+        free_and_zero(ru->common.beam_id[i]);
+      free_and_zero(ru->common.beam_id);
     }
   }
   free_and_zero(ru->common.sync_corr);
diff --git a/openair1/PHY/INIT/nr_init_ue.c b/openair1/PHY/INIT/nr_init_ue.c
index b09e8690f32d95dd5c114990013116e1789c9e58..a27c541c80e86d674f2e0b3b8138cf940cc94fa0 100644
--- a/openair1/PHY/INIT/nr_init_ue.c
+++ b/openair1/PHY/INIT/nr_init_ue.c
@@ -111,6 +111,49 @@ void phy_init_nr_ue__PDSCH(NR_UE_PDSCH *const pdsch,
   }
 }
 
+void phy_term_nr_ue__PDSCH(NR_UE_PDSCH* pdsch, const NR_DL_FRAME_PARMS *const fp)
+{
+  for (int i = 0; i < fp->nb_antennas_rx; i++) {
+    for (int j = 0; j < NR_MAX_NB_LAYERS; j++) {
+      const int idx = j * fp->nb_antennas_rx + i;
+      for (int k = 0; k < NR_MAX_NB_LAYERS; k++)
+        free_and_zero(pdsch->rho[i][j*NR_MAX_NB_LAYERS+k]);
+      free_and_zero(pdsch->rxdataF_comp0[idx]);
+      free_and_zero(pdsch->dl_ch_estimates[idx]);
+      free_and_zero(pdsch->dl_ch_estimates_ext[idx]);
+      free_and_zero(pdsch->dl_bf_ch_estimates[idx]);
+      free_and_zero(pdsch->dl_bf_ch_estimates_ext[idx]);
+      free_and_zero(pdsch->dl_ch_mag0[idx]);
+      free_and_zero(pdsch->dl_ch_magb0[idx]);
+      free_and_zero(pdsch->dl_ch_magr0[idx]);
+    }
+    free_and_zero(pdsch->rxdataF_ext[i]);
+    free_and_zero(pdsch->rxdataF_uespec_pilots[i]);
+    free_and_zero(pdsch->ptrs_phase_per_slot[i]);
+    free_and_zero(pdsch->ptrs_re_per_slot[i]);
+    free_and_zero(pdsch->dl_ch_ptrs_estimates_ext[i]);
+    free_and_zero(pdsch->rho[i]);
+  }
+  free_and_zero(pdsch->pmi_ext);
+  free_and_zero(pdsch->llr[0]);
+  free_and_zero(pdsch->layer_llr[0]);
+  free_and_zero(pdsch->llr128);
+  free_and_zero(pdsch->rxdataF_ext);
+  free_and_zero(pdsch->rxdataF_uespec_pilots);
+  free_and_zero(pdsch->rxdataF_comp0);
+  free_and_zero(pdsch->rho);
+  free_and_zero(pdsch->dl_ch_estimates);
+  free_and_zero(pdsch->dl_ch_estimates_ext);
+  free_and_zero(pdsch->dl_bf_ch_estimates);
+  free_and_zero(pdsch->dl_bf_ch_estimates_ext);
+  free_and_zero(pdsch->dl_ch_mag0);
+  free_and_zero(pdsch->dl_ch_magb0);
+  free_and_zero(pdsch->dl_ch_magr0);
+  free_and_zero(pdsch->ptrs_phase_per_slot);
+  free_and_zero(pdsch->ptrs_re_per_slot);
+  free_and_zero(pdsch->dl_ch_ptrs_estimates_ext);
+}
+
 void phy_init_nr_ue_PUSCH(NR_UE_PUSCH *const pusch,
                           const NR_DL_FRAME_PARMS *const fp) {
   AssertFatal( pusch, "pusch==0" );
@@ -120,9 +163,14 @@ void phy_init_nr_ue_PUSCH(NR_UE_PUSCH *const pusch,
   }
 }
 
-int init_nr_ue_signal(PHY_VARS_NR_UE *ue,
-                      int nb_connected_gNB,
-                      uint8_t abstraction_flag) {
+void phy_term_nr_ue_PUSCH(NR_UE_PUSCH *pusch)
+{
+  for (int i = 0; i < NR_MAX_NB_LAYERS; i++)
+    free_and_zero(pusch->txdataF_layers[i]);
+}
+
+int init_nr_ue_signal(PHY_VARS_NR_UE *ue, int nb_connected_gNB)
+{
   // create shortcuts
   NR_DL_FRAME_PARMS *const fp            = &ue->frame_parms;
   NR_UE_COMMON *const common_vars        = &ue->common_vars;
@@ -134,10 +182,7 @@ int init_nr_ue_signal(PHY_VARS_NR_UE *ue,
   int gNB_id;
   int th_id;
   uint32_t ****pusch_dmrs;
-  uint16_t N_n_scid[2] = {0,1}; // [HOTFIX] This is a temporary implementation of scramblingID0 and scramblingID1 which are given by DMRS-UplinkConfig
-  int n_scid;
-  abstraction_flag = 0;
-  LOG_I(PHY, "Initializing UE vars (abstraction %u) for gNB TXant %u, UE RXant %u\n", abstraction_flag, fp->nb_antennas_tx, fp->nb_antennas_rx);
+  LOG_I(PHY, "Initializing UE vars for gNB TXant %u, UE RXant %u\n", fp->nb_antennas_tx, fp->nb_antennas_rx);
   phy_init_nr_top(ue);
   // many memory allocation sizes are hard coded
   AssertFatal( fp->nb_antennas_rx <= 4, "hard coded allocation for ue_common_vars->dl_ch_estimates[gNB_id]" );
@@ -191,7 +236,6 @@ int init_nr_ue_signal(PHY_VARS_NR_UE *ue,
   ///////////
   ue->nr_gold_pusch_dmrs = (uint32_t ****)malloc16(fp->slots_per_frame*sizeof(uint32_t ***));
   pusch_dmrs             = ue->nr_gold_pusch_dmrs;
-  n_scid = 0; // This quantity is indicated by higher layer parameter dmrs-SeqInitialization
 
   for (slot=0; slot<fp->slots_per_frame; slot++) {
     pusch_dmrs[slot] = (uint32_t ***)malloc16(fp->symbols_per_slot*sizeof(uint32_t **));
@@ -208,7 +252,6 @@ int init_nr_ue_signal(PHY_VARS_NR_UE *ue,
     }
   }
 
-  nr_init_pusch_dmrs(ue, N_n_scid, n_scid);
   ///////////
   ////////////////////////////////////////////////////////////////////////////////////////////
 
@@ -230,29 +273,27 @@ int init_nr_ue_signal(PHY_VARS_NR_UE *ue,
   for (i=0; i<10; i++)
     ue->tx_power_dBm[i]=-127;
 
-  if (abstraction_flag == 0) {
-    // init TX buffers
-    common_vars->txdata  = (int32_t **)malloc16( fp->nb_antennas_tx*sizeof(int32_t *) );
-    common_vars->txdataF = (int32_t **)malloc16( fp->nb_antennas_tx*sizeof(int32_t *) );
+  // init TX buffers
+  common_vars->txdata  = (int32_t **)malloc16( fp->nb_antennas_tx*sizeof(int32_t *) );
+  common_vars->txdataF = (int32_t **)malloc16( fp->nb_antennas_tx*sizeof(int32_t *) );
 
-    for (i=0; i<fp->nb_antennas_tx; i++) {
-      common_vars->txdata[i]  = (int32_t *)malloc16_clear( fp->samples_per_subframe*10*sizeof(int32_t) );
-      common_vars->txdataF[i] = (int32_t *)malloc16_clear( fp->samples_per_slot_wCP*sizeof(int32_t) );
-    }
+  for (i=0; i<fp->nb_antennas_tx; i++) {
+    common_vars->txdata[i]  = (int32_t *)malloc16_clear( fp->samples_per_subframe*10*sizeof(int32_t) );
+    common_vars->txdataF[i] = (int32_t *)malloc16_clear( fp->samples_per_slot_wCP*sizeof(int32_t) );
+  }
 
-    // init RX buffers
-    common_vars->rxdata   = (int32_t **)malloc16( fp->nb_antennas_rx*sizeof(int32_t *) );
+  // init RX buffers
+  common_vars->rxdata   = (int32_t **)malloc16( fp->nb_antennas_rx*sizeof(int32_t *) );
 
-    for (th_id=0; th_id<RX_NB_TH_MAX; th_id++) {
-      common_vars->common_vars_rx_data_per_thread[th_id].rxdataF  = (int32_t **)malloc16( fp->nb_antennas_rx*sizeof(int32_t *) );
-    }
+  for (th_id=0; th_id<RX_NB_TH_MAX; th_id++) {
+    common_vars->common_vars_rx_data_per_thread[th_id].rxdataF  = (int32_t **)malloc16( fp->nb_antennas_rx*sizeof(int32_t *) );
+  }
 
-    for (i=0; i<fp->nb_antennas_rx; i++) {
-      common_vars->rxdata[i] = (int32_t *) malloc16_clear( (2*(fp->samples_per_frame)+2048)*sizeof(int32_t) );
+  for (i=0; i<fp->nb_antennas_rx; i++) {
+    common_vars->rxdata[i] = (int32_t *) malloc16_clear( (2*(fp->samples_per_frame)+2048)*sizeof(int32_t) );
 
-      for (th_id=0; th_id<RX_NB_TH_MAX; th_id++) {
-        common_vars->common_vars_rx_data_per_thread[th_id].rxdataF[i] = (int32_t *)malloc16_clear( sizeof(int32_t)*(fp->samples_per_slot_wCP) );
-      }
+    for (th_id=0; th_id<RX_NB_TH_MAX; th_id++) {
+      common_vars->common_vars_rx_data_per_thread[th_id].rxdataF[i] = (int32_t *)malloc16_clear( sizeof(int32_t)*(fp->samples_per_slot_wCP) );
     }
   }
 
@@ -271,9 +312,6 @@ int init_nr_ue_signal(PHY_VARS_NR_UE *ue,
     }
   }
 
-  ue->scramblingID_pdcch = fp->Nid_cell;
-  nr_gold_pdcch(ue,fp->Nid_cell);
-
   //PDSCH DMRS init (eNB offset = 0)
   ue->nr_gold_pdsch[0] = (uint32_t ****)malloc16(fp->slots_per_frame*sizeof(uint32_t ***));
   uint32_t ****pdsch_dmrs = ue->nr_gold_pdsch[0];
@@ -293,12 +331,6 @@ int init_nr_ue_signal(PHY_VARS_NR_UE *ue,
     }
   }
 
-  // initializing the scrambling IDs for PDSCH DMRS
-  for (int i=0; i<2; i++)
-    ue->scramblingID[i]=fp->Nid_cell;
-
-  nr_gold_pdsch(ue,ue->scramblingID);
-
   // DLSCH
   for (gNB_id = 0; gNB_id < ue->n_connected_gNB; gNB_id++) {
     for (th_id=0; th_id<RX_NB_TH_MAX; th_id++) {
@@ -330,129 +362,119 @@ int init_nr_ue_signal(PHY_VARS_NR_UE *ue,
       ue->nr_srs_info->srs_estimated_channel_time_shifted[i] = (int32_t *) malloc16_clear(fp->ofdm_symbol_size*MAX_NUM_NR_SRS_SYMBOLS*sizeof(int32_t));
     }
 
-    if (abstraction_flag == 0) {
-      for (th_id=0; th_id<RX_NB_TH_MAX; th_id++) {
-        phy_init_nr_ue__PDSCH( ue->pdsch_vars[th_id][gNB_id], fp );
-      }
+    for (th_id=0; th_id<RX_NB_TH_MAX; th_id++) {
+      phy_init_nr_ue__PDSCH( ue->pdsch_vars[th_id][gNB_id], fp );
+    }
 
-      for (th_id=0; th_id<RX_NB_TH_MAX; th_id++) {
-        ue->pdsch_vars[th_id][gNB_id]->llr_shifts          = (uint8_t *)malloc16_clear(7*2*fp->N_RB_DL*12);
-        ue->pdsch_vars[th_id][gNB_id]->llr_shifts_p        = ue->pdsch_vars[0][gNB_id]->llr_shifts;
-        ue->pdsch_vars[th_id][gNB_id]->llr[1]              = (int16_t *)malloc16_clear( (8*(3*8*8448))*sizeof(int16_t) );
-        ue->pdsch_vars[th_id][gNB_id]->layer_llr[1]        = (int16_t *)malloc16_clear( (8*(3*8*8448))*sizeof(int16_t) );
-        ue->pdsch_vars[th_id][gNB_id]->llr128_2ndstream    = (int16_t **)malloc16_clear( sizeof(int16_t *) );
-      }
+    for (th_id=0; th_id<RX_NB_TH_MAX; th_id++) {
+      ue->pdsch_vars[th_id][gNB_id]->llr_shifts          = (uint8_t *)malloc16_clear(7*2*fp->N_RB_DL*12);
+      ue->pdsch_vars[th_id][gNB_id]->llr_shifts_p        = ue->pdsch_vars[0][gNB_id]->llr_shifts;
+      ue->pdsch_vars[th_id][gNB_id]->llr[1]              = (int16_t *)malloc16_clear( (8*(3*8*8448))*sizeof(int16_t) );
+      ue->pdsch_vars[th_id][gNB_id]->layer_llr[1]        = (int16_t *)malloc16_clear( (8*(3*8*8448))*sizeof(int16_t) );
+      ue->pdsch_vars[th_id][gNB_id]->llr128_2ndstream    = (int16_t **)malloc16_clear( sizeof(int16_t *) );
+    }
 
 
-      for (th_id=0; th_id<RX_NB_TH_MAX; th_id++) {
-        ue->pdsch_vars[th_id][gNB_id]->dl_ch_rho2_ext      = (int32_t **)malloc16_clear( 4*fp->nb_antennas_rx*sizeof(int32_t *) );
-      }
+    for (th_id=0; th_id<RX_NB_TH_MAX; th_id++) {
+      ue->pdsch_vars[th_id][gNB_id]->dl_ch_rho2_ext      = (int32_t **)malloc16_clear( 4*fp->nb_antennas_rx*sizeof(int32_t *) );
+    }
 
-      for (i=0; i<fp->nb_antennas_rx; i++)
-        for (j=0; j<4; j++) {
-          const int idx = (j*fp->nb_antennas_rx)+i;
-          const size_t num = 7*2*fp->N_RB_DL*12+4;
+    for (i=0; i<fp->nb_antennas_rx; i++)
+      for (j=0; j<4; j++) {
+        const int idx = (j*fp->nb_antennas_rx)+i;
+        const size_t num = 7*2*fp->N_RB_DL*12+4;
 
-          for (th_id=0; th_id<RX_NB_TH_MAX; th_id++) {
-            ue->pdsch_vars[th_id][gNB_id]->dl_ch_rho2_ext[idx] = (int32_t *)malloc16_clear( sizeof(int32_t) * num );
-          }
+        for (th_id=0; th_id<RX_NB_TH_MAX; th_id++) {
+          ue->pdsch_vars[th_id][gNB_id]->dl_ch_rho2_ext[idx] = (int32_t *)malloc16_clear( sizeof(int32_t) * num );
         }
+      }
 
-      //const size_t num = 7*2*fp->N_RB_DL*12+4;
-      for (k=0; k<8; k++) { //harq_pid
-        for (l=0; l<8; l++) { //round
-          for (th_id=0; th_id<RX_NB_TH_MAX; th_id++) {
-            ue->pdsch_vars[th_id][gNB_id]->rxdataF_comp1[k][l] = (int32_t **)malloc16_clear( 4*fp->nb_antennas_rx*sizeof(int32_t *) );
-            ue->pdsch_vars[th_id][gNB_id]->dl_ch_rho_ext[k][l] = (int32_t **)malloc16_clear( 4*fp->nb_antennas_rx*sizeof(int32_t *) );
-            ue->pdsch_vars[th_id][gNB_id]->dl_ch_mag1[k][l]    = (int32_t **)malloc16_clear( 4*fp->nb_antennas_rx*sizeof(int32_t *) );
-            ue->pdsch_vars[th_id][gNB_id]->dl_ch_magb1[k][l]   = (int32_t **)malloc16_clear( 4*fp->nb_antennas_rx*sizeof(int32_t *) );
-          }
+    //const size_t num = 7*2*fp->N_RB_DL*12+4;
+    for (k=0; k<8; k++) { //harq_pid
+      for (l=0; l<8; l++) { //round
+        for (th_id=0; th_id<RX_NB_TH_MAX; th_id++) {
+          ue->pdsch_vars[th_id][gNB_id]->rxdataF_comp1[k][l] = (int32_t **)malloc16_clear( 4*fp->nb_antennas_rx*sizeof(int32_t *) );
+          ue->pdsch_vars[th_id][gNB_id]->dl_ch_rho_ext[k][l] = (int32_t **)malloc16_clear( 4*fp->nb_antennas_rx*sizeof(int32_t *) );
+          ue->pdsch_vars[th_id][gNB_id]->dl_ch_mag1[k][l]    = (int32_t **)malloc16_clear( 4*fp->nb_antennas_rx*sizeof(int32_t *) );
+          ue->pdsch_vars[th_id][gNB_id]->dl_ch_magb1[k][l]   = (int32_t **)malloc16_clear( 4*fp->nb_antennas_rx*sizeof(int32_t *) );
+        }
 
-          for (int i=0; i<fp->nb_antennas_rx; i++)
-            for (int j=0; j<4; j++) { //frame_parms->nb_antennas_tx; j++)
-              const int idx = (j*fp->nb_antennas_rx)+i;
+        for (int i=0; i<fp->nb_antennas_rx; i++)
+          for (int j=0; j<4; j++) { //frame_parms->nb_antennas_tx; j++)
+            const int idx = (j*fp->nb_antennas_rx)+i;
 
-              for (th_id=0; th_id<RX_NB_TH_MAX; th_id++) {
-                ue->pdsch_vars[th_id][gNB_id]->dl_ch_rho_ext[k][l][idx] = (int32_t *)malloc16_clear(7*2*sizeof(int32_t)*(fp->N_RB_DL*12));
-                ue->pdsch_vars[th_id][gNB_id]->rxdataF_comp1[k][l][idx] = (int32_t *)malloc16_clear(7*2*sizeof(int32_t)*(fp->N_RB_DL*12));
-                ue->pdsch_vars[th_id][gNB_id]->dl_ch_mag1[k][l][idx]    = (int32_t *)malloc16_clear(7*2*sizeof(int32_t)*(fp->N_RB_DL*12));
-                ue->pdsch_vars[th_id][gNB_id]->dl_ch_magb1[k][l][idx]   = (int32_t *)malloc16_clear(7*2*sizeof(int32_t)*(fp->N_RB_DL*12));
-              }
+            for (th_id=0; th_id<RX_NB_TH_MAX; th_id++) {
+              ue->pdsch_vars[th_id][gNB_id]->dl_ch_rho_ext[k][l][idx] = (int32_t *)malloc16_clear(7*2*sizeof(int32_t)*(fp->N_RB_DL*12));
+              ue->pdsch_vars[th_id][gNB_id]->rxdataF_comp1[k][l][idx] = (int32_t *)malloc16_clear(7*2*sizeof(int32_t)*(fp->N_RB_DL*12));
+              ue->pdsch_vars[th_id][gNB_id]->dl_ch_mag1[k][l][idx]    = (int32_t *)malloc16_clear(7*2*sizeof(int32_t)*(fp->N_RB_DL*12));
+              ue->pdsch_vars[th_id][gNB_id]->dl_ch_magb1[k][l][idx]   = (int32_t *)malloc16_clear(7*2*sizeof(int32_t)*(fp->N_RB_DL*12));
             }
-        }
-      }
-
-      // 100 PRBs * 12 REs/PRB * 4 PDCCH SYMBOLS * 2 LLRs/RE
-      for (th_id=0; th_id<RX_NB_TH_MAX; th_id++) {
-        ue->pdcch_vars[th_id][gNB_id]->llr                 = (int16_t *)malloc16_clear( 2*4*100*12*sizeof(uint16_t) );
-        ue->pdcch_vars[th_id][gNB_id]->llr16               = (int16_t *)malloc16_clear( 2*4*100*12*sizeof(uint16_t) );
-        ue->pdcch_vars[th_id][gNB_id]->wbar                = (int16_t *)malloc16_clear( 2*4*100*12*sizeof(uint16_t) );
-        ue->pdcch_vars[th_id][gNB_id]->e_rx                = (int16_t *)malloc16_clear( 4*2*100*12 );
-        ue->pdcch_vars[th_id][gNB_id]->rxdataF_comp        = (int32_t **)malloc16_clear( 4*fp->nb_antennas_rx*sizeof(int32_t *) );
-        ue->pdcch_vars[th_id][gNB_id]->dl_ch_rho_ext       = (int32_t **)malloc16_clear( 4*fp->nb_antennas_rx*sizeof(int32_t *) );
-        ue->pdcch_vars[th_id][gNB_id]->rho                 = (int32_t **)malloc16( fp->nb_antennas_rx*sizeof(int32_t *) );
-        ue->pdcch_vars[th_id][gNB_id]->rxdataF_ext         = (int32_t **)malloc16_clear( 4*fp->nb_antennas_rx*sizeof(int32_t *) );
-        ue->pdcch_vars[th_id][gNB_id]->dl_ch_estimates_ext = (int32_t **)malloc16_clear( 4*fp->nb_antennas_rx*sizeof(int32_t *) );
-        // Channel estimates
-        ue->pdcch_vars[th_id][gNB_id]->dl_ch_estimates      = (int32_t **)malloc16_clear(4*fp->nb_antennas_rx*sizeof(int32_t *));
-        ue->pdcch_vars[th_id][gNB_id]->dl_ch_estimates_time = (int32_t **)malloc16_clear(4*fp->nb_antennas_rx*sizeof(int32_t *));
-
-        for (i=0; i<fp->nb_antennas_rx; i++) {
-          ue->pdcch_vars[th_id][gNB_id]->rho[i] = (int32_t *)malloc16_clear( sizeof(int32_t)*(100*12*4));
-
-          for (j=0; j<4; j++) {
-            int idx = (j*fp->nb_antennas_rx)+i;
-            ue->pdcch_vars[th_id][gNB_id]->dl_ch_estimates[idx] = (int32_t *)malloc16_clear( sizeof(int32_t)*fp->symbols_per_slot*(fp->ofdm_symbol_size+LTE_CE_FILTER_LENGTH) );
-            ue->pdcch_vars[th_id][gNB_id]->dl_ch_estimates_time[idx] = (int32_t *)malloc16_clear( sizeof(int32_t)*fp->ofdm_symbol_size*2 );
-            //  size_t num = 7*2*fp->N_RB_DL*12;
-            size_t num = 4*273*12;  // 4 symbols, 100 PRBs, 12 REs per PRB
-            ue->pdcch_vars[th_id][gNB_id]->rxdataF_comp[idx]        = (int32_t *)malloc16_clear(sizeof(int32_t) * num);
-            ue->pdcch_vars[th_id][gNB_id]->dl_ch_rho_ext[idx]       = (int32_t *)malloc16_clear(sizeof(int32_t) * num);
-            ue->pdcch_vars[th_id][gNB_id]->rxdataF_ext[idx]         = (int32_t *)malloc16_clear(sizeof(int32_t) * num);
-            ue->pdcch_vars[th_id][gNB_id]->dl_ch_estimates_ext[idx] = (int32_t *)malloc16_clear(sizeof(int32_t) * num);
           }
-        }
       }
+    }
 
-      // PBCH
-      pbch_vars[gNB_id]->rxdataF_ext         = (int32_t **)malloc16( fp->nb_antennas_rx*sizeof(int32_t *) );
-      pbch_vars[gNB_id]->rxdataF_comp        = (int32_t **)malloc16_clear( 4*fp->nb_antennas_rx*sizeof(int32_t *) );
-      pbch_vars[gNB_id]->dl_ch_estimates     = (int32_t **)malloc16_clear( 4*fp->nb_antennas_rx*sizeof(int32_t *) );
-      pbch_vars[gNB_id]->dl_ch_estimates_ext = (int32_t **)malloc16_clear( 4*fp->nb_antennas_rx*sizeof(int32_t *) );
-      pbch_vars[gNB_id]->dl_ch_estimates_time = (int32_t **)malloc16_clear( 4*fp->nb_antennas_rx*sizeof(int32_t *) );
-      pbch_vars[gNB_id]->llr                 = (int16_t *)malloc16_clear( 1920 ); //
-      prach_vars[gNB_id]->prachF             = (int16_t *)malloc16_clear( sizeof(int)*(7*2*sizeof(int)*(fp->ofdm_symbol_size*12)) );
-      prach_vars[gNB_id]->prach              = (int16_t *)malloc16_clear( sizeof(int)*(7*2*sizeof(int)*(fp->ofdm_symbol_size*12)) );
+    // 100 PRBs * 12 REs/PRB * 4 PDCCH SYMBOLS * 2 LLRs/RE
+    for (th_id=0; th_id<RX_NB_TH_MAX; th_id++) {
+      ue->pdcch_vars[th_id][gNB_id]->llr                 = (int16_t *)malloc16_clear( 2*4*100*12*sizeof(uint16_t) );
+      ue->pdcch_vars[th_id][gNB_id]->llr16               = (int16_t *)malloc16_clear( 2*4*100*12*sizeof(uint16_t) );
+      ue->pdcch_vars[th_id][gNB_id]->wbar                = (int16_t *)malloc16_clear( 2*4*100*12*sizeof(uint16_t) );
+      ue->pdcch_vars[th_id][gNB_id]->e_rx                = (int16_t *)malloc16_clear( 4*2*100*12 );
+      ue->pdcch_vars[th_id][gNB_id]->rxdataF_comp        = (int32_t **)malloc16_clear( 4*fp->nb_antennas_rx*sizeof(int32_t *) );
+      ue->pdcch_vars[th_id][gNB_id]->dl_ch_rho_ext       = (int32_t **)malloc16_clear( 4*fp->nb_antennas_rx*sizeof(int32_t *) );
+      ue->pdcch_vars[th_id][gNB_id]->rho                 = (int32_t **)malloc16( fp->nb_antennas_rx*sizeof(int32_t *) );
+      ue->pdcch_vars[th_id][gNB_id]->rxdataF_ext         = (int32_t **)malloc16_clear( 4*fp->nb_antennas_rx*sizeof(int32_t *) );
+      ue->pdcch_vars[th_id][gNB_id]->dl_ch_estimates_ext = (int32_t **)malloc16_clear( 4*fp->nb_antennas_rx*sizeof(int32_t *) );
+      // Channel estimates
+      ue->pdcch_vars[th_id][gNB_id]->dl_ch_estimates      = (int32_t **)malloc16_clear(4*fp->nb_antennas_rx*sizeof(int32_t *));
+      ue->pdcch_vars[th_id][gNB_id]->dl_ch_estimates_time = (int32_t **)malloc16_clear(4*fp->nb_antennas_rx*sizeof(int32_t *));
 
       for (i=0; i<fp->nb_antennas_rx; i++) {
-        pbch_vars[gNB_id]->rxdataF_ext[i]    = (int32_t *)malloc16_clear( sizeof(int32_t)*20*12*4 );
+        ue->pdcch_vars[th_id][gNB_id]->rho[i] = (int32_t *)malloc16_clear( sizeof(int32_t)*(100*12*4));
 
-        for (j=0; j<4; j++) {//fp->nb_antennas_tx;j++) {
+        for (j=0; j<4; j++) {
           int idx = (j*fp->nb_antennas_rx)+i;
-          pbch_vars[gNB_id]->rxdataF_comp[idx]        = (int32_t *)malloc16_clear( sizeof(int32_t)*20*12*4 );
-          pbch_vars[gNB_id]->dl_ch_estimates[idx]     = (int32_t *)malloc16_clear( sizeof(int32_t)*7*2*sizeof(int)*(fp->ofdm_symbol_size) );
-          pbch_vars[gNB_id]->dl_ch_estimates_time[idx]= (int32_t *)malloc16_clear( sizeof(int32_t)*7*2*sizeof(int)*(fp->ofdm_symbol_size) );
-          pbch_vars[gNB_id]->dl_ch_estimates_ext[idx] = (int32_t *)malloc16_clear( sizeof(int32_t)*20*12*4 );
+          ue->pdcch_vars[th_id][gNB_id]->dl_ch_estimates[idx] = (int32_t *)malloc16_clear( sizeof(int32_t)*fp->symbols_per_slot*(fp->ofdm_symbol_size+LTE_CE_FILTER_LENGTH) );
+          ue->pdcch_vars[th_id][gNB_id]->dl_ch_estimates_time[idx] = (int32_t *)malloc16_clear( sizeof(int32_t)*fp->ofdm_symbol_size*2 );
+          //  size_t num = 7*2*fp->N_RB_DL*12;
+          size_t num = 4*273*12;  // 4 symbols, 100 PRBs, 12 REs per PRB
+          ue->pdcch_vars[th_id][gNB_id]->rxdataF_comp[idx]        = (int32_t *)malloc16_clear(sizeof(int32_t) * num);
+          ue->pdcch_vars[th_id][gNB_id]->dl_ch_rho_ext[idx]       = (int32_t *)malloc16_clear(sizeof(int32_t) * num);
+          ue->pdcch_vars[th_id][gNB_id]->rxdataF_ext[idx]         = (int32_t *)malloc16_clear(sizeof(int32_t) * num);
+          ue->pdcch_vars[th_id][gNB_id]->dl_ch_estimates_ext[idx] = (int32_t *)malloc16_clear(sizeof(int32_t) * num);
         }
       }
     }
 
+    // PBCH
+    pbch_vars[gNB_id]->rxdataF_ext         = (int32_t **)malloc16( fp->nb_antennas_rx*sizeof(int32_t *) );
+    pbch_vars[gNB_id]->rxdataF_comp        = (int32_t **)malloc16_clear( 4*fp->nb_antennas_rx*sizeof(int32_t *) );
+    pbch_vars[gNB_id]->dl_ch_estimates     = (int32_t **)malloc16_clear( 4*fp->nb_antennas_rx*sizeof(int32_t *) );
+    pbch_vars[gNB_id]->dl_ch_estimates_ext = (int32_t **)malloc16_clear( 4*fp->nb_antennas_rx*sizeof(int32_t *) );
+    pbch_vars[gNB_id]->dl_ch_estimates_time = (int32_t **)malloc16_clear( 4*fp->nb_antennas_rx*sizeof(int32_t *) );
+    pbch_vars[gNB_id]->llr                 = (int16_t *)malloc16_clear( 1920 ); //
+    prach_vars[gNB_id]->prachF             = (int16_t *)malloc16_clear( sizeof(int)*(7*2*sizeof(int)*(fp->ofdm_symbol_size*12)) );
+    prach_vars[gNB_id]->prach              = (int16_t *)malloc16_clear( sizeof(int)*(7*2*sizeof(int)*(fp->ofdm_symbol_size*12)) );
+
+    for (i=0; i<fp->nb_antennas_rx; i++) {
+      pbch_vars[gNB_id]->rxdataF_ext[i]    = (int32_t *)malloc16_clear( sizeof(int32_t)*20*12*4 );
+
+      for (j=0; j<4; j++) {//fp->nb_antennas_tx;j++) {
+        int idx = (j*fp->nb_antennas_rx)+i;
+        pbch_vars[gNB_id]->rxdataF_comp[idx]        = (int32_t *)malloc16_clear( sizeof(int32_t)*20*12*4 );
+        pbch_vars[gNB_id]->dl_ch_estimates[idx]     = (int32_t *)malloc16_clear( sizeof(int32_t)*7*2*sizeof(int)*(fp->ofdm_symbol_size) );
+        pbch_vars[gNB_id]->dl_ch_estimates_time[idx]= (int32_t *)malloc16_clear( sizeof(int32_t)*7*2*sizeof(int)*(fp->ofdm_symbol_size) );
+        pbch_vars[gNB_id]->dl_ch_estimates_ext[idx] = (int32_t *)malloc16_clear( sizeof(int32_t)*20*12*4 );
+      }
+    }
+
     pbch_vars[gNB_id]->decoded_output = (uint8_t *)malloc16_clear(64);
   }
 
   // initialization for the last instance of pdsch_vars (used for MU-MIMO)
   for (th_id=0; th_id<RX_NB_TH_MAX; th_id++) {
-    ue->pdsch_vars[th_id][gNB_id] = (NR_UE_PDSCH *)malloc16_clear(sizeof(NR_UE_PDSCH));
-  }
-
-  if (abstraction_flag == 0) {
-    for (th_id=0; th_id<RX_NB_TH_MAX; th_id++) {
-      //phy_init_lte_ue__PDSCH( ue->pdsch_vars[th_id][gNB_id], fp );
-      ue->pdsch_vars[th_id][gNB_id]->llr[1] = (int16_t *)malloc16_clear((8*(3*8*8448))*sizeof(int16_t));
-      ue->pdsch_vars[th_id][gNB_id]->layer_llr[1] = (int16_t *)malloc16_clear((8*(3*8*8448))*sizeof(int16_t));
-    }
-  } else { //abstraction == 1
-    ue->sinr_dB = (double *) malloc16_clear( fp->N_RB_DL*12*sizeof(double) );
+    ue->pdsch_vars[th_id][gNB_id] = malloc16_clear(sizeof(NR_UE_PDSCH));
+    ue->pdsch_vars[th_id][gNB_id]->llr[1] = malloc16_clear((8*(3*8*8448))*sizeof(int16_t));
+    ue->pdsch_vars[th_id][gNB_id]->layer_llr[1] = malloc16_clear((8*(3*8*8448))*sizeof(int16_t));
   }
 
   ue->sinr_CQI_dB = (double *) malloc16_clear( fp->N_RB_DL*12*sizeof(double) );
@@ -473,25 +495,224 @@ int init_nr_ue_signal(PHY_VARS_NR_UE *ue,
   return 0;
 }
 
-void init_nr_ue_transport(PHY_VARS_NR_UE *ue,
-                          int abstraction_flag) {
+void term_nr_ue_signal(PHY_VARS_NR_UE *ue, int nb_connected_gNB)
+{
+  const NR_DL_FRAME_PARMS* fp = &ue->frame_parms;
+  phy_term_nr_top();
+
+  for (int th_id = 0; th_id < RX_NB_TH_MAX; th_id++) {
+    for (int gNB_id = 0; gNB_id < ue->n_connected_gNB; gNB_id++) {
+      phy_term_nr_ue_PUSCH(ue->pusch_vars[th_id][gNB_id]);
+      free_and_zero(ue->pusch_vars[th_id][gNB_id]);
+      free_and_zero(ue->pucch_vars[th_id][gNB_id]);
+    }
+  }
+
+  for (int slot = 0; slot < fp->slots_per_frame; slot++) {
+    for (int symb = 0; symb < fp->symbols_per_slot; symb++) {
+      for (int q = 0; q < NR_MAX_NB_CODEWORDS; q++)
+        free_and_zero(ue->nr_gold_pusch_dmrs[slot][symb][q]);
+      free_and_zero(ue->nr_gold_pusch_dmrs[slot][symb]);
+    }
+    free_and_zero(ue->nr_gold_pusch_dmrs[slot]);
+  }
+  free_and_zero(ue->nr_gold_pusch_dmrs);
+
+  NR_UE_COMMON* common_vars = &ue->common_vars;
+
+  for (int i = 0; i < fp->nb_antennas_tx; i++) {
+    free_and_zero(common_vars->txdata[i]);
+    free_and_zero(common_vars->txdataF[i]);
+  }
+
+  free_and_zero(common_vars->txdata);
+  free_and_zero(common_vars->txdataF);
+
+  for (int i = 0; i < fp->nb_antennas_rx; i++) {
+    free_and_zero(common_vars->rxdata[i]);
+    for (int th_id = 0; th_id < RX_NB_TH_MAX; th_id++)
+      free_and_zero(common_vars->common_vars_rx_data_per_thread[th_id].rxdataF[i]);
+  }
+  for (int th_id = 0; th_id < RX_NB_TH_MAX; th_id++) {
+    free_and_zero(common_vars->common_vars_rx_data_per_thread[th_id].rxdataF);
+  }
+  free_and_zero(common_vars->rxdata);
+
+  for (int slot = 0; slot < fp->slots_per_frame; slot++) {
+    for (int symb = 0; symb < fp->symbols_per_slot; symb++)
+      free_and_zero(ue->nr_gold_pdcch[0][slot][symb]);
+    free_and_zero(ue->nr_gold_pdcch[0][slot]);
+  }
+  free_and_zero(ue->nr_gold_pdcch[0]);
+
+  for (int slot=0; slot<fp->slots_per_frame; slot++) {
+    for (int symb=0; symb<fp->symbols_per_slot; symb++) {
+      for (int q=0; q<NR_MAX_NB_CODEWORDS; q++) 
+        free_and_zero(ue->nr_gold_pdsch[0][slot][symb][q]);
+      free_and_zero(ue->nr_gold_pdsch[0][slot][symb]);
+    }
+    free_and_zero(ue->nr_gold_pdsch[0][slot]);
+  }
+  free_and_zero(ue->nr_gold_pdsch[0]);
+
+  for (int gNB_id = 0; gNB_id < ue->n_connected_gNB; gNB_id++) {
+
+    // PDSCH
+    for (int th_id = 0; th_id < RX_NB_TH_MAX; th_id++) {
+      for (int k = 0; k < 8; k++) { //harq_pid
+        for (int l = 0; l < 8; l++) { //round
+          for (int i = 0; i < fp->nb_antennas_rx; i++) {
+            for (int j = 0; j < 4; j++) { //frame_parms->nb_antennas_tx; j++)
+              const int idx = j * fp->nb_antennas_rx + i;
+              free_and_zero(ue->pdsch_vars[th_id][gNB_id]->dl_ch_rho_ext[k][l][idx]);
+              free_and_zero(ue->pdsch_vars[th_id][gNB_id]->rxdataF_comp1[k][l][idx]);
+              free_and_zero(ue->pdsch_vars[th_id][gNB_id]->dl_ch_mag1[k][l][idx]);
+              free_and_zero(ue->pdsch_vars[th_id][gNB_id]->dl_ch_magb1[k][l][idx]);
+            }
+          }
+
+          free_and_zero(ue->pdsch_vars[th_id][gNB_id]->rxdataF_comp1[k][l]);
+          free_and_zero(ue->pdsch_vars[th_id][gNB_id]->dl_ch_rho_ext[k][l]);
+          free_and_zero(ue->pdsch_vars[th_id][gNB_id]->dl_ch_mag1[k][l]);
+          free_and_zero(ue->pdsch_vars[th_id][gNB_id]->dl_ch_magb1[k][l]);
+        }
+      }
+
+      for (int i = 0; i < fp->nb_antennas_rx; i++) {
+        for (int j = 0; j < 4; j++) {
+          const int idx = (j*fp->nb_antennas_rx)+i;
+          free_and_zero(ue->pdsch_vars[th_id][gNB_id]->dl_ch_rho2_ext[idx]);
+        }
+      }
+      free_and_zero(ue->pdsch_vars[th_id][gNB_id]->llr_shifts);
+      free_and_zero(ue->pdsch_vars[th_id][gNB_id]->llr[1]);
+      free_and_zero(ue->pdsch_vars[th_id][gNB_id]->layer_llr[1]);
+      free_and_zero(ue->pdsch_vars[th_id][gNB_id]->llr128_2ndstream);
+      free_and_zero(ue->pdsch_vars[th_id][gNB_id]->dl_ch_rho2_ext);
+
+      phy_term_nr_ue__PDSCH(ue->pdsch_vars[th_id][gNB_id], fp);
+      free_and_zero(ue->pdsch_vars[th_id][gNB_id]);
+    }
+
+    for (int th_id = 0; th_id < RX_NB_TH_MAX; th_id++) {
+      for (int i = 0; i < fp->nb_antennas_rx; i++) {
+        for (int j = 0; j < 4; j++) {
+          int idx = j * fp->nb_antennas_rx + i;
+          free_and_zero(ue->pdcch_vars[th_id][gNB_id]->dl_ch_estimates[idx]);
+          free_and_zero(ue->pdcch_vars[th_id][gNB_id]->dl_ch_estimates_time[idx]);
+          free_and_zero(ue->pdcch_vars[th_id][gNB_id]->rxdataF_comp[idx]);
+          free_and_zero(ue->pdcch_vars[th_id][gNB_id]->dl_ch_rho_ext[idx]);
+          free_and_zero(ue->pdcch_vars[th_id][gNB_id]->rxdataF_ext[idx]);
+          free_and_zero(ue->pdcch_vars[th_id][gNB_id]->dl_ch_estimates_ext[idx]);
+        }
+        free_and_zero(ue->pdcch_vars[th_id][gNB_id]->rho[i]);
+      }
+      free_and_zero(ue->pdcch_vars[th_id][gNB_id]->llr);
+      free_and_zero(ue->pdcch_vars[th_id][gNB_id]->llr16);
+      free_and_zero(ue->pdcch_vars[th_id][gNB_id]->wbar);
+      free_and_zero(ue->pdcch_vars[th_id][gNB_id]->e_rx);
+      free_and_zero(ue->pdcch_vars[th_id][gNB_id]->rxdataF_comp);
+      free_and_zero(ue->pdcch_vars[th_id][gNB_id]->dl_ch_rho_ext);
+      free_and_zero(ue->pdcch_vars[th_id][gNB_id]->rho);
+      free_and_zero(ue->pdcch_vars[th_id][gNB_id]->rxdataF_ext);
+      free_and_zero(ue->pdcch_vars[th_id][gNB_id]->dl_ch_estimates_ext);
+      free_and_zero(ue->pdcch_vars[th_id][gNB_id]->dl_ch_estimates);
+      free_and_zero(ue->pdcch_vars[th_id][gNB_id]->dl_ch_estimates_time);
+
+      free_and_zero(ue->pdcch_vars[th_id][gNB_id]);
+    }
+
+    for (int i = 0; i < fp->nb_antennas_rx; i++) {
+      free_and_zero(ue->nr_srs_info->srs_received_signal[i]);
+      free_and_zero(ue->nr_srs_info->srs_ls_estimated_channel[i]);
+      free_and_zero(ue->nr_srs_info->srs_estimated_channel_freq[i]);
+      free_and_zero(ue->nr_srs_info->srs_estimated_channel_time[i]);
+      free_and_zero(ue->nr_srs_info->srs_estimated_channel_time_shifted[i]);
+    }
+    free_and_zero(ue->nr_srs_info->srs_generated_signal);
+    free_and_zero(ue->nr_srs_info->noise_power);
+    free_and_zero(ue->nr_srs_info->srs_received_signal);
+    free_and_zero(ue->nr_srs_info->srs_ls_estimated_channel);
+    free_and_zero(ue->nr_srs_info->srs_estimated_channel_freq);
+    free_and_zero(ue->nr_srs_info->srs_estimated_channel_time);
+    free_and_zero(ue->nr_srs_info->srs_estimated_channel_time_shifted);
+    free_and_zero(ue->nr_srs_info);
+
+    free_and_zero(ue->srs_vars[gNB_id]);
+
+    for (int i = 0; i < fp->nb_antennas_rx; i++) {
+      free_and_zero(ue->pbch_vars[gNB_id]->rxdataF_ext[i]);
+
+      for (int j = 0; j < 4; j++) {
+        int idx = (j*fp->nb_antennas_rx)+i;
+        free_and_zero(ue->pbch_vars[gNB_id]->rxdataF_comp[idx]);
+        free_and_zero(ue->pbch_vars[gNB_id]->dl_ch_estimates[idx]);
+        free_and_zero(ue->pbch_vars[gNB_id]->dl_ch_estimates_time[idx]);
+        free_and_zero(ue->pbch_vars[gNB_id]->dl_ch_estimates_ext[idx]);
+      }
+    }
+
+    free_and_zero(ue->pbch_vars[gNB_id]->rxdataF_ext);
+    free_and_zero(ue->pbch_vars[gNB_id]->rxdataF_comp);
+    free_and_zero(ue->pbch_vars[gNB_id]->dl_ch_estimates);
+    free_and_zero(ue->pbch_vars[gNB_id]->dl_ch_estimates_ext);
+    free_and_zero(ue->pbch_vars[gNB_id]->dl_ch_estimates_time);
+    free_and_zero(ue->pbch_vars[gNB_id]->llr);
+    free_and_zero(ue->pbch_vars[gNB_id]->decoded_output);
+    free_and_zero(ue->pbch_vars[gNB_id]);
+
+    free_and_zero(ue->prach_vars[gNB_id]->prachF);
+    free_and_zero(ue->prach_vars[gNB_id]->prach);
+    free_and_zero(ue->prach_vars[gNB_id]);
+  }
+
+  const int gNB_id = ue->n_connected_gNB;
+  for (int th_id = 0; th_id < RX_NB_TH_MAX; th_id++) {
+    free_and_zero(ue->pdsch_vars[th_id][gNB_id]->llr[1]);
+    free_and_zero(ue->pdsch_vars[th_id][gNB_id]->layer_llr[1]);
+    free_and_zero(ue->pdsch_vars[th_id][gNB_id]);
+  }
+
+  free_and_zero(ue->sinr_CQI_dB);
+}
+
+void term_nr_ue_transport(PHY_VARS_NR_UE *ue)
+{
+  const int N_RB_DL = ue->frame_parms.N_RB_DL;
+  for (int i = 0; i < NUMBER_OF_CONNECTED_gNB_MAX; i++) {
+    for (int j = 0; j < 2; j++) {
+      for (int k = 0; k < RX_NB_TH_MAX; k++) {
+        free_nr_ue_dlsch(&ue->dlsch[k][i][j], N_RB_DL);
+        free_nr_ue_ulsch(&ue->ulsch[k][i][j], N_RB_DL);
+      }
+    }
+
+    free_nr_ue_dlsch(&ue->dlsch_SI[i], N_RB_DL);
+    free_nr_ue_dlsch(&ue->dlsch_ra[i], N_RB_DL);
+  }
+
+  free_nr_ue_dlsch(&ue->dlsch_MCH[0], N_RB_DL);
+}
+
+void init_nr_ue_transport(PHY_VARS_NR_UE *ue)
+{
   for (int i = 0; i < NUMBER_OF_CONNECTED_gNB_MAX; i++) {
     for (int j=0; j<2; j++) {
       for (int k=0; k<RX_NB_TH_MAX; k++) {
-        AssertFatal((ue->dlsch[k][i][j]  = new_nr_ue_dlsch(1,NR_MAX_DLSCH_HARQ_PROCESSES,NSOFT,MAX_LDPC_ITERATIONS,ue->frame_parms.N_RB_DL, abstraction_flag))!=NULL,"Can't get ue dlsch structures\n");
+        AssertFatal((ue->dlsch[k][i][j]  = new_nr_ue_dlsch(1,NR_MAX_DLSCH_HARQ_PROCESSES,NSOFT,MAX_LDPC_ITERATIONS,ue->frame_parms.N_RB_DL))!=NULL,"Can't get ue dlsch structures\n");
         LOG_D(PHY,"dlsch[%d][%d][%d] => %p\n",k,i,j,ue->dlsch[k][i][j]);
-        AssertFatal((ue->ulsch[k][i][j]  = new_nr_ue_ulsch(ue->frame_parms.N_RB_UL, NR_MAX_ULSCH_HARQ_PROCESSES, abstraction_flag))!=NULL,"Can't get ue ulsch structures\n");
+        AssertFatal((ue->ulsch[k][i][j]  = new_nr_ue_ulsch(ue->frame_parms.N_RB_UL, NR_MAX_ULSCH_HARQ_PROCESSES))!=NULL,"Can't get ue ulsch structures\n");
         LOG_D(PHY,"ulsch[%d][%d][%d] => %p\n",k,i,j,ue->ulsch[k][i][j]);
       }
     }
 
-    ue->dlsch_SI[i]  = new_nr_ue_dlsch(1,1,NSOFT,MAX_LDPC_ITERATIONS,ue->frame_parms.N_RB_DL, abstraction_flag);
-    ue->dlsch_ra[i]  = new_nr_ue_dlsch(1,1,NSOFT,MAX_LDPC_ITERATIONS,ue->frame_parms.N_RB_DL, abstraction_flag);
+    ue->dlsch_SI[i]  = new_nr_ue_dlsch(1,1,NSOFT,MAX_LDPC_ITERATIONS,ue->frame_parms.N_RB_DL);
+    ue->dlsch_ra[i]  = new_nr_ue_dlsch(1,1,NSOFT,MAX_LDPC_ITERATIONS,ue->frame_parms.N_RB_DL);
     ue->transmission_mode[i] = ue->frame_parms.nb_antenna_ports_gNB==1 ? 1 : 2;
   }
 
   //ue->frame_parms.pucch_config_common.deltaPUCCH_Shift = 1;
-  ue->dlsch_MCH[0]  = new_nr_ue_dlsch(1,NR_MAX_DLSCH_HARQ_PROCESSES,NSOFT,MAX_LDPC_ITERATIONS_MBSFN,ue->frame_parms.N_RB_DL,0);
+  ue->dlsch_MCH[0]  = new_nr_ue_dlsch(1,NR_MAX_DLSCH_HARQ_PROCESSES,NSOFT,MAX_LDPC_ITERATIONS_MBSFN,ue->frame_parms.N_RB_DL);
 
   for(int i=0; i<5; i++)
     ue->dl_stats[i] = 0;
@@ -555,3 +776,9 @@ void phy_init_nr_top(PHY_VARS_NR_UE *ue) {
   //init_unscrambling_lut();
   //set_taus_seed(1328);
 }
+
+void phy_term_nr_top(void)
+{
+  free_ul_reference_signal_sequences();
+  free_context_synchro_nr();
+}
diff --git a/openair1/PHY/INIT/phy_init.h b/openair1/PHY/INIT/phy_init.h
index dd9232de83ac744a38bf835cea367c8fec8d454b..8648dd7d82c70fe4fae0592b1a7636818a54a3cb 100644
--- a/openair1/PHY/INIT/phy_init.h
+++ b/openair1/PHY/INIT/phy_init.h
@@ -57,6 +57,7 @@ int l1_north_init_eNB(void);
 int phy_init_top(LTE_DL_FRAME_PARMS *frame_parms);
 
 void phy_init_nr_top(PHY_VARS_NR_UE *ue);
+void phy_term_nr_top(void);
 
 
 /*!
@@ -395,8 +396,9 @@ int nr_get_ssb_start_symbol(NR_DL_FRAME_PARMS *fp,uint8_t i_ssb);
 int nr_init_frame_parms(nfapi_nr_config_request_scf_t *config, NR_DL_FRAME_PARMS *frame_parms);
 int nr_init_frame_parms_ue(NR_DL_FRAME_PARMS *frame_parms, fapi_nr_config_request_t *config, uint16_t nr_band);
 void nr_init_frame_parms_ue_sa(NR_DL_FRAME_PARMS *frame_parms, uint64_t downlink_frequency, int32_t uplink_frequency_offset, uint8_t mu, uint16_t nr_band);
-int init_nr_ue_signal(PHY_VARS_NR_UE *ue,int nb_connected_eNB,uint8_t abstraction_flag);
-void init_nr_ue_transport(PHY_VARS_NR_UE *ue,int abstraction_flag);
+int init_nr_ue_signal(PHY_VARS_NR_UE *ue,int nb_connected_eNB);
+void term_nr_ue_signal(PHY_VARS_NR_UE *ue, int nb_connected_gNB);
+void init_nr_ue_transport(PHY_VARS_NR_UE *ue);
 void init_N_TA_offset(PHY_VARS_NR_UE *ue);
 void nr_dump_frame_parms(NR_DL_FRAME_PARMS *frame_parms);
 int phy_init_nr_gNB(PHY_VARS_gNB *gNB, unsigned char is_secondary_gNB, unsigned char lowmem_flag);
@@ -405,11 +407,13 @@ void nr_phy_config_request_sim(PHY_VARS_gNB *gNB,int N_RB_DL,int N_RB_UL,int mu,
 void phy_free_nr_gNB(PHY_VARS_gNB *gNB);
 int l1_north_init_gNB(void);
 void init_nr_transport(PHY_VARS_gNB *gNB);
+void reset_nr_transport(PHY_VARS_gNB *gNB);
 
 void init_dfts(void);
 
 void fill_subframe_mask(PHY_VARS_eNB *eNB);
 void init_DLSCH_struct(PHY_VARS_gNB *gNB, processingData_L1tx_t *msg);
+void reset_DLSCH_struct(const PHY_VARS_gNB *gNB, processingData_L1tx_t *msg);
 
 /** @} */
 #endif
diff --git a/openair1/PHY/LTE_UE_TRANSPORT/dlsch_demodulation.c b/openair1/PHY/LTE_UE_TRANSPORT/dlsch_demodulation.c
index a7054a44d2474df6d6d36297853fc8f0ffb3a9ea..0b665737a7beb1ae27427d07a98a558a82874ed6 100644
--- a/openair1/PHY/LTE_UE_TRANSPORT/dlsch_demodulation.c
+++ b/openair1/PHY/LTE_UE_TRANSPORT/dlsch_demodulation.c
@@ -6481,7 +6481,7 @@ void dump_dlsch2(PHY_VARS_UE *ue,uint8_t eNB_id,uint8_t subframe,unsigned int *c
   sprintf(fname,"dlsch%d_rxF_r%d_uespec0.m",eNB_id,round);
   sprintf(vname,"dl%d_rxF_r%d_uespec0",eNB_id,round);
   LOG_M(fname,vname,ue->pdsch_vars[ue->current_thread_id[subframe]][eNB_id]->rxdataF_uespec_pilots[0],
-        12*(ue->frame_parms.N_RB_DL)*NSYMB,1,1);
+        12*(ue->frame_parms.N_RB_DL),1,1);
   /*
     LOG_M("dlsch%d_ch_ext01.m","dl01_ch0_ext",pdsch_vars[eNB_id]->dl_ch_estimates_ext[1],12*N_RB_DL*NSYMB,1,1);
     LOG_M("dlsch%d_ch_ext10.m","dl10_ch0_ext",pdsch_vars[eNB_id]->dl_ch_estimates_ext[2],12*N_RB_DL*NSYMB,1,1);
diff --git a/openair1/PHY/NR_REFSIG/ul_ref_seq_nr.c b/openair1/PHY/NR_REFSIG/ul_ref_seq_nr.c
index 4a419ae926dd3f71e4b2503dc912c84a3c9473bf..c3c4c7a2ee52473ca086243873f21ae0ef677acc 100644
--- a/openair1/PHY/NR_REFSIG/ul_ref_seq_nr.c
+++ b/openair1/PHY/NR_REFSIG/ul_ref_seq_nr.c
@@ -122,23 +122,20 @@ int16_t *base_sequence_less_than_36(unsigned int M_ZC,
 *********************************************************************/
 
 int16_t get_index_for_dmrs_lowpapr_seq(int16_t num_dmrs_res) {
-  
-  int16_t index = -1;
- 
-  if (num_dmrs_res >= dmrs_ul_allocated_res[(MAX_INDEX_DMRS_UL_ALLOCATED_REs-1)]) 
+
+  int16_t index = num_dmrs_res/6 - 1;
+
+  if (index >= MAX_INDEX_DMRS_UL_ALLOCATED_REs)
     index = MAX_INDEX_DMRS_UL_ALLOCATED_REs-1;
-  else 
-    index = (num_dmrs_res/6) -1;
 
   for (;index >= 0; index--) {
     if (dmrs_ul_allocated_res[index] == num_dmrs_res)
       break;
-
   }
 
-  LOG_D(PHY, "num_dmrs_res: %d    INDEX RETURNED:  %d", num_dmrs_res, index);  
-  return index;  
+  LOG_D(PHY, "num_dmrs_res: %d    INDEX RETURNED:  %d", num_dmrs_res, index);
 
+  return index;
 }
 
 /*******************************************************************
@@ -204,6 +201,11 @@ int16_t *base_sequence_36_or_larger(unsigned int Msc_RS,
 
 void generate_lowpapr_typ1_refsig_sequences(unsigned int scaling)
 {
+  /* prevent multiple calls, relevant when both UE & gNB initialize this */
+  static bool already_called = false;
+  if (already_called) return;
+  already_called = true;
+
 	unsigned int u,Msc_RS;
   unsigned int v = 0; // sequence hopping and group hopping are not supported yet
 
@@ -223,6 +225,11 @@ void generate_lowpapr_typ1_refsig_sequences(unsigned int scaling)
 
 void generate_ul_reference_signal_sequences(unsigned int scaling)
 {
+  /* prevent multiple calls, relevant when both UE & gNB initialize this */
+  static bool already_called = false;
+  if (already_called) return;
+  already_called = true;
+
 	unsigned int u,v,Msc_RS;
 
 #if 0
@@ -295,10 +302,10 @@ void free_ul_reference_signal_sequences(void)
     for (u=0; u < U_GROUP_NUMBER; u++) {
       for (v=0; v < V_BASE_SEQUENCE_NUMBER; v++) {
         if (rv_ul_ref_sig[u][v][Msc_RS])
-          free16(rv_ul_ref_sig[u][v][Msc_RS],2*sizeof(int16_t)*ul_allocated_re[Msc_RS]);
+          free_and_zero(rv_ul_ref_sig[u][v][Msc_RS]);
         if ((v==0) && (Msc_RS < MAX_INDEX_DMRS_UL_ALLOCATED_REs))
           if (dmrs_lowpaprtype1_ul_ref_sig[u][v][Msc_RS])
-            free16(dmrs_lowpaprtype1_ul_ref_sig[u][v][Msc_RS],2*sizeof(int16_t)*dmrs_ul_allocated_res[Msc_RS]);        
+            free_and_zero(dmrs_lowpaprtype1_ul_ref_sig[u][v][Msc_RS]);
       }
     }
   }
@@ -321,7 +328,7 @@ void free_gnb_lowpapr_sequences(void)
     v=0;
     for (u=0; u < U_GROUP_NUMBER; u++) {      
       if (gNB_dmrs_lowpaprtype1_sequence[u][v][Msc_RS])
-        free16(gNB_dmrs_lowpaprtype1_sequence[u][v][Msc_RS],2*sizeof(int16_t)*dmrs_ul_allocated_res[Msc_RS]);
+        free_and_zero(gNB_dmrs_lowpaprtype1_sequence[u][v][Msc_RS]);
     }
   }
 }
diff --git a/openair1/PHY/NR_TRANSPORT/nr_dci.c b/openair1/PHY/NR_TRANSPORT/nr_dci.c
index d233eb9ba6a89f38190c8d84bb1150704341c6d4..0af56ba706a9fc8643120037517fcd6983b91b4c 100644
--- a/openair1/PHY/NR_TRANSPORT/nr_dci.c
+++ b/openair1/PHY/NR_TRANSPORT/nr_dci.c
@@ -130,11 +130,8 @@ void nr_generate_dci(nfapi_nr_dl_tti_pdcch_pdu_rel15_t *pdcch_pdu_rel15,
     uint16_t Nid    = dci_pdu->ScramblingId;
     uint16_t scrambling_RNTI = dci_pdu->ScramblingRNTI;
 
-    t_nrPolar_params *currentPtr = nr_polar_params(NR_POLAR_DCI_MESSAGE_TYPE, 
-						   dci_pdu->PayloadSizeBits,
-						   dci_pdu->AggregationLevel,
-						   0,NULL);
-    polar_encoder_fast((uint64_t*)dci_pdu->Payload, (void*)encoder_output, n_RNTI,1,currentPtr);
+    polar_encoder_fast((uint64_t*)dci_pdu->Payload, (void*)encoder_output, n_RNTI, 1, 
+                       NR_POLAR_DCI_MESSAGE_TYPE, dci_pdu->PayloadSizeBits, dci_pdu->AggregationLevel);
 #ifdef DEBUG_CHANNEL_CODING
     printf("polar rnti %x,length %d, L %d\n",n_RNTI, dci_pdu->PayloadSizeBits,pdcch_pdu_rel15->dci_pdu->AggregationLevel);
     printf("DCI PDU: [0]->0x%lx \t [1]->0x%lx\n",
diff --git a/openair1/PHY/NR_TRANSPORT/nr_dlsch_coding.c b/openair1/PHY/NR_TRANSPORT/nr_dlsch_coding.c
index 6d16fa531c96f905abf93f7ba574207ad3aff017..cdf0e6c1527b0afbc354a37c261a84e9ac4fc2e4 100644
--- a/openair1/PHY/NR_TRANSPORT/nr_dlsch_coding.c
+++ b/openair1/PHY/NR_TRANSPORT/nr_dlsch_coding.c
@@ -55,42 +55,39 @@ void free_gNB_dlsch(NR_gNB_DLSCH_t **dlschptr, uint16_t N_RB) {
   NR_gNB_DLSCH_t *dlsch = *dlschptr;
   uint16_t a_segments = MAX_NUM_NR_DLSCH_SEGMENTS;  //number of segments to be allocated
 
-  if (dlsch) {
-    if (N_RB != 273) {
-      a_segments = a_segments*N_RB;
-      a_segments = a_segments/273 +1;
-    }
-    
-#ifdef DEBUG_DLSCH_FREE
-    LOG_D(PHY,"Freeing dlsch %p\n",dlsch);
-#endif
-    NR_DL_gNB_HARQ_t *harq = &dlsch->harq_process;
-    
-    if (harq->b) {
-      free16(harq->b, a_segments * 1056);
-      harq->b = NULL;
-#ifdef DEBUG_DLSCH_FREE
-      LOG_D(PHY, "Freeing harq->b (%p)\n", harq->b);
-#endif
-    }
-    
-#ifdef DEBUG_DLSCH_FREE
-    LOG_D(PHY, "Freeing dlsch process %d c (%p)\n", i, harq->c);
-#endif
-    
-    for (r = 0; r < a_segments; r++) {
-#ifdef DEBUG_DLSCH_FREE
-      LOG_D(PHY, "Freeing dlsch process %d c[%d] (%p)\n", i, r, harq->c[r]);
-#endif
-      
-      if (harq->c[r]) {
-	free16(harq->c[r], 1056);
-	harq->c[r] = NULL;
-      }
-    }
-    free16(dlsch, sizeof(NR_gNB_DLSCH_t));
-    *dlschptr = NULL;
+  if (N_RB != 273) {
+    a_segments = a_segments*N_RB;
+    a_segments = a_segments/273 +1;
   }
+
+  NR_DL_gNB_HARQ_t *harq = &dlsch->harq_process;
+  if (harq->b) {
+    free16(harq->b, a_segments * 1056);
+    harq->b = NULL;
+  }
+  for (r = 0; r < a_segments; r++) {
+    free(harq->c[r]);
+    harq->c[r] = NULL;
+  }
+  free(harq->pdu);
+
+  for (int aa = 0; aa < 64; aa++)
+    free(dlsch->calib_dl_ch_estimates[aa]);
+  free(dlsch->calib_dl_ch_estimates);
+
+  for (int q=0; q<NR_MAX_NB_CODEWORDS; q++)
+    free(dlsch->mod_symbs[q]);
+
+  for (int layer = 0; layer < NR_MAX_NB_LAYERS; layer++) {
+    free(dlsch->txdataF_precoding[layer]);
+    free(dlsch->txdataF[layer]);
+    for (int aa = 0; aa < 64; aa++)
+      free(dlsch->ue_spec_bf_weights[layer][aa]);
+    free(dlsch->ue_spec_bf_weights[layer]);
+  }
+
+  free(dlsch);
+  *dlschptr = NULL;
 }
 
 NR_gNB_DLSCH_t *new_gNB_dlsch(NR_DL_FRAME_PARMS *frame_parms,
diff --git a/openair1/PHY/NR_TRANSPORT/nr_pbch.c b/openair1/PHY/NR_TRANSPORT/nr_pbch.c
index bf5edccb1bedccc6098d19d256bcd2b891cefdce..fc7df4649606902a073dd149197e6fbf49cb3ae7 100644
--- a/openair1/PHY/NR_TRANSPORT/nr_pbch.c
+++ b/openair1/PHY/NR_TRANSPORT/nr_pbch.c
@@ -299,8 +299,8 @@ int nr_generate_pbch(nfapi_nr_dl_tti_ssb_pdu *ssb_pdu,
 
   /// CRC, coding and rate matching
   polar_encoder_fast (&a_reversed, (void*)pbch->pbch_e, 0, 0,
-                      nr_polar_params( NR_POLAR_PBCH_MESSAGE_TYPE, NR_POLAR_PBCH_PAYLOAD_BITS, NR_POLAR_PBCH_AGGREGATION_LEVEL,0,NULL)
-                     );
+                      NR_POLAR_PBCH_MESSAGE_TYPE, NR_POLAR_PBCH_PAYLOAD_BITS, NR_POLAR_PBCH_AGGREGATION_LEVEL);
+
 #ifdef DEBUG_PBCH_ENCODING
   printf("Channel coding:\n");
 
diff --git a/openair1/PHY/NR_TRANSPORT/nr_sch_dmrs.c b/openair1/PHY/NR_TRANSPORT/nr_sch_dmrs.c
index e6a9b8c5dc979cc611b1748fa9e0e8d2610df46b..a62138621d7d9acefcf753b028666b44036d7c21 100644
--- a/openair1/PHY/NR_TRANSPORT/nr_sch_dmrs.c
+++ b/openair1/PHY/NR_TRANSPORT/nr_sch_dmrs.c
@@ -92,6 +92,5 @@ uint8_t get_l0(uint16_t dlDmrsSymbPos) {
     if ((mask&1) == 1) break;
     mask>>=1;
   }
-  AssertFatal(l0 < 4,"impossible l0 %d\n",l0);
   return (l0);
 }
diff --git a/openair1/PHY/NR_TRANSPORT/nr_transport_proto.h b/openair1/PHY/NR_TRANSPORT/nr_transport_proto.h
index d45858bca0814c1155ffb4e86237e64602bb28b6..b62698c74844193d549ca0c69569b3b3fd69f98e 100644
--- a/openair1/PHY/NR_TRANSPORT/nr_transport_proto.h
+++ b/openair1/PHY/NR_TRANSPORT/nr_transport_proto.h
@@ -106,6 +106,8 @@ NR_gNB_DLSCH_t *new_gNB_dlsch(NR_DL_FRAME_PARMS *frame_parms,
                               uint8_t abstraction_flag,
                               uint16_t N_RB);
 
+void free_gNB_dlsch(NR_gNB_DLSCH_t **dlschptr, uint16_t N_RB);
+
 /** \brief This function is the top-level entry point to PUSCH demodulation, after frequency-domain transformation and channel estimation.  It performs
     - RB extraction (signal and channel estimates)
     - channel compensation (matched filtering)
@@ -296,6 +298,7 @@ int16_t find_nr_prach(PHY_VARS_gNB *gNB,int frame,int slot, find_type_t type);
 int16_t find_nr_prach_ru(RU_t *ru,int frame,int slot, find_type_t type);
 
 NR_gNB_PUCCH_t *new_gNB_pucch(void);
+void free_gNB_pucch(NR_gNB_PUCCH_t *pucch);
 
 void nr_fill_pucch(PHY_VARS_gNB *gNB,
                    int frame,
@@ -308,6 +311,7 @@ int nr_find_pucch(uint16_t rnti,
                   PHY_VARS_gNB *gNB);
 
 NR_gNB_SRS_t *new_gNB_srs(void);
+void free_gNB_srs(NR_gNB_SRS_t *srs);
 
 int nr_find_srs(uint16_t rnti,
                 int frame,
diff --git a/openair1/PHY/NR_TRANSPORT/nr_ulsch.h b/openair1/PHY/NR_TRANSPORT/nr_ulsch.h
index f7bb3be5772ecb11fe7e789ed9b07ac9b975ff41..0791fd2bbc63f982aca2e32248f4d4b844519102 100644
--- a/openair1/PHY/NR_TRANSPORT/nr_ulsch.h
+++ b/openair1/PHY/NR_TRANSPORT/nr_ulsch.h
@@ -33,9 +33,9 @@
 #include "PHY/defs_gNB.h"
 #include "common/utils/threadPool/thread-pool.h"
 
-void free_gNB_ulsch(NR_gNB_ULSCH_t **ulsch,uint8_t N_RB_UL);
+void free_gNB_ulsch(NR_gNB_ULSCH_t **ulsch, uint16_t N_RB_UL);
 
-NR_gNB_ULSCH_t *new_gNB_ulsch(uint8_t max_ldpc_iterations,uint16_t N_RB_UL, uint8_t abstraction_flag);
+NR_gNB_ULSCH_t *new_gNB_ulsch(uint8_t max_ldpc_iterations, uint16_t N_RB_UL);
 
 
 /*! \brief Perform PUSCH decoding. TS 38.212 V15.4.0 subclause 6.2
diff --git a/openair1/PHY/NR_TRANSPORT/nr_ulsch_decoding.c b/openair1/PHY/NR_TRANSPORT/nr_ulsch_decoding.c
index a398df877e4c9f37a4c84f4a70e67c6e43bef709..e9ed278bb1ec0aacfc9a0968d681ccb51c901111 100644
--- a/openair1/PHY/NR_TRANSPORT/nr_ulsch_decoding.c
+++ b/openair1/PHY/NR_TRANSPORT/nr_ulsch_decoding.c
@@ -54,60 +54,40 @@
 
 //extern double cpuf;
 
-void free_gNB_ulsch(NR_gNB_ULSCH_t **ulschptr,uint8_t N_RB_UL)
+void free_gNB_ulsch(NR_gNB_ULSCH_t **ulschptr, uint16_t N_RB_UL)
 {
 
   int i,r;
   uint16_t a_segments = MAX_NUM_NR_ULSCH_SEGMENTS;  //number of segments to be allocated
   NR_gNB_ULSCH_t *ulsch = *ulschptr;
 
-  if (ulsch) {
-    if (N_RB_UL != 273) {
-      a_segments = a_segments*N_RB_UL;
-      a_segments = a_segments/273 +1;
-    }  
-
-
-    for (i=0; i<NR_MAX_ULSCH_HARQ_PROCESSES; i++) {
+  if (N_RB_UL != 273) {
+    a_segments = a_segments*N_RB_UL;
+    a_segments = a_segments/273 +1;
+  }
 
-      if (ulsch->harq_processes[i]) {
-        if (ulsch->harq_processes[i]->b) {
-          free16(ulsch->harq_processes[i]->b,a_segments*1056);
-          ulsch->harq_processes[i]->b = NULL;
-        }
-        for (r=0; r<a_segments; r++) {
-          free16(ulsch->harq_processes[i]->c[r],(8448)*sizeof(uint8_t));
-          ulsch->harq_processes[i]->c[r] = NULL;
-        }
-        for (r=0; r<a_segments; r++) {
-          if (ulsch->harq_processes[i]->d[r]) {
-            free16(ulsch->harq_processes[i]->d[r],(68*384)*sizeof(int16_t));
-            ulsch->harq_processes[i]->d[r] = NULL;
-          }
-        }
-        for (r=0; r<a_segments; r++) {
-          if (ulsch->harq_processes[i]->w[r]) {
-            free16(ulsch->harq_processes[i]->w[r],(3*(6144+64))*sizeof(int16_t));
-            ulsch->harq_processes[i]->w[r] = NULL;
-          }
-        }
-        for (r=0; r<a_segments; r++) {
-          if (ulsch->harq_processes[i]->p_nrLDPC_procBuf[r]){
-            nrLDPC_free_mem(ulsch->harq_processes[i]->p_nrLDPC_procBuf[r]);
-            ulsch->harq_processes[i]->p_nrLDPC_procBuf[r] = NULL;
-          }
-        }
-        free16(ulsch->harq_processes[i],sizeof(NR_UL_gNB_HARQ_t));
-        ulsch->harq_processes[i] = NULL;
+  for (i=0; i<NR_MAX_ULSCH_HARQ_PROCESSES; i++) {
+    if (ulsch->harq_processes[i]) {
+      if (ulsch->harq_processes[i]->b) {
+        free_and_zero(ulsch->harq_processes[i]->b);
+        ulsch->harq_processes[i]->b = NULL;
+      }
+      for (r=0; r<a_segments; r++) {
+        free_and_zero(ulsch->harq_processes[i]->c[r]);
+        free_and_zero(ulsch->harq_processes[i]->d[r]);
+        free_and_zero(ulsch->harq_processes[i]->w[r]);
+        nrLDPC_free_mem(ulsch->harq_processes[i]->p_nrLDPC_procBuf[r]);
+        ulsch->harq_processes[i]->p_nrLDPC_procBuf[r] = NULL;
       }
+      free_and_zero(ulsch->harq_processes[i]);
+      ulsch->harq_processes[i] = NULL;
     }
-    free16(ulsch,sizeof(NR_gNB_ULSCH_t));
-    *ulschptr = NULL;
   }
+  free_and_zero(*ulschptr);
 }
 
 
-NR_gNB_ULSCH_t *new_gNB_ulsch(uint8_t max_ldpc_iterations,uint16_t N_RB_UL, uint8_t abstraction_flag)
+NR_gNB_ULSCH_t *new_gNB_ulsch(uint8_t max_ldpc_iterations, uint16_t N_RB_UL)
 {
 
   NR_gNB_ULSCH_t *ulsch;
@@ -129,13 +109,11 @@ NR_gNB_ULSCH_t *new_gNB_ulsch(uint8_t max_ldpc_iterations,uint16_t N_RB_UL, uint
     
     ulsch->harq_processes[i] = (NR_UL_gNB_HARQ_t *)malloc16_clear(sizeof(NR_UL_gNB_HARQ_t));
     ulsch->harq_processes[i]->b = (uint8_t*)malloc16_clear(ulsch_bytes);
-    if (abstraction_flag == 0) {
-      for (r=0; r<a_segments; r++) {
-	ulsch->harq_processes[i]->p_nrLDPC_procBuf[r] = nrLDPC_init_mem();
-	ulsch->harq_processes[i]->c[r] = (uint8_t*)malloc16_clear(8448*sizeof(uint8_t));
-	ulsch->harq_processes[i]->d[r] = (int16_t*)malloc16_clear((68*384)*sizeof(int16_t));
-	ulsch->harq_processes[i]->w[r] = (int16_t*)malloc16_clear((3*(6144+64))*sizeof(int16_t));
-      }
+    for (r=0; r<a_segments; r++) {
+      ulsch->harq_processes[i]->p_nrLDPC_procBuf[r] = nrLDPC_init_mem();
+      ulsch->harq_processes[i]->c[r] = (uint8_t*)malloc16_clear(8448*sizeof(uint8_t));
+      ulsch->harq_processes[i]->d[r] = (int16_t*)malloc16_clear((68*384)*sizeof(int16_t));
+      ulsch->harq_processes[i]->w[r] = (int16_t*)malloc16_clear((3*(6144+64))*sizeof(int16_t));
     }
   }
   
diff --git a/openair1/PHY/NR_TRANSPORT/pucch_rx.c b/openair1/PHY/NR_TRANSPORT/pucch_rx.c
index 56d87866edb9cc397ea2dcf1154745d1c79aea8c..b85dbd1454f7b29a494e63af23199eda1fca279a 100644
--- a/openair1/PHY/NR_TRANSPORT/pucch_rx.c
+++ b/openair1/PHY/NR_TRANSPORT/pucch_rx.c
@@ -62,6 +62,11 @@ NR_gNB_PUCCH_t *new_gNB_pucch(void){
     return (pucch);
 }
 
+void free_gNB_pucch(NR_gNB_PUCCH_t *pucch)
+{
+  free_and_zero(pucch);
+}
+
 int nr_find_pucch(uint16_t rnti,
                   int frame,
                   int slot,
@@ -1533,7 +1538,6 @@ void nr_decode_pucch2(PHY_VARS_gNB *gNB,
   }
   else { // polar coded case
 
-    t_nrPolar_params *currentPtr = nr_polar_params(2,nb_bit,pucch_pdu->prb_size,1,&gNB->uci_polarParams);
     __m64 *rp_re[Prx2][2];
     __m64 *rp2_re[Prx2][2];
     __m64 *rp_im[Prx2][2];
@@ -1660,7 +1664,7 @@ void nr_decode_pucch2(PHY_VARS_gNB *gNB,
       } // half_prb
     } // symb
     // run polar decoder on llrs
-    decoderState = polar_decoder_int16((int16_t*)llrs, decodedPayload, 0, currentPtr);
+    decoderState = polar_decoder_int16((int16_t*)llrs, decodedPayload, 0, 2,nb_bit,pucch_pdu->prb_size);
     LOG_D(PHY,"UCI decoderState %d, payload[0] %llu\n",decoderState,(unsigned long long)decodedPayload[0]);
     if (decoderState>0) decoderState=1;
     corr_dB = dB_fixed64(corr);
diff --git a/openair1/PHY/NR_TRANSPORT/srs_rx.c b/openair1/PHY/NR_TRANSPORT/srs_rx.c
index c16becdb20b2aa0403ef19253e6379f565c86076..2d7aefdee082b5b6baeb03e104de8a828aaf791f 100644
--- a/openair1/PHY/NR_TRANSPORT/srs_rx.c
+++ b/openair1/PHY/NR_TRANSPORT/srs_rx.c
@@ -49,6 +49,11 @@ NR_gNB_SRS_t *new_gNB_srs(void){
   return (srs);
 }
 
+void free_gNB_srs(NR_gNB_SRS_t *srs)
+{
+  free_and_zero(srs);
+}
+
 int nr_find_srs(uint16_t rnti,
                 int frame,
                 int slot,
diff --git a/openair1/PHY/NR_UE_ESTIMATION/nr_dl_channel_estimation.c b/openair1/PHY/NR_UE_ESTIMATION/nr_dl_channel_estimation.c
index d8b84e95da8de251b7877c676821da78f10d197c..d15a10a9d90d7101e1e9ca739498b2ec5b3b1918 100644
--- a/openair1/PHY/NR_UE_ESTIMATION/nr_dl_channel_estimation.c
+++ b/openair1/PHY/NR_UE_ESTIMATION/nr_dl_channel_estimation.c
@@ -667,6 +667,7 @@ int nr_pdsch_channel_estimation(PHY_VARS_NR_UE *ue,
                                 unsigned short p,
                                 unsigned char symbol,
                                 unsigned short BWPStart,
+                                uint8_t config_type,
                                 unsigned short bwp_start_subcarrier,
                                 unsigned short nb_rb_pdsch)
 {
@@ -678,10 +679,6 @@ int nr_pdsch_channel_estimation(PHY_VARS_NR_UE *ue,
   int16_t *fl=NULL,*fm=NULL,*fr=NULL,*fml=NULL,*fmr=NULL,*fmm=NULL,*fdcl=NULL,*fdcr=NULL,*fdclh=NULL,*fdcrh=NULL, *frl=NULL, *frr=NULL;
   int ch_offset,symbol_offset;
 
-  NR_UE_DLSCH_t  **dlsch = ue->dlsch[proc->thread_id][gNB_id];
-  const unsigned char harq_pid = dlsch[0]->current_harq_pid;
-  NR_DL_UE_HARQ_t *dlsch0_harq = dlsch[0]->harq_processes[harq_pid];
-
   uint8_t nushift;
   int **dl_ch_estimates  =ue->pdsch_vars[proc->thread_id][gNB_id]->dl_ch_estimates;
   int **rxdataF=ue->common_vars.common_vars_rx_data_per_thread[proc->thread_id].rxdataF;
@@ -703,7 +700,6 @@ int nr_pdsch_channel_estimation(PHY_VARS_NR_UE *ue,
   if (is_SI) {
     rb_offset -= BWPStart;
   }
-  uint8_t config_type = dlsch0_harq->dmrsConfigType;
   int8_t delta = get_delta(p, config_type);
 
   // checking if re-initialization of scrambling IDs is needed
diff --git a/openair1/PHY/NR_UE_ESTIMATION/nr_estimation.h b/openair1/PHY/NR_UE_ESTIMATION/nr_estimation.h
index c5330ce2f2e7e2a98f3d77591046f4ea8bb6cc84..4dec92143a10799ac41aa946c3a199dd6fe2b947 100644
--- a/openair1/PHY/NR_UE_ESTIMATION/nr_estimation.h
+++ b/openair1/PHY/NR_UE_ESTIMATION/nr_estimation.h
@@ -72,6 +72,7 @@ int nr_pdsch_channel_estimation(PHY_VARS_NR_UE *ue,
                                 unsigned short p,
                                 unsigned char symbol,
                                 unsigned short BWPStart,
+                                uint8_t config_type,
                                 unsigned short bwp_start_subcarrier,
                                 unsigned short nb_rb_pdsch);
 
diff --git a/openair1/PHY/NR_UE_TRANSPORT/dci_nr.c b/openair1/PHY/NR_UE_TRANSPORT/dci_nr.c
index b6ff0d99058dc142e623fc912734d4a38140314c..b5cc765be4443a8086bfbb58aa1016b8d7dfd786 100644
--- a/openair1/PHY/NR_UE_TRANSPORT/dci_nr.c
+++ b/openair1/PHY/NR_UE_TRANSPORT/dci_nr.c
@@ -126,76 +126,75 @@ void nr_pdcch_demapping_deinterleaving(uint32_t *llr,
 
   */
   int c = 0, r = 0;
-  uint16_t bundle_j = 0, f_bundle_j = 0, f_reg = 0;
+  uint16_t f_bundle_j = 0;
   uint32_t coreset_C = 0;
   uint16_t index_z, index_llr;
   int coreset_interleaved = 0;
+  int N_regs = coreset_nbr_rb*coreset_time_dur;
 
   if (reg_bundle_size_L != 0) { // interleaving will be done only if reg_bundle_size_L != 0
     coreset_interleaved = 1;
-    coreset_C = (uint32_t) (coreset_nbr_rb / (coreset_interleaver_size_R * reg_bundle_size_L));
+    coreset_C = (uint32_t) (N_regs / (coreset_interleaver_size_R * reg_bundle_size_L));
   } else {
     reg_bundle_size_L = 6;
   }
 
+  int B_rb = reg_bundle_size_L/coreset_time_dur; // nb of RBs occupied by each REG bundle
+  int num_bundles_per_cce = 6/reg_bundle_size_L;
+  int max_bundles = NR_MAX_PDCCH_AGG_LEVEL*num_bundles_per_cce;
+  int f_bundle_j_list[max_bundles];
 
-  int f_bundle_j_list[(2*NR_MAX_PDCCH_AGG_LEVEL) - 1] = {};
-
-  for (int reg = 0; reg < coreset_nbr_rb; reg++) {
-    if ((reg % reg_bundle_size_L) == 0) {
+  // for each bundle
+  for (int nb = 0; nb < max_bundles; nb++) {
+    if (coreset_interleaved == 0) f_bundle_j = nb;
+    else {
       if (r == coreset_interleaver_size_R) {
         r = 0;
         c++;
       }
-
-      bundle_j = (c * coreset_interleaver_size_R) + r;
-      f_bundle_j = ((r * coreset_C) + c + n_shift) % (coreset_nbr_rb / reg_bundle_size_L);
-
-      if (coreset_interleaved == 0) f_bundle_j = bundle_j;
-
-      f_bundle_j_list[reg / 6] = f_bundle_j;
-
+      f_bundle_j = ((r * coreset_C) + c + n_shift) % (N_regs / reg_bundle_size_L);
+      r++;
     }
-    if ((reg % reg_bundle_size_L) == 0) r++;
+    f_bundle_j_list[nb] = f_bundle_j;
   }
 
-  // Get cce_list indices by reg_idx in ascending order
-  int f_bundle_j_list_id = 0;
-  int f_bundle_j_list_ord[(2*NR_MAX_PDCCH_AGG_LEVEL)-1] = {};
+  // Get cce_list indices by bundle index in ascending order
+  int f_bundle_j_list_ord[number_of_candidates][max_bundles];
   for (int c_id = 0; c_id < number_of_candidates; c_id++ ) {
-    f_bundle_j_list_id = CCE[c_id];
-    for (int p = 0; p < NR_MAX_PDCCH_AGG_LEVEL; p++) {
-      for (int p2 = CCE[c_id]; p2 < CCE[c_id] + L[c_id]; p2++) {
-        AssertFatal(p2<2*NR_MAX_PDCCH_AGG_LEVEL,"number_of_candidates %d : p2 %d,  CCE[%d] %d, L[%d] %d\n",number_of_candidates,p2,c_id,CCE[c_id],c_id,L[c_id]);
-        if (f_bundle_j_list[p2] == p) {
-          AssertFatal(f_bundle_j_list_id < 2*NR_MAX_PDCCH_AGG_LEVEL,"f_bundle_j_list_id %d\n",f_bundle_j_list_id);
-          f_bundle_j_list_ord[f_bundle_j_list_id] = p;
+    int start_bund_cand = CCE[c_id]*num_bundles_per_cce;
+    int max_bund_per_cand = L[c_id]*num_bundles_per_cce;
+    int f_bundle_j_list_id = 0;
+    for(int nb = 0; nb < max_bundles; nb++) {
+      for(int bund_cand = start_bund_cand; bund_cand < start_bund_cand+max_bund_per_cand; bund_cand++){
+        if (f_bundle_j_list[bund_cand] == nb) {
+          f_bundle_j_list_ord[c_id][f_bundle_j_list_id] = nb;
           f_bundle_j_list_id++;
-          break;
+
         }
       }
     }
   }
 
-  int rb = 0;
+  int rb_count = 0;
+  int data_sc = 9; // 9 sub-carriers with data per PRB
   for (int c_id = 0; c_id < number_of_candidates; c_id++ ) {
     for (int symbol_idx = start_symbol; symbol_idx < start_symbol+coreset_time_dur; symbol_idx++) {
-      for (int cce_count = CCE[c_id/coreset_time_dur]+c_id%coreset_time_dur; cce_count < CCE[c_id/coreset_time_dur]+c_id%coreset_time_dur+L[c_id]; cce_count += coreset_time_dur) {
-        for (int reg_in_cce_idx = 0; reg_in_cce_idx < NR_NB_REG_PER_CCE; reg_in_cce_idx++) {
-
-          f_reg = (f_bundle_j_list_ord[cce_count] * reg_bundle_size_L) + reg_in_cce_idx;
-          index_z = 9 * rb;
-          index_llr = (uint16_t) (f_reg + symbol_idx * coreset_nbr_rb) * 9;
-
-          for (int i = 0; i < 9; i++) {
-            z[index_z + i] = llr[index_llr + i];
+      for (int cce_count = 0; cce_count < L[c_id]; cce_count ++) {
+        for (int k=0; k<NR_NB_REG_PER_CCE/reg_bundle_size_L; k++) { // loop over REG bundles
+          int f = f_bundle_j_list_ord[c_id][k+NR_NB_REG_PER_CCE*cce_count/reg_bundle_size_L];
+          for(int rb=0; rb<B_rb; rb++) { // loop over the RBs of the bundle
+            index_z = data_sc * rb_count;
+            index_llr = (uint16_t) (f*B_rb + rb + symbol_idx * coreset_nbr_rb) * data_sc;
+            for (int i = 0; i < data_sc; i++) {
+              z[index_z + i] = llr[index_llr + i];
 #ifdef NR_PDCCH_DCI_DEBUG
-            LOG_I(PHY,"[cce_count=%d,reg_in_cce_idx=%d,bundle_j=%d,symbol_idx=%d,candidate=%d] z[%d]=(%d,%d) <-> \t[f_reg=%d,fbundle_j=%d] llr[%d]=(%d,%d) \n",
-                  cce_count,reg_in_cce_idx,bundle_j,symbol_idx,c_id,(index_z + i),*(int16_t *) &z[index_z + i],*(1 + (int16_t *) &z[index_z + i]),
-                   f_reg,f_bundle_j,(index_llr + i),*(int16_t *) &llr[index_llr + i], *(1 + (int16_t *) &llr[index_llr + i]));
+              LOG_I(PHY,"[candidate=%d,symbol_idx=%d,cce=%d,REG bundle=%d,PRB=%d] z[%d]=(%d,%d) <-> \t llr[%d]=(%d,%d) \n",
+                    c_id,symbol_idx,cce_count,k,f*B_rb + rb,(index_z + i),*(int16_t *) &z[index_z + i],*(1 + (int16_t *) &z[index_z + i]),
+                    (index_llr + i),*(int16_t *) &llr[index_llr + i], *(1 + (int16_t *) &llr[index_llr + i]));
 #endif
+            }
+            rb_count++;
           }
-          rb++;
         }
       }
     }
@@ -762,6 +761,7 @@ int32_t nr_rx_pdcch(PHY_VARS_NR_UE *ue,
                                     rel15->number_of_candidates,
                                     rel15->CCE,
                                     rel15->L);
+
   LOG_D(PHY,"we end nr_pdcch_demapping_deinterleaving()\n");
   LOG_D(PHY,"Ending nr_rx_pdcch() function\n");
 
@@ -802,14 +802,18 @@ void nr_pdcch_unscrambling(int16_t *z,
 /* This function compares the received DCI bits with
  * re-encoded DCI bits and returns the number of mismatched bits
  */
-uint16_t nr_dci_false_detection(uint64_t *dci,
-                            int16_t *soft_in,
-                            const t_nrPolar_params *polar_param,
-                            int encoded_length,
-                            int rnti) {
+static uint16_t nr_dci_false_detection(uint64_t *dci,
+                                       int16_t *soft_in,
+                                       int encoded_length,
+                                       int rnti,
+                                       int8_t messageType,
+                                       uint16_t messageLength,
+                                       uint8_t aggregation_level
+                                       ) {
 
   uint32_t encoder_output[NR_MAX_DCI_SIZE_DWORD];
-  polar_encoder_fast(dci, (void*)encoder_output, rnti, 1, (t_nrPolar_params *)polar_param);
+  polar_encoder_fast(dci, (void*)encoder_output, rnti, 1,
+                    messageType, messageLength, aggregation_level);
   uint8_t *enout_p = (uint8_t*)encoder_output;
   uint16_t x = 0;
 
@@ -836,6 +840,7 @@ uint8_t nr_dci_decoding_procedure(PHY_VARS_NR_UE *ue,
   //int gNB_id = 0;
   int16_t tmp_e[16*108];
   rnti_t n_rnti;
+  int e_rx_cand_idx = 0;
 
   for (int j=0;j<rel15->number_of_candidates;j++) {
     int CCEind = rel15->CCE[j];
@@ -856,26 +861,24 @@ uint8_t nr_dci_decoding_procedure(PHY_VARS_NR_UE *ue,
       if (dci_found==1) continue;
       int dci_length = rel15->dci_length_options[k];
       uint64_t dci_estimation[2]= {0};
-      const t_nrPolar_params *currentPtrDCI = nr_polar_params(NR_POLAR_DCI_MESSAGE_TYPE, dci_length, L, 1, &ue->polarList);
 
       LOG_D(PHY, "(%i.%i) Trying DCI candidate %d of %d number of candidates, CCE %d (%d), L %d, length %d, format %s\n",
-            proc->frame_rx, proc->nr_slot_rx, j, rel15->number_of_candidates, CCEind, CCEind*9*6*2, L, dci_length,nr_dci_format_string[rel15->dci_format_options[k]]);
+            proc->frame_rx, proc->nr_slot_rx, j, rel15->number_of_candidates, CCEind, e_rx_cand_idx, L, dci_length, nr_dci_format_string[rel15->dci_format_options[k]]);
 
-      nr_pdcch_unscrambling(&pdcch_vars->e_rx[CCEind*108], rel15->coreset.scrambling_rnti, L*108, rel15->coreset.pdcch_dmrs_scrambling_id, tmp_e);
+      nr_pdcch_unscrambling(&pdcch_vars->e_rx[e_rx_cand_idx], rel15->coreset.scrambling_rnti, L*108, rel15->coreset.pdcch_dmrs_scrambling_id, tmp_e);
 
 #ifdef DEBUG_DCI_DECODING
-      uint32_t * z = (uint32_t *) &pdcch_vars->e_rx[CCEind*108];
-      for (int index_z = 0; index_z < 6*L; index_z++){
+      uint32_t *z = (uint32_t *) &pdcch_vars->e_rx[e_rx_cand_idx];
+      for (int index_z = 0; index_z < L*6; index_z++){
         for (int i=0; i<9; i++) {
           LOG_I(PHY,"z[%d]=(%d,%d) \n", (9*index_z + i), *(int16_t *) &z[9*index_z + i],*(1 + (int16_t *) &z[9*index_z + i]));
         }
       }
 #endif
-
       uint16_t crc = polar_decoder_int16(tmp_e,
                                          dci_estimation,
                                          1,
-                                         currentPtrDCI);
+                                         NR_POLAR_DCI_MESSAGE_TYPE, dci_length, L);
 
       n_rnti = rel15->rnti;
       LOG_D(PHY, "(%i.%i) dci indication (rnti %x,dci format %s,n_CCE %d,payloadSize %d)\n",
@@ -883,7 +886,7 @@ uint8_t nr_dci_decoding_procedure(PHY_VARS_NR_UE *ue,
       if (crc == n_rnti) {
         LOG_D(PHY, "(%i.%i) Received dci indication (rnti %x,dci format %s,n_CCE %d,payloadSize %d,payload %llx)\n",
               proc->frame_rx, proc->nr_slot_rx,n_rnti,nr_dci_format_string[rel15->dci_format_options[k]],CCEind,dci_length,*(unsigned long long*)dci_estimation);
-        uint16_t mb = nr_dci_false_detection(dci_estimation,tmp_e,currentPtrDCI,L*108,n_rnti);
+        uint16_t mb = nr_dci_false_detection(dci_estimation,tmp_e,L*108,n_rnti, NR_POLAR_DCI_MESSAGE_TYPE, dci_length, L);
         ue->dci_thres = (ue->dci_thres + mb) / 2;
         if (mb > (ue->dci_thres+20)) {
           LOG_W(PHY,"DCI false positive. Dropping DCI index %d. Mismatched bits: %d/%d. Current DCI threshold: %d\n",j,mb,L*108,ue->dci_thres);
@@ -905,6 +908,7 @@ uint8_t nr_dci_decoding_procedure(PHY_VARS_NR_UE *ue,
         LOG_D(PHY,"(%i.%i) Decoded crc %x does not match rnti %x for DCI format %d\n", proc->frame_rx, proc->nr_slot_rx, crc, n_rnti, rel15->dci_format_options[k]);
       }
     }
+    e_rx_cand_idx += 9*L*6*2; //e_rx index for next candidate (L CCEs, 6 REGs per CCE and 9 REs per REG and 2 uint16_t per RE)
   }
   pdcch_vars->nb_search_space = 0;
   return(dci_ind->number_of_dcis);
diff --git a/openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c b/openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c
index 8064093eed6e86c78ae92d29fb3143ee45480b30..a9b8ce2e557c158b0fdc6ec6e44d068a1211201e 100644
--- a/openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c
+++ b/openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c
@@ -79,7 +79,7 @@ void init_dlsch_tpool(uint8_t num_dlsch_threads) {
   free(params);
 }
 
-void free_nr_ue_dlsch(NR_UE_DLSCH_t **dlschptr,uint8_t N_RB_DL) {
+void free_nr_ue_dlsch(NR_UE_DLSCH_t **dlschptr, uint16_t N_RB_DL) {
   int i,r;
   uint16_t a_segments = MAX_NUM_NR_DLSCH_SEGMENTS;  //number of segments to be allocated
   NR_UE_DLSCH_t *dlsch=*dlschptr;
@@ -131,7 +131,7 @@ void free_nr_ue_dlsch(NR_UE_DLSCH_t **dlschptr,uint8_t N_RB_DL) {
   }
 }
 
-NR_UE_DLSCH_t *new_nr_ue_dlsch(uint8_t Kmimo,uint8_t Mdlharq,uint32_t Nsoft,uint8_t max_ldpc_iterations,uint16_t N_RB_DL, uint8_t abstraction_flag) {
+NR_UE_DLSCH_t *new_nr_ue_dlsch(uint8_t Kmimo,uint8_t Mdlharq,uint32_t Nsoft,uint8_t max_ldpc_iterations,uint16_t N_RB_DL) {
   NR_UE_DLSCH_t *dlsch;
   uint8_t exit_flag = 0,i,r;
   uint16_t a_segments = MAX_NUM_NR_DLSCH_SEGMENTS;  //number of segments to be allocated
@@ -167,30 +167,28 @@ NR_UE_DLSCH_t *new_nr_ue_dlsch(uint8_t Kmimo,uint8_t Mdlharq,uint32_t Nsoft,uint
         else
           exit_flag=3;
 
-        if (abstraction_flag == 0) {
-          for (r=0; r<a_segments; r++) {
-            dlsch->harq_processes[i]->p_nrLDPC_procBuf[r] = nrLDPC_init_mem();
-            dlsch->harq_processes[i]->c[r] = (uint8_t *)malloc16(1056);
+        for (r=0; r<a_segments; r++) {
+          dlsch->harq_processes[i]->p_nrLDPC_procBuf[r] = nrLDPC_init_mem();
+          dlsch->harq_processes[i]->c[r] = (uint8_t *)malloc16(1056);
 
-            if (dlsch->harq_processes[i]->c[r])
-              memset(dlsch->harq_processes[i]->c[r],0,1056);
-            else
-              exit_flag=2;
+          if (dlsch->harq_processes[i]->c[r])
+            memset(dlsch->harq_processes[i]->c[r],0,1056);
+          else
+            exit_flag=2;
 
-            dlsch->harq_processes[i]->d[r] = (short *)malloc16((5*8448)*sizeof(short));
+          dlsch->harq_processes[i]->d[r] = (short *)malloc16((5*8448)*sizeof(short));
 
-            if (dlsch->harq_processes[i]->d[r])
-              memset(dlsch->harq_processes[i]->d[r],0,(5*8448)*sizeof(short));
-            else
-              exit_flag=2;
+          if (dlsch->harq_processes[i]->d[r])
+            memset(dlsch->harq_processes[i]->d[r],0,(5*8448)*sizeof(short));
+          else
+            exit_flag=2;
 
-            dlsch->harq_processes[i]->w[r] = (short *)malloc16((5*8448)*sizeof(short));
+          dlsch->harq_processes[i]->w[r] = (short *)malloc16((5*8448)*sizeof(short));
 
-            if (dlsch->harq_processes[i]->w[r])
-              memset(dlsch->harq_processes[i]->w[r],0,(5*8448)*sizeof(short));
-            else
-              exit_flag=2;
-          }
+          if (dlsch->harq_processes[i]->w[r])
+            memset(dlsch->harq_processes[i]->w[r],0,(5*8448)*sizeof(short));
+          else
+            exit_flag=2;
         }
       } else {
         exit_flag=1;
diff --git a/openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_demodulation.c b/openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_demodulation.c
index 384d27ff7d279d56084313374de4f7c34d7973cb..c8d851ca77650698549b089b0fb1427e00dce43d 100644
--- a/openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_demodulation.c
+++ b/openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_demodulation.c
@@ -936,12 +936,12 @@ void nr_dlsch_channel_compensation(int **rxdataF_ext,
     for (aarx=0; aarx<frame_parms->nb_antennas_rx; aarx++) {
 
       for (aatx=0; aatx<nb_aatx; aatx++) {
-        dl_ch128      = (__m128i *)&dl_ch_estimates_ext[aatx*frame_parms->nb_antennas_rx+aarx][symbol*nb_rb*12];
 
         for (atx=0; atx<nb_aatx; atx++) {
           avg_rho_re[aarx][aatx*nb_aatx+atx] = 0;
           avg_rho_im[aarx][aatx*nb_aatx+atx] = 0;
           rho128        = (__m128i *)&rho[aarx][aatx*nb_aatx+atx][symbol*nb_rb*12];
+          dl_ch128      = (__m128i *)&dl_ch_estimates_ext[aatx*frame_parms->nb_antennas_rx+aarx][symbol*nb_rb*12];
           dl_ch128_2    = (__m128i *)&dl_ch_estimates_ext[atx*frame_parms->nb_antennas_rx+aarx][symbol*nb_rb*12];
 
           for (rb=0; rb<nb_rb_0; rb++) {
diff --git a/openair1/PHY/NR_UE_TRANSPORT/nr_initial_sync.c b/openair1/PHY/NR_UE_TRANSPORT/nr_initial_sync.c
index c79d873127226fee91b600021c33fa429bcb2bbb..d7b1a030c9966b9c60ce86b07a180c45a29d0637 100644
--- a/openair1/PHY/NR_UE_TRANSPORT/nr_initial_sync.c
+++ b/openair1/PHY/NR_UE_TRANSPORT/nr_initial_sync.c
@@ -337,6 +337,22 @@ int nr_initial_sync(UE_nr_rxtx_proc_t *proc,
         sync_pos_frame = n_symb_prefix0*(fp->ofdm_symbol_size + fp->nb_prefix_samples0)+(ue->symbol_offset-n_symb_prefix0)*(fp->ofdm_symbol_size + fp->nb_prefix_samples);
         // for a correct computation of frame number to sync with the one decoded at MIB we need to take into account in which of the n_frames we got sync
         ue->init_sync_frame = n_frames - 1 - is;
+
+        // compute the scramblingID_pdcch and the gold pdcch
+        ue->scramblingID_pdcch = fp->Nid_cell;
+        nr_gold_pdcch(ue,fp->Nid_cell);
+
+        // compute the scrambling IDs for PDSCH DMRS
+        for (int i=0; i<2; i++)
+          ue->scramblingID[i]=fp->Nid_cell;
+
+        nr_gold_pdsch(ue,ue->scramblingID);
+
+        // initialize the pusch dmrs
+        uint16_t N_n_scid[2] = {fp->Nid_cell,fp->Nid_cell};
+        int n_scid = 0; // This quantity is indicated by higher layer parameter dmrs-SeqInitialization
+        nr_init_pusch_dmrs(ue, N_n_scid, n_scid);
+
         // we also need to take into account the shift by samples_per_frame in case the if is true
         if (ue->ssb_offset < sync_pos_frame){
           ue->rx_offset = fp->samples_per_frame - sync_pos_frame + ue->ssb_offset;
diff --git a/openair1/PHY/NR_UE_TRANSPORT/nr_pbch.c b/openair1/PHY/NR_UE_TRANSPORT/nr_pbch.c
index dff347f7c04fb0cc8a6bff4e1a9e994551d817a6..6b5185dc2ce1af902ca5b2e372d9c16caa0301c3 100644
--- a/openair1/PHY/NR_UE_TRANSPORT/nr_pbch.c
+++ b/openair1/PHY/NR_UE_TRANSPORT/nr_pbch.c
@@ -533,8 +533,8 @@ int nr_rx_pbch( PHY_VARS_NR_UE *ue,
 
   nr_pbch_unscrambling(nr_ue_pbch_vars,frame_parms->Nid_cell,nushift,M,NR_POLAR_PBCH_E,0,0);
   //polar decoding de-rate matching
-  const t_nrPolar_params *currentPtr = nr_polar_params( NR_POLAR_PBCH_MESSAGE_TYPE, NR_POLAR_PBCH_PAYLOAD_BITS, NR_POLAR_PBCH_AGGREGATION_LEVEL,1,&ue->polarList);
-  decoderState = polar_decoder_int16(pbch_e_rx,(uint64_t *)&nr_ue_pbch_vars->pbch_a_prime,0,currentPtr);
+  decoderState = polar_decoder_int16(pbch_e_rx,(uint64_t *)&nr_ue_pbch_vars->pbch_a_prime,0,
+                                     NR_POLAR_PBCH_MESSAGE_TYPE, NR_POLAR_PBCH_PAYLOAD_BITS, NR_POLAR_PBCH_AGGREGATION_LEVEL);
 
   if(decoderState) return(decoderState);
 
@@ -601,7 +601,7 @@ int nr_rx_pbch( PHY_VARS_NR_UE *ue,
 #endif
 
   nr_downlink_indication_t dl_indication;
-  fapi_nr_rx_indication_t *rx_ind = calloc(1, sizeof(*rx_ind));
+  fapi_nr_rx_indication_t *rx_ind=calloc(sizeof(*rx_ind),1);
   uint16_t number_pdus = 1;
 
   nr_fill_dl_indication(&dl_indication, NULL, rx_ind, proc, ue, gNB_id);
@@ -609,6 +609,8 @@ int nr_rx_pbch( PHY_VARS_NR_UE *ue,
 
   if (ue->if_inst && ue->if_inst->dl_indication)
     ue->if_inst->dl_indication(&dl_indication, NULL);
+  else
+    free(rx_ind); // dl_indication would free(), so free() here if not called
 
   return 0;
 }
diff --git a/openair1/PHY/NR_UE_TRANSPORT/nr_transport_proto_ue.h b/openair1/PHY/NR_UE_TRANSPORT/nr_transport_proto_ue.h
index 239731208eb45ff117e4faff8ecee59348aef30b..9bc3643557e6155546e2d9aeeddd5dc1d5415d8a 100644
--- a/openair1/PHY/NR_UE_TRANSPORT/nr_transport_proto_ue.h
+++ b/openair1/PHY/NR_UE_TRANSPORT/nr_transport_proto_ue.h
@@ -50,24 +50,23 @@
     \brief This function frees memory allocated for a particular DLSCH at UE
     @param dlsch Pointer to DLSCH to be removed
 */
-void free_nr_ue_dlsch(NR_UE_DLSCH_t **dlsch,uint8_t N_RB_DL);
+void free_nr_ue_dlsch(NR_UE_DLSCH_t **dlsch, uint16_t N_RB_DL);
 
 
-/** \fn new_ue_dlsch(uint8_t Kmimo,uint8_t Mdlharq,uint32_t Nsoft,uint8_t abstraction_flag)
+/** \fn new_ue_dlsch(uint8_t Kmimo,uint8_t Mdlharq,uint32_t Nsoft)
     \brief This function allocates structures for a particular DLSCH at UE
     @returns Pointer to DLSCH to be removed
     @param Kmimo Kmimo factor from 36-212/36-213
     @param Mdlharq Maximum number of HARQ rounds (36-212/36-213)
     @param Nsoft Soft-LLR buffer size from UE-Category
     @params N_RB_DL total number of resource blocks (determine the operating BW)
-    @param abstraction_flag Flag to indicate abstracted interface
 */
-NR_UE_DLSCH_t *new_nr_ue_dlsch(uint8_t Kmimo,uint8_t Mdlharq,uint32_t Nsoft,uint8_t max_turbo_iterations,uint16_t N_RB_DL, uint8_t abstraction_flag);
+NR_UE_DLSCH_t *new_nr_ue_dlsch(uint8_t Kmimo,uint8_t Mdlharq,uint32_t Nsoft,uint8_t max_turbo_iterations,uint16_t N_RB_DL);
 
 
-void free_nr_ue_ulsch(NR_UE_ULSCH_t **ulsch,unsigned char N_RB_UL);
+void free_nr_ue_ulsch(NR_UE_ULSCH_t **ulsch, uint16_t N_RB_UL);
 
-NR_UE_ULSCH_t *new_nr_ue_ulsch(uint16_t N_RB_UL, int number_of_harq_pids, uint8_t abstraction_flag);
+NR_UE_ULSCH_t *new_nr_ue_ulsch(uint16_t N_RB_UL, int number_of_harq_pids);
 
 /** \brief This function computes the LLRs for ML (max-logsum approximation) dual-stream QPSK/QPSK reception.
     @param stream0_in Input from channel compensated (MR combined) stream 0
diff --git a/openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_coding.c b/openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_coding.c
index aa4c858574c9b42249c4f5e245ccbbb6f0bc6a33..0ab4c94b963d604549c89dfcf2dfe35aa0c71fb1 100644
--- a/openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_coding.c
+++ b/openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_coding.c
@@ -43,7 +43,7 @@
 
 //#define DEBUG_ULSCH_CODING
 
-void free_nr_ue_ulsch(NR_UE_ULSCH_t **ulschptr,unsigned char N_RB_UL)
+void free_nr_ue_ulsch(NR_UE_ULSCH_t **ulschptr, uint16_t N_RB_UL)
 
 {
   int i, r;
@@ -105,12 +105,8 @@ void free_nr_ue_ulsch(NR_UE_ULSCH_t **ulschptr,unsigned char N_RB_UL)
 }
 
 
-NR_UE_ULSCH_t *new_nr_ue_ulsch(uint16_t N_RB_UL,
-                               int number_of_harq_pids,
-                               uint8_t abstraction_flag)
+NR_UE_ULSCH_t *new_nr_ue_ulsch(uint16_t N_RB_UL, int number_of_harq_pids)
 {
-  NR_UE_ULSCH_t *ulsch;
-  unsigned char exit_flag = 0,i,r;
   uint16_t a_segments = MAX_NUM_NR_ULSCH_SEGMENTS;  //number of segments to be allocated
 
   if (N_RB_UL != 273) {
@@ -120,97 +116,54 @@ NR_UE_ULSCH_t *new_nr_ue_ulsch(uint16_t N_RB_UL,
 
   uint32_t ulsch_bytes = a_segments*1056;  // allocated bytes per segment
 
-  ulsch = (NR_UE_ULSCH_t *)malloc16(sizeof(NR_UE_ULSCH_t));
+  NR_UE_ULSCH_t *ulsch = malloc16(sizeof(NR_UE_ULSCH_t));
+  DevAssert(ulsch);
+  memset(ulsch, 0, sizeof(*ulsch));
 
-  if (ulsch) {
-    memset(ulsch,0,sizeof(NR_UE_ULSCH_t));
-
-    ulsch->number_harq_processes_for_pusch = NR_MAX_ULSCH_HARQ_PROCESSES;
-    ulsch->Mlimit = 4; // maximum harq retransmissions
+  ulsch->number_harq_processes_for_pusch = NR_MAX_ULSCH_HARQ_PROCESSES;
+  ulsch->Mlimit = 4; // maximum harq retransmissions
 
-    //for (i=0; i<10; i++)
-      //ulsch->harq_ids[i] = 0;
+  //for (i=0; i<10; i++)
+    //ulsch->harq_ids[i] = 0;
 
-    for (i=0; i<number_of_harq_pids; i++) {
+  for (int i = 0; i < number_of_harq_pids; i++) {
 
-      ulsch->harq_processes[i] = (NR_UL_UE_HARQ_t *)malloc16(sizeof(NR_UL_UE_HARQ_t));
+    ulsch->harq_processes[i] = malloc16(sizeof(NR_UL_UE_HARQ_t));
+    DevAssert(ulsch->harq_processes[i]);
+    memset(ulsch->harq_processes[i], 0, sizeof(NR_UL_UE_HARQ_t));
 
-      //      printf("ulsch->harq_processes[%d] %p\n",i,ulsch->harq_processes[i]);
-      if (ulsch->harq_processes[i]) {
-        memset(ulsch->harq_processes[i], 0, sizeof(NR_UL_UE_HARQ_t));
-        ulsch->harq_processes[i]->b = (uint8_t*)malloc16(ulsch_bytes);
-        ulsch->harq_processes[i]->a = (unsigned char*)malloc16(ulsch_bytes);
+    ulsch->harq_processes[i]->a = malloc16(ulsch_bytes);
+    DevAssert(ulsch->harq_processes[i]->a);
+    bzero(ulsch->harq_processes[i]->a,ulsch_bytes);
 
-        if (ulsch->harq_processes[i]->a) {
-          bzero(ulsch->harq_processes[i]->a,ulsch_bytes);
-        } else {
-          printf("Can't allocate PDU\n");
-          exit_flag=1;
-        }
+    ulsch->harq_processes[i]->b = malloc16(ulsch_bytes);
+    DevAssert(ulsch->harq_processes[i]->b);
+    bzero(ulsch->harq_processes[i]->b,ulsch_bytes);
 
-        if (ulsch->harq_processes[i]->b)
-          bzero(ulsch->harq_processes[i]->b,ulsch_bytes);
-        else {
-          LOG_E(PHY,"Can't get b\n");
-          exit_flag=1;
-        }
-
-        if (abstraction_flag==0) {
-          for (r=0; r<a_segments; r++) {
-            // account for filler in first segment and CRCs for multiple segment case
-            ulsch->harq_processes[i]->c[r] = (uint8_t*)malloc16(8448);
-            ulsch->harq_processes[i]->d[r] = (uint8_t*)malloc16(68*384); //max size for coded output
-
-            if (ulsch->harq_processes[i]->c[r]) {
-              bzero(ulsch->harq_processes[i]->c[r],8448);
-            } else {
-              printf("Can't get c\n");
-              exit_flag=2;
-            }
-            if (ulsch->harq_processes[i]->d[r]) {
-              bzero(ulsch->harq_processes[i]->d[r],(68*384));
-            } else {
-              printf("Can't get d\n");
-              exit_flag=2;
-            }
-          }
-          ulsch->harq_processes[i]->e = (uint8_t*)malloc16(14*N_RB_UL*12*8);
-          if (ulsch->harq_processes[i]->e) {
-            bzero(ulsch->harq_processes[i]->e,14*N_RB_UL*12*8);
-          } else {
-            printf("Can't get e\n");
-            exit_flag=1;
-          }
-          ulsch->harq_processes[i]->f = (uint8_t*)malloc16(14*N_RB_UL*12*8);
-          if (ulsch->harq_processes[i]->f) {
-            bzero(ulsch->harq_processes[i]->f,14*N_RB_UL*12*8);
-          } else {
-            printf("Can't get f\n");
-            exit_flag=1;
-          }
-        }
+    for (int r = 0; r < a_segments; r++) {
+      // account for filler in first segment and CRCs for multiple segment case
+      ulsch->harq_processes[i]->c[r] = malloc16(8448);
+      DevAssert(ulsch->harq_processes[i]->c[r]);
+      bzero(ulsch->harq_processes[i]->c[r],8448);
 
-        ulsch->harq_processes[i]->subframe_scheduling_flag = 0;
-        ulsch->harq_processes[i]->first_tx = 1;
-      } else {
-        LOG_E(PHY,"Can't get harq_p %d\n",i);
-        exit_flag=3;
-      }
+      ulsch->harq_processes[i]->d[r] = malloc16(68*384); //max size for coded output
+      DevAssert(ulsch->harq_processes[i]->d[r]);
+      bzero(ulsch->harq_processes[i]->d[r],(68*384));
     }
 
-    if (exit_flag==0) {
-      for (i=0; i<number_of_harq_pids; i++) {
-        ulsch->harq_processes[i]->round=0;
-      }
-      return(ulsch);
-    }
-  }
+    ulsch->harq_processes[i]->e = malloc16(14*N_RB_UL*12*8);
+    DevAssert(ulsch->harq_processes[i]->e);
+    bzero(ulsch->harq_processes[i]->e,14*N_RB_UL*12*8);
 
-  LOG_E(PHY,"new_ue_ulsch exit flag, size of  %d ,   %zu\n",exit_flag, sizeof(LTE_UE_ULSCH_t));
-  free_nr_ue_ulsch(&ulsch,N_RB_UL);
-  return(NULL);
+    ulsch->harq_processes[i]->f = malloc16(14*N_RB_UL*12*8);
+    DevAssert(ulsch->harq_processes[i]->f);
+    bzero(ulsch->harq_processes[i]->f,14*N_RB_UL*12*8);
 
+    ulsch->harq_processes[i]->subframe_scheduling_flag = 0;
+    ulsch->harq_processes[i]->first_tx = 1;
+  }
 
+  return(ulsch);
 }
 
 
diff --git a/openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c b/openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c
index 0c188e9119ff49a4a1b9137b9cf4295b8354127e..41cf9c2ffaa248f9fe0b4bbe8ab1455e841fef68 100644
--- a/openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c
+++ b/openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c
@@ -128,7 +128,6 @@ void nr_ue_ulsch_procedures(PHY_VARS_NR_UE *UE,
   NR_UE_PUSCH *pusch_ue = UE->pusch_vars[thread_id][gNB_id];
 
   uint8_t  num_of_codewords = 1; // tmp assumption
-  int      Nid_cell = 0;
   int      N_PRB_oh = 0; // higher layer (RRC) parameter xOverhead in PUSCH-ServingCellConfig
   uint16_t number_dmrs_symbols = 0;
 
@@ -153,7 +152,7 @@ void nr_ue_ulsch_procedures(PHY_VARS_NR_UE *UE,
     if (start_sc >= frame_parms->ofdm_symbol_size)
       start_sc -= frame_parms->ofdm_symbol_size;
 
-    ulsch_ue->Nid_cell    = Nid_cell;
+    ulsch_ue->Nid_cell    = frame_parms->Nid_cell;
 
     for (int i = start_symbol; i < start_symbol + number_of_symbols; i++) {
       if((ul_dmrs_symb_pos >> i) & 0x01)
@@ -391,7 +390,7 @@ void nr_ue_ulsch_procedures(PHY_VARS_NR_UE *UE,
           // Perform this on gold sequence, not required when SC FDMA operation is done,
 	        LOG_D(PHY,"DMRS in symbol %d\n",l);
           nr_modulation(pusch_dmrs[l][0], n_dmrs*2, DMRS_MOD_ORDER, mod_dmrs); // currently only codeword 0 is modulated. Qm = 2 as DMRS is QPSK modulated
-        
+
         } else {
           dmrs_idx = 0;
         }
diff --git a/openair1/PHY/NR_UE_TRANSPORT/pss_nr.c b/openair1/PHY/NR_UE_TRANSPORT/pss_nr.c
index 4fc11d5fc6ca44910178a64432a68ee799012f54..88bdc3a9cd1392dbfdef6adacc0e9b75041fa8c0 100644
--- a/openair1/PHY/NR_UE_TRANSPORT/pss_nr.c
+++ b/openair1/PHY/NR_UE_TRANSPORT/pss_nr.c
@@ -440,33 +440,10 @@ void init_context_pss_nr(NR_DL_FRAME_PARMS *frame_parms_ue)
 void free_context_pss_nr(void)
 {
   for (int i = 0; i < NUMBER_PSS_SEQUENCE; i++) {
-
-    if (primary_synchro_time_nr[i] != NULL) {
-      free(primary_synchro_time_nr[i]);
-      primary_synchro_time_nr[i] = NULL;
-    }
-    else {
-      LOG_E(PHY,"Fatal memory deallocation problem \n");
-      assert(0);
-    }
-
-    if (primary_synchro_nr[i] != NULL) {
-      free(primary_synchro_nr[i]);
-      primary_synchro_nr[i] = NULL;
-    }
-    else {
-      LOG_E(PHY,"Fatal memory deallocation problem \n");
-      assert(0);
-    }
-
-    if (pss_corr_ue[i] != NULL) {
-      free(pss_corr_ue[i]);
-      pss_corr_ue[i] = NULL;
-    }
-    else {
-      LOG_E(PHY,"Fatal memory deallocation problem \n");
-      assert(0);
-    }
+    free_and_zero(primary_synchro_nr[i]);
+    free_and_zero(primary_synchro_nr2[i]);
+    free_and_zero(primary_synchro_time_nr[i]);
+    free_and_zero(pss_corr_ue[i]);
   }
 }
 
diff --git a/openair1/PHY/NR_UE_TRANSPORT/pucch_nr.c b/openair1/PHY/NR_UE_TRANSPORT/pucch_nr.c
index ddec605253b3f87779c62761061ea4b01fe139de..4dcce9f60fda9b959a70de7f15c0b5149ca07850 100644
--- a/openair1/PHY/NR_UE_TRANSPORT/pucch_nr.c
+++ b/openair1/PHY/NR_UE_TRANSPORT/pucch_nr.c
@@ -850,7 +850,7 @@ static inline void nr_pucch2_3_4_scrambling(uint16_t M_bit,uint16_t rnti,uint16_
   printf("\t\t [nr_pucch2_3_4_scrambling] scrambling M_bit=%d bits\n", M_bit);
 #endif
 }
-void nr_uci_encoding(uint64_t payload,
+static void nr_uci_encoding(uint64_t payload,
                      uint8_t nr_bit,
                      int fmt,
                      uint8_t is_pi_over_2_bpsk_enabled,
@@ -946,12 +946,10 @@ void nr_uci_encoding(uint64_t payload,
     AssertFatal(nrofPRB<=16,"Number of PRB >16\n");
   } else if (A>=12) {
     AssertFatal(A<65,"Polar encoding not supported yet for UCI with more than 64 bits\n");
-    t_nrPolar_params *currentPtr = nr_polar_params(NR_POLAR_UCI_PUCCH_MESSAGE_TYPE, 
-						   A, 
-						   nrofPRB,
-						   1,
-						   NULL);
-    polar_encoder_fast(&payload, b, 0,0,currentPtr);
+    polar_encoder_fast(&payload, b, 0,0,
+                       NR_POLAR_UCI_PUCCH_MESSAGE_TYPE, 
+                       A, 
+                       nrofPRB);
   }
   
 }
diff --git a/openair1/PHY/TOOLS/lte_ue_scope.c b/openair1/PHY/TOOLS/lte_ue_scope.c
index 00560f2d74a0fd73e6841ddc0552bd0af3c2bc3c..9b3f65d7d1315ef34144268248a18dbbf374169e 100644
--- a/openair1/PHY/TOOLS/lte_ue_scope.c
+++ b/openair1/PHY/TOOLS/lte_ue_scope.c
@@ -51,7 +51,7 @@ void reset_stats(FL_OBJECT *button, long arg) {
   int i,j,k;
   PHY_VARS_eNB *phy_vars_eNB = RC.eNB[0][0];
 
-  for (i=0; i<NUMBER_OF_UE_MAX; i++) {
+  for (i=0; i<NUMBER_OF_DLSCH_MAX; i++) {
     for (k=0; k<8; k++) { //harq_processes
       for (j=0; j<phy_vars_eNB->dlsch[i][0]->Mlimit; j++) {
         phy_vars_eNB->UE_stats[i].dlsch_NAK[k][j]=0;
diff --git a/openair1/PHY/defs_L1_NB_IoT.h b/openair1/PHY/defs_L1_NB_IoT.h
index a4552c8c271dfe9d91325cd8883b683eb0d1087b..b4aee78310692e6bbb89a68dc24d7bb7e441e5c6 100644
--- a/openair1/PHY/defs_L1_NB_IoT.h
+++ b/openair1/PHY/defs_L1_NB_IoT.h
@@ -122,7 +122,7 @@ static inline void* malloc16_clear( size_t size )
 #include "PHY/impl_defs_top_NB_IoT.h"
 #include "PHY/impl_defs_lte_NB_IoT.h"
 
-#include "PHY/TOOLS/time_meas.h"
+#include "time_meas.h"
 //#include "PHY/CODING/defs.h"
 #include "PHY/CODING/defs_NB_IoT.h"
 #include "openair2/PHY_INTERFACE/IF_Module_NB_IoT.h"
@@ -452,9 +452,6 @@ typedef struct {
   int                   sub_frame_start;
   ///
   int                   sub_frame_step;
-  ///
-  unsigned long long    gotIQs;
-
 } UE_rxtx_proc_NB_IoT_t;
 
 /// Context data structure for eNB subframe processing
diff --git a/openair1/PHY/defs_RU.h b/openair1/PHY/defs_RU.h
index 76dd92ef5d03d6af5284991cfb3e966fae915c22..6b18e55c4bc433933933adb87c4f11fb4f197916 100644
--- a/openair1/PHY/defs_RU.h
+++ b/openair1/PHY/defs_RU.h
@@ -36,7 +36,7 @@
 
 #include "common_lib.h"
 #include "openairinterface5g_limits.h"
-#include "PHY/TOOLS/time_meas.h"
+#include "time_meas.h"
 #include "defs_common.h"
 #include "nfapi_nr_interface_scf.h"
 
diff --git a/openair1/PHY/defs_UE.h b/openair1/PHY/defs_UE.h
index fc3d939f65d2b665f912a147aaf33052cf12716c..fa5538409381377fe2fd2685bd556dbd5e0d594c 100644
--- a/openair1/PHY/defs_UE.h
+++ b/openair1/PHY/defs_UE.h
@@ -59,7 +59,7 @@
 #include "defs_common.h"
 #include "impl_defs_top.h"
 
-#include "PHY/TOOLS/time_meas.h"
+#include "time_meas.h"
 #include "PHY/CODING/coding_defs.h"
 #include "PHY/TOOLS/tools_defs.h"
 #include "platform_types.h"
@@ -154,7 +154,6 @@ typedef struct {
 
   int sub_frame_start;
   int sub_frame_step;
-  unsigned long long gotIQs;
 } UE_rxtx_proc_t;
 
 /// Context data structure for eNB subframe processing
diff --git a/openair1/PHY/defs_common.h b/openair1/PHY/defs_common.h
index c79530434aee8f29bc82f3929ff9052013119cea..86df85db5c5ed1c076444ec5c07e2930b202ad22 100644
--- a/openair1/PHY/defs_common.h
+++ b/openair1/PHY/defs_common.h
@@ -58,7 +58,7 @@
 #include "assertions.h"
 
 //#include <complex.h>
-#include "PHY/TOOLS/time_meas.h"
+#include "time_meas.h"
 #include "platform_types.h"
 #define MAX_NUM_RU_PER_eNB 64
 
diff --git a/openair1/PHY/defs_eNB.h b/openair1/PHY/defs_eNB.h
index 995a4a934e4d0e603d19314dfc03b762c948b763..3a48dc51d66db3a0d4eba955513ade438a9bc6c2 100644
--- a/openair1/PHY/defs_eNB.h
+++ b/openair1/PHY/defs_eNB.h
@@ -58,7 +58,7 @@
 #include "defs_common.h"
 #include "defs_RU.h"
 #include "impl_defs_top.h"
-#include "PHY/TOOLS/time_meas.h"
+#include "time_meas.h"
 //#include "PHY/CODING/coding_defs.h"
 #include "PHY/TOOLS/tools_defs.h"
 #include "platform_types.h"
@@ -202,7 +202,7 @@ typedef struct {
   int repetition_number[4];
 } LTE_eNB_PRACH;
 
-#include "PHY/TOOLS/time_meas.h"
+#include "time_meas.h"
 #include "PHY/CODING/coding_defs.h"
 #include "PHY/TOOLS/tools_defs.h"
 #include "PHY/LTE_TRANSPORT/transport_eNB.h"
diff --git a/openair1/PHY/defs_gNB.h b/openair1/PHY/defs_gNB.h
index 7c7d30a6e2f21ddb8c5dcf73fa7fb6f809f17320..c24bd81549a0f88d1df13aa5d37bb9abfddd0949 100644
--- a/openair1/PHY/defs_gNB.h
+++ b/openair1/PHY/defs_gNB.h
@@ -779,7 +779,7 @@ typedef struct PHY_VARS_gNB_s {
   /// statistics for ULSCH measurement collection
   NR_gNB_SCH_STATS_t ulsch_stats[NUMBER_OF_NR_SCH_STATS_MAX];
   NR_gNB_UCI_STATS_t uci_stats[NUMBER_OF_NR_UCI_STATS_MAX];
-  t_nrPolar_params    *uci_polarParams;
+  t_nrPolar_params    **polarParams;
 
   /// SRS variables
   nr_srs_info_t *nr_srs_info[NUMBER_OF_NR_SRS_MAX];
@@ -856,7 +856,7 @@ typedef struct PHY_VARS_gNB_s {
   /*
   time_stats_t phy_proc;
   */
-  time_stats_t *phy_proc_tx[2];
+  time_stats_t phy_proc_tx;
   time_stats_t phy_proc_rx;
   time_stats_t rx_prach;
   /*
@@ -973,7 +973,6 @@ typedef struct processingData_L1tx {
   uint16_t num_pdsch_slot;
   int num_dl_pdcch;
   int num_ul_pdcch;
-  time_stats_t phy_proc_tx;
 } processingData_L1tx_t;
 
 #endif
diff --git a/openair1/PHY/defs_nr_UE.h b/openair1/PHY/defs_nr_UE.h
index 0fa839f1040f393cbd779e78da280cafb926af3f..f4b49ececa9f6c5249f981cead3a3aa1c6a8e1c0 100644
--- a/openair1/PHY/defs_nr_UE.h
+++ b/openair1/PHY/defs_nr_UE.h
@@ -96,7 +96,7 @@
 
 #include "impl_defs_top.h"
 #include "impl_defs_nr.h"
-#include "PHY/TOOLS/time_meas.h"
+#include "time_meas.h"
 #include "PHY/CODING/coding_defs.h"
 #include "PHY/TOOLS/tools_defs.h"
 #include "platform_types.h"
@@ -814,7 +814,6 @@ typedef struct {
 
   fapi_nr_config_request_t nrUE_config;
 
-  t_nrPolar_params *polarList;
   NR_UE_PDSCH     *pdsch_vars[RX_NB_TH_MAX][NUMBER_OF_CONNECTED_gNB_MAX+1]; // two RxTx Threads
   NR_UE_PBCH      *pbch_vars[NUMBER_OF_CONNECTED_gNB_MAX];
   NR_UE_PDCCH     *pdcch_vars[RX_NB_TH_MAX][NUMBER_OF_CONNECTED_gNB_MAX];
diff --git a/openair1/PHY/defs_nr_common.h b/openair1/PHY/defs_nr_common.h
index 78599dcbb65f3ab118aad088eecf24c2101e4fd5..d3352fb520dc05fbcbd5fb4d7335ec3e609f561c 100644
--- a/openair1/PHY/defs_nr_common.h
+++ b/openair1/PHY/defs_nr_common.h
@@ -387,8 +387,6 @@ struct NR_DL_FRAME_PARMS {
   uint8_t N_ssb;
   /// SSB index
   uint8_t ssb_index;
-  /// PBCH polar encoder params
-  t_nrPolar_params pbch_polar_params;
   /// OFDM symbol offset divisor for UL
   uint32_t ofdm_offset_divisor;
 };
diff --git a/openair1/PHY/thread_NR_UE.h b/openair1/PHY/thread_NR_UE.h
index 901d8faec901bbd72c4688466f5f6f39d28299e6..a3cc2d97820456d4e6b3d9fd83c2eb7c94caefde 100644
--- a/openair1/PHY/thread_NR_UE.h
+++ b/openair1/PHY/thread_NR_UE.h
@@ -62,7 +62,6 @@ typedef struct {
 
   int sub_frame_start;
   int sub_frame_step;
-  unsigned long long gotIQs;
   uint8_t decoder_thread_available1;
   int dci_err_cnt;
 } UE_nr_rxtx_proc_t;
diff --git a/openair1/SCHED_NR/fapi_nr_l1.c b/openair1/SCHED_NR/fapi_nr_l1.c
index 2dbaa738dc364a279592c7821879e5f176af683b..4b9f9534f0e3b3be208da064daa86370d984480b 100644
--- a/openair1/SCHED_NR/fapi_nr_l1.c
+++ b/openair1/SCHED_NR/fapi_nr_l1.c
@@ -165,6 +165,8 @@ void nr_schedule_response(NR_Sched_Rsp_t *Sched_INFO){
       notifiedFIFO_elt_t *res;
       res = pullTpool(gNB->L1_tx_free, gNB->threadPool);
       processingData_L1tx_t *msgTx = (processingData_L1tx_t *)NotifiedFifoData(res);
+      const time_stats_t ts = exec_time_stats_NotifiedFIFO(res);
+      merge_meas(&gNB->phy_proc_tx, &ts);
 
       msgTx->num_pdsch_slot=0;
       msgTx->num_dl_pdcch=0;
diff --git a/openair1/SCHED_NR/phy_procedures_nr_gNB.c b/openair1/SCHED_NR/phy_procedures_nr_gNB.c
index 41f395c09030614e39d792c02cc159b8b64cb95d..1ddf4b0d07794164cbe5b839e27845a3bf1b84ec 100644
--- a/openair1/SCHED_NR/phy_procedures_nr_gNB.c
+++ b/openair1/SCHED_NR/phy_procedures_nr_gNB.c
@@ -134,8 +134,6 @@ void phy_procedures_gNB_TX(processingData_L1tx_t *msgTx,
 
   VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_gNB_TX+offset,1);
 
-  if (do_meas==1) start_meas(&msgTx->phy_proc_tx);
-
   // clear the transmit data array and beam index for the current slot
   for (aa=0; aa<cfg->carrier_config.num_tx_ant.value; aa++) {
     memset(&gNB->common_vars.txdataF[aa][txdataF_offset],0,fp->samples_per_slot_wCP*sizeof(int32_t));
@@ -193,8 +191,6 @@ void phy_procedures_gNB_TX(processingData_L1tx_t *msgTx,
   }
 
   VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_gNB_TX+offset,0);
-
-  if (do_meas==1) stop_meas(&msgTx->phy_proc_tx);
 }
 
 void nr_postDecode(PHY_VARS_gNB *gNB, notifiedFIFO_elt_t *req) {
diff --git a/openair1/SCHED_NR/sched_nr.h b/openair1/SCHED_NR/sched_nr.h
index d7e0332b85a5865b87814896ad24fe8deef8a38d..2124397c47eac5fe700bdf5aecae38f6bfb5306b 100644
--- a/openair1/SCHED_NR/sched_nr.h
+++ b/openair1/SCHED_NR/sched_nr.h
@@ -54,5 +54,6 @@ void nr_fep_full(RU_t *ru, int slot);
 void nr_fep_full_2thread(RU_t *ru, int slot);
 void feptx_prec(RU_t *ru,int frame_tx,int tti_tx);
 int nr_phy_init_RU(RU_t *ru);
+void nr_phy_free_RU(RU_t *ru);
 
 #endif
diff --git a/openair1/SCHED_NR_UE/defs.h b/openair1/SCHED_NR_UE/defs.h
index b85d4c1b507b43e6b62d11d4ebfdaa31ce582638..c362bb470f4297456d5fbaa302aceedf8be825a6 100644
--- a/openair1/SCHED_NR_UE/defs.h
+++ b/openair1/SCHED_NR_UE/defs.h
@@ -295,9 +295,6 @@ uint8_t nr_pdcch_alloc2ul_subframe(NR_DL_FRAME_PARMS *frame_parms,uint8_t n);
 uint32_t nr_pdcch_alloc2ul_frame(NR_DL_FRAME_PARMS *frame_parms,uint32_t frame, uint8_t n);
 
 
-uint16_t nr_get_Np(uint8_t N_RB_DL,uint8_t nCCE,uint8_t plus1);
-
-
 int8_t nr_find_ue(uint16_t rnti, PHY_VARS_eNB *phy_vars_eNB);
 
 /*! \brief UL time alignment procedures for TA application
diff --git a/openair1/SCHED_NR_UE/fapi_nr_ue_l1.c b/openair1/SCHED_NR_UE/fapi_nr_ue_l1.c
index 485d732c04be4e836e08a6c4fe28fd1d9105a594..8af91b1f386508b33d6b41cfaa17c8bf36a0c074 100644
--- a/openair1/SCHED_NR_UE/fapi_nr_ue_l1.c
+++ b/openair1/SCHED_NR_UE/fapi_nr_ue_l1.c
@@ -90,8 +90,11 @@ int8_t nr_ue_scheduled_response_stub(nr_scheduled_response_t *scheduled_response
                 rx_ind->pdu_list[j].pdu = CALLOC(tx_req_body->pdu_length, sizeof(*rx_ind->pdu_list[j].pdu));
                 memcpy(rx_ind->pdu_list[j].pdu, tx_req_body->pdu, tx_req_body->pdu_length * sizeof(*rx_ind->pdu_list[j].pdu));
                 rx_ind->pdu_list[j].rnti = pusch_config_pdu->rnti;
-                rx_ind->pdu_list[j].timing_advance = scheduled_response->tx_request->tx_config.timing_advance;
-                rx_ind->pdu_list[j].ul_cqi = scheduled_response->tx_request->tx_config.ul_cqi;
+                /* TODO: Implement channel modeling to abstract TA and CQI. For now,
+                   we hard code the values below since they are set in L1 and we are
+                   abstracting L1. */
+                rx_ind->pdu_list[j].timing_advance = 31;
+                rx_ind->pdu_list[j].ul_cqi = 255;
                 char buffer[1024];
                 hexdump(rx_ind->pdu_list[j].pdu, rx_ind->pdu_list[j].pdu_length, buffer, sizeof(buffer));
                 LOG_D(NR_MAC, "Hexdump of pdu %s before queuing rx_ind\n",
@@ -113,7 +116,7 @@ int8_t nr_ue_scheduled_response_stub(nr_scheduled_response_t *scheduled_response
                 crc_ind->crc_list[j].num_cb = pusch_config_pdu->pusch_data.num_cb;
                 crc_ind->crc_list[j].rnti = pusch_config_pdu->rnti;
                 crc_ind->crc_list[j].tb_crc_status = 0;
-                crc_ind->crc_list[j].timing_advance = scheduled_response->tx_request->tx_config.timing_advance;
+                crc_ind->crc_list[j].timing_advance = 31;
                 crc_ind->crc_list[j].ul_cqi = 255;
               }
 
@@ -204,12 +207,66 @@ int8_t nr_ue_scheduled_response_stub(nr_scheduled_response_t *scheduled_response
           }
         }
       }
+      dl_config->number_pdus = 0;
     }
 
   }
   return 0;
 }
 
+
+void configure_dlsch(NR_UE_DLSCH_t *dlsch0,
+                     fapi_nr_dl_config_dlsch_pdu_rel15_t *dlsch_config_pdu,
+                     module_id_t module_id,
+                     int rnti) {
+
+  const uint8_t current_harq_pid = dlsch_config_pdu->harq_process_nbr;
+  dlsch0->current_harq_pid = current_harq_pid;
+  dlsch0->active = 1;
+  dlsch0->rnti = rnti;
+
+  LOG_D(PHY,"current_harq_pid = %d\n", current_harq_pid);
+
+  NR_DL_UE_HARQ_t *dlsch0_harq = dlsch0->harq_processes[current_harq_pid];
+  AssertFatal(dlsch0_harq, "no harq_process for HARQ PID %d\n", current_harq_pid);
+
+  dlsch0_harq->BWPStart = dlsch_config_pdu->BWPStart;
+  dlsch0_harq->BWPSize = dlsch_config_pdu->BWPSize;
+  dlsch0_harq->nb_rb = dlsch_config_pdu->number_rbs;
+  dlsch0_harq->start_rb = dlsch_config_pdu->start_rb;
+  dlsch0_harq->nb_symbols = dlsch_config_pdu->number_symbols;
+  dlsch0_harq->start_symbol = dlsch_config_pdu->start_symbol;
+  dlsch0_harq->dlDmrsSymbPos = dlsch_config_pdu->dlDmrsSymbPos;
+  dlsch0_harq->dmrsConfigType = dlsch_config_pdu->dmrsConfigType;
+  dlsch0_harq->n_dmrs_cdm_groups = dlsch_config_pdu->n_dmrs_cdm_groups;
+  dlsch0_harq->dmrs_ports = dlsch_config_pdu->dmrs_ports;
+  dlsch0_harq->mcs = dlsch_config_pdu->mcs;
+  dlsch0_harq->rvidx = dlsch_config_pdu->rv;
+  dlsch0->g_pucch = dlsch_config_pdu->accumulated_delta_PUCCH;
+  //get nrOfLayers from DCI info
+  uint8_t Nl = 0;
+  for (int i = 0; i < 12; i++) { // max 12 ports
+    if ((dlsch_config_pdu->dmrs_ports>>i)&0x01) Nl += 1;
+  }
+  dlsch0_harq->Nl = Nl;
+  dlsch0_harq->mcs_table=dlsch_config_pdu->mcs_table;
+  downlink_harq_process(dlsch0_harq, dlsch0->current_harq_pid, dlsch_config_pdu->ndi, dlsch_config_pdu->rv, dlsch0->rnti_type);
+  if (dlsch0_harq->status != ACTIVE) {
+    // dlsch0_harq->status not ACTIVE due to false retransmission
+    // Reset the following flag to skip PDSCH procedures in that case and retrasmit harq status
+    dlsch0->active = 0;
+    update_harq_status(module_id,dlsch0->current_harq_pid,dlsch0_harq->ack);
+  }
+  /* PTRS */
+  dlsch0_harq->PTRSFreqDensity = dlsch_config_pdu->PTRSFreqDensity;
+  dlsch0_harq->PTRSTimeDensity = dlsch_config_pdu->PTRSTimeDensity;
+  dlsch0_harq->PTRSPortIndex = dlsch_config_pdu->PTRSPortIndex;
+  dlsch0_harq->nEpreRatioOfPDSCHToPTRS = dlsch_config_pdu->nEpreRatioOfPDSCHToPTRS;
+  dlsch0_harq->PTRSReOffset = dlsch_config_pdu->PTRSReOffset;
+  dlsch0_harq->pduBitmap = dlsch_config_pdu->pduBitmap;
+  LOG_D(MAC, ">>>> \tdlsch0->g_pucch = %d\tdlsch0_harq.mcs = %d\n", dlsch0->g_pucch, dlsch0_harq->mcs);
+}
+
 int8_t nr_ue_scheduled_response(nr_scheduled_response_t *scheduled_response){
 
   bool found = false;
@@ -217,7 +274,6 @@ int8_t nr_ue_scheduled_response(nr_scheduled_response_t *scheduled_response){
 
     module_id_t module_id = scheduled_response->module_id;
     uint8_t cc_id = scheduled_response->CC_id, thread_id;
-    uint32_t i;
     int slot = scheduled_response->slot;
 
     // Note: we have to handle the thread IDs for this. To be revisited completely.
@@ -229,89 +285,53 @@ int8_t nr_ue_scheduled_response(nr_scheduled_response_t *scheduled_response){
 
     if(scheduled_response->dl_config != NULL){
       fapi_nr_dl_config_request_t *dl_config = scheduled_response->dl_config;
-
+      fapi_nr_dl_config_dlsch_pdu_rel15_t *dlsch_config_pdu;
+      fapi_nr_dl_config_dci_dl_pdu_rel15_t *pdcch_config;
       pdcch_vars->nb_search_space = 0;
 
-      for (i = 0; i < dl_config->number_pdus; ++i){
+      for (int i = 0; i < dl_config->number_pdus; ++i){
         AssertFatal(dl_config->number_pdus < FAPI_NR_DL_CONFIG_LIST_NUM,"dl_config->number_pdus %d out of bounds\n",dl_config->number_pdus);
         AssertFatal(dl_config->dl_config_list[i].pdu_type<=FAPI_NR_DL_CONFIG_TYPES,"pdu_type %d > 2\n",dl_config->dl_config_list[i].pdu_type);
         LOG_D(PHY, "In %s: frame %d slot %d received 1 DL %s PDU of %d total DL PDUs:\n",
               __FUNCTION__, scheduled_response->frame, slot, dl_pdu_type[dl_config->dl_config_list[i].pdu_type - 1], dl_config->number_pdus);
 
-        if (dl_config->dl_config_list[i].pdu_type == FAPI_NR_DL_CONFIG_TYPE_DCI) {
-
-          fapi_nr_dl_config_dci_dl_pdu_rel15_t *pdcch_config = &dl_config->dl_config_list[i].dci_config_pdu.dci_config_rel15;
-          memcpy((void*)&pdcch_vars->pdcch_config[pdcch_vars->nb_search_space],(void*)pdcch_config,sizeof(*pdcch_config));
-          pdcch_vars->nb_search_space = pdcch_vars->nb_search_space + 1;
-          pdcch_vars->sfn = scheduled_response->frame;
-          pdcch_vars->slot = slot;
-          LOG_D(PHY,"Number of DCI SearchSpaces %d\n",pdcch_vars->nb_search_space);
-
-        } else {
-
-          fapi_nr_dl_config_dlsch_pdu_rel15_t *dlsch_config_pdu = &dl_config->dl_config_list[i].dlsch_config_pdu.dlsch_config_rel15;
-          uint8_t current_harq_pid = dlsch_config_pdu->harq_process_nbr;
-
-          if (dl_config->dl_config_list[i].pdu_type == FAPI_NR_DL_CONFIG_TYPE_DLSCH){
-            dlsch0 = PHY_vars_UE_g[module_id][cc_id]->dlsch[thread_id][0][0];
-          }
-          else if (dl_config->dl_config_list[i].pdu_type == FAPI_NR_DL_CONFIG_TYPE_RA_DLSCH){
+        switch(dl_config->dl_config_list[i].pdu_type) {
+          case FAPI_NR_DL_CONFIG_TYPE_DCI:
+            pdcch_config = &dl_config->dl_config_list[i].dci_config_pdu.dci_config_rel15;
+            memcpy(&pdcch_vars->pdcch_config[pdcch_vars->nb_search_space],pdcch_config,sizeof(*pdcch_config));
+            pdcch_vars->nb_search_space = pdcch_vars->nb_search_space + 1;
+            pdcch_vars->sfn = scheduled_response->frame;
+            pdcch_vars->slot = slot;
+            LOG_D(PHY,"Number of DCI SearchSpaces %d\n",pdcch_vars->nb_search_space);
+            break;
+          case FAPI_NR_DL_CONFIG_TYPE_CSI_IM:
+            LOG_I(PHY,"Received CSI-IM PDU at FAPI\n");
+            break;
+          case FAPI_NR_DL_CONFIG_TYPE_CSI_RS:
+            LOG_I(PHY,"Received CSI-RS PDU at FAPI\n");
+            break;
+          case FAPI_NR_DL_CONFIG_TYPE_RA_DLSCH:
+            dlsch_config_pdu = &dl_config->dl_config_list[i].dlsch_config_pdu.dlsch_config_rel15;
             dlsch0 = PHY_vars_UE_g[module_id][cc_id]->dlsch_ra[0];
             dlsch0->rnti_type = _RA_RNTI_;
-            dlsch0->harq_processes[current_harq_pid]->status = ACTIVE;
-          }
-          else if (dl_config->dl_config_list[i].pdu_type == FAPI_NR_DL_CONFIG_TYPE_SI_DLSCH){
+            dlsch0->harq_processes[dlsch_config_pdu->harq_process_nbr]->status = ACTIVE;
+            configure_dlsch(dlsch0, dlsch_config_pdu, module_id,
+                            dl_config->dl_config_list[i].dlsch_config_pdu.rnti);
+            break;
+          case FAPI_NR_DL_CONFIG_TYPE_SI_DLSCH:
+            dlsch_config_pdu = &dl_config->dl_config_list[i].dlsch_config_pdu.dlsch_config_rel15;
             dlsch0 = PHY_vars_UE_g[module_id][cc_id]->dlsch_SI[0];
             dlsch0->rnti_type = _SI_RNTI_;
-            dlsch0->harq_processes[current_harq_pid]->status = ACTIVE;
-          }
-
-          dlsch0->current_harq_pid = current_harq_pid;
-          dlsch0->active = 1;
-          dlsch0->rnti = dl_config->dl_config_list[i].dlsch_config_pdu.rnti;
-
-          LOG_D(PHY,"slot %d current_harq_pid = %d\n",slot, current_harq_pid);
-
-          NR_DL_UE_HARQ_t *dlsch0_harq = dlsch0->harq_processes[current_harq_pid];
-          if (dlsch0_harq){
-
-            dlsch0_harq->BWPStart = dlsch_config_pdu->BWPStart;
-            dlsch0_harq->BWPSize = dlsch_config_pdu->BWPSize;
-            dlsch0_harq->nb_rb = dlsch_config_pdu->number_rbs;
-            dlsch0_harq->start_rb = dlsch_config_pdu->start_rb;
-            dlsch0_harq->nb_symbols = dlsch_config_pdu->number_symbols;
-            dlsch0_harq->start_symbol = dlsch_config_pdu->start_symbol;
-            dlsch0_harq->dlDmrsSymbPos = dlsch_config_pdu->dlDmrsSymbPos;
-            dlsch0_harq->dmrsConfigType = dlsch_config_pdu->dmrsConfigType;
-            dlsch0_harq->n_dmrs_cdm_groups = dlsch_config_pdu->n_dmrs_cdm_groups;
-            dlsch0_harq->dmrs_ports = dlsch_config_pdu->dmrs_ports;
-            dlsch0_harq->mcs = dlsch_config_pdu->mcs;
-            dlsch0_harq->rvidx = dlsch_config_pdu->rv;
-            dlsch0->g_pucch = dlsch_config_pdu->accumulated_delta_PUCCH;
-            //get nrOfLayers from DCI info
-            uint8_t Nl = 0;
-            for (i = 0; i < 12; i++) { // max 12 ports
-              if ((dlsch_config_pdu->dmrs_ports>>i)&0x01) Nl += 1;
-            }
-            dlsch0_harq->Nl = Nl;
-            dlsch0_harq->mcs_table=dlsch_config_pdu->mcs_table;
-            downlink_harq_process(dlsch0_harq, dlsch0->current_harq_pid, dlsch_config_pdu->ndi, dlsch_config_pdu->rv, dlsch0->rnti_type);
-            if (dlsch0_harq->status != ACTIVE) {
-              // dlsch0_harq->status not ACTIVE due to false retransmission
-              // Reset the following flag to skip PDSCH procedures in that case and retrasmit harq status
-              dlsch0->active = 0;
-              update_harq_status(module_id,dlsch0->current_harq_pid,dlsch0_harq->ack);
-            }
-            /* PTRS */
-            dlsch0_harq->PTRSFreqDensity = dlsch_config_pdu->PTRSFreqDensity;
-            dlsch0_harq->PTRSTimeDensity = dlsch_config_pdu->PTRSTimeDensity;
-            dlsch0_harq->PTRSPortIndex = dlsch_config_pdu->PTRSPortIndex;
-            dlsch0_harq->nEpreRatioOfPDSCHToPTRS = dlsch_config_pdu->nEpreRatioOfPDSCHToPTRS;
-            dlsch0_harq->PTRSReOffset = dlsch_config_pdu->PTRSReOffset;
-            dlsch0_harq->pduBitmap = dlsch_config_pdu->pduBitmap;
-            LOG_D(MAC, ">>>> \tdlsch0->g_pucch = %d\tdlsch0_harq.mcs = %d\n",
-                  dlsch0->g_pucch, dlsch0_harq->mcs);
-          }
+            dlsch0->harq_processes[dlsch_config_pdu->harq_process_nbr]->status = ACTIVE;
+            configure_dlsch(dlsch0, dlsch_config_pdu, module_id,
+                            dl_config->dl_config_list[i].dlsch_config_pdu.rnti);
+            break;
+          case FAPI_NR_DL_CONFIG_TYPE_DLSCH:
+            dlsch_config_pdu = &dl_config->dl_config_list[i].dlsch_config_pdu.dlsch_config_rel15;
+            dlsch0 = PHY_vars_UE_g[module_id][cc_id]->dlsch[thread_id][0][0];
+            configure_dlsch(dlsch0, dlsch_config_pdu, module_id,
+                            dl_config->dl_config_list[i].dlsch_config_pdu.rnti);
+            break;
         }
       }
       dl_config->number_pdus = 0;
@@ -322,9 +342,9 @@ int8_t nr_ue_scheduled_response(nr_scheduled_response_t *scheduled_response){
       fapi_nr_ul_config_request_t *ul_config = scheduled_response->ul_config;
       int pdu_done = 0;
       pthread_mutex_lock(&ul_config->mutex_ul_config);
-      LOG_D(PHY, "%d.%d ul S ul_config %p pdu_done %d number_pdus %d\n", scheduled_response->frame, slot, ul_config, pdu_done, ul_config->number_pdus);
 
-      for (i = 0; i < ul_config->number_pdus; ++i){
+      LOG_D(PHY, "%d.%d ul S ul_config %p pdu_done %d number_pdus %d\n", scheduled_response->frame, slot, ul_config, pdu_done, ul_config->number_pdus);
+      for (int i = 0; i < ul_config->number_pdus; ++i){
 
         AssertFatal(ul_config->ul_config_list[i].pdu_type <= FAPI_NR_UL_CONFIG_TYPES,"pdu_type %d out of bounds\n",ul_config->ul_config_list[i].pdu_type);
         LOG_D(PHY, "In %s: processing %s PDU of %d total UL PDUs (ul_config %p) \n", __FUNCTION__, ul_pdu_type[ul_config->ul_config_list[i].pdu_type - 1], ul_config->number_pdus, ul_config);
diff --git a/openair1/SCHED_NR_UE/phy_procedures_nr_ue.c b/openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
index 996ee2538c833703c3ca2c8f774a7e112c78c4f3..0d284de71c4541df679fa05b376e207cd1616138 100644
--- a/openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
+++ b/openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
@@ -576,6 +576,7 @@ int nr_ue_pdsch_procedures(PHY_VARS_NR_UE *ue, UE_nr_rxtx_proc_t *proc, int gNB_
                                       get_dmrs_port(aatx,dlsch0_harq->dmrs_ports),
                                       m,
                                       BWPStart,
+                                      dlsch0_harq->dmrsConfigType,
                                       ue->frame_parms.first_carrier_offset+(BWPStart + pdsch_start_rb)*12,
                                       pdsch_nb_rb);
 #if 0
@@ -610,7 +611,7 @@ int nr_ue_pdsch_procedures(PHY_VARS_NR_UE *ue, UE_nr_rxtx_proc_t *proc, int gNB_
       dual_stream_UE = 0;
       gNB_id_i = gNB_id+1;
       i_mod = 0;
-      if (( m==first_symbol_with_data ) && (m<4))
+      if (m==first_symbol_with_data)
         first_symbol_flag = 1;
       else
         first_symbol_flag = 0;
diff --git a/openair1/SIMULATION/LTE_PHY/dlsim.c b/openair1/SIMULATION/LTE_PHY/dlsim.c
index c1443700f331362add8263ef43c598f9ed6eb282..231d63cf047254821caa07336cf5c1401c4bf775 100644
--- a/openair1/SIMULATION/LTE_PHY/dlsim.c
+++ b/openair1/SIMULATION/LTE_PHY/dlsim.c
@@ -64,6 +64,13 @@
 void feptx_ofdm(RU_t *ru, int frame, int subframe);
 void feptx_prec(RU_t *ru, int frame, int subframe);
 
+const char *__asan_default_options()
+{
+  /* don't do leak checking in nr_ulsim, not finished yet */
+  return "detect_leaks=0";
+}
+
+
 double cpuf;
 #define inMicroS(a) (((double)(a))/(get_cpu_freq_GHz()*1000.0))
 //#define MCS_COUNT 23//added for PHY abstraction
@@ -122,7 +129,6 @@ void do_OFDM_mod_l(int32_t **txdataF, int32_t **txdata, uint16_t next_slot, LTE_
   slot_offset = (next_slot)*(frame_parms->samples_per_tti>>1);
 
   for (aa=0; aa<frame_parms->nb_antennas_tx; aa++) {
-    //    printf("Thread %d starting ... aa %d (%llu)\n",omp_get_thread_num(),aa,rdtsc());
     if (frame_parms->Ncp == 1)
       PHY_ofdm_mod(&txdataF[aa][slot_offset_F],        // input
                    &txdata[aa][slot_offset],         // output
@@ -140,7 +146,7 @@ void do_OFDM_mod_l(int32_t **txdataF, int32_t **txdata, uint16_t next_slot, LTE_
 }
 
 void DL_channel(RU_t *ru,PHY_VARS_UE *UE,uint subframe,int awgn_flag,double SNR, int tx_lev,int hold_channel,int abstx, int num_rounds, int trials, int round, channel_desc_t *eNB2UE[4],
-                double *s_re[2],double *s_im[2],double *r_re[2],double *r_im[2],FILE *csv_fd) {
+                double *s_re[NB_ANTENNAS_TX],double *s_im[NB_ANTENNAS_TX],double *r_re[NB_ANTENNAS_RX],double *r_im[NB_ANTENNAS_RX],FILE *csv_fd) {
   int i,u;
   int aa,aarx,aatx;
   double channelx,channely;
@@ -1538,9 +1544,9 @@ int main(int argc, char **argv) {
               LOG_M("txsig0.m","txs0", &ru->common.txdata[0][subframe* eNB->frame_parms.samples_per_tti], eNB->frame_parms.samples_per_tti,1,1);
 
               if (transmission_mode<7) {
-                LOG_M("txsigF0.m","txsF0x", &ru->common.txdataF_BF[0][subframe*nsymb*eNB->frame_parms.ofdm_symbol_size],nsymb*eNB->frame_parms.ofdm_symbol_size,1,1);
+                LOG_M("txsigF0.m","txsF0x", &ru->common.txdataF_BF[0][0],nsymb*eNB->frame_parms.ofdm_symbol_size,1,1);
               } else if (transmission_mode == 7) {
-                LOG_M("txsigF0.m","txsF0", &ru->common.txdataF_BF[5][subframe*nsymb*eNB->frame_parms.ofdm_symbol_size],nsymb*eNB->frame_parms.ofdm_symbol_size,1,1);
+                LOG_M("txsigF0.m","txsF0", &ru->common.txdataF_BF[5][0],nsymb*eNB->frame_parms.ofdm_symbol_size,1,1);
                 LOG_M("txsigF0_BF.m","txsF0_BF", &ru->common.txdataF_BF[0][0],eNB->frame_parms.ofdm_symbol_size,1,1);
               }
             }
diff --git a/openair1/SIMULATION/LTE_PHY/dlsim_tm4.c b/openair1/SIMULATION/LTE_PHY/dlsim_tm4.c
index 3b4e6782dac3b254bd9ae2dded483c7ed7f0c2e4..57c06e3b1300c846abf4a32bd31f766ae357fa70 100644
--- a/openair1/SIMULATION/LTE_PHY/dlsim_tm4.c
+++ b/openair1/SIMULATION/LTE_PHY/dlsim_tm4.c
@@ -112,7 +112,6 @@ void do_OFDM_mod_l(int32_t **txdataF, int32_t **txdata, uint16_t next_slot, LTE_
   slot_offset = (next_slot)*(frame_parms->samples_per_tti>>1);
 
   for (aa=0; aa<frame_parms->nb_antennas_tx; aa++) {
-    //    printf("Thread %d starting ... aa %d (%llu)\n",omp_get_thread_num(),aa,rdtsc());
 
     if (frame_parms->Ncp == 1)
       PHY_ofdm_mod(&txdataF[aa][slot_offset_F],        // input
diff --git a/openair1/SIMULATION/LTE_PHY/framegen.c b/openair1/SIMULATION/LTE_PHY/framegen.c
index f5b1e6d45ec88002fabd07750cf6ad913fddda59..b9f0221b2d4ef2479e93452518d6b45bb37d4607 100644
--- a/openair1/SIMULATION/LTE_PHY/framegen.c
+++ b/openair1/SIMULATION/LTE_PHY/framegen.c
@@ -333,7 +333,6 @@ void do_OFDM_mod(mod_sym_t **txdataF, int32_t **txdata, uint16_t next_slot, LTE_
   slot_offset = (next_slot)*(frame_parms->samples_per_tti>>1);
 
   for (aa=0; aa<frame_parms->nb_antennas_tx; aa++) {
-    //    printf("Thread %d starting ... aa %d (%llu)\n",omp_get_thread_num(),aa,rdtsc());
 
     if (frame_parms->Ncp == 1)
       PHY_ofdm_mod(&txdataF[aa][slot_offset_F],        // input
diff --git a/openair1/SIMULATION/LTE_PHY/mbmssim.c b/openair1/SIMULATION/LTE_PHY/mbmssim.c
index 31c3b47227aa680235300adbc7bcfe5ebbaa8d09..7efe9f4530e6b212fc68a3d598ee38aa5c46ed3c 100644
--- a/openair1/SIMULATION/LTE_PHY/mbmssim.c
+++ b/openair1/SIMULATION/LTE_PHY/mbmssim.c
@@ -121,7 +121,6 @@ void do_OFDM_mod_l(int32_t **txdataF, int32_t **txdata, uint16_t next_slot, LTE_
   slot_offset = (next_slot)*(frame_parms->samples_per_tti>>1);
 
   for (aa=0; aa<frame_parms->nb_antennas_tx; aa++) {
-    //    printf("Thread %d starting ... aa %d (%llu)\n",omp_get_thread_num(),aa,rdtsc());
     if (frame_parms->Ncp == 1)
       PHY_ofdm_mod(&txdataF[aa][slot_offset_F],        // input
                    &txdata[aa][slot_offset],         // output
diff --git a/openair1/SIMULATION/LTE_PHY/ulsim.c b/openair1/SIMULATION/LTE_PHY/ulsim.c
index 1b1058535e6fc6d77c931d37e0bd6dfc9aed1d2b..a1894d03d7384f6650723cd3b5f73635a09b429c 100644
--- a/openair1/SIMULATION/LTE_PHY/ulsim.c
+++ b/openair1/SIMULATION/LTE_PHY/ulsim.c
@@ -58,6 +58,12 @@
 #include "common/ran_context.h"
 #include "PHY/LTE_ESTIMATION/lte_estimation.h"
 
+const char *__asan_default_options()
+{
+  /* don't do leak checking in ulsim, not finished yet */
+  return "detect_leaks=0";
+}
+
 double cpuf;
 #define inMicroS(a) (((double)(a))/(get_cpu_freq_GHz()*1000.0))
 //#define MCS_COUNT 23//added for PHY abstraction
@@ -334,10 +340,10 @@ int main(int argc, char **argv) {
   double s_re1[30720],s_im1[30720],r_re1[30720],r_im1[30720];
   double r_re2[30720],r_im2[30720];
   double r_re3[30720],r_im3[30720];
-  double *s_re[2]= {s_re0,s_re1};
-  double *s_im[2]= {s_im0,s_im1};
-  double *r_re[4]= {r_re0,r_re1,r_re2,r_re3};
-  double *r_im[4]= {r_im0,r_im1,r_im2,r_im3};
+  double *s_re[NB_ANTENNAS_TX]= {s_re0,s_re1, NULL, NULL};
+  double *s_im[NB_ANTENNAS_TX]= {s_im0,s_im1, NULL, NULL};
+  double *r_re[NB_ANTENNAS_RX]= {r_re0,r_re1,r_re2,r_re3};
+  double *r_im[NB_ANTENNAS_RX]= {r_im0,r_im1,r_im2,r_im3};
   double forgetting_factor=0.0; //in [0,1] 0 means a new channel every time, 1 means keep the same channel
   double iqim=0.0;
   int cqi_error,cqi_errors,ack_errors,cqi_crc_falsepositives,cqi_crc_falsenegatives;
diff --git a/openair1/SIMULATION/NR_PHY/dlschsim.c b/openair1/SIMULATION/NR_PHY/dlschsim.c
index f566b93d9c31c138eb4351aabac30309f1ce60ed..f3aae9a3f7b452cbbd034e1d649e6680a875ce8e 100644
--- a/openair1/SIMULATION/NR_PHY/dlschsim.c
+++ b/openair1/SIMULATION/NR_PHY/dlschsim.c
@@ -29,6 +29,7 @@
 #include "common/config/config_userapi.h"
 #include "common/utils/LOG/log.h"
 #include "common/utils/LOG/vcd_signal_dumper.h"
+#include "common/utils/load_module_shlib.h"
 #include "T.h"
 #include "PHY/defs_gNB.h"
 #include "PHY/defs_nr_common.h"
@@ -355,7 +356,7 @@ int main(int argc, char **argv)
 	}
 
 	RC.gNB = (PHY_VARS_gNB **) malloc(sizeof(PHY_VARS_gNB *));
-	RC.gNB[0] = malloc(sizeof(PHY_VARS_gNB));
+	RC.gNB[0] = calloc(1, sizeof(PHY_VARS_gNB));
 	gNB = RC.gNB[0];
 	gNB->threadPool = (tpool_t*)malloc(sizeof(tpool_t));
 	initTpool(gNBthreads, gNB->threadPool, true);
@@ -412,7 +413,7 @@ int main(int argc, char **argv)
 	memcpy(&UE->frame_parms, frame_parms, sizeof(NR_DL_FRAME_PARMS));
 
 	//phy_init_nr_top(frame_parms);
-	if (init_nr_ue_signal(UE, 1, 0) != 0) {
+	if (init_nr_ue_signal(UE, 1) != 0) {
 		printf("Error at UE NR initialisation\n");
 		exit(-1);
 	}
@@ -421,8 +422,7 @@ int main(int argc, char **argv)
 	//init_nr_ue_transport(UE, 0);
 	for (int sf = 0; sf < 2; sf++) {
 		for (i = 0; i < 2; i++) {
-			UE->dlsch[sf][0][i] = new_nr_ue_dlsch(Kmimo, 8, Nsoft, 5, N_RB_DL,
-					0);
+			UE->dlsch[sf][0][i] = new_nr_ue_dlsch(Kmimo, 8, Nsoft, 5, N_RB_DL);
 
 			if (!UE->dlsch[sf][0][i]) {
 				printf("Can't get ue dlsch structures\n");
@@ -433,8 +433,6 @@ int main(int argc, char **argv)
 		}
 	}
 
-	UE->dlsch_SI[0] = new_nr_ue_dlsch(1, 1, Nsoft, 5, N_RB_DL, 0);
-	UE->dlsch_ra[0] = new_nr_ue_dlsch(1, 1, Nsoft, 5, N_RB_DL, 0);
 	unsigned char harq_pid = 0; //dlsch->harq_ids[subframe];
   processingData_L1tx_t msgDataTx;
   init_DLSCH_struct(gNB, &msgDataTx);
@@ -472,16 +470,13 @@ int main(int argc, char **argv)
 	rel15->dlDmrsSymbPos = 4;
 	rel15->mcsIndex[0] = Imcs;
         rel15->numDmrsCdmGrpsNoData = 1;
-	double *modulated_input = malloc16(sizeof(double) * 16 * 68 * 384); // [hna] 16 segments, 68*Zc
-	short *channel_output_fixed = malloc16(sizeof(short) * 16 * 68 * 384);
-	short *channel_output_uncoded = malloc16(sizeof(unsigned short) * 16 * 68 * 384);
+	double modulated_input[16 * 68 * 384]; // [hna] 16 segments, 68*Zc
+	short channel_output_fixed[16 * 68 * 384];
 	//unsigned char *estimated_output;
-	unsigned char *estimated_output_bit;
-	unsigned char *test_input_bit;
 	unsigned int errors_bit = 0;
-	test_input_bit = (unsigned char *) malloc16(sizeof(unsigned char) * 16 * 68 * 384);
+	unsigned char test_input_bit[16 * 68 * 384];
 	//estimated_output = (unsigned char *) malloc16(sizeof(unsigned char) * 16 * 68 * 384);
-	estimated_output_bit = (unsigned char *) malloc16(sizeof(unsigned char) * 16 * 68 * 384);
+	unsigned char estimated_output_bit[16 * 68 * 384];
 	NR_UE_DLSCH_t *dlsch0_ue = UE->dlsch[0][0][0];
 	NR_DL_UE_HARQ_t *harq_process = dlsch0_ue->harq_processes[harq_pid];
 	harq_process->mcs = Imcs;
@@ -495,9 +490,10 @@ int main(int argc, char **argv)
 	harq_process->dlDmrsSymbPos = 4;
 	harq_process->n_dmrs_cdm_groups = 1;
 	printf("harq process ue mcs = %d Qm = %d, symb %d\n", harq_process->mcs, harq_process->Qm, nb_symb_sch);
+
 	unsigned char *test_input;
 	test_input = (unsigned char *) malloc16(sizeof(unsigned char) * TBS / 8);
-
+	//unsigned char test_input[TBS / 8]  __attribute__ ((aligned(16)));
 	for (i = 0; i < TBS / 8; i++)
 		test_input[i] = (unsigned char) rand();
 
@@ -554,12 +550,6 @@ int main(int argc, char **argv)
 						   i,modulated_input[i],
 						   i,channel_output_fixed[i]);
 */
-
-				//Uncoded BER
-				if (channel_output_fixed[i] < 0)
-					channel_output_uncoded[i] = 1;  //QPSK demod
-				else
-					channel_output_uncoded[i] = 0;
 			}
 
 #ifdef DEBUG_CODER
@@ -641,12 +631,22 @@ int main(int argc, char **argv)
 	 }
 	 }*/
 
-	for (i = 0; i < 2; i++) {
-		printf("gNB %d\n", i);
-		free_gNB_dlsch(&(msgDataTx.dlsch[0][i]),N_RB_DL);
-		printf("UE %d\n", i);
-		free_nr_ue_dlsch(&(UE->dlsch[0][0][i]),N_RB_DL);
-	}
+  free(test_input);
+
+  free_channel_desc_scm(gNB2UE);
+
+  reset_DLSCH_struct(gNB, &msgDataTx);
+
+  phy_free_nr_gNB(gNB);
+  free(gNB->threadPool);
+  free(RC.gNB[0]);
+  free(RC.gNB);
+
+  for (int sf = 0; sf < 2; sf++)
+    for (int i = 0; i < 2; i++)
+      free_nr_ue_dlsch(&UE->dlsch[sf][0][i], N_RB_DL);
+  term_nr_ue_signal(UE, 1);
+  free(UE);
 
 	for (i = 0; i < 2; i++) {
 		free(s_re[i]);
@@ -671,6 +671,9 @@ int main(int argc, char **argv)
 	if (ouput_vcd)
         vcd_signal_dumper_close();
 
+  loader_reset();
+  logTerm();
+
 	return (n_errors);
 }
 
diff --git a/openair1/SIMULATION/NR_PHY/dlsim.c b/openair1/SIMULATION/NR_PHY/dlsim.c
index 046f410bd49144c0866e3896fbab0fb931644463..e797c010963940b6c59bbd6457808bbcfca9d306 100644
--- a/openair1/SIMULATION/NR_PHY/dlsim.c
+++ b/openair1/SIMULATION/NR_PHY/dlsim.c
@@ -73,6 +73,12 @@
 #include <executables/softmodem-common.h>
 #include <openair3/ocp-gtpu/gtp_itf.h>
 
+const char *__asan_default_options()
+{
+  /* don't do leak checking in nr_ulsim, not finished yet */
+  return "detect_leaks=0";
+}
+
 LCHAN_DESC DCCH_LCHAN_DESC,DTCH_DL_LCHAN_DESC,DTCH_UL_LCHAN_DESC;
 rlc_info_t Rlc_info_um,Rlc_info_am_config;
 
@@ -435,7 +441,7 @@ int main(int argc, char **argv)
 
   FILE *scg_fd=NULL;
   
-  while ((c = getopt (argc, argv, "f:hA:pf:g:in:s:S:t:x:y:z:M:N:F:GR:dPIL:Ea:b:d:e:m:w:T:U:qX:")) != -1) {
+  while ((c = getopt (argc, argv, "f:hA:pf:g:in:s:S:t:x:y:z:M:N:F:GR:dPIL:Ea:b:d:e:q:m:w:T:U:X:")) != -1) {
     switch (c) {
     case 'f':
       scg_fd = fopen(optarg,"r");
@@ -601,16 +607,17 @@ int main(int argc, char **argv)
     case 'b':
       g_rbSize = atoi(optarg);
       break;
+
     case 'D':
       dlsch_threads = atoi(optarg);
-      break;    
+      break;
+
     case 'e':
       g_mcsIndex = atoi(optarg);
       break;
 
     case 'q':
-      g_mcsTableIdx = 1;
-      get_softmodem_params()->use_256qam_table = 1;
+      g_mcsTableIdx = atoi(optarg);
       break;
 
     case 'm':
@@ -674,7 +681,7 @@ int main(int argc, char **argv)
       printf("-c Start symbol for PDSCH (fixed for now)\n");
       printf("-j Number of symbols for PDSCH (fixed for now)\n");
       printf("-e MSC index\n");
-      printf("-q Use 2nd MCS table (256 QAM table) for PDSCH\n");
+      printf("-q MCS Table index\n");
       printf("-t Acceptable effective throughput (in percentage)\n");
       printf("-T Enable PTRS, arguments list L_PTRS{0,1,2} K_PTRS{2,4}, e.g. -T 2 0 2 \n");
       printf("-U Change DMRS Config, arguments list DMRS TYPE{0=A,1=B} DMRS AddPos{0:2} DMRS ConfType{1:2}, e.g. -U 3 0 2 1 \n");
@@ -775,11 +782,14 @@ int main(int argc, char **argv)
   fill_scc_sim(rrc.carrier.servingcellconfigcommon,&ssb_bitmap,N_RB_DL,N_RB_DL,mu,mu);
   ssb_bitmap = 1;// Enable only first SSB with index ssb_indx=0
   fix_scc(scc,ssb_bitmap);
-
   prepare_scd(scd);
 
-  fill_default_secondaryCellGroup(scc, scd, secondaryCellGroup, 0, 1, n_tx, 6, 0, 0, 0);
+  NR_UE_NR_Capability_t* UE_Capability_nr = CALLOC(1,sizeof(NR_UE_NR_Capability_t));
+  prepare_sim_uecap(UE_Capability_nr,scc,mu,
+                    N_RB_DL,g_mcsTableIdx);
 
+  // TODO do a UECAP for phy-sim
+  fill_default_secondaryCellGroup(scc, scd, secondaryCellGroup, UE_Capability_nr, 0, 1, n_tx, 6, 0, 0, 0);
 
   /* RRC parameter validation for secondaryCellGroup */
   fix_scd(scd);
@@ -917,16 +927,25 @@ int main(int argc, char **argv)
                       
   UE->perfect_ce = 0;
 
-  if (init_nr_ue_signal(UE, 1, 0) != 0)
+  if (init_nr_ue_signal(UE, 1) != 0)
   {
     printf("Error at UE NR initialisation\n");
     exit(-1);
   }
 
-  init_nr_ue_transport(UE,0);
+  init_nr_ue_transport(UE);
 
   nr_gold_pbch(UE);
-  nr_gold_pdcch(UE,0);
+
+  // compute the scramblingID_pdcch and the gold pdcch
+  UE->scramblingID_pdcch = frame_parms->Nid_cell;
+  nr_gold_pdcch(UE, frame_parms->Nid_cell);
+
+  // compute the scrambling IDs for PDSCH DMRS
+  for (int i = 0; i < 2; i++)
+    UE->scramblingID[i] = frame_parms->Nid_cell;
+
+  nr_gold_pdsch(UE, UE->scramblingID);
 
   nr_l2_init_ue(NULL);
   UE_mac = get_mac_inst(0);
@@ -999,8 +1018,6 @@ int main(int argc, char **argv)
   msgDataTx->slot = slot;
   msgDataTx->frame = frame;
   memset(msgDataTx->ssb, 0, 64*sizeof(NR_gNB_SSB_t));
-  reset_meas(&msgDataTx->phy_proc_tx);
-  gNB->phy_proc_tx[0] = &msgDataTx->phy_proc_tx;
 
   for (SNR = snr0; SNR < snr1; SNR += .2) {
 
@@ -1314,7 +1331,7 @@ int main(int argc, char **argv)
       printf("\ngNB TX function statistics (per %d us slot, NPRB %d, mcs %d, block %d)\n",
 	     1000>>*scc->ssbSubcarrierSpacing, g_rbSize, g_mcsIndex,
 	     msgDataTx->dlsch[0][0]->harq_process.pdsch_pdu.pdsch_pdu_rel15.TBSize[0]<<3);
-      printDistribution(gNB->phy_proc_tx[0],table_tx,"PHY proc tx");
+      printDistribution(&gNB->phy_proc_tx,table_tx,"PHY proc tx");
       printStatIndent2(&gNB->dlsch_encoding_stats,"DLSCH encoding time");
       printStatIndent3(&gNB->dlsch_segmentation_stats,"DLSCH segmentation time");
       printStatIndent3(&gNB->tinput,"DLSCH LDPC input processing time");
diff --git a/openair1/SIMULATION/NR_PHY/pbchsim.c b/openair1/SIMULATION/NR_PHY/pbchsim.c
index 0f5752c2277250c68369162854bc8b8d3cda4214..f3a8d21fdde53172148dd76f40b2d0926b43b3e9 100644
--- a/openair1/SIMULATION/NR_PHY/pbchsim.c
+++ b/openair1/SIMULATION/NR_PHY/pbchsim.c
@@ -27,6 +27,7 @@
 #include <sys/mman.h>
 #include "common/config/config_userapi.h"
 #include "common/utils/LOG/log.h"
+#include "common/utils/load_module_shlib.h"
 #include "common/ran_context.h" 
 #include "common/utils/nr/nr_common.h"
 #include "PHY/types.h"
@@ -438,12 +439,13 @@ int main(int argc, char **argv)
   printf("Initializing gNodeB for mu %d, N_RB_DL %d\n",mu,N_RB_DL);
 
   RC.gNB = (PHY_VARS_gNB**) malloc(sizeof(PHY_VARS_gNB *));
-  RC.gNB[0] = malloc(sizeof(PHY_VARS_gNB));
+  RC.gNB[0] = malloc16_clear(sizeof(*(RC.gNB[0])));
   gNB = RC.gNB[0];
   gNB->ofdm_offset_divisor = UINT_MAX;
   frame_parms = &gNB->frame_parms; //to be initialized I suppose (maybe not necessary for PBCH)
   frame_parms->nb_antennas_tx = n_tx;
   frame_parms->nb_antennas_rx = n_rx;
+  frame_parms->nb_antenna_ports_gNB = n_tx;
   frame_parms->N_RB_DL = N_RB_DL;
   frame_parms->Nid_cell = Nid_cell;
   frame_parms->nushift = Nid_cell%4;
@@ -533,19 +535,13 @@ int main(int argc, char **argv)
 
   for (i=0; i<2; i++) {
 
-    s_re[i] = malloc(frame_length_complex_samples*sizeof(double));
-    bzero(s_re[i],frame_length_complex_samples*sizeof(double));
-    s_im[i] = malloc(frame_length_complex_samples*sizeof(double));
-    bzero(s_im[i],frame_length_complex_samples*sizeof(double));
-
-    r_re[i] = malloc(frame_length_complex_samples*sizeof(double));
-    bzero(r_re[i],frame_length_complex_samples*sizeof(double));
-    r_im[i] = malloc(frame_length_complex_samples*sizeof(double));
-    bzero(r_im[i],frame_length_complex_samples*sizeof(double));
+    s_re[i] = malloc16_clear(frame_length_complex_samples*sizeof(double));
+    s_im[i] = malloc16_clear(frame_length_complex_samples*sizeof(double));
 
+    r_re[i] = malloc16_clear(frame_length_complex_samples*sizeof(double));
+    r_im[i] = malloc16_clear(frame_length_complex_samples*sizeof(double));
     printf("Allocating %d samples for txdata\n",frame_length_complex_samples);
-    txdata[i] = malloc(frame_length_complex_samples*sizeof(int));
-    bzero(r_re[i],frame_length_complex_samples*sizeof(int));
+    txdata[i] = malloc16_clear(frame_length_complex_samples*sizeof(int));
   }
 
   if (pbch_file_fd!=NULL) {
@@ -554,8 +550,8 @@ int main(int argc, char **argv)
 
 
   //configure UE
-  UE = malloc(sizeof(PHY_VARS_NR_UE));
-  memcpy(&UE->frame_parms,frame_parms,sizeof(NR_DL_FRAME_PARMS));
+  UE = malloc16_clear(sizeof(*UE));
+  memcpy(&UE->frame_parms,frame_parms,sizeof(UE->frame_parms));
   //phy_init_nr_top(UE); //called from init_nr_ue_signal
   if (run_initial_sync==1)  UE->is_synchronized = 0;
   else                      UE->is_synchronized = 1;
@@ -565,7 +561,7 @@ int main(int argc, char **argv)
   if(eps!=0.0)
 	UE->UE_fo_compensation = 1; // if a frequency offset is set then perform fo estimation and compensation
 
-  if (init_nr_ue_signal(UE, 1, 0) != 0) {
+  if (init_nr_ue_signal(UE, 1) != 0) {
     printf("Error at UE NR initialisation\n");
     exit(-1);
   }
@@ -780,6 +776,15 @@ int main(int argc, char **argv)
 
   } // NSR
 
+  free_channel_desc_scm(gNB2UE);
+
+  phy_free_nr_gNB(gNB);
+  free(RC.gNB[0]);
+  free(RC.gNB);
+
+  term_nr_ue_signal(UE, 1);
+  free(UE);
+
   for (i=0; i<2; i++) {
     free(s_re[i]);
     free(s_im[i]);
@@ -800,6 +805,9 @@ int main(int argc, char **argv)
   if (input_fd)
     fclose(input_fd);
 
+  loader_reset();
+  logTerm();
+
   return(n_errors);
 
 }
diff --git a/openair1/SIMULATION/NR_PHY/prachsim.c b/openair1/SIMULATION/NR_PHY/prachsim.c
index 2d1ca3d25a2708695c128e934293021714b6fdc9..bc4f4a0b60a33b22bc59b911628c9d3646890d68 100644
--- a/openair1/SIMULATION/NR_PHY/prachsim.c
+++ b/openair1/SIMULATION/NR_PHY/prachsim.c
@@ -25,6 +25,7 @@
 #include <pthread.h>
 
 #include "common/config/config_userapi.h"
+#include "common/utils/load_module_shlib.h"
 #include "common/utils/LOG/log.h"
 #include "common/ran_context.h" 
 
@@ -662,7 +663,6 @@ int main(int argc, char **argv){
   RC.nb_nr_L1_inst=1;
   phy_init_nr_gNB(gNB,0,1); //lowmem
   nr_phy_init_RU(ru);
-  gNB->common_vars.rxdata = ru->common.rxdata;
   set_tdd_config_nr(&gNB->gNB_config, mu, 7, 6, 2, 4);
 
   // Configure UE
@@ -674,7 +674,7 @@ int main(int argc, char **argv){
   memcpy(&UE->frame_parms,frame_parms,sizeof(NR_DL_FRAME_PARMS));
   UE->nrUE_config.prach_config.num_prach_fd_occasions_list = (fapi_nr_num_prach_fd_occasions_t *) malloc(num_prach_fd_occasions*sizeof(fapi_nr_num_prach_fd_occasions_t));
 
-  if (init_nr_ue_signal(UE, 1, 0) != 0){
+  if (init_nr_ue_signal(UE, 1) != 0){
     printf("Error at UE NR initialisation\n");
     exit(-1);
   }
@@ -781,7 +781,7 @@ int main(int argc, char **argv){
   // multipath channel
   // dump_nr_prach_config(&gNB->frame_parms,subframe);
 
-  for (i = 0; i < frame_parms->samples_per_subframe<<1; i++) {
+  for (i = 0; i < frame_parms->samples_per_subframe; i++) {
     for (aa=0; aa<1; aa++) {
       if (awgn_flag == 0) {
         s_re[aa][i] = ((double)(((short *)&txdata[aa][prach_start]))[(i<<1)]);
@@ -879,7 +879,8 @@ int main(int argc, char **argv){
 	
         rx_nr_prach_ru(ru, prach_format, numRA, prachStartSymbol, prachOccasion, frame, slot);
 
-        gNB->prach_vars.rxsigF = ru->prach_rxsigF[prachOccasion];
+        for (int i = 0; i < ru->nb_rx; ++i)
+          gNB->prach_vars.rxsigF[i] = ru->prach_rxsigF[prachOccasion][i];
 	if (n_frames == 1) printf("ncs %d,num_seq %d\n",prach_pdu->num_cs,  prach_config->num_prach_fd_occasions_list[fd_occasion].num_root_sequences.value);
         rx_nr_prach(gNB, prach_pdu, prachOccasion, frame, subframe, &preamble_rx, &preamble_energy, &preamble_delay);
 
@@ -897,7 +898,7 @@ int main(int argc, char **argv){
           #ifdef NR_PRACH_DEBUG
 	  LOG_M("prach0.m","prach0", &txdata[0][prach_start], frame_parms->samples_per_subframe, 1, 1);
             LOG_M("prachF0.m","prachF0", &gNB->prach_vars.prachF[0], N_ZC, 1, 1);
-            LOG_M("rxsig0.m","rxs0", &gNB->common_vars.rxdata[0][subframe*frame_parms->samples_per_subframe], frame_parms->samples_per_subframe, 1, 1);
+            LOG_M("rxsig0.m","rxs0", &ru->common.rxdata[0][subframe*frame_parms->samples_per_subframe], frame_parms->samples_per_subframe, 1, 1);
             LOG_M("ru_rxsig0.m","rxs0", &ru->common.rxdata[0][subframe*frame_parms->samples_per_subframe], frame_parms->samples_per_subframe, 1, 1);
             LOG_M("ru_rxsigF0.m","rxsF0", ru->common.rxdataF[0], frame_parms->ofdm_symbol_size*frame_parms->symbols_per_slot, 1, 1);
             LOG_M("ru_prach_rxsigF0.m","rxsF0", ru->prach_rxsigF[0][0], N_ZC, 1, 1);
@@ -922,6 +923,28 @@ int main(int argc, char **argv){
       break;
   } //SNR loop
 
+  free_channel_desc_scm(UE2gNB);
+
+  nr_phy_free_RU(ru);
+  free(RC.ru[0]);
+  free(RC.ru);
+
+  phy_free_nr_gNB(gNB);
+  // allocated in set_tdd_config_nr()
+  int nb_slots_to_set = TDD_CONFIG_NB_FRAMES*(1<<mu)*NR_NUMBER_OF_SUBFRAMES_PER_FRAME;
+  free(gNB->gNB_config.prach_config.num_prach_fd_occasions_list);
+  for (int i = 0; i < nb_slots_to_set; ++i)
+    free(gNB->gNB_config.tdd_table.max_tdd_periodicity_list[i].max_num_of_symbol_per_slot_list);
+  free(gNB->gNB_config.tdd_table.max_tdd_periodicity_list);
+  free(RC.gNB[0]);
+  free(RC.gNB);
+
+  term_nr_ue_signal(UE, 1);
+  free(UE->nrUE_config.prach_config.num_prach_fd_occasions_list);
+  free(UE);
+  free(PHY_vars_UE_g[0]);
+  free(PHY_vars_UE_g);
+
   for (i=0; i<2; i++) {
     free(s_re[i]);
     free(s_im[i]);
@@ -936,5 +959,8 @@ int main(int argc, char **argv){
 
   if (input_fd) fclose(input_fd);
 
+  loader_reset();
+  logTerm();
+
   return(0);
 }
diff --git a/openair1/SIMULATION/NR_PHY/pucchsim.c b/openair1/SIMULATION/NR_PHY/pucchsim.c
index 465fe71f60eebdd4d11fb61b42a4b4bf9b0faf81..151d51d7267c77a944f7f3bc1c00a9051130fa51 100644
--- a/openair1/SIMULATION/NR_PHY/pucchsim.c
+++ b/openair1/SIMULATION/NR_PHY/pucchsim.c
@@ -26,6 +26,7 @@
 #include <sys/ioctl.h>
 #include <sys/mman.h>
 #include "common/config/config_userapi.h"
+#include "common/utils/load_module_shlib.h"
 #include "common/utils/LOG/log.h"
 #include "common/ran_context.h" 
 #include "PHY/types.h"
@@ -70,7 +71,6 @@ int main(int argc, char **argv)
   double sigma2, sigma2_dB=10,SNR,snr0=-2.0,snr1=2.0;
   double cfo=0;
   uint8_t snr1set=0;
-  int **txdataF,**rxdataF;
   double **s_re,**s_im,**r_re,**r_im;
   //int sync_pos, sync_pos_slot;
   //FILE *rx_frame_file;
@@ -372,7 +372,7 @@ int main(int argc, char **argv)
 
   printf("Transmitted payload is %ld, do_DTX = %d\n",actual_payload,do_DTX);
 
-  RC.gNB = (PHY_VARS_gNB**) malloc(sizeof(PHY_VARS_gNB *));
+  RC.gNB = calloc(1, sizeof(PHY_VARS_gNB *));
   RC.gNB[0] = calloc(1,sizeof(PHY_VARS_gNB));
   gNB = RC.gNB[0];
   gNB->pucch0_thres = pucch_DTX_thres;
@@ -441,24 +441,15 @@ int main(int argc, char **argv)
   s_im = malloc(n_tx*sizeof(double*));
   r_re = malloc(n_rx*sizeof(double*));
   r_im = malloc(n_rx*sizeof(double*));
-  txdataF = malloc(n_tx*sizeof(int*));
-  rxdataF = malloc(n_rx*sizeof(int*));
-  gNB->common_vars.rxdataF=rxdataF;
   memcpy((void*)&gNB->frame_parms,(void*)frame_parms,sizeof(frame_parms));
   for (int aatx=0; aatx<n_tx; aatx++) {
     s_re[aatx] = calloc(1,frame_length_complex_samples*sizeof(double));
     s_im[aatx] = calloc(1,frame_length_complex_samples*sizeof(double));
-    printf("Allocating %d samples for txdataF\n",frame_parms->symbols_per_slot*frame_parms->ofdm_symbol_size);
-    txdataF[aatx] = memalign(32,14*frame_parms->ofdm_symbol_size*sizeof(int));
-    bzero(txdataF[aatx],14*frame_parms->ofdm_symbol_size*sizeof(int));
   }
 
   for (int aarx=0; aarx<n_rx; aarx++) {
     r_re[aarx] = calloc(1,frame_length_complex_samples*sizeof(double));
     r_im[aarx] = calloc(1,frame_length_complex_samples*sizeof(double));
-    printf("Allocating %d samples for rxdataF\n",frame_parms->symbols_per_slot*frame_parms->ofdm_symbol_size);
-    rxdataF[aarx] = memalign(32,14*frame_parms->ofdm_symbol_size*sizeof(int));
-    bzero(rxdataF[aarx],14*frame_parms->ofdm_symbol_size*sizeof(int));
   }
 
   uint8_t mcs=0;
@@ -474,7 +465,6 @@ int main(int argc, char **argv)
       mcs=table2_mcs[actual_payload+shift];
     else AssertFatal(1==0,"Either nr_bit %d or sr_flag %d must be non-zero\n", nr_bit, sr_flag);
   }
-  else if (format == 2 && nr_bit > 11) gNB->uci_polarParams = nr_polar_params(2, nr_bit, nrofPRB, 1, NULL);
 
   startingPRB_intraSlotHopping = N_RB_DL-1;
   uint32_t hopping_id = Nid_cell;
@@ -490,7 +480,7 @@ int main(int argc, char **argv)
   if(eps!=0.0)
     UE->UE_fo_compensation = 1; // if a frequency offset is set then perform fo estimation and compensation
 
-  if (init_nr_ue_signal(UE, 1, 0) != 0)
+  if (init_nr_ue_signal(UE, 1) != 0)
   {
     printf("Error at UE NR initialisation\n");
     exit(-1);
@@ -536,6 +526,7 @@ int main(int argc, char **argv)
     ack_nack_errors=0;
     sr_errors=0;
     n_errors = 0;
+    int **txdataF = gNB->common_vars.txdataF;
     for (trial=0; trial<n_trials; trial++) {
       for (int aatx=0;aatx<1;aatx++)
         bzero(txdataF[aatx],frame_parms->ofdm_symbol_size*sizeof(int));
@@ -560,18 +551,17 @@ int main(int argc, char **argv)
 
       if (n_trials==1) printf("txlev %d (%f dB), offset %d, sigma2 %f ( %f dB)\n",txlev,10*log10(txlev),startingSymbolIndex*frame_parms->ofdm_symbol_size,sigma2,sigma2_dB);
 
-      int i0;
-      double txr,txi,rxr,rxi,nr,ni;
+      struct complex16 **rxdataF =  (struct complex16 **)gNB->common_vars.rxdataF;
       for (int symb=0; symb<gNB->frame_parms.symbols_per_slot;symb++) {
         if (symb<startingSymbolIndex || symb >= startingSymbolIndex+nrofSymbols) {
-          i0 = symb*gNB->frame_parms.ofdm_symbol_size;
+          int i0 = symb*gNB->frame_parms.ofdm_symbol_size;
           for (int re=0;re<N_RB_DL*12;re++) {
             i=i0+((gNB->frame_parms.first_carrier_offset + re)%gNB->frame_parms.ofdm_symbol_size);
             for (int aarx=0;aarx<n_rx;aarx++) {
-              nr = sqrt(sigma2/2)*gaussdouble(0.0,1.0);
-              ni = sqrt(sigma2/2)*gaussdouble(0.0,1.0);
-              ((int16_t*)rxdataF[aarx])[i<<1] = (int16_t)(100.0*(nr)/sqrt((double)txlev));
-              ((int16_t*)rxdataF[aarx])[1+(i<<1)] = (int16_t)(100.0*(ni)/sqrt((double)txlev));
+              double nr = sqrt(sigma2/2)*gaussdouble(0.0,1.0);
+              double ni = sqrt(sigma2/2)*gaussdouble(0.0,1.0);
+              rxdataF[aarx][i].r = (int16_t)(100.0*(nr)/sqrt((double)txlev));
+              rxdataF[aarx][i].i = (int16_t)(100.0*(ni)/sqrt((double)txlev));
             }
           }
         }
@@ -579,43 +569,45 @@ int main(int argc, char **argv)
 
       random_channel(UE2gNB,0);
       freq_channel(UE2gNB,N_RB_DL,2*N_RB_DL+1,scs/1000);
-      struct complexd phasor;
-      double rxr_tmp;
       for (int symb=0; symb<nrofSymbols; symb++) {
-        i0 = (startingSymbolIndex + symb)*gNB->frame_parms.ofdm_symbol_size;
+        int i0 = (startingSymbolIndex + symb)*gNB->frame_parms.ofdm_symbol_size;
         for (int re=0;re<N_RB_DL*12;re++) {
           i=i0+((gNB->frame_parms.first_carrier_offset + re)%gNB->frame_parms.ofdm_symbol_size);
-          phasor.r = cos(2*M_PI*phase*re);
+          struct complexd phasor;
+	  phasor.r = cos(2*M_PI*phase*re);
           phasor.i = sin(2*M_PI*phase*re);
           for (int aarx=0;aarx<n_rx;aarx++) {
-            txr = (double)(((int16_t *)txdataF[0])[(i<<1)]);
-            txi = (double)(((int16_t *)txdataF[0])[1+(i<<1)]);
-            rxr = txr*UE2gNB->chF[aarx][re].r - txi*UE2gNB->chF[aarx][re].i;
-            rxi = txr*UE2gNB->chF[aarx][re].i + txi*UE2gNB->chF[aarx][re].r;
-            rxr_tmp = rxr*phasor.r - rxi*phasor.i;
+            double txr = (double)(((int16_t *)txdataF[0])[(i<<1)]);
+            double txi = (double)(((int16_t *)txdataF[0])[1+(i<<1)]);
+	    double rxr={0},rxi={0};
+	    for (int l = 0; l<UE2gNB->channel_length; l++) {
+	      rxr = txr*UE2gNB->chF[aarx][l].r - txi*UE2gNB->chF[aarx][l].i;
+	      rxi = txr*UE2gNB->chF[aarx][l].i + txi*UE2gNB->chF[aarx][l].r;
+	    }
+	    double rxr_tmp = rxr*phasor.r - rxi*phasor.i;
             rxi     = rxr*phasor.i + rxi*phasor.r;
             rxr = rxr_tmp;
-            nr = sqrt(sigma2/2)*gaussdouble(0.0,1.0);
-            ni = sqrt(sigma2/2)*gaussdouble(0.0,1.0);
-            ((int16_t*)rxdataF[aarx])[i<<1] = (int16_t)(100.0*(rxr + nr)/sqrt((double)txlev));
-            ((int16_t*)rxdataF[aarx])[1+(i<<1)]=(int16_t)(100.0*(rxi + ni)/sqrt((double)txlev));
+            double nr = sqrt(sigma2/2)*gaussdouble(0.0,1.0);
+            double ni = sqrt(sigma2/2)*gaussdouble(0.0,1.0);
+            rxdataF[aarx][i].r = (int16_t)(100.0*(rxr + nr)/sqrt((double)txlev));
+            rxdataF[aarx][i].i=(int16_t)(100.0*(rxi + ni)/sqrt((double)txlev));
 
             if (n_trials==1 && abs(txr) > 0) printf("symb %d, re %d , aarx %d : txr %f, txi %f, chr %f, chi %f, nr %f, ni %f, rxr %f, rxi %f => %d,%d\n",
                                                     symb, re, aarx, txr,txi,
                                                     UE2gNB->chF[aarx][re].r,UE2gNB->chF[aarx][re].i,
                                                     nr,ni, rxr,rxi,
-                                                    ((int16_t*)rxdataF[aarx])[i<<1],((int16_t*)rxdataF[aarx])[1+(i<<1)]);
+                                                    rxdataF[aarx][i].r,rxdataF[aarx][i].i);
           }
         }
       }
 
       int rxlev=0;
-      for (int aarx=0;aarx<n_rx;aarx++) rxlev += signal_energy(&rxdataF[aarx][startingSymbolIndex*frame_parms->ofdm_symbol_size],
+      for (int aarx=0;aarx<n_rx;aarx++) rxlev += signal_energy((int32_t*)&rxdataF[aarx][startingSymbolIndex*frame_parms->ofdm_symbol_size],
                                                            frame_parms->ofdm_symbol_size);
 
       int rxlev_pucch=0;
 
-      for (int aarx=0;aarx<n_rx;aarx++) rxlev_pucch += signal_energy(&rxdataF[aarx][startingSymbolIndex*frame_parms->ofdm_symbol_size],
+      for (int aarx=0;aarx<n_rx;aarx++) rxlev_pucch += signal_energy((int32_t*)&rxdataF[aarx][startingSymbolIndex*frame_parms->ofdm_symbol_size],
                                                            12);
 
       // set UL mask for pucch allocation
@@ -660,25 +652,26 @@ int main(int argc, char **argv)
         if(sr_flag==1){
           if (uci_pdu.sr->sr_indication == 0 || uci_pdu.sr->sr_confidence_level == 1)
             sr_errors+=1;
+          free(uci_pdu.sr);
         }
         // harq value 0 -> pass
+        nfapi_nr_harq_t *harq_list = uci_pdu.harq->harq_list;
         // confidence value 0 -> good confidence
-        const int harq_value0 = uci_pdu.harq->harq_list[0].harq_value;
-        const int harq_value1 = uci_pdu.harq->harq_list[1].harq_value;
         const int confidence_lvl = uci_pdu.harq->harq_confidence_level;
         if(nr_bit>0){
           if (nr_bit==1 && do_DTX == 0)
-            ack_nack_errors+=(actual_payload^(!harq_value0));
+            ack_nack_errors+=(actual_payload^(!harq_list[0].harq_value));
           else if (do_DTX == 0)
-            ack_nack_errors+=(((actual_payload&1)^(!harq_value0))+((actual_payload>>1)^(!harq_value1)));
-          else if ((!confidence_lvl && !harq_value0) ||
-                   (!confidence_lvl && nr_bit == 2 && !harq_value1))
+            ack_nack_errors+=(((actual_payload&1)^(!harq_list[0].harq_value))+((actual_payload>>1)^(!harq_list[1].harq_value)));
+          else if ((!confidence_lvl && !harq_list[0].harq_value) ||
+                   (!confidence_lvl && nr_bit == 2 && !harq_list[1].harq_value))
             ack_nack_errors++;
           free(uci_pdu.harq->harq_list);
         }
+        free(uci_pdu.harq);
       }
       else if (format==1) {
-        nr_decode_pucch1(rxdataF,PUCCH_GroupHopping,hopping_id,
+        nr_decode_pucch1((int32_t **)rxdataF,PUCCH_GroupHopping,hopping_id,
                          &(payload_received),frame_parms,amp,nr_slot_tx,
                          m0,nrofSymbols,startingSymbolIndex,startingPRB,
                          startingPRB_intraSlotHopping,timeDomainOCC,nr_bit);
@@ -734,26 +727,34 @@ int main(int argc, char **argv)
       break;
     }
   }
+  free_channel_desc_scm(UE2gNB);
+  term_freq_channel();
+
+  phy_free_nr_gNB(gNB);
+  free(RC.gNB[0]);
+  free(RC.gNB);
+
+  term_nr_ue_signal(UE, 1);
+  free(UE);
 
   for (int aatx=0; aatx<n_tx; aatx++) {
     free(s_re[aatx]);
     free(s_im[aatx]);
-    free(txdataF[aatx]);
   }
   for (int aarx=0; aarx<n_rx; aarx++) {
     free(r_re[aarx]);
     free(r_im[aarx]);
-    free(rxdataF[aarx]);
   }
   free(s_re);
   free(s_im);
   free(r_re);
   free(r_im);
-  free(txdataF);
-  free(rxdataF);
 
   if (output_fd) fclose(output_fd);
   if (input_fd)  fclose(input_fd);
 
+  loader_reset();
+  logTerm();
+
   return(n_errors);
 }
diff --git a/openair1/SIMULATION/NR_PHY/ulschsim.c b/openair1/SIMULATION/NR_PHY/ulschsim.c
index 931a63a77e3aae6d3f74a04de84c4ce03c2bb31a..6cdf0b90cd65b030b4519c75386669464495922c 100644
--- a/openair1/SIMULATION/NR_PHY/ulschsim.c
+++ b/openair1/SIMULATION/NR_PHY/ulschsim.c
@@ -26,6 +26,7 @@
 #include <sys/ioctl.h>
 #include <sys/mman.h>
 #include "common/config/config_userapi.h"
+#include "common/utils/load_module_shlib.h"
 #include "common/utils/LOG/log.h"
 #include "common/ran_context.h"
 #include "PHY/types.h"
@@ -372,7 +373,7 @@ int main(int argc, char **argv)
 
 
   RC.gNB = (PHY_VARS_gNB **) malloc(sizeof(PHY_VARS_gNB *));
-  RC.gNB[0] = malloc(sizeof(PHY_VARS_gNB));
+  RC.gNB[0] = calloc(1, sizeof(PHY_VARS_gNB));
   gNB = RC.gNB[0];
   //gNB_config = &gNB->gNB_config;
 
@@ -400,7 +401,7 @@ int main(int argc, char **argv)
   memcpy(&UE->frame_parms, frame_parms, sizeof(NR_DL_FRAME_PARMS));
 
   //phy_init_nr_top(frame_parms);
-  if (init_nr_ue_signal(UE, 1, 0) != 0) {
+  if (init_nr_ue_signal(UE, 1) != 0) {
     printf("Error at UE NR initialisation.\n");
     exit(-1);
   }
@@ -408,7 +409,7 @@ int main(int argc, char **argv)
   for (sf = 0; sf < 2; sf++) {
     for (i = 0; i < 2; i++) {
 
-        UE->ulsch[sf][0][i] = new_nr_ue_ulsch(N_RB_UL, 8, 0);
+        UE->ulsch[sf][0][i] = new_nr_ue_ulsch(N_RB_UL, 8);
 
         if (!UE->ulsch[sf][0][i]) {
           printf("Can't get ue ulsch structures.\n");
@@ -454,46 +455,39 @@ int main(int argc, char **argv)
   rel15_ul->pusch_data.tb_size  = TBS/8;
   ///////////////////////////////////////////////////
 
-  double *modulated_input = malloc16(sizeof(double) * 16 * 68 * 384); // [hna] 16 segments, 68*Zc
-  short *channel_output_fixed = malloc16(sizeof(short) * 16 * 68 * 384);
-  short *channel_output_uncoded = malloc16(sizeof(unsigned short) * 16 * 68 * 384);
+  double modulated_input[16 * 68 * 384]; // [hna] 16 segments, 68*Zc
+  short channel_output_fixed[16 * 68 * 384];
+  short channel_output_uncoded[16 * 68 * 384];
   unsigned int errors_bit_uncoded = 0;
-  unsigned char *estimated_output_bit;
-  unsigned char *test_input_bit;
   unsigned int errors_bit = 0;
 
-  test_input_bit = (unsigned char *) malloc16(sizeof(unsigned char) * 16 * 68 * 384);
-  estimated_output_bit = (unsigned char *) malloc16(sizeof(unsigned char) * 16 * 68 * 384);
-
-  unsigned char *test_input;
-  test_input = (unsigned char *) malloc16(sizeof(unsigned char) * TBS / 8);
-
-  for (i = 0; i < TBS / 8; i++)
-    test_input[i] = (unsigned char) rand();
+  unsigned char test_input_bit[16 * 68 * 384];
+  unsigned char estimated_output_bit[16 * 68 * 384];
 
   /////////////////////////[adk] preparing UL harq_process parameters/////////////////////////
   ///////////
   NR_UL_UE_HARQ_t *harq_process_ul_ue = ulsch_ue->harq_processes[harq_pid];
+  DevAssert(harq_process_ul_ue);
 
   N_PRB_oh   = 0; // higher layer (RRC) parameter xOverhead in PUSCH-ServingCellConfig
   N_RE_prime = NR_NB_SC_PER_RB*nb_symb_sch - nb_re_dmrs - N_PRB_oh;
 
-  if (harq_process_ul_ue) {
-
-    harq_process_ul_ue->pusch_pdu.rnti = n_rnti;
-    harq_process_ul_ue->pusch_pdu.mcs_index = Imcs;
-    harq_process_ul_ue->pusch_pdu.nrOfLayers = Nl;
-    harq_process_ul_ue->pusch_pdu.rb_size = nb_rb;
-    harq_process_ul_ue->pusch_pdu.nr_of_symbols = nb_symb_sch;
-    harq_process_ul_ue->num_of_mod_symbols = N_RE_prime*nb_rb*nb_codewords;
-    harq_process_ul_ue->pusch_pdu.pusch_data.rv_index = rvidx;
-    harq_process_ul_ue->pusch_pdu.pusch_data.tb_size  = TBS/8;
-    harq_process_ul_ue->a = &test_input[0];
+  harq_process_ul_ue->pusch_pdu.rnti = n_rnti;
+  harq_process_ul_ue->pusch_pdu.mcs_index = Imcs;
+  harq_process_ul_ue->pusch_pdu.nrOfLayers = Nl;
+  harq_process_ul_ue->pusch_pdu.rb_size = nb_rb;
+  harq_process_ul_ue->pusch_pdu.nr_of_symbols = nb_symb_sch;
+  harq_process_ul_ue->num_of_mod_symbols = N_RE_prime*nb_rb*nb_codewords;
+  harq_process_ul_ue->pusch_pdu.pusch_data.rv_index = rvidx;
+  harq_process_ul_ue->pusch_pdu.pusch_data.tb_size  = TBS/8;
+  unsigned char *test_input = harq_process_ul_ue->a;
 
-  }
   ///////////
   ////////////////////////////////////////////////////////////////////////////////////////////
 
+  for (i = 0; i < TBS / 8; i++)
+    test_input[i] = (unsigned char) rand();
+
 #ifdef DEBUG_NR_ULSCHSIM
   for (i = 0; i < TBS / 8; i++) printf("test_input[i]=%hhu \n",test_input[i]);
 #endif
@@ -620,6 +614,19 @@ int main(int argc, char **argv)
     printf("\n");
   }
 
+  for (sf = 0; sf < 2; sf++)
+    for (i = 0; i < 2; i++)
+      free_nr_ue_ulsch(&UE->ulsch[sf][0][i], N_RB_UL);
+  term_nr_ue_signal(UE, 1);
+  free(UE);
+
+  phy_free_nr_gNB(gNB);
+  free(gNB->threadPool);
+  free(gNB->respDecode);
+  free(RC.gNB[0]);
+  free(RC.gNB);
+
+  free_channel_desc_scm(gNB2UE);
 
   if (output_fd)
     fclose(output_fd);
@@ -627,6 +634,9 @@ int main(int argc, char **argv)
   if (input_fd)
     fclose(input_fd);
 
+  loader_reset();
+  logTerm();
+
   return (n_errors);
 }
 
diff --git a/openair1/SIMULATION/NR_PHY/ulsim.c b/openair1/SIMULATION/NR_PHY/ulsim.c
index 6e9b88593c7c2c3e88fea39752b800ea306b3c0c..76d896a047a36c4d94f5b44f22fc7d8b842aa754 100644
--- a/openair1/SIMULATION/NR_PHY/ulsim.c
+++ b/openair1/SIMULATION/NR_PHY/ulsim.c
@@ -68,6 +68,12 @@
 #include <openair3/ocp-gtpu/gtp_itf.h>
 //#define DEBUG_ULSIM
 
+const char *__asan_default_options()
+{
+  /* don't do leak checking in nr_ulsim, not finished yet */
+  return "detect_leaks=0";
+}
+
 LCHAN_DESC DCCH_LCHAN_DESC,DTCH_DL_LCHAN_DESC,DTCH_UL_LCHAN_DESC;
 rlc_info_t Rlc_info_um,Rlc_info_am_config;
 
@@ -683,7 +689,6 @@ int main(int argc, char **argv)
   notifiedFIFO_elt_t *msgL1Tx = newNotifiedFIFO_elt(sizeof(processingData_L1tx_t),0,gNB->L1_tx_free,NULL);
   processingData_L1tx_t *msgDataTx = (processingData_L1tx_t *)NotifiedFifoData(msgL1Tx);
   msgDataTx->slot = -1;
-  gNB->phy_proc_tx[0] = &msgDataTx->phy_proc_tx;
   //gNB_config = &gNB->gNB_config;
 
   //memset((void *)&gNB->UL_INFO,0,sizeof(gNB->UL_INFO));
@@ -725,7 +730,8 @@ int main(int argc, char **argv)
 
   prepare_scd(scd);
 
-  fill_default_secondaryCellGroup(scc, scd, secondaryCellGroup, 0, 1, n_tx, 0, 0, 0, 0);
+  // TODO do a UECAP for phy-sim
+  fill_default_secondaryCellGroup(scc, scd, secondaryCellGroup, NULL, 0, 1, n_tx, 0, 0, 0, 0);
 
   // xer_fprint(stdout, &asn_DEF_NR_CellGroupConfig, (const void*)secondaryCellGroup);
 
@@ -760,28 +766,17 @@ int main(int argc, char **argv)
   PHY_vars_UE_g[0][0] = UE;
   memcpy(&UE->frame_parms, frame_parms, sizeof(NR_DL_FRAME_PARMS));
 
-  //phy_init_nr_top(frame_parms);
-  if (init_nr_ue_signal(UE, 1, 0) != 0) {
+  if (init_nr_ue_signal(UE, 1) != 0) {
     printf("Error at UE NR initialisation\n");
     exit(-1);
   }
 
-  //nr_init_frame_parms_ue(&UE->frame_parms);
-  init_nr_ue_transport(UE, 0);
-
-  /*
-  for (int sf = 0; sf < 2; sf++) {
-    for (i = 0; i < 2; i++) {
+  init_nr_ue_transport(UE);
 
-        UE->ulsch[sf][0][i] = new_nr_ue_ulsch(N_RB_UL, 8, 0);
-
-        if (!UE->ulsch[sf][0][i]) {
-          printf("Can't get ue ulsch structures\n");
-          exit(-1);
-        }
-    }
-  }
-  */
+  // initialize the pusch dmrs
+  uint16_t N_n_scid[2] = {frame_parms->Nid_cell,frame_parms->Nid_cell};
+  int n_scid = 0; // This quantity is indicated by higher layer parameter dmrs-SeqInitialization
+  nr_init_pusch_dmrs(UE, N_n_scid, n_scid);
 
   //Configure UE
   NR_UE_RRC_INST_t rrcue;
diff --git a/openair1/SIMULATION/NR_UE_PHY/unit_tests/src/pss_util_test.c b/openair1/SIMULATION/NR_UE_PHY/unit_tests/src/pss_util_test.c
index f3dbc78a737d19f4860a5f8805c28fe9637f3cd1..4334bd12f9d9f7adbfaa8a3fa0fa8c6f829848f6 100644
--- a/openair1/SIMULATION/NR_UE_PHY/unit_tests/src/pss_util_test.c
+++ b/openair1/SIMULATION/NR_UE_PHY/unit_tests/src/pss_util_test.c
@@ -71,7 +71,7 @@ static  nfapi_config_request_t *config =&config_t;
 /*************** FUNCTIONS ****************************************/
 
 //void phy_init_nr_top(NR_DL_FRAME_PARMS *frame_parms);
-int init_nr_ue_signal(PHY_VARS_NR_UE *ue, int nb_connected_eNB, uint8_t abstraction_flag);
+int init_nr_ue_signal(PHY_VARS_NR_UE *ue, int nb_connected_eNB);
 
 /*******************************************************************
 *
@@ -248,7 +248,7 @@ int init_test(unsigned char N_tx, unsigned char N_rx, unsigned char transmission
 
   //phy_init_nr_top(frame_parms);
 
-  if (init_nr_ue_signal(PHY_vars_UE, 1, 0) != 0) {
+  if (init_nr_ue_signal(PHY_vars_UE, 1) != 0) {
     LOG_E(PHY,"Error at UE NR initialisation : at line %d in function %s of file %s \n", LINE_FILE , __func__, FILE_NAME);
     return (0);
   }
diff --git a/openair1/SIMULATION/TOOLS/abstraction.c b/openair1/SIMULATION/TOOLS/abstraction.c
index a6b058688275e2a7642df3c66371f5c4cc4d84ca..b1cd691ec4dfb7093375f8fb314749e17dda4076 100644
--- a/openair1/SIMULATION/TOOLS/abstraction.c
+++ b/openair1/SIMULATION/TOOLS/abstraction.c
@@ -33,11 +33,26 @@
 // NEW code with lookup table for sin/cos based on delay profile (TO BE TESTED)
 
 double **cos_lut=NULL,* *sin_lut=NULL;
+static int freq_channel_init = 0;
+static int n_samples_max = 0;
 
 
 //#if 1
 
-
+void term_freq_channel(void)
+{
+  for (int f = -(n_samples_max >> 1); f <= n_samples_max >> 1; f++) {
+    const int idx = f + (n_samples_max >> 1);
+    if (cos_lut[idx])
+      free_and_zero(cos_lut[idx]);
+    if (sin_lut[idx])
+      free_and_zero(sin_lut[idx]);
+  }
+  free_and_zero(cos_lut);
+  free_and_zero(sin_lut);
+  freq_channel_init = 0;
+  n_samples_max = 0;
+}
 
 int init_freq_channel(channel_desc_t *desc,uint16_t nb_rb,int16_t n_samples,int scs) {
   double delta_f,freq;  // 90 kHz spacing
@@ -78,8 +93,6 @@ int freq_channel(channel_desc_t *desc,uint16_t nb_rb,int16_t n_samples,int scs)
   int16_t f,f2,d;
   uint8_t aarx,aatx,l;
   double *clut,*slut;
-  static int freq_channel_init=0;
-  static int n_samples_max=0;
 
   // do some error checking
   // n_samples has to be a odd number because we assume the spectrum is symmetric around the DC and includes the DC
diff --git a/openair1/SIMULATION/TOOLS/channel_sim.c b/openair1/SIMULATION/TOOLS/channel_sim.c
index 197a296a5125694f0fc5fe2c178aadfbb59852f6..de8db5d7cb431723ebfe329736fbefa5afa03f3c 100644
--- a/openair1/SIMULATION/TOOLS/channel_sim.c
+++ b/openair1/SIMULATION/TOOLS/channel_sim.c
@@ -40,7 +40,6 @@
 #include "PHY_INTERFACE/phy_interface_extern.h"
 #include "UTIL/OCG/OCG.h"
 #include "UTIL/OPT/opt.h" // to test OPT
-#include "UTIL/FIFO/types.h"
 
 #define RF
 
diff --git a/openair1/SIMULATION/TOOLS/random_channel.c b/openair1/SIMULATION/TOOLS/random_channel.c
index b00f6e31d5f3c1b83fd85c8cac1ea212236abf4a..0f6b8fb1bc15af0c1cb7cff7c0774e9884032bdd 100644
--- a/openair1/SIMULATION/TOOLS/random_channel.c
+++ b/openair1/SIMULATION/TOOLS/random_channel.c
@@ -125,7 +125,7 @@ void fill_channel_desc(channel_desc_t *chan_desc,
     chan_desc->ch[i] = (struct complexd *) malloc(channel_length * sizeof(struct complexd));
 
   for (i = 0; i<nb_tx*nb_rx; i++)
-    chan_desc->chF[i] = (struct complexd *) malloc(12*257 * sizeof(struct complexd)); // allocate for up to 257 RBs, 12 samples per RB
+    chan_desc->chF[i] = (struct complexd *) malloc(275 * 12 * sizeof(struct complexd)); // allocate for up to 275 RBs, 12 symbols per RB
 
   LOG_D(OCM,"[CHANNEL] Filling a (nb_taps %d)\n",nb_taps);
 
diff --git a/openair1/SIMULATION/TOOLS/sim.h b/openair1/SIMULATION/TOOLS/sim.h
index ce470fe0b00f25dfcc33f15735e480976ac327a9..f12483d70a1ac2d6440dbd6c35f278acce76d21e 100644
--- a/openair1/SIMULATION/TOOLS/sim.h
+++ b/openair1/SIMULATION/TOOLS/sim.h
@@ -479,6 +479,7 @@ void randominit(unsigned int seed_init);
 double uniformrandom(void);
 int freq_channel(channel_desc_t *desc,uint16_t nb_rb, int16_t n_samples,int scs);
 int init_freq_channel(channel_desc_t *desc,uint16_t nb_rb,int16_t n_samples,int scs);
+void term_freq_channel(void);
 uint8_t multipath_channel_nosigconv(channel_desc_t *desc);
 void multipath_tv_channel(channel_desc_t *desc,
                           double **tx_sig_re,
diff --git a/openair2/COMMON/ngap_messages_types.h b/openair2/COMMON/ngap_messages_types.h
index 60d48c8284112420a1d907b70d0b783828c8a408..ca7dd0b0bb2c08ef0227c9a53db8a59863fc6650 100644
--- a/openair2/COMMON/ngap_messages_types.h
+++ b/openair2/COMMON/ngap_messages_types.h
@@ -353,9 +353,18 @@ typedef struct pdusession_tobeswitched_s {
   uint32_t gtp_teid;
 } pdusession_tobeswitched_t;
 
+typedef struct qos_flow_tobe_modified_s {
+  uint8_t qfi; // 0~63
+} qos_flow_tobe_modified_t;
+
 typedef struct pdusession_modify_s {
   /* Unique pdusession_id for the UE. */
   uint8_t pdusession_id;
+
+  uint8_t nb_of_qos_flow;
+
+  // qos_flow_add_or_modify
+  qos_flow_tobe_modified_t qos[QOSFLOW_MAX_VALUE];
 } pdusession_modify_t;
 
 typedef enum ngap_Cause_e {
@@ -821,7 +830,7 @@ typedef struct ngap_pdusession_modify_req_s {
   /* Number of pdusession to be modify in the list */
   uint8_t nb_pdusessions_tomodify;
 
-  /* E RAB modify request */
+  /* pdu session modify request */
   pdusession_t pdusession_modify_params[NGAP_MAX_PDUSESSION];
 } ngap_pdusession_modify_req_t;
 
diff --git a/openair2/LAYER2/MAC/mac.h b/openair2/LAYER2/MAC/mac.h
index cb93c2feb8839668a1c36cbe6ae3fcdb767ecc3a..6637d05a8afacc5f18e117058d36e0936f2f4b2a 100644
--- a/openair2/LAYER2/MAC/mac.h
+++ b/openair2/LAYER2/MAC/mac.h
@@ -69,7 +69,7 @@
 #include "nfapi_interface.h"
 #include "PHY_INTERFACE/IF_Module.h"
 
-#include "PHY/TOOLS/time_meas.h"
+#include "time_meas.h"
 
 #include "PHY/defs_common.h" // for PRACH_RESOURCES_t
 #include "PHY/LTE_TRANSPORT/transport_common.h"
diff --git a/openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c b/openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c
index 8c0cabb5cb8afdb780b264b9752adac6cd37ad5c..94b7ab18bfda7e0f9b0a08240bc09204814151e6 100644
--- a/openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c
+++ b/openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c
@@ -315,21 +315,21 @@ void get_info_from_tda_tables(int default_abc,
                               int tda,
                               int dmrs_TypeA_Position,
                               int normal_CP,
+                              bool *is_mapping_typeA,
                               int *startSymbolIndex,
                               int *nrOfSymbols) {
   int k0 = 0;
-  int is_mapping_typeA = 1;
   switch(default_abc){
     case 1:
       if (normal_CP){
         if (dmrs_TypeA_Position){
-          is_mapping_typeA = table_5_1_2_1_1_2_time_dom_res_alloc_A_dmrs_typeA_pos3[tda][0];
+          *is_mapping_typeA = table_5_1_2_1_1_2_time_dom_res_alloc_A_dmrs_typeA_pos3[tda][0];
           k0 = table_5_1_2_1_1_2_time_dom_res_alloc_A_dmrs_typeA_pos3[tda][1];
           *startSymbolIndex = table_5_1_2_1_1_2_time_dom_res_alloc_A_dmrs_typeA_pos3[tda][2];
           *nrOfSymbols = table_5_1_2_1_1_2_time_dom_res_alloc_A_dmrs_typeA_pos3[tda][3];
         }
         else{
-          is_mapping_typeA = table_5_1_2_1_1_2_time_dom_res_alloc_A_dmrs_typeA_pos2[tda][0];
+          *is_mapping_typeA = table_5_1_2_1_1_2_time_dom_res_alloc_A_dmrs_typeA_pos2[tda][0];
           k0 = table_5_1_2_1_1_2_time_dom_res_alloc_A_dmrs_typeA_pos2[tda][1];
           *startSymbolIndex = table_5_1_2_1_1_2_time_dom_res_alloc_A_dmrs_typeA_pos2[tda][2];
           *nrOfSymbols = table_5_1_2_1_1_2_time_dom_res_alloc_A_dmrs_typeA_pos2[tda][3];
@@ -337,13 +337,13 @@ void get_info_from_tda_tables(int default_abc,
       }
       else{
         if (dmrs_TypeA_Position){
-          is_mapping_typeA = table_5_1_2_1_1_3_time_dom_res_alloc_A_extCP_dmrs_typeA_pos3[tda][0];
+          *is_mapping_typeA = table_5_1_2_1_1_3_time_dom_res_alloc_A_extCP_dmrs_typeA_pos3[tda][0];
           k0 = table_5_1_2_1_1_3_time_dom_res_alloc_A_extCP_dmrs_typeA_pos3[tda][1];
           *startSymbolIndex = table_5_1_2_1_1_3_time_dom_res_alloc_A_extCP_dmrs_typeA_pos3[tda][2];
           *nrOfSymbols = table_5_1_2_1_1_3_time_dom_res_alloc_A_extCP_dmrs_typeA_pos3[tda][3];
         }
         else{
-          is_mapping_typeA = table_5_1_2_1_1_3_time_dom_res_alloc_A_extCP_dmrs_typeA_pos2[tda][0];
+          *is_mapping_typeA = table_5_1_2_1_1_3_time_dom_res_alloc_A_extCP_dmrs_typeA_pos2[tda][0];
           k0 = table_5_1_2_1_1_3_time_dom_res_alloc_A_extCP_dmrs_typeA_pos2[tda][1];
           *startSymbolIndex = table_5_1_2_1_1_3_time_dom_res_alloc_A_extCP_dmrs_typeA_pos2[tda][2];
           *nrOfSymbols = table_5_1_2_1_1_3_time_dom_res_alloc_A_extCP_dmrs_typeA_pos2[tda][3];
@@ -352,13 +352,13 @@ void get_info_from_tda_tables(int default_abc,
       break;
     case 2:
       if (dmrs_TypeA_Position){
-        is_mapping_typeA = table_5_1_2_1_1_4_time_dom_res_alloc_B_dmrs_typeA_pos3[tda][0];
+        *is_mapping_typeA = table_5_1_2_1_1_4_time_dom_res_alloc_B_dmrs_typeA_pos3[tda][0];
         k0 = table_5_1_2_1_1_4_time_dom_res_alloc_B_dmrs_typeA_pos3[tda][1];
         *startSymbolIndex = table_5_1_2_1_1_4_time_dom_res_alloc_B_dmrs_typeA_pos3[tda][2];
         *nrOfSymbols = table_5_1_2_1_1_4_time_dom_res_alloc_B_dmrs_typeA_pos3[tda][3];
       }
       else{
-        is_mapping_typeA = table_5_1_2_1_1_4_time_dom_res_alloc_B_dmrs_typeA_pos2[tda][0];
+        *is_mapping_typeA = table_5_1_2_1_1_4_time_dom_res_alloc_B_dmrs_typeA_pos2[tda][0];
         k0 = table_5_1_2_1_1_4_time_dom_res_alloc_B_dmrs_typeA_pos2[tda][1];
         *startSymbolIndex = table_5_1_2_1_1_4_time_dom_res_alloc_B_dmrs_typeA_pos2[tda][2];
         *nrOfSymbols = table_5_1_2_1_1_4_time_dom_res_alloc_B_dmrs_typeA_pos2[tda][3];
@@ -366,13 +366,13 @@ void get_info_from_tda_tables(int default_abc,
       break;
     case 3:
       if (dmrs_TypeA_Position){
-        is_mapping_typeA = table_5_1_2_1_1_5_time_dom_res_alloc_C_dmrs_typeA_pos3[tda][0];
+        *is_mapping_typeA = table_5_1_2_1_1_5_time_dom_res_alloc_C_dmrs_typeA_pos3[tda][0];
         k0 = table_5_1_2_1_1_5_time_dom_res_alloc_C_dmrs_typeA_pos3[tda][1];
         *startSymbolIndex = table_5_1_2_1_1_5_time_dom_res_alloc_C_dmrs_typeA_pos3[tda][2];
         *nrOfSymbols = table_5_1_2_1_1_5_time_dom_res_alloc_C_dmrs_typeA_pos3[tda][3];
       }
       else{
-        is_mapping_typeA = table_5_1_2_1_1_5_time_dom_res_alloc_C_dmrs_typeA_pos2[tda][0];
+        *is_mapping_typeA = table_5_1_2_1_1_5_time_dom_res_alloc_C_dmrs_typeA_pos2[tda][0];
         k0 = table_5_1_2_1_1_5_time_dom_res_alloc_C_dmrs_typeA_pos2[tda][1];
         *startSymbolIndex = table_5_1_2_1_1_5_time_dom_res_alloc_C_dmrs_typeA_pos2[tda][2];
         *nrOfSymbols = table_5_1_2_1_1_5_time_dom_res_alloc_C_dmrs_typeA_pos2[tda][3];
@@ -382,7 +382,6 @@ void get_info_from_tda_tables(int default_abc,
      AssertFatal(1==0,"Invalid default time domaing allocation type\n");
   }
   AssertFatal(k0==0,"Only k0 = 0 is supported\n");
-  AssertFatal(is_mapping_typeA==1,"Only mapping type A is currently supported\n");
 }
 
 const char *prachfmt[]={"0","1","2","3", "A1","A2","A3","B1","B4","C0","C2","A1/B1","A2/B2","A3/B3"};
@@ -2721,6 +2720,7 @@ uint16_t nr_dci_size(const NR_BWP_DownlinkCommon_t *initialDownlinkBWP,
       LOG_D(NR_MAC,"DAI1 nbits %d\n",dci_pdu->dai[0].nbits);
       // 2nd DAI
       if (cg->spCellConfig->spCellConfigDedicated->pdsch_ServingCellConfig && 
+          cg->spCellConfig->spCellConfigDedicated->pdsch_ServingCellConfig->choice.setup &&
           cg->spCellConfig->spCellConfigDedicated->pdsch_ServingCellConfig->choice.setup->codeBlockGroupTransmission != NULL) { //TODO not sure about that
         dci_pdu->dai[1].nbits = 2;
         size += dci_pdu->dai[1].nbits;
@@ -2991,7 +2991,8 @@ uint16_t nr_dci_size(const NR_BWP_DownlinkCommon_t *initialDownlinkBWP,
         dci_pdu->srs_request.nbits = 3;
       size += dci_pdu->srs_request.nbits;
       // CBGTI
-      if (cg->spCellConfig->spCellConfigDedicated->pdsch_ServingCellConfig&&
+      if (cg->spCellConfig->spCellConfigDedicated->pdsch_ServingCellConfig &&
+          cg->spCellConfig->spCellConfigDedicated->pdsch_ServingCellConfig->choice.setup &&
           cg->spCellConfig->spCellConfigDedicated->pdsch_ServingCellConfig->choice.setup->codeBlockGroupTransmission != NULL) {
         uint8_t maxCBGperTB = (cg->spCellConfig->spCellConfigDedicated->pdsch_ServingCellConfig->choice.setup->codeBlockGroupTransmission->choice.setup->maxCodeBlockGroupsPerTransportBlock + 1) * 2;
         long *maxCWperDCI_rrc = pdsch_Config->maxNrofCodeWordsScheduledByDCI;
@@ -3336,65 +3337,65 @@ uint16_t get_ssb_start_symbol(const long band, NR_SubcarrierSpacing_t scs, int i
 
 
 void csi_period_offset(NR_CSI_ReportConfig_t *csirep,
-                       NR_NZP_CSI_RS_Resource_t *nzpcsi,
+                       struct NR_CSI_ResourcePeriodicityAndOffset *periodicityAndOffset,
                        int *period, int *offset) {
 
-  if(nzpcsi != NULL) {
+  if(periodicityAndOffset != NULL) {
 
-    NR_CSI_ResourcePeriodicityAndOffset_PR p_and_o = nzpcsi->periodicityAndOffset->present;
+    NR_CSI_ResourcePeriodicityAndOffset_PR p_and_o = periodicityAndOffset->present;
 
     switch(p_and_o){
       case NR_CSI_ResourcePeriodicityAndOffset_PR_slots4:
         *period = 4;
-        *offset = nzpcsi->periodicityAndOffset->choice.slots4;
+        *offset = periodicityAndOffset->choice.slots4;
         break;
       case NR_CSI_ResourcePeriodicityAndOffset_PR_slots5:
         *period = 5;
-        *offset = nzpcsi->periodicityAndOffset->choice.slots5;
+        *offset = periodicityAndOffset->choice.slots5;
         break;
       case NR_CSI_ResourcePeriodicityAndOffset_PR_slots8:
         *period = 8;
-        *offset = nzpcsi->periodicityAndOffset->choice.slots8;
+        *offset = periodicityAndOffset->choice.slots8;
         break;
       case NR_CSI_ResourcePeriodicityAndOffset_PR_slots10:
         *period = 10;
-        *offset = nzpcsi->periodicityAndOffset->choice.slots10;
+        *offset = periodicityAndOffset->choice.slots10;
         break;
       case NR_CSI_ResourcePeriodicityAndOffset_PR_slots16:
         *period = 16;
-        *offset = nzpcsi->periodicityAndOffset->choice.slots16;
+        *offset = periodicityAndOffset->choice.slots16;
         break;
       case NR_CSI_ResourcePeriodicityAndOffset_PR_slots20:
         *period = 20;
-        *offset = nzpcsi->periodicityAndOffset->choice.slots20;
+        *offset = periodicityAndOffset->choice.slots20;
         break;
       case NR_CSI_ResourcePeriodicityAndOffset_PR_slots32:
         *period = 32;
-        *offset = nzpcsi->periodicityAndOffset->choice.slots32;
+        *offset = periodicityAndOffset->choice.slots32;
         break;
       case NR_CSI_ResourcePeriodicityAndOffset_PR_slots40:
         *period = 40;
-        *offset = nzpcsi->periodicityAndOffset->choice.slots40;
+        *offset = periodicityAndOffset->choice.slots40;
         break;
       case NR_CSI_ResourcePeriodicityAndOffset_PR_slots64:
         *period = 64;
-        *offset = nzpcsi->periodicityAndOffset->choice.slots64;
+        *offset = periodicityAndOffset->choice.slots64;
         break;
       case NR_CSI_ResourcePeriodicityAndOffset_PR_slots80:
         *period = 80;
-        *offset = nzpcsi->periodicityAndOffset->choice.slots80;
+        *offset = periodicityAndOffset->choice.slots80;
         break;
       case NR_CSI_ResourcePeriodicityAndOffset_PR_slots160:
         *period = 160;
-        *offset = nzpcsi->periodicityAndOffset->choice.slots160;
+        *offset = periodicityAndOffset->choice.slots160;
         break;
       case NR_CSI_ResourcePeriodicityAndOffset_PR_slots320:
         *period = 320;
-        *offset = nzpcsi->periodicityAndOffset->choice.slots320;
+        *offset = periodicityAndOffset->choice.slots320;
         break;
       case NR_CSI_ResourcePeriodicityAndOffset_PR_slots640:
         *period = 640;
-        *offset = nzpcsi->periodicityAndOffset->choice.slots640;
+        *offset = periodicityAndOffset->choice.slots640;
         break;
     default:
       AssertFatal(1==0,"No periodicity and offset found in CSI resource");
diff --git a/openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.h b/openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.h
index f96abb46e5178066b170aebc67dc51afeab57098..c150c4f134aecb73181bb89c789b8b94e941c7b1 100644
--- a/openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.h
+++ b/openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.h
@@ -140,6 +140,7 @@ void get_info_from_tda_tables(int default_abc,
                               int tda,
                               int dmrs_TypeA_Position,
                               int normal_CP,
+                              bool *is_mapping_typeA,
                               int *startSymbolIndex,
                               int *nrOfSymbols);
 
@@ -160,7 +161,7 @@ int16_t get_N_RA_RB (int delta_f_RA_PRACH,int delta_f_PUSCH);
 void find_period_offest_SR (NR_SchedulingRequestResourceConfig_t *SchedulingReqRec, int *period, int *offset);
 
 void csi_period_offset(NR_CSI_ReportConfig_t *csirep,
-                       NR_NZP_CSI_RS_Resource_t *nzpcsi,
+                       struct NR_CSI_ResourcePeriodicityAndOffset *periodicityAndOffset,
                        int *period, int *offset);
 
 void reverse_n_bits(uint8_t *value, uint16_t bitlen);
diff --git a/openair2/LAYER2/NR_MAC_UE/mac_proto.h b/openair2/LAYER2/NR_MAC_UE/mac_proto.h
index 4158c78b054d0e6c5efd0111bb4d6916734ca730..3e4d53b985be0ae4270287fed9ef0e5d7ec2e4e4 100644
--- a/openair2/LAYER2/NR_MAC_UE/mac_proto.h
+++ b/openair2/LAYER2/NR_MAC_UE/mac_proto.h
@@ -214,6 +214,7 @@ uint8_t get_ssb_rsrp_payload(NR_UE_MAC_INST_t *mac,
 
 uint8_t nr_get_csi_payload(NR_UE_MAC_INST_t *mac,
                            PUCCH_sched_t *pucch,
+                           int csi_report_id,
                            NR_CSI_MeasConfig_t *csi_MeasConfig);
 
 uint8_t get_rsrp_index(int rsrp);
@@ -271,6 +272,7 @@ int8_t nr_ue_process_dci_time_dom_resource_assignment(NR_UE_MAC_INST_t *mac,
                                                       NR_PDSCH_TimeDomainResourceAllocationList_t *pdsch_TimeDomainAllocationList,
                                                       nfapi_nr_ue_pusch_pdu_t *pusch_config_pdu,
                                                       fapi_nr_dl_config_dlsch_pdu_rel15_t *dlsch_config_pdu,
+                                                      int *mappingtype,
                                                       uint8_t time_domain_ind,
                                                       int default_abc,
                                                       bool use_default);
@@ -350,6 +352,8 @@ and fills the PRACH PDU per each FD occasion.
 */
 void nr_ue_prach_scheduler(module_id_t module_idP, frame_t frameP, sub_frame_t slotP, int thread_id);
 void nr_ue_pucch_scheduler(module_id_t module_idP, frame_t frameP, int slotP, int thread_id);
+void nr_schedule_csirs_reception(NR_UE_MAC_INST_t *mac, int frame, int slot);
+void nr_schedule_csi_for_im(NR_UE_MAC_INST_t *mac, int frame, int slot);
 
 /* \brief This function schedules the Msg3 transmission
 @param
diff --git a/openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c b/openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
index 257e8824e50601b8814d2a07f13838f2558709fc..c57736990c79425db127df3bad2ea5df72d5069b 100644
--- a/openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
+++ b/openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
@@ -470,6 +470,7 @@ int8_t nr_ue_process_dci_time_dom_resource_assignment(NR_UE_MAC_INST_t *mac,
                                                       NR_PDSCH_TimeDomainResourceAllocationList_t *pdsch_TimeDomainAllocationList,
 						      nfapi_nr_ue_pusch_pdu_t *pusch_config_pdu,
 						      fapi_nr_dl_config_dlsch_pdu_rel15_t *dlsch_config_pdu,
+                                                      int *mapping_type,
 						      uint8_t time_domain_ind,
                                                       int default_abc,
                                                       bool use_default){
@@ -547,13 +548,15 @@ int8_t nr_ue_process_dci_time_dom_resource_assignment(NR_UE_MAC_INST_t *mac,
     }
     else {// Default configuration from tables
 
+      bool is_typeA;
       get_info_from_tda_tables(default_abc,
                                time_domain_ind,
                                dmrs_typeA_pos,
                                1, // normal CP
+                               &is_typeA,
                                &sliv_S,
                                &sliv_L);
-
+      *mapping_type = is_typeA? typeA : typeB;
       dlsch_config_pdu->number_symbols = sliv_L;
       dlsch_config_pdu->start_symbol = sliv_S;
     }
@@ -859,12 +862,17 @@ int8_t nr_ue_process_dci(module_id_t module_id, int cc_id, uint8_t gNB_index, fr
     else if (mac->scc_SIB && mac->scc_SIB->downlinkConfigCommon.initialDownlinkBWP.pdsch_ConfigCommon->choice.setup)
       pdsch_TimeDomainAllocationList = mac->scc_SIB->downlinkConfigCommon.initialDownlinkBWP.pdsch_ConfigCommon->choice.setup->pdsch_TimeDomainAllocationList;
 
+    int mappingtype;
     /* TIME_DOM_RESOURCE_ASSIGNMENT */
-    if (nr_ue_process_dci_time_dom_resource_assignment(mac,NULL,pdsch_TimeDomainAllocationList,NULL,dlsch_config_pdu_1_0,dci->time_domain_assignment.val,default_abc,rnti==SI_RNTI) < 0) {
+    if (nr_ue_process_dci_time_dom_resource_assignment(mac,NULL,pdsch_TimeDomainAllocationList,
+                                                       NULL,dlsch_config_pdu_1_0,&mappingtype,
+                                                       dci->time_domain_assignment.val,
+                                                       default_abc,rnti==SI_RNTI) < 0) {
       LOG_W(MAC, "[%d.%d] Invalid time_domain_assignment. Possibly due to false DCI. Ignoring DCI!\n", frame, slot);
       return -1;
     }
-    int mappingtype = pdsch_TimeDomainAllocationList ? pdsch_TimeDomainAllocationList->list.array[dci->time_domain_assignment.val]->mappingType : ((dlsch_config_pdu_1_0->start_symbol <= 3)? typeA: typeB);
+    if(pdsch_TimeDomainAllocationList && rnti!=SI_RNTI)
+      mappingtype = pdsch_TimeDomainAllocationList->list.array[dci->time_domain_assignment.val]->mappingType;
 
     /* dmrs symbol positions*/
     dlsch_config_pdu_1_0->dlDmrsSymbPos = fill_dmrs_mask(pdsch_config,
@@ -1056,13 +1064,16 @@ int8_t nr_ue_process_dci(module_id_t module_id, int cc_id, uint8_t gNB_index, fr
       return -1;
     }
     /* TIME_DOM_RESOURCE_ASSIGNMENT */
+    int mappingtype;
     NR_PDSCH_TimeDomainResourceAllocationList_t *pdsch_TimeDomainAllocationList = choose_dl_tda_list(pdsch_Config,bwpc->pdsch_ConfigCommon->choice.setup);
-    if (nr_ue_process_dci_time_dom_resource_assignment(mac,NULL,pdsch_TimeDomainAllocationList,NULL,dlsch_config_pdu_1_1,dci->time_domain_assignment.val,0,false) < 0) {
+    if (nr_ue_process_dci_time_dom_resource_assignment(mac,NULL,pdsch_TimeDomainAllocationList,
+                                                       NULL,dlsch_config_pdu_1_1,&mappingtype,
+                                                       dci->time_domain_assignment.val,0,false) < 0) {
       LOG_W(MAC, "[%d.%d] Invalid time_domain_assignment. Possibly due to false DCI. Ignoring DCI!\n", frame, slot);
       return -1;
     }
-
-    int mappingtype = pdsch_TimeDomainAllocationList ? pdsch_TimeDomainAllocationList->list.array[dci->time_domain_assignment.val]->mappingType : ((dlsch_config_pdu_1_1->start_symbol <= 3)? typeA: typeB);
+    if(pdsch_TimeDomainAllocationList)
+      mappingtype = pdsch_TimeDomainAllocationList->list.array[dci->time_domain_assignment.val]->mappingType;
 
     dlsch_config_pdu_1_1->dmrsConfigType = pdsch_Config->dmrs_DownlinkForPDSCH_MappingTypeA->choice.setup->dmrs_Type == NULL ? NFAPI_NR_DMRS_TYPE1 : NFAPI_NR_DMRS_TYPE2;
 
@@ -2392,7 +2403,7 @@ uint8_t nr_get_csi_measurements(NR_UE_MAC_INST_t *mac,
                       "CSI resource not found among PUCCH resources\n");
 
           pucch->resource_indicator = found;
-          csi_bits = nr_get_csi_payload(mac, pucch, csi_measconfig);
+          csi_bits += nr_get_csi_payload(mac, pucch, csi_report_id, csi_measconfig);
         }
       }
       else
@@ -2406,31 +2417,30 @@ uint8_t nr_get_csi_measurements(NR_UE_MAC_INST_t *mac,
 
 uint8_t nr_get_csi_payload(NR_UE_MAC_INST_t *mac,
                            PUCCH_sched_t *pucch,
+                           int csi_report_id,
                            NR_CSI_MeasConfig_t *csi_MeasConfig) {
 
   int n_csi_bits = 0;
 
   AssertFatal(csi_MeasConfig->csi_ReportConfigToAddModList->list.count>0,"No CSI Report configuration available\n");
 
-  for (int csi_report_id=0; csi_report_id < csi_MeasConfig->csi_ReportConfigToAddModList->list.count; csi_report_id++){
-    struct NR_CSI_ReportConfig *csi_reportconfig = csi_MeasConfig->csi_ReportConfigToAddModList->list.array[csi_report_id];
-    NR_CSI_ResourceConfigId_t csi_ResourceConfigId = csi_reportconfig->resourcesForChannelMeasurement;
-    switch(csi_reportconfig->reportQuantity.present) {
-      case NR_CSI_ReportConfig__reportQuantity_PR_none:
-        break;
-      case NR_CSI_ReportConfig__reportQuantity_PR_ssb_Index_RSRP:
-        n_csi_bits += get_ssb_rsrp_payload(mac,pucch,csi_reportconfig,csi_ResourceConfigId,csi_MeasConfig);
-        break;
-      case NR_CSI_ReportConfig__reportQuantity_PR_cri_RSRP:
-      case NR_CSI_ReportConfig__reportQuantity_PR_cri_RI_PMI_CQI:
-      case NR_CSI_ReportConfig__reportQuantity_PR_cri_RI_i1:
-      case NR_CSI_ReportConfig__reportQuantity_PR_cri_RI_i1_CQI:
-      case NR_CSI_ReportConfig__reportQuantity_PR_cri_RI_CQI:
-      case NR_CSI_ReportConfig__reportQuantity_PR_cri_RI_LI_PMI_CQI:
-        AssertFatal(1==0,"Measurement report based on CSI-RS not availalble\n");
-      default:
-        AssertFatal(1==0,"Invalid CSI report quantity type %d\n",csi_reportconfig->reportQuantity.present);
-    }
+  struct NR_CSI_ReportConfig *csi_reportconfig = csi_MeasConfig->csi_ReportConfigToAddModList->list.array[csi_report_id];
+  NR_CSI_ResourceConfigId_t csi_ResourceConfigId = csi_reportconfig->resourcesForChannelMeasurement;
+  switch(csi_reportconfig->reportQuantity.present) {
+    case NR_CSI_ReportConfig__reportQuantity_PR_none:
+      break;
+    case NR_CSI_ReportConfig__reportQuantity_PR_ssb_Index_RSRP:
+      n_csi_bits = get_ssb_rsrp_payload(mac,pucch,csi_reportconfig,csi_ResourceConfigId,csi_MeasConfig);
+      break;
+    case NR_CSI_ReportConfig__reportQuantity_PR_cri_RSRP:
+    case NR_CSI_ReportConfig__reportQuantity_PR_cri_RI_PMI_CQI:
+    case NR_CSI_ReportConfig__reportQuantity_PR_cri_RI_i1:
+    case NR_CSI_ReportConfig__reportQuantity_PR_cri_RI_i1_CQI:
+    case NR_CSI_ReportConfig__reportQuantity_PR_cri_RI_CQI:
+    case NR_CSI_ReportConfig__reportQuantity_PR_cri_RI_LI_PMI_CQI:
+      AssertFatal(1==0,"Measurement report based on CSI-RS not availalble\n");
+    default:
+      AssertFatal(1==0,"Invalid CSI report quantity type %d\n",csi_reportconfig->reportQuantity.present);
   }
   return (n_csi_bits);
 }
@@ -3832,6 +3842,21 @@ int nr_ue_process_rar(nr_downlink_indication_t *dl_info, NR_UL_TIME_ALIGNMENT_t
       LOG_A(NR_MAC, "[UE %d][RAPROC][%d.%d] Found RAR with the intended RAPID %d\n", mod_id, frame, slot, rarh->RAPID);
       rar = (NR_MAC_RAR *) (dlsch_buffer + n_subheaders + (n_subPDUs - 1) * sizeof(NR_MAC_RAR));
       ra->RA_RAPID_found = 1;
+      if (get_softmodem_params()->emulate_l1) {
+        /* When we are emulating L1 with multiple UEs, the rx_indication will have
+           multiple RAR PDUs. The code would previously handle each of these PDUs,
+           but it should only be handling the single RAR that matches the current
+           UE. */
+        LOG_I(NR_MAC, "RAR PDU found for our UE with PDU index %d\n", pdu_id);
+        dl_info->rx_ind->number_pdus = 1;
+        if (pdu_id != 0) {
+          memcpy(&dl_info->rx_ind->rx_indication_body[0],
+                &dl_info->rx_ind->rx_indication_body[pdu_id],
+                sizeof(fapi_nr_rx_indication_body_t));
+        }
+        mac->nr_ue_emul_l1.expected_rar = false;
+        memset(mac->nr_ue_emul_l1.index_has_rar, 0, sizeof(mac->nr_ue_emul_l1.index_has_rar));
+      }
       break;
     }
     if (rarh->E == 0) {
diff --git a/openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c b/openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c
index 1a2e52a603dbd0529079ba4f22da5eb893ee9942..e1058e1173fe901cf0cd9ad86866ad22ea3e0bca 100644
--- a/openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c
+++ b/openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c
@@ -768,7 +768,7 @@ int nr_config_pusch_pdu(NR_UE_MAC_INST_t *mac,
       return -1;
     }
     /* TIME_DOM_RESOURCE_ASSIGNMENT */
-    if (nr_ue_process_dci_time_dom_resource_assignment(mac, pusch_TimeDomainAllocationList, NULL, pusch_config_pdu, NULL, dci->time_domain_assignment.val,0,false) < 0) {
+    if (nr_ue_process_dci_time_dom_resource_assignment(mac, pusch_TimeDomainAllocationList, NULL, pusch_config_pdu, NULL, NULL, dci->time_domain_assignment.val,0,false) < 0) {
       return -1;
     }
 
@@ -1046,6 +1046,10 @@ NR_UE_L2_STATE_t nr_ue_scheduler(nr_downlink_indication_t *dl_info, nr_uplink_in
     nr_dcireq_t dcireq;
 
     if(mac->cg != NULL){ // we have a cg
+
+      nr_schedule_csirs_reception(mac, rx_frame, rx_slot);
+      nr_schedule_csi_for_im(mac, rx_frame, rx_slot);
+
       dcireq.module_id = mod_id;
       dcireq.gNB_index = gNB_index;
       dcireq.cc_id     = cc_id;
@@ -2307,7 +2311,6 @@ void nr_ue_pucch_scheduler(module_id_t module_idP, frame_t frameP, int slotP, in
     return;
 
   if (N_UCI > 0) {
-
     LOG_D(NR_MAC,"%d.%d configure pucch, O_SR %d, O_ACK %d, O_CSI %d\n",frameP,slotP,O_SR,O_ACK,O_CSI);
     pucch->resource_set_id = find_pucch_resource_set(mac, O_ACK + O_CSI);
     select_pucch_resource(mac, pucch);
@@ -2331,9 +2334,206 @@ void nr_ue_pucch_scheduler(module_id_t module_idP, frame_t frameP, int slotP, in
     if(mac->if_module != NULL && mac->if_module->scheduled_response != NULL)
       mac->if_module->scheduled_response(&scheduled_response);
   }
+}
+
+
+void nr_schedule_csi_for_im(NR_UE_MAC_INST_t *mac, int frame, int slot) {
+
+  if (mac->ra.ra_state != RA_SUCCEEDED && get_softmodem_params()->phy_test == 0)
+    return;
 
+  NR_CellGroupConfig_t *CellGroup = mac->cg;
+
+  if (!CellGroup || !CellGroup->spCellConfig || !CellGroup->spCellConfig->spCellConfigDedicated ||
+      !CellGroup->spCellConfig->spCellConfigDedicated->csi_MeasConfig)
+    return;
+
+  NR_CSI_MeasConfig_t *csi_measconfig = CellGroup->spCellConfig->spCellConfigDedicated->csi_MeasConfig->choice.setup;
+
+  if (csi_measconfig->csi_IM_ResourceToAddModList == NULL)
+    return;
+
+  fapi_nr_dl_config_request_t *dl_config = &mac->dl_config_request;
+  NR_CSI_IM_Resource_t *imcsi;
+  int period, offset;
+  NR_BWP_Id_t dl_bwp_id = mac->DL_BWP_Id;
+  int mu = mac->DLbwp[dl_bwp_id-1] ?
+    mac->DLbwp[dl_bwp_id-1]->bwp_Common->genericParameters.subcarrierSpacing :
+    mac->scc_SIB->downlinkConfigCommon.initialDownlinkBWP.genericParameters.subcarrierSpacing;
+
+  for (int id = 0; id < csi_measconfig->csi_IM_ResourceToAddModList->list.count; id++){
+    imcsi = csi_measconfig->csi_IM_ResourceToAddModList->list.array[id];
+    csi_period_offset(NULL,imcsi->periodicityAndOffset,&period,&offset);
+    if((frame*nr_slots_per_frame[mu]+slot-offset)%period != 0)
+      continue;
+    fapi_nr_dl_config_csiim_pdu_rel15_t *csiim_config_pdu = &dl_config->dl_config_list[dl_config->number_pdus].csiim_config_pdu.csiim_config_rel15;
+    const NR_BWP_Downlink_t *dlbwp = mac->DLbwp[dl_bwp_id-1];
+    const int locationAndBandwidth = dlbwp != NULL ? dlbwp->bwp_Common->genericParameters.locationAndBandwidth:
+                                     mac->scc_SIB->downlinkConfigCommon.initialDownlinkBWP.genericParameters.locationAndBandwidth;
+    csiim_config_pdu->bwp_size = NRRIV2BW(locationAndBandwidth, MAX_BWP_SIZE);
+    csiim_config_pdu->bwp_start = NRRIV2PRBOFFSET(locationAndBandwidth, MAX_BWP_SIZE);
+    csiim_config_pdu->subcarrier_spacing = mu;
+    csiim_config_pdu->start_rb = imcsi->freqBand->startingRB;
+    csiim_config_pdu->nr_of_rbs = imcsi->freqBand->nrofRBs;
+    // As specified in 5.2.2.4 of 38.214
+    switch (imcsi->csi_IM_ResourceElementPattern->present) {
+      case NR_CSI_IM_Resource__csi_IM_ResourceElementPattern_PR_pattern0:
+        for (int i = 0; i<4; i++) {
+          csiim_config_pdu->k_csiim[i] = (imcsi->csi_IM_ResourceElementPattern->choice.pattern0->subcarrierLocation_p0<<1) + (i>>1);
+          csiim_config_pdu->l_csiim[i] = imcsi->csi_IM_ResourceElementPattern->choice.pattern0->symbolLocation_p0 + (i%2);
+        }
+        break;
+      case NR_CSI_IM_Resource__csi_IM_ResourceElementPattern_PR_pattern1:
+        for (int i = 0; i<4; i++) {
+          csiim_config_pdu->k_csiim[i] = (imcsi->csi_IM_ResourceElementPattern->choice.pattern1->subcarrierLocation_p1<<2) + i;
+          csiim_config_pdu->l_csiim[i] = imcsi->csi_IM_ResourceElementPattern->choice.pattern1->symbolLocation_p1;
+        }
+        break;
+      default:
+        AssertFatal(1==0, "Invalid CSI-IM pattern\n");
+    }
+    dl_config->dl_config_list[dl_config->number_pdus].pdu_type = FAPI_NR_DL_CONFIG_TYPE_CSI_IM;
+    dl_config->number_pdus = dl_config->number_pdus + 1;
+  }
 }
 
+void nr_schedule_csirs_reception(NR_UE_MAC_INST_t *mac, int frame, int slot) {
+
+  if (mac->ra.ra_state != RA_SUCCEEDED && get_softmodem_params()->phy_test == 0)
+    return;
+
+  NR_CellGroupConfig_t *CellGroup = mac->cg;
+
+  if (!CellGroup || !CellGroup->spCellConfig || !CellGroup->spCellConfig->spCellConfigDedicated ||
+      !CellGroup->spCellConfig->spCellConfigDedicated->csi_MeasConfig)
+    return;
+
+  NR_CSI_MeasConfig_t *csi_measconfig = CellGroup->spCellConfig->spCellConfigDedicated->csi_MeasConfig->choice.setup;
+
+  if (csi_measconfig->nzp_CSI_RS_ResourceToAddModList == NULL)
+    return;
+
+  fapi_nr_dl_config_request_t *dl_config = &mac->dl_config_request;
+  NR_NZP_CSI_RS_Resource_t *nzpcsi;
+  int period, offset;
+  NR_BWP_Id_t dl_bwp_id = mac->DL_BWP_Id;
+  int mu = mac->DLbwp[dl_bwp_id-1] ?
+    mac->DLbwp[dl_bwp_id-1]->bwp_Common->genericParameters.subcarrierSpacing :
+    mac->scc_SIB->downlinkConfigCommon.initialDownlinkBWP.genericParameters.subcarrierSpacing;
+
+  for (int id = 0; id < csi_measconfig->nzp_CSI_RS_ResourceToAddModList->list.count; id++){
+    nzpcsi = csi_measconfig->nzp_CSI_RS_ResourceToAddModList->list.array[id];
+    csi_period_offset(NULL,nzpcsi->periodicityAndOffset,&period,&offset);
+    if((frame*nr_slots_per_frame[mu]+slot-offset)%period != 0)
+      continue;
+    LOG_D(MAC,"Scheduling reception of CSI-RS in frame %d slot %d\n",frame,slot);
+    fapi_nr_dl_config_csirs_pdu_rel15_t *csirs_config_pdu = &dl_config->dl_config_list[dl_config->number_pdus].csirs_config_pdu.csirs_config_rel15;
+
+    NR_CSI_RS_ResourceMapping_t  resourceMapping = nzpcsi->resourceMapping;
+
+    const NR_BWP_Downlink_t *dlbwp = mac->DLbwp[dl_bwp_id-1];
+    const int locationAndBandwidth = dlbwp != NULL ? dlbwp->bwp_Common->genericParameters.locationAndBandwidth:
+                                     mac->scc_SIB->downlinkConfigCommon.initialDownlinkBWP.genericParameters.locationAndBandwidth;
+    csirs_config_pdu->bwp_size = NRRIV2BW(locationAndBandwidth, MAX_BWP_SIZE);
+    csirs_config_pdu->bwp_start = NRRIV2PRBOFFSET(locationAndBandwidth, MAX_BWP_SIZE);
+    csirs_config_pdu->subcarrier_spacing = mu;
+    csirs_config_pdu->start_rb = resourceMapping.freqBand.startingRB;
+    csirs_config_pdu->nr_of_rbs = resourceMapping.freqBand.nrofRBs;
+    csirs_config_pdu->csi_type = 1; // NZP-CSI-RS
+    csirs_config_pdu->symb_l0 = resourceMapping.firstOFDMSymbolInTimeDomain;
+    if (resourceMapping.firstOFDMSymbolInTimeDomain2)
+      csirs_config_pdu->symb_l1 = *resourceMapping.firstOFDMSymbolInTimeDomain2;
+    csirs_config_pdu->cdm_type = resourceMapping.cdm_Type;
+    csirs_config_pdu->freq_density = resourceMapping.density.present;
+    if ((resourceMapping.density.present == NR_CSI_RS_ResourceMapping__density_PR_dot5)
+        && (resourceMapping.density.choice.dot5 == NR_CSI_RS_ResourceMapping__density__dot5_evenPRBs))
+      csirs_config_pdu->freq_density--;
+    csirs_config_pdu->scramb_id = nzpcsi->scramblingID;
+    switch(resourceMapping.frequencyDomainAllocation.present){
+      case NR_CSI_RS_ResourceMapping__frequencyDomainAllocation_PR_row1:
+        csirs_config_pdu->row = 1;
+        csirs_config_pdu->freq_domain = ((resourceMapping.frequencyDomainAllocation.choice.row1.buf[0])>>4)&0x0f;
+        break;
+      case NR_CSI_RS_ResourceMapping__frequencyDomainAllocation_PR_row2:
+        csirs_config_pdu->row = 2;
+        csirs_config_pdu->freq_domain = (((resourceMapping.frequencyDomainAllocation.choice.row2.buf[1]>>4)&0x0f) |
+                                        ((resourceMapping.frequencyDomainAllocation.choice.row2.buf[0]<<4)&0xff0));
+        break;
+      case NR_CSI_RS_ResourceMapping__frequencyDomainAllocation_PR_row4:
+        csirs_config_pdu->row = 4;
+        csirs_config_pdu->freq_domain = ((resourceMapping.frequencyDomainAllocation.choice.row4.buf[0])>>5)&0x07;
+        break;
+      case NR_CSI_RS_ResourceMapping__frequencyDomainAllocation_PR_other:
+        csirs_config_pdu->freq_domain = ((resourceMapping.frequencyDomainAllocation.choice.other.buf[0])>>2)&0x3f;
+        // determining the row of table 7.4.1.5.3-1 in 38.211
+        switch(resourceMapping.nrofPorts){
+          case NR_CSI_RS_ResourceMapping__nrofPorts_p1:
+            AssertFatal(1==0,"Resource with 1 CSI port shouldn't be within other rows\n");
+            break;
+          case NR_CSI_RS_ResourceMapping__nrofPorts_p2:
+            csirs_config_pdu->row = 3;
+            break;
+          case NR_CSI_RS_ResourceMapping__nrofPorts_p4:
+            csirs_config_pdu->row = 5;
+            break;
+          case NR_CSI_RS_ResourceMapping__nrofPorts_p8:
+            if (resourceMapping.cdm_Type == NR_CSI_RS_ResourceMapping__cdm_Type_cdm4_FD2_TD2)
+              csirs_config_pdu->row = 8;
+            else{
+              int num_k = 0;
+              for (int k=0; k<6; k++)
+                num_k+=(((csirs_config_pdu->freq_domain)>>k)&0x01);
+              if(num_k==4)
+                csirs_config_pdu->row = 6;
+              else
+                csirs_config_pdu->row = 7;
+            }
+            break;
+          case NR_CSI_RS_ResourceMapping__nrofPorts_p12:
+            if (resourceMapping.cdm_Type == NR_CSI_RS_ResourceMapping__cdm_Type_cdm4_FD2_TD2)
+              csirs_config_pdu->row = 10;
+            else
+              csirs_config_pdu->row = 9;
+            break;
+          case NR_CSI_RS_ResourceMapping__nrofPorts_p16:
+            if (resourceMapping.cdm_Type == NR_CSI_RS_ResourceMapping__cdm_Type_cdm4_FD2_TD2)
+              csirs_config_pdu->row = 12;
+            else
+              csirs_config_pdu->row = 11;
+            break;
+          case NR_CSI_RS_ResourceMapping__nrofPorts_p24:
+            if (resourceMapping.cdm_Type == NR_CSI_RS_ResourceMapping__cdm_Type_cdm4_FD2_TD2)
+              csirs_config_pdu->row = 14;
+            else{
+              if (resourceMapping.cdm_Type == NR_CSI_RS_ResourceMapping__cdm_Type_cdm8_FD2_TD4)
+                csirs_config_pdu->row = 15;
+              else
+                csirs_config_pdu->row = 13;
+            }
+            break;
+          case NR_CSI_RS_ResourceMapping__nrofPorts_p32:
+            if (resourceMapping.cdm_Type == NR_CSI_RS_ResourceMapping__cdm_Type_cdm4_FD2_TD2)
+              csirs_config_pdu->row = 17;
+            else{
+              if (resourceMapping.cdm_Type == NR_CSI_RS_ResourceMapping__cdm_Type_cdm8_FD2_TD4)
+                csirs_config_pdu->row = 18;
+              else
+                csirs_config_pdu->row = 16;
+            }
+            break;
+        default:
+          AssertFatal(1==0,"Invalid number of ports in CSI-RS resource\n");
+        }
+        break;
+      default:
+        AssertFatal(1==0,"Invalid freqency domain allocation in CSI-RS resource\n");
+    }
+    dl_config->dl_config_list[dl_config->number_pdus].pdu_type = FAPI_NR_DL_CONFIG_TYPE_CSI_RS;
+    dl_config->number_pdus = dl_config->number_pdus + 1;
+  }
+}
+
+
 // This function schedules the PRACH according to prach_ConfigurationIndex and TS 38.211, tables 6.3.3.2.x
 // PRACH formats 9, 10, 11 are corresponding to dual PRACH format configurations A1/B1, A2/B2, A3/B3.
 // - todo:
diff --git a/openair2/LAYER2/NR_MAC_gNB/config.c b/openair2/LAYER2/NR_MAC_gNB/config.c
index 19c82c71df2b148c90fb04e0ab1b91f90f445325..7833b41f0bae369c98de6dcf8f86246f7e23f268 100644
--- a/openair2/LAYER2/NR_MAC_gNB/config.c
+++ b/openair2/LAYER2/NR_MAC_gNB/config.c
@@ -627,17 +627,13 @@ int rrc_mac_config_req_gNB(module_id_t Mod_idP,
       process_CellGroup(CellGroup,&UE_info->UE_sched_ctrl[UE_id]);
       const NR_ServingCellConfig_t *servingCellConfig = CellGroup ? CellGroup->spCellConfig->spCellConfigDedicated : NULL;
       NR_UE_sched_ctrl_t *sched_ctrl = &UE_info->UE_sched_ctrl[UE_id];
+      sched_ctrl->update_pdsch_ps = true;
+      sched_ctrl->update_pusch_ps = true;
       const NR_PDSCH_ServingCellConfig_t *pdsch = servingCellConfig ? servingCellConfig->pdsch_ServingCellConfig->choice.setup : NULL;
-      if (sched_ctrl->available_dl_harq.len == 0) {
+      if (get_softmodem_params()->sa) {
         // add all available DL HARQ processes for this UE in SA
         create_dl_harq_list(sched_ctrl, pdsch);
       }
-      else {
-        const int nrofHARQ = pdsch && pdsch->nrofHARQ_ProcessesForPDSCH ?
-                             get_nrofHARQ_ProcessesForPDSCH(*pdsch->nrofHARQ_ProcessesForPDSCH) : 8;
-        AssertFatal(sched_ctrl->available_dl_harq.len==nrofHARQ,
-                    "Reconfiguration of available harq processes not yet supported\n");
-      }
       // update coreset/searchspace
       void *bwpd = NULL;
       NR_BWP_t *genericParameters = NULL;
diff --git a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
index a26bea0c92241d74b12a7b4de7f14f0126683024..a10845a6abe52ccc57ffe25703b3920dba770258 100644
--- a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
+++ b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
@@ -1029,6 +1029,7 @@ void fill_msg3_pusch_pdu(nfapi_nr_pusch_pdu_t *pusch_pdu,
   int start_symbol_index,nr_of_symbols;
 
   SLIV2SL(startSymbolAndLength, &start_symbol_index, &nr_of_symbols);
+  int mcsindex = -1; // init value
 
   pusch_pdu->pdu_bit_map = PUSCH_PDU_BITMAP_PUSCH_DATA;
   pusch_pdu->rnti = rnti;
@@ -1037,10 +1038,7 @@ void fill_msg3_pusch_pdu(nfapi_nr_pusch_pdu_t *pusch_pdu,
   pusch_pdu->bwp_size = bwp_size;
   pusch_pdu->subcarrier_spacing = scs;
   pusch_pdu->cyclic_prefix = 0;
-  pusch_pdu->mcs_index = 1;
   pusch_pdu->mcs_table = 0;
-  pusch_pdu->target_code_rate = nr_get_code_rate_ul(pusch_pdu->mcs_index,pusch_pdu->mcs_table);
-  pusch_pdu->qam_mod_order = nr_get_Qm_ul(pusch_pdu->mcs_index,pusch_pdu->mcs_table);
   if (scc->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup->msg3_transformPrecoder == NULL)
     pusch_pdu->transform_precoding = 1;
   else
@@ -1077,15 +1075,23 @@ void fill_msg3_pusch_pdu(nfapi_nr_pusch_pdu_t *pusch_pdu,
   for(int i = start_symbol_index; i < start_symbol_index+nr_of_symbols; i++)
     num_dmrs_symb += (pusch_pdu->ul_dmrs_symb_pos >> i) & 1;
 
-  pusch_pdu->pusch_data.tb_size = nr_compute_tbs(pusch_pdu->qam_mod_order,
-                                                 pusch_pdu->target_code_rate,
-                                                 pusch_pdu->rb_size,
-                                                 pusch_pdu->nr_of_symbols,
-                                                 num_dmrs_symb*12, // nb dmrs set for no data in dmrs symbol
-                                                 0, //nb_rb_oh
-                                                 0, // to verify tb scaling
-                                                 pusch_pdu->nrOfLayers)>>3;
-
+  int TBS = 0;
+  while(TBS<7) {  // TBS for msg3 is 7 bytes (except for RRCResumeRequest1 currently not implemented)
+    mcsindex++;
+    pusch_pdu->target_code_rate = nr_get_code_rate_ul(mcsindex,pusch_pdu->mcs_table);
+    pusch_pdu->qam_mod_order = nr_get_Qm_ul(mcsindex,pusch_pdu->mcs_table);
+    TBS = nr_compute_tbs(pusch_pdu->qam_mod_order,
+                         pusch_pdu->target_code_rate,
+                         pusch_pdu->rb_size,
+                         pusch_pdu->nr_of_symbols,
+                         num_dmrs_symb*12, // nb dmrs set for no data in dmrs symbol
+                         0, //nb_rb_oh
+                         0, // to verify tb scaling
+                         pusch_pdu->nrOfLayers)>>3;
+
+    pusch_pdu->mcs_index = mcsindex;
+    pusch_pdu->pusch_data.tb_size = TBS;
+  }
 }
 
 void nr_add_msg3(module_id_t module_idP, int CC_id, frame_t frameP, sub_frame_t slotP, NR_RA_t *ra, uint8_t *RAR_pdu)
@@ -1179,7 +1185,7 @@ void nr_generate_Msg2(module_id_t module_idP, int CC_id, frame_t frameP, sub_fra
       time_domain_assignment = 1;
     else
       time_domain_assignment = 0;
-    uint8_t mcsIndex = 0;
+    int mcsIndex = -1;  // initialization value
     int rbStart = 0;
     int rbSize = 8;
 
@@ -1336,9 +1342,6 @@ void nr_generate_Msg2(module_id_t module_idP, int CC_id, frame_t frameP, sub_fra
     pdsch_pdu_rel15->SubcarrierSpacing = genericParameters->subcarrierSpacing;
     pdsch_pdu_rel15->CyclicPrefix = 0;
     pdsch_pdu_rel15->NrOfCodewords = 1;
-    pdsch_pdu_rel15->targetCodeRate[0] = nr_get_code_rate_dl(mcsIndex,mcsTableIdx);
-    pdsch_pdu_rel15->qamModOrder[0] = 2;
-    pdsch_pdu_rel15->mcsIndex[0] = mcsIndex;
     pdsch_pdu_rel15->mcsTable[0] = mcsTableIdx;
     pdsch_pdu_rel15->rvIndex[0] = 0;
     pdsch_pdu_rel15->dataScramblingId = *scc->physCellId;
@@ -1362,9 +1365,38 @@ void nr_generate_Msg2(module_id_t module_idP, int CC_id, frame_t frameP, sub_fra
                                                     startSymbolIndex,
                                                     mappingtype, 1);
 
-    int x_Overhead = 0;
     uint8_t tb_scaling = 0;
-    nr_get_tbs_dl(&dl_tti_pdsch_pdu->pdsch_pdu, x_Overhead, pdsch_pdu_rel15->numDmrsCdmGrpsNoData, tb_scaling);
+    int R, Qm;
+    uint8_t N_PRB_DMRS;
+    uint32_t TBS=0;
+    if (dmrsConfigType == NFAPI_NR_DMRS_TYPE1) {
+      // if no data in dmrs cdm group is 1 only even REs have no data
+      // if no data in dmrs cdm group is 2 both odd and even REs have no data
+      N_PRB_DMRS = pdsch_pdu_rel15->numDmrsCdmGrpsNoData*6;
+    }
+    else {
+      N_PRB_DMRS = pdsch_pdu_rel15->numDmrsCdmGrpsNoData*4;
+    }
+    uint16_t dmrs_length = get_num_dmrs(pdsch_pdu_rel15->dlDmrsSymbPos);
+
+    while(TBS<9) {  // min TBS for RAR is 9 bytes
+      mcsIndex++;
+      R = nr_get_code_rate_dl(mcsIndex, mcsTableIdx);
+      Qm = nr_get_Qm_dl(mcsIndex, mcsTableIdx);
+      TBS = nr_compute_tbs(Qm,
+                           R,
+                           rbSize,
+                           nrOfSymbols,
+                           N_PRB_DMRS*dmrs_length,
+                           0, // overhead
+                           tb_scaling,  // tb scaling
+		           1)>>3;  // layers
+
+      pdsch_pdu_rel15->targetCodeRate[0] = R;
+      pdsch_pdu_rel15->qamModOrder[0] = Qm;
+      pdsch_pdu_rel15->mcsIndex[0] = mcsIndex;
+      pdsch_pdu_rel15->TBSize[0] = TBS;
+    }
 
     // Fill PDCCH DL DCI PDU
     nfapi_nr_dl_dci_pdu_t *dci_pdu = &pdcch_pdu_rel15->dci_pdu[pdcch_pdu_rel15->numDlDci];
@@ -1651,12 +1683,15 @@ void nr_generate_Msg4(module_id_t module_idP, int CC_id, frame_t frameP, sub_fra
     uint8_t tb_scaling = 0;
     uint16_t *vrb_map = cc[CC_id].vrb_map;
     do {
-      rbSize++;
+      if(rbSize < BWPSize)
+        rbSize++;
+      else
+        mcsIndex++;
       LOG_D(NR_MAC,"Calling nr_compute_tbs with N_PRB_DMRS %d, N_DMRS_SLOT %d\n",N_PRB_DMRS,N_DMRS_SLOT);
       harq->tb_size = nr_compute_tbs(nr_get_Qm_dl(mcsIndex, mcsTableIdx),
-                           nr_get_code_rate_dl(mcsIndex, mcsTableIdx),
-                           rbSize, nrOfSymbols, N_PRB_DMRS * N_DMRS_SLOT, 0, tb_scaling,1) >> 3;
-    } while (rbSize < BWPSize && harq->tb_size < ra->mac_pdu_length);
+                                     nr_get_code_rate_dl(mcsIndex, mcsTableIdx),
+                                     rbSize, nrOfSymbols, N_PRB_DMRS * N_DMRS_SLOT, 0, tb_scaling,1) >> 3;
+    } while (harq->tb_size < ra->mac_pdu_length && mcsIndex<=28);
 
     int i = 0;
     while ((i < rbSize) && (rbStart + rbSize <= BWPSize)) {
diff --git a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_bch.c b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_bch.c
index 93ab672b631205270b54ef37fcf907c3bbcd8e6a..7d16a4ee01d295ff28a34adae41210b001c02456 100644
--- a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_bch.c
+++ b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_bch.c
@@ -612,14 +612,15 @@ void schedule_nr_sib1(module_id_t module_idP, frame_t frameP, sub_frame_t slotP)
 
       int startSymbolIndex = 0;
       int nrOfSymbols = 0;
+      bool is_typeA;
 
       get_info_from_tda_tables(type0_PDCCH_CSS_config->type0_pdcch_ss_mux_pattern,
                                time_domain_allocation,
                                gNB_mac->common_channels->ServingCellConfigCommon->dmrs_TypeA_Position,
-                               1, &startSymbolIndex, &nrOfSymbols);
+                               1, &is_typeA,
+                               &startSymbolIndex, &nrOfSymbols);
 
-      // TODO: There are exceptions to this in table 5.1.2.1.1-4,5 (Default time domain allocation tables B, C)
-      int mappingtype = (startSymbolIndex <= 3)? typeA: typeB;
+      int mappingtype = is_typeA? typeA: typeB;
       uint16_t dlDmrsSymbPos = fill_dmrs_mask(NULL, gNB_mac->common_channels->ServingCellConfigCommon->dmrs_TypeA_Position, nrOfSymbols, startSymbolIndex, mappingtype, 1);
 
       // Configure sched_ctrlCommon for SIB1
diff --git a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c
index 92391ed1d5697e41c1d9fb6bc420c20aff70b19a..f366b2c4f9ea8f4b60dc03476dbb1b8b82348dc8 100644
--- a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c
+++ b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c
@@ -393,12 +393,17 @@ int nr_write_ce_dlsch_pdu(module_id_t module_idP,
 
 #define BLER_UPDATE_FRAME 10
 #define BLER_FILTER 0.9f
-int get_mcs_from_bler(module_id_t mod_id, int CC_id, frame_t frame, sub_frame_t slot, int UE_id)
+int get_mcs_from_bler(module_id_t mod_id, int CC_id, frame_t frame, sub_frame_t slot, int UE_id, int mcs_table)
 {
   gNB_MAC_INST *nrmac = RC.nrmac[mod_id];
   const NR_ServingCellConfigCommon_t *scc = nrmac->common_channels[CC_id].ServingCellConfigCommon;
   const int n = nr_slots_per_frame[*scc->ssbSubcarrierSpacing];
 
+  int max_allowed_mcs = (mcs_table == 1) ? 27 : 28;
+  int max_mcs = nrmac->dl_max_mcs;
+  if (nrmac->dl_max_mcs>max_allowed_mcs)
+    max_mcs = max_allowed_mcs;
+
   NR_DL_bler_stats_t *bler_stats = &nrmac->UE_info.UE_sched_ctrl[UE_id].dl_bler_stats;
   /* first call: everything is zero. Initialize to sensible default */
   if (bler_stats->last_frame_slot == 0 && bler_stats->mcs == 0) {
@@ -444,7 +449,7 @@ int get_mcs_from_bler(module_id_t mod_id, int CC_id, frame_t frame, sub_frame_t
   if (bler_stats->rd2_bler > nrmac->dl_rd2_bler_threshold && old_mcs > 6) {
     new_mcs -= 2;
   } else if (bler_stats->rd2_bler < nrmac->dl_rd2_bler_threshold) {*/
-  if (bler_stats->bler < nrmac->dl_bler_target_lower && old_mcs < nrmac->dl_max_mcs && dtx > 9)
+  if (bler_stats->bler < nrmac->dl_bler_target_lower && old_mcs < max_mcs && dtx > 9)
     new_mcs += 1;
   else if (bler_stats->bler > nrmac->dl_bler_target_upper && old_mcs > 6)
     new_mcs -= 1;
@@ -586,8 +591,10 @@ bool allocate_dl_retransmission(module_id_t module_id,
     }
     /* check whether we need to switch the TDA allocation since the last
      * (re-)transmission */
-    if (ps->time_domain_allocation != tda)
-      nr_set_pdsch_semi_static(scc, UE_info->CellGroup[UE_id], sched_ctrl->active_bwp, bwpd, tda, ps->nrOfLayers, sched_ctrl, ps);
+    if (ps->time_domain_allocation != tda || sched_ctrl->update_pdsch_ps) {
+      nr_set_pdsch_semi_static(scc, cg, sched_ctrl->active_bwp, bwpd, tda, ps->nrOfLayers, sched_ctrl, ps);
+      sched_ctrl->update_pdsch_ps = false;
+    }
   } else {
     /* the retransmission will use a different time domain allocation, check
      * that we have enough resources */
@@ -744,7 +751,7 @@ void pf_dl(module_id_t module_id,
 
       /* Calculate coeff */
       set_dl_mcs(sched_pdsch,sched_ctrl,&mac->dl_max_mcs,ps->mcsTableIdx);
-      sched_pdsch->mcs = get_mcs_from_bler(module_id, /* CC_id = */ 0, frame, slot, UE_id);
+      sched_pdsch->mcs = get_mcs_from_bler(module_id, /* CC_id = */ 0, frame, slot, UE_id, ps->mcsTableIdx);
       layers[UE_id] = set_dl_nrOfLayers(sched_ctrl);
       const uint8_t Qm = nr_get_Qm_dl(sched_pdsch->mcs, ps->mcsTableIdx);
       const uint16_t R = nr_get_code_rate_dl(sched_pdsch->mcs, ps->mcsTableIdx);
@@ -863,8 +870,11 @@ void pf_dl(module_id_t module_id,
     NR_pdsch_semi_static_t *ps = &sched_ctrl->pdsch_semi_static;
 
     if (ps->nrOfLayers != layers[UE_id] ||
-        ps->time_domain_allocation != tda)
+        ps->time_domain_allocation != tda ||
+        sched_ctrl->update_pdsch_ps) {
       nr_set_pdsch_semi_static(scc, UE_info->CellGroup[UE_id], sched_ctrl->active_bwp, bwpd, tda, layers[UE_id], sched_ctrl, ps);
+      sched_ctrl->update_pdsch_ps = false;
+    }
 
     const uint16_t slbitmap = SL_to_bitmap(ps->startSymbolIndex, ps->nrOfSymbols);
     // Freq-demain allocation
diff --git a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c
index 721f67295b751795f0297014eba454612d1314dc..4d05320e64f319855d2f7be4cbe2e1a4ddb84487 100644
--- a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c
+++ b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c
@@ -532,6 +532,7 @@ void nr_set_pdsch_semi_static(const NR_ServingCellConfigCommon_t *scc,
       ps->mcsTableIdx = 2;
   }
   else ps->mcsTableIdx = 0;
+  LOG_D(NR_MAC,"MCS Table Index: %d\n",ps->mcsTableIdx);
 
   NR_PDSCH_Config_t *pdsch_Config;
   if (bwp &&
@@ -1942,14 +1943,45 @@ void dump_nr_list(NR_list_t *listP)
 void create_nr_list(NR_list_t *list, int len)
 {
   list->head = -1;
-  list->next = calloc(len, sizeof(*list->next));
-  AssertFatal(list, "cannot calloc() memory for NR_list_t->next\n");
+  list->next = malloc(len * sizeof(*list->next));
+  AssertFatal(list->next, "cannot malloc() memory for NR_list_t->next\n");
   for (int i = 0; i < len; ++i)
     list->next[i] = -1;
   list->tail = -1;
   list->len = len;
 }
 
+/*
+ * Resize an NR_list
+ */
+void resize_nr_list(NR_list_t *list, int new_len)
+{
+  if (new_len == list->len)
+    return;
+  if (new_len > list->len) {
+    /* list->head remains */
+    const int old_len = list->len;
+    int* n = realloc(list->next, new_len * sizeof(*list->next));
+    AssertFatal(n, "cannot realloc() memory for NR_list_t->next\n");
+    list->next = n;
+    for (int i = old_len; i < new_len; ++i)
+      list->next[i] = -1;
+    /* list->tail remains */
+    list->len = new_len;
+  } else { /* new_len < len */
+    AssertFatal(list->head < new_len, "shortened list head out of index %d (new len %d)\n", list->head, new_len);
+    AssertFatal(list->tail < new_len, "shortened list tail out of index %d (new len %d)\n", list->head, new_len);
+    for (int i = 0; i < list->len; ++i)
+      AssertFatal(list->next[i] < new_len, "shortened list entry out of index %d (new len %d)\n", list->next[i], new_len);
+    /* list->head remains */
+    int *n = realloc(list->next, new_len * sizeof(*list->next));
+    AssertFatal(n, "cannot realloc() memory for NR_list_t->next\n");
+    list->next = n;
+    /* list->tail remains */
+    list->len = new_len;
+  }
+}
+
 /*
  * Destroy an NR_list
  */
@@ -2205,10 +2237,8 @@ int add_new_nr_ue(module_id_t mod_idP, rnti_t rntiP, NR_CellGroupConfig_t *CellG
 				       "no pdsch-ServingCellConfig found for UE %d\n",
 				       UE_id);
     const NR_PDSCH_ServingCellConfig_t *pdsch = servingCellConfig ? servingCellConfig->pdsch_ServingCellConfig->choice.setup : NULL;
-    // add DL HARQ processes for this UE only in NSA
-    // (SA still doesn't have information on nrofHARQ_ProcessesForPDSCH at this stage)
-    if (!get_softmodem_params()->sa)
-      create_dl_harq_list(sched_ctrl,pdsch);
+    // pdsch == NULL in SA -> will create default (8) number of HARQ processes
+    create_dl_harq_list(sched_ctrl, pdsch);
     // add all available UL HARQ processes for this UE
     // nb of ul harq processes not configurable
     create_nr_list(&sched_ctrl->available_ul_harq, 16);
@@ -2236,11 +2266,31 @@ void create_dl_harq_list(NR_UE_sched_ctrl_t *sched_ctrl,
   const int nrofHARQ = pdsch && pdsch->nrofHARQ_ProcessesForPDSCH ?
                        get_nrofHARQ_ProcessesForPDSCH(*pdsch->nrofHARQ_ProcessesForPDSCH) : 8;
   // add all available DL HARQ processes for this UE
-  create_nr_list(&sched_ctrl->available_dl_harq, nrofHARQ);
-  for (int harq = 0; harq < nrofHARQ; harq++)
-    add_tail_nr_list(&sched_ctrl->available_dl_harq, harq);
-  create_nr_list(&sched_ctrl->feedback_dl_harq, nrofHARQ);
-  create_nr_list(&sched_ctrl->retrans_dl_harq, nrofHARQ);
+  AssertFatal(sched_ctrl->available_dl_harq.len == sched_ctrl->feedback_dl_harq.len
+              && sched_ctrl->available_dl_harq.len == sched_ctrl->retrans_dl_harq.len,
+              "HARQ lists have different lengths (%d/%d/%d)\n",
+              sched_ctrl->available_dl_harq.len,
+              sched_ctrl->feedback_dl_harq.len,
+              sched_ctrl->retrans_dl_harq.len);
+  if (sched_ctrl->available_dl_harq.len == 0) {
+    create_nr_list(&sched_ctrl->available_dl_harq, nrofHARQ);
+    for (int harq = 0; harq < nrofHARQ; harq++)
+      add_tail_nr_list(&sched_ctrl->available_dl_harq, harq);
+    create_nr_list(&sched_ctrl->feedback_dl_harq, nrofHARQ);
+    create_nr_list(&sched_ctrl->retrans_dl_harq, nrofHARQ);
+  } else if (sched_ctrl->available_dl_harq.len == nrofHARQ) {
+    LOG_D(NR_MAC, "nrofHARQ %d already configured\n", nrofHARQ);
+  } else {
+    const int old_nrofHARQ = sched_ctrl->available_dl_harq.len;
+    AssertFatal(nrofHARQ > old_nrofHARQ,
+                "cannot resize HARQ list to be smaller (nrofHARQ %d, old_nrofHARQ %d)\n",
+                nrofHARQ, old_nrofHARQ);
+    resize_nr_list(&sched_ctrl->available_dl_harq, nrofHARQ);
+    for (int harq = old_nrofHARQ; harq < nrofHARQ; harq++)
+      add_tail_nr_list(&sched_ctrl->available_dl_harq, harq);
+    resize_nr_list(&sched_ctrl->feedback_dl_harq, nrofHARQ);
+    resize_nr_list(&sched_ctrl->retrans_dl_harq, nrofHARQ);
+  }
 }
 
 /* hack data to remove UE in the phy */
@@ -2449,11 +2499,11 @@ void nr_csirs_scheduling(int Mod_idP,
       for (int id = 0; id < csi_measconfig->nzp_CSI_RS_ResourceToAddModList->list.count; id++){
         nzpcsi = csi_measconfig->nzp_CSI_RS_ResourceToAddModList->list.array[id];
         NR_CSI_RS_ResourceMapping_t  resourceMapping = nzpcsi->resourceMapping;
-        csi_period_offset(NULL,nzpcsi,&period,&offset);
+        csi_period_offset(NULL,nzpcsi->periodicityAndOffset,&period,&offset);
 
         if((frame*n_slots_frame+slot-offset)%period == 0) {
 
-          LOG_I(MAC,"Scheduling CSI-RS in frame %d slot %d\n",frame,slot);
+          LOG_D(MAC,"Scheduling CSI-RS in frame %d slot %d\n",frame,slot);
 
           nfapi_nr_dl_tti_request_pdu_t *dl_tti_csirs_pdu = &dl_req->dl_tti_pdu_list[dl_req->nPDUs];
           memset((void*)dl_tti_csirs_pdu,0,sizeof(nfapi_nr_dl_tti_request_pdu_t));
@@ -2497,7 +2547,7 @@ void nr_csirs_scheduling(int Mod_idP,
             case NR_CSI_RS_ResourceMapping__frequencyDomainAllocation_PR_row2:
               csirs_pdu_rel15->row = 2;
               csirs_pdu_rel15->freq_domain = (((resourceMapping.frequencyDomainAllocation.choice.row2.buf[1]>>4)&0x0f) |
-                                             ((resourceMapping.frequencyDomainAllocation.choice.row2.buf[0]<<8)&0xff0));
+                                             ((resourceMapping.frequencyDomainAllocation.choice.row2.buf[0]<<4)&0xff0));
               for (int rb = csirs_pdu_rel15->start_rb; rb < (csirs_pdu_rel15->start_rb + csirs_pdu_rel15->nr_of_rbs); rb++)
                 vrb_map[rb+csirs_pdu_rel15->bwp_start] |= SL_to_bitmap(csirs_pdu_rel15->symb_l0, 1);
               break;
@@ -2512,6 +2562,7 @@ void nr_csirs_scheduling(int Mod_idP,
               // determining the row of table 7.4.1.5.3-1 in 38.211
               switch(resourceMapping.nrofPorts){
                 case NR_CSI_RS_ResourceMapping__nrofPorts_p1:
+                  AssertFatal(1==0,"Resource with 1 CSI port shouldn't be within other rows\n");
                   break;
                 case NR_CSI_RS_ResourceMapping__nrofPorts_p2:
                   csirs_pdu_rel15->row = 3;
diff --git a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
index 34d4496eeea3a11e4b1f2e92f541f7aefb73049c..bd2836c3e7f70c7f403d42864dca2dd5fc2485c5 100644
--- a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
+++ b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
@@ -992,8 +992,11 @@ bool allocate_ul_retransmission(module_id_t module_id,
 
     if (ps->time_domain_allocation != tda
         || ps->dci_format != dci_format
-        || ps->num_dmrs_cdm_grps_no_data != num_dmrs_cdm_grps_no_data)
+        || ps->num_dmrs_cdm_grps_no_data != num_dmrs_cdm_grps_no_data
+        || sched_ctrl->update_pusch_ps) {
       nr_set_pusch_semi_static(scc, sched_ctrl->active_ubwp, ubwpd, dci_format, tda, num_dmrs_cdm_grps_no_data, ps);
+      sched_ctrl->update_pusch_ps = false;
+    }
     LOG_D(NR_MAC, "%s(): retransmission keeping TDA %d and TBS %d\n", __func__, tda, retInfo->tb_size);
   } else {
     /* the retransmission will use a different time domain allocation, check
@@ -1230,8 +1233,11 @@ void pf_ul(module_id_t module_id,
       const int tda = sched_ctrl->active_ubwp ? nrmac->preferred_ul_tda[sched_ctrl->active_ubwp->bwp_Id][slot] : 0;
       if (ps->time_domain_allocation != tda
           || ps->dci_format != dci_format
-          || ps->num_dmrs_cdm_grps_no_data != num_dmrs_cdm_grps_no_data)
+          || ps->num_dmrs_cdm_grps_no_data != num_dmrs_cdm_grps_no_data
+          || sched_ctrl->update_pusch_ps) {
         nr_set_pusch_semi_static(scc, sched_ctrl->active_ubwp, ubwpd, dci_format, tda, num_dmrs_cdm_grps_no_data, ps);
+        sched_ctrl->update_pusch_ps = false;
+      }
       NR_sched_pusch_t *sched_pusch = &sched_ctrl->sched_pusch;
       sched_pusch->mcs = 9;
       update_ul_ue_R_Qm(sched_pusch, ps);
@@ -1347,8 +1353,11 @@ void pf_ul(module_id_t module_id,
     const int tda = sched_ctrl->active_ubwp ? nrmac->preferred_ul_tda[sched_ctrl->active_ubwp->bwp_Id][slot] : 0;
     if (ps->time_domain_allocation != tda
         || ps->dci_format != dci_format
-        || ps->num_dmrs_cdm_grps_no_data != num_dmrs_cdm_grps_no_data)
+        || ps->num_dmrs_cdm_grps_no_data != num_dmrs_cdm_grps_no_data
+        || sched_ctrl->update_pusch_ps) {
       nr_set_pusch_semi_static(scc, sched_ctrl->active_ubwp, ubwpd, dci_format, tda, num_dmrs_cdm_grps_no_data, ps);
+      sched_ctrl->update_pusch_ps = false;
+    }
     update_ul_ue_R_Qm(sched_pusch, ps);
 
     /* Calculate the current scheduling bytes and the necessary RBs */
diff --git a/openair2/LAYER2/NR_MAC_gNB/mac_proto.h b/openair2/LAYER2/NR_MAC_gNB/mac_proto.h
index 55136b001523347ced1ed0be2d60ba318cba2bc7..28e9d689fa6f40ecd7a9cb622e2b4e87e1b1a84a 100644
--- a/openair2/LAYER2/NR_MAC_gNB/mac_proto.h
+++ b/openair2/LAYER2/NR_MAC_gNB/mac_proto.h
@@ -351,6 +351,7 @@ int NRRIV2PRBOFFSET(int locationAndBandwidth,int N_RB);
 /* Functions to manage an NR_list_t */
 void dump_nr_list(NR_list_t *listP);
 void create_nr_list(NR_list_t *listP, int len);
+void resize_nr_list(NR_list_t *list, int new_len);
 void destroy_nr_list(NR_list_t *list);
 void add_nr_list(NR_list_t *listP, int id);
 void remove_nr_list(NR_list_t *listP, int id);
diff --git a/openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h b/openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
index 22a0932c3fed8c83f75b7b44be274aca917c05cb..b1e12414871fc8bf8864dd448c3f555354ac8d05 100644
--- a/openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
+++ b/openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
@@ -55,7 +55,7 @@
 
 /* PHY */
 #include "PHY/defs_gNB.h"
-#include "PHY/TOOLS/time_meas.h"
+#include "time_meas.h"
 
 /* Interface */
 #include "nfapi_nr_interface_scf.h"
@@ -620,6 +620,8 @@ typedef struct {
   int ul_failure;
   struct CSI_Report CSI_report;
   bool SR;
+  bool update_pdsch_ps;
+  bool update_pusch_ps;
   bool set_mcs;
   /// information about every HARQ process
   NR_UE_harq_t harq_processes[NR_MAX_NB_HARQ_PROCESSES];
diff --git a/openair2/LAYER2/nr_pdcp/nr_pdcp_oai_api.c b/openair2/LAYER2/nr_pdcp/nr_pdcp_oai_api.c
index a08c9d2c78a31b53d6a71fc36663e5de97add64d..1f66400af1a67765afc38b8673dec7062d7d240a 100644
--- a/openair2/LAYER2/nr_pdcp/nr_pdcp_oai_api.c
+++ b/openair2/LAYER2/nr_pdcp/nr_pdcp_oai_api.c
@@ -101,13 +101,6 @@ typedef struct {
 
 static rlc_data_req_queue q;
 
-extern rlc_op_status_t nr_rrc_rlc_config_asn1_req (const protocol_ctxt_t   * const ctxt_pP,
-    const NR_SRB_ToAddModList_t   * const srb2add_listP,
-    const NR_DRB_ToAddModList_t   * const drb2add_listP,
-    const NR_DRB_ToReleaseList_t  * const drb2release_listP,
-    const LTE_PMCH_InfoList_r9_t * const pmch_InfoList_r9_pP,
-    struct NR_CellGroupConfig__rlc_BearerToAddModList *rlc_bearer2add_list);
-
 static void *rlc_data_req_thread(void *_)
 {
   int i;
diff --git a/openair2/LAYER2/nr_rlc/nr_rlc_entity_am.c b/openair2/LAYER2/nr_rlc/nr_rlc_entity_am.c
index d7923e5490bf0c0ebccb2b53044edc6efe4478cf..af8cb5715adbb67ab2ca37d47bf4e5d46853ad64 100644
--- a/openair2/LAYER2/nr_rlc/nr_rlc_entity_am.c
+++ b/openair2/LAYER2/nr_rlc/nr_rlc_entity_am.c
@@ -1044,7 +1044,7 @@ next_pdu:
 set_end_different_sdu:
   /* don't go more than rx_highest_status - 1 */
   if (sn_compare_rx(entity, entity->rx_highest_status, cur->sn) <= 0) {
-    ret.so_end = (entity->rx_highest_status - 1 + entity->sn_modulus) %
+    ret.sn_end = (entity->rx_highest_status - 1 + entity->sn_modulus) %
                       entity->sn_modulus;
     ret.so_end   = 0xffff;
     return ret;
@@ -1305,9 +1305,8 @@ static int missing_size(nr_rlc_entity_am_t *entity, missing_data_t *m,
   missing_data_t m_nack;
 
   /* be careful to limit a range to 255 SNs, that is: cut if needed */
-  sn_count = m->sn_end - m->sn_start + 1;
-  if (sn_count < 0)
-    sn_count += entity->sn_modulus;
+  sn_count = (m->sn_end - m->sn_start + entity->sn_modulus)
+              % entity->sn_modulus + 1;
 
   sn_start = m->sn_start;
 
diff --git a/openair2/NR_PHY_INTERFACE/NR_IF_Module.c b/openair2/NR_PHY_INTERFACE/NR_IF_Module.c
index 57bb411dcc943c6248a66e211715ed26aecac394..26549885578335c9365049d19c5e2a61d335feb4 100644
--- a/openair2/NR_PHY_INTERFACE/NR_IF_Module.c
+++ b/openair2/NR_PHY_INTERFACE/NR_IF_Module.c
@@ -63,7 +63,7 @@ extern uint16_t sl_ahead;
 
 void handle_nr_rach(NR_UL_IND_t *UL_info)
 {
-  if(NFAPI_MODE == NFAPI_MODE_PNF) {
+  if (NFAPI_MODE == NFAPI_MODE_PNF) {
     if (UL_info->rach_ind.number_of_pdus > 0) {
       LOG_D(PHY,"UL_info->UL_info->rach_ind.number_of_pdus:%d SFN/Slot:%d.%d \n", UL_info->rach_ind.number_of_pdus, UL_info->rach_ind.sfn,UL_info->rach_ind.slot);
       oai_nfapi_nr_rach_indication(&UL_info->rach_ind);
@@ -71,68 +71,28 @@ void handle_nr_rach(NR_UL_IND_t *UL_info)
     }
     return;
   }
-  NR_UL_IND_t UL_INFO;
-  nfapi_nr_rach_indication_t *rach_ind = NULL;
-  if (get_softmodem_params()->emulate_l1)
-  {
-    if (gnb_rach_ind_queue.num_items == 0)
-      return; 
-    LOG_I(NR_MAC, "gnb_rach_ind_queue size = %zu\n", gnb_rach_ind_queue.num_items);
-    rach_ind = get_queue(&gnb_rach_ind_queue);
-
-    UL_INFO.rach_ind = *rach_ind;
-    UL_INFO.module_id = UL_info->module_id;
-    UL_INFO.CC_id = UL_info->CC_id;
-  }
-  else
-  {
-    UL_INFO.rach_ind = UL_info->rach_ind;
-    UL_INFO.module_id = UL_info->module_id;
-    UL_INFO.CC_id = UL_info->CC_id;
-  }
 
-  int frame_diff = UL_info->frame - UL_INFO.rach_ind.sfn;
-  if (frame_diff < 0)
-  {
+  int frame_diff = UL_info->frame - UL_info->rach_ind.sfn;
+  if (frame_diff < 0) {
     frame_diff += 1024;
   }
   bool in_timewindow = frame_diff == 0 || (frame_diff == 1 && UL_info->slot < 7);
 
-  if (UL_INFO.rach_ind.number_of_pdus>0 && in_timewindow) {
+  if (UL_info->rach_ind.number_of_pdus > 0 && in_timewindow) {
     LOG_A(MAC,"UL_info[Frame %d, Slot %d] Calling initiate_ra_proc RACH:SFN/SLOT:%d/%d\n",
-          UL_info->frame, UL_info->slot, UL_INFO.rach_ind.sfn, UL_INFO.rach_ind.slot);
-    int npdus = UL_INFO.rach_ind.number_of_pdus;
-    for(int i = 0; i < npdus; i++) {
-      UL_INFO.rach_ind.number_of_pdus--;
+          UL_info->frame, UL_info->slot, UL_info->rach_ind.sfn, UL_info->rach_ind.slot);
+    for (int i = 0; i < UL_info->rach_ind.number_of_pdus; i++) {
       UL_info->rach_ind.number_of_pdus--;
-      if (UL_INFO.rach_ind.pdu_list[i].num_preamble>0)
-      AssertFatal(UL_INFO.rach_ind.pdu_list[i].num_preamble==1,
-                  "More than 1 preamble not supported\n");
-    
-      nr_initiate_ra_proc(UL_INFO.module_id,
-                          UL_INFO.CC_id,
-                          UL_INFO.rach_ind.sfn,
-                          UL_INFO.rach_ind.slot,
-                          UL_INFO.rach_ind.pdu_list[i].preamble_list[0].preamble_index,
-                          UL_INFO.rach_ind.pdu_list[i].freq_index,
-                          UL_INFO.rach_ind.pdu_list[i].symbol_index,
-                          UL_INFO.rach_ind.pdu_list[i].preamble_list[0].timing_advance);
-    }
-  }
-  if (get_softmodem_params()->emulate_l1)
-  {
-    if (rach_ind && rach_ind->number_of_pdus > 0)
-    {
-      for(int i = 0; i < rach_ind->number_of_pdus; i++)
-      {
-        free(rach_ind->pdu_list[i].preamble_list);
-        rach_ind->pdu_list[i].preamble_list = NULL;
-      }
-      free(rach_ind->pdu_list);
-      rach_ind->pdu_list = NULL;
+      AssertFatal(UL_info->rach_ind.pdu_list[i].num_preamble == 1, "More than 1 preamble not supported\n");
+      nr_initiate_ra_proc(UL_info->module_id,
+                          UL_info->CC_id,
+                          UL_info->rach_ind.sfn,
+                          UL_info->rach_ind.slot,
+                          UL_info->rach_ind.pdu_list[i].preamble_list[0].preamble_index,
+                          UL_info->rach_ind.pdu_list[i].freq_index,
+                          UL_info->rach_ind.pdu_list[i].symbol_index,
+                          UL_info->rach_ind.pdu_list[i].preamble_list[0].timing_advance);
     }
-    free(rach_ind);
-    rach_ind = NULL;
   }
 }
 
@@ -148,26 +108,11 @@ void handle_nr_uci(NR_UL_IND_t *UL_info)
     return;
   }
 
-  NR_UL_IND_t UL_INFO;
-  nfapi_nr_uci_indication_t *uci_ind = NULL;
-  if (get_softmodem_params()->emulate_l1)
-  {
-    if (gnb_uci_ind_queue.num_items == 0)
-      return; 
-    LOG_I(NR_MAC, "gnb_uci_ind_queue size = %zu\n", gnb_uci_ind_queue.num_items);
-    uci_ind = get_queue(&gnb_uci_ind_queue);
-    UL_INFO.uci_ind = *uci_ind;
-  }
-  else
-  {
-    UL_INFO.uci_ind = UL_info->uci_ind;
-  }
-
   const module_id_t mod_id = UL_info->module_id;
-  const frame_t frame = UL_INFO.uci_ind.sfn;
-  const sub_frame_t slot = UL_INFO.uci_ind.slot;
-  int num_ucis = UL_INFO.uci_ind.num_ucis;
-  nfapi_nr_uci_t *uci_list = UL_INFO.uci_ind.uci_list;
+  const frame_t frame = UL_info->uci_ind.sfn;
+  const sub_frame_t slot = UL_info->uci_ind.slot;
+  int num_ucis = UL_info->uci_ind.num_ucis;
+  nfapi_nr_uci_t *uci_list = UL_info->uci_ind.uci_list;
 
   for (int i = 0; i < num_ucis; i++) {
     switch (uci_list[i].pdu_type) {
@@ -178,7 +123,7 @@ void handle_nr_uci(NR_UL_IND_t *UL_info)
       case NFAPI_NR_UCI_FORMAT_0_1_PDU_TYPE: {
         const nfapi_nr_uci_pucch_pdu_format_0_1_t *uci_pdu = &uci_list[i].pucch_pdu_format_0_1;
         LOG_D(NR_MAC, "The received uci has sfn slot %d %d, num_ucis %d and pdu_size %d\n",
-                UL_INFO.uci_ind.sfn, UL_INFO.uci_ind.slot, num_ucis, uci_list[i].pdu_size);
+                UL_info->uci_ind.sfn, UL_info->uci_ind.slot, num_ucis, uci_list[i].pdu_size);
         handle_nr_uci_pucch_0_1(mod_id, frame, slot, uci_pdu);
         break;
       }
@@ -192,39 +137,8 @@ void handle_nr_uci(NR_UL_IND_t *UL_info)
     }
   }
 
-  if (get_softmodem_params()->emulate_l1)
-  {
-    for (int i = 0; i < num_ucis; i++) {
-      switch (uci_list[i].pdu_type) {
-        case NFAPI_NR_UCI_FORMAT_0_1_PDU_TYPE:
-          if (uci_list[i].pucch_pdu_format_0_1.harq) {
-            free(uci_list[i].pucch_pdu_format_0_1.harq->harq_list);
-            uci_list[i].pucch_pdu_format_0_1.harq->harq_list = NULL;
-          }
-          free(uci_list[i].pucch_pdu_format_0_1.harq);
-          uci_list[i].pucch_pdu_format_0_1.harq = NULL;
-          free(uci_list[i].pucch_pdu_format_0_1.sr);
-          uci_list[i].pucch_pdu_format_0_1.sr = NULL;
-          break;
+  UL_info->uci_ind.num_ucis = 0;
 
-        case NFAPI_NR_UCI_FORMAT_2_3_4_PDU_TYPE:
-          free(uci_list[i].pucch_pdu_format_2_3_4.harq.harq_payload);
-          free(uci_list[i].pucch_pdu_format_2_3_4.csi_part1.csi_part1_payload);
-          free(uci_list[i].pucch_pdu_format_2_3_4.csi_part2.csi_part2_payload);
-          break;
-      }
-    }
-    if (uci_ind && num_ucis > 0) {
-      free(uci_list);
-      uci_list = NULL;
-    }
-    free(uci_ind);
-    uci_ind = NULL;
-  }
-  else
-  {
-    UL_info->uci_ind.num_ucis = 0;
-  }
 }
 
 static bool crc_sfn_slot_matcher(void *wanted, void *candidate)
@@ -264,173 +178,202 @@ void handle_nr_ulsch(NR_UL_IND_t *UL_info)
     return;
   }
 
-  NR_UL_IND_t UL_INFO;
-  nfapi_nr_rx_data_indication_t *rx_ind = NULL;
-  nfapi_nr_crc_indication_t *crc_ind = NULL;
-  if (get_softmodem_params()->emulate_l1)
-  {
-    rx_ind = get_queue(&gnb_rx_ind_queue);
-    if (!rx_ind)
-    {
-      LOG_D(NR_PHY, "No rx data indication (empty gnb_rx_ind_queue)\n");
-      return;
+  if (UL_info->rx_ind.number_of_pdus > 0 && UL_info->crc_ind.number_crcs > 0) {
+    AssertFatal(UL_info->rx_ind.number_of_pdus == UL_info->crc_ind.number_crcs,
+                "number_of_pdus %d, number_crcs %d\n",
+                UL_info->rx_ind.number_of_pdus, UL_info->crc_ind.number_crcs);
+    for (int i = 0; i < UL_info->rx_ind.number_of_pdus; i++) {
+      const nfapi_nr_rx_data_pdu_t *rx = &UL_info->rx_ind.pdu_list[i];
+      const nfapi_nr_crc_t *crc = &UL_info->crc_ind.crc_list[i];
+      LOG_D(NR_PHY, "UL_info->crc_ind.pdu_list[%d].rnti:%04x "
+                    "UL_info->rx_ind.pdu_list[%d].rnti:%04x\n",
+                    i, crc->rnti, i, rx->rnti);
+
+      AssertFatal(crc->rnti == rx->rnti, "mis-match between CRC RNTI %04x and RX RNTI %04x\n",
+                  crc->rnti, rx->rnti);
+
+      LOG_D(NR_MAC,
+            "%4d.%2d Calling rx_sdu (CRC %s/tb_crc_status %d)\n",
+            UL_info->frame,
+            UL_info->slot,
+            crc->tb_crc_status ? "error" : "ok",
+            crc->tb_crc_status);
+
+      /* if CRC passes, pass PDU, otherwise pass NULL as error indication */
+      nr_rx_sdu(UL_info->module_id,
+                UL_info->CC_id,
+                UL_info->rx_ind.sfn,
+                UL_info->rx_ind.slot,
+                rx->rnti,
+                crc->tb_crc_status ? NULL : rx->pdu,
+                rx->pdu_length,
+                rx->timing_advance,
+                rx->ul_cqi,
+                rx->rssi);
+      handle_nr_ul_harq(UL_info->CC_id, UL_info->module_id, UL_info->frame, UL_info->slot, crc);
     }
+  }
+  UL_info->rx_ind.number_of_pdus = 0;
+  UL_info->crc_ind.number_crcs = 0;
+}
 
-    int sfn_slot = NFAPI_SFNSLOT2HEX(rx_ind->sfn, rx_ind->slot); 
-    
-    crc_ind = unqueue_matching(&gnb_crc_ind_queue,
-                               MAX_QUEUE_SIZE,
-                               crc_sfn_slot_matcher,
-                               &sfn_slot);
-    if (!crc_ind)
+static void free_unqueued_nfapi_indications(nfapi_nr_rach_indication_t *rach_ind,
+                                            nfapi_nr_uci_indication_t *uci_ind,
+                                            nfapi_nr_rx_data_indication_t *rx_ind,
+                                            nfapi_nr_crc_indication_t *crc_ind) {
+  if (rach_ind && rach_ind->number_of_pdus > 0)
+  {
+    for(int i = 0; i < rach_ind->number_of_pdus; i++)
     {
-      LOG_D(NR_PHY, "No crc indication with the same SFN SLOT of rx indication %u %u\n", rx_ind->sfn, rx_ind->slot);
-      put_queue(&gnb_rx_ind_queue, rx_ind);
-      return;
+      free_and_zero(rach_ind->pdu_list[i].preamble_list);
     }
+    free_and_zero(rach_ind->pdu_list);
+    free_and_zero(rach_ind);
+  }
+  if (uci_ind && uci_ind->num_ucis > 0)
+  {
+    for (int i = 0; i < uci_ind->num_ucis; i++) {
+      switch (uci_ind->uci_list[i].pdu_type) {
+        case NFAPI_NR_UCI_FORMAT_0_1_PDU_TYPE:
+          if (uci_ind->uci_list[i].pucch_pdu_format_0_1.harq) {
+            free_and_zero(uci_ind->uci_list[i].pucch_pdu_format_0_1.harq->harq_list);
+          }
+          free_and_zero(uci_ind->uci_list[i].pucch_pdu_format_0_1.harq);
+          free_and_zero(uci_ind->uci_list[i].pucch_pdu_format_0_1.sr);
+          break;
 
-    UL_INFO.rx_ind = *rx_ind;
-    UL_INFO.crc_ind = *crc_ind;
-    UL_INFO.module_id = UL_info->module_id;
-    UL_INFO.CC_id = UL_info->CC_id;
+        case NFAPI_NR_UCI_FORMAT_2_3_4_PDU_TYPE:
+          free_and_zero(uci_ind->uci_list[i].pucch_pdu_format_2_3_4.harq.harq_payload);
+          free_and_zero(uci_ind->uci_list[i].pucch_pdu_format_2_3_4.csi_part1.csi_part1_payload);
+          free_and_zero(uci_ind->uci_list[i].pucch_pdu_format_2_3_4.csi_part2.csi_part2_payload);
+          break;
+      }
+    }
+    free_and_zero(uci_ind->uci_list);
+    free_and_zero(uci_ind);
   }
-  else
+  if (rx_ind && rx_ind->number_of_pdus > 0)
   {
-    UL_INFO.rx_ind = UL_info->rx_ind;
-    UL_INFO.crc_ind = UL_info->crc_ind;
-    UL_INFO.module_id = UL_info->module_id;
-    UL_INFO.CC_id = UL_info->CC_id;
+    free_and_zero(rx_ind->pdu_list);
+    free_and_zero(rx_ind);
   }
+  if (crc_ind && crc_ind->number_crcs > 0)
+  {
+    free_and_zero(crc_ind->crc_list);
+    free_and_zero(crc_ind);
+  }
+}
 
-  UL_INFO.frame = UL_INFO.rx_ind.sfn;
-  UL_INFO.slot = UL_INFO.rx_ind.slot;
-  UL_INFO.module_id = UL_info->module_id;
-  UL_INFO.CC_id = UL_info->CC_id;
-  LOG_D(NR_MAC, " UL_info frame slot vs rx_ind frame slot vs crc_ind slot frame slot = %u %u vs %u %u vs %u %u\n",
-                  UL_info->frame, UL_info->slot,
-                  UL_INFO.rx_ind.sfn, UL_INFO.rx_ind.slot,
-                  UL_INFO.crc_ind.sfn, UL_INFO.crc_ind.slot
-                  );
-
-  if (UL_INFO.rx_ind.number_of_pdus > 0 && UL_INFO.crc_ind.number_crcs > 0) {
-    for (int i = 0; i < UL_INFO.rx_ind.number_of_pdus; i++) {
-      int j;
-      for (j = 0; j < UL_INFO.crc_ind.number_crcs; j++) {
-        // find crc_indication j corresponding rx_indication i
-        const nfapi_nr_rx_data_pdu_t *rx = &UL_INFO.rx_ind.pdu_list[i];
-        const nfapi_nr_crc_t *crc = &UL_INFO.crc_ind.crc_list[j];
-        LOG_D(NR_PHY,
-              "UL_INFO.crc_ind.pdu_list[%d].rnti:%04x "
-              "UL_INFO.rx_ind.pdu_list[%d].rnti:%04x\n",
-              j,
-              crc->rnti,
-              i,
-              rx->rnti);
-
-        if (crc->rnti != rx->rnti)
-        {
-          LOG_D(NR_MAC, "mis-match between CRC rnti %04x and RX rnit %04x\n",  crc->rnti,  rx->rnti);
-          continue;
-        }
+static void remove_crc_pdu(nfapi_nr_crc_indication_t *crc_ind, int index) {
+  AssertFatal(index >= 0, "Invalid index %d\n", index);
+  AssertFatal(index < crc_ind->number_crcs, "Invalid index %d\n", index);
+  AssertFatal(crc_ind->number_crcs > 0, "Invalid crc_ind->number_crcs %d\n", crc_ind->number_crcs);
 
-        LOG_D(NR_MAC,
-              "%4d.%2d Calling rx_sdu (CRC %s/tb_crc_status %d)\n",
-              UL_INFO.frame,
-              UL_INFO.slot,
-              crc->tb_crc_status ? "error" : "ok",
-              crc->tb_crc_status);
-
-        /* if CRC passes, pass PDU, otherwise pass NULL as error indication */
-        nr_rx_sdu(UL_INFO.module_id,
-                  UL_INFO.CC_id,
-                  UL_INFO.rx_ind.sfn,
-                  UL_INFO.rx_ind.slot,
-                  rx->rnti,
-                  crc->tb_crc_status ? NULL : rx->pdu,
-                  rx->pdu_length,
-                  rx->timing_advance,
-                  rx->ul_cqi,
-                  rx->rssi);
-        handle_nr_ul_harq(UL_INFO.CC_id, UL_INFO.module_id, UL_INFO.frame, UL_INFO.slot, crc);
-        break;
-      } //    for (j=0;j<UL_INFO.crc_ind.number_crcs;j++)
-      if (get_softmodem_params()->emulate_l1)
-      {
-        int last = UL_INFO.crc_ind.number_crcs - 1;
-        if (j < last)
-        {
-          crc_ind->crc_list[j] = crc_ind->crc_list[last];
-          UL_INFO.crc_ind.number_crcs--;
-        }
-        else if (j == last)
-        {
-          UL_INFO.crc_ind.number_crcs--;
-        }
+  memmove(crc_ind->crc_list + index,
+          crc_ind->crc_list + index + 1,
+          sizeof(*crc_ind->crc_list) * (crc_ind->number_crcs - index - 1));
+  crc_ind->number_crcs--;
+}
 
-        last = UL_INFO.rx_ind.number_of_pdus - 1;
-        if (i < last)
-        {
-          rx_ind->pdu_list[i] = rx_ind->pdu_list[last];
-          UL_INFO.rx_ind.number_of_pdus--;
-          i--;
-        }
-        else if (i == last)
-        {
-          UL_INFO.rx_ind.number_of_pdus--;
-        }
-      }
-    } //   for (i=0;i<UL_INFO.rx_ind.number_of_pdus;i++)
-    if (get_softmodem_params()->emulate_l1)
-    {
-      if (UL_INFO.crc_ind.number_crcs > 0)
-      {
-        crc_ind->number_crcs = UL_INFO.crc_ind.number_crcs;
-        requeue(&gnb_crc_ind_queue, crc_ind);
-      }
+static void remove_rx_pdu(nfapi_nr_rx_data_indication_t *rx_ind, int index) {
+  AssertFatal(index >= 0, "Invalid index %d\n", index);
+  AssertFatal(index < rx_ind->number_of_pdus, "Invalid index %d\n", index);
+  AssertFatal(rx_ind->number_of_pdus > 0, "Invalid rx_ind->number_of_pdus %d\n", rx_ind->number_of_pdus);
 
-      if (UL_INFO.rx_ind.number_of_pdus > 0)
-      {
-        rx_ind->number_of_pdus = UL_INFO.rx_ind.number_of_pdus;
-        requeue(&gnb_rx_ind_queue, rx_ind);
-      }
+  memmove(rx_ind->pdu_list + index,
+          rx_ind->pdu_list + index + 1,
+          sizeof(*rx_ind->pdu_list) * (rx_ind->number_of_pdus - index - 1));
+  rx_ind->number_of_pdus--;
+}
+
+static bool crc_ind_has_rnti(nfapi_nr_crc_indication_t *crc_ind, uint16_t rnti) {
+  for (int i = 0; i < crc_ind->number_crcs; i++) {
+    if (rnti == crc_ind->crc_list[i].rnti) {
+      return true;
+    }
+  }
+  return false;
+}
 
-      if (UL_INFO.crc_ind.number_crcs == 0)
-      {
-        free(crc_ind->crc_list);
-        crc_ind->crc_list = NULL;
-        free(crc_ind);
-        crc_ind = NULL;
+static bool rx_ind_has_rnti(nfapi_nr_rx_data_indication_t *rx_ind, uint16_t rnti) {
+  for (int i = 0; i < rx_ind->number_of_pdus; i++) {
+    if (rnti == rx_ind->pdu_list[i].rnti) {
+      return true;
+    }
+  }
+  return false;
+}
+
+static void match_crc_rx_pdu(nfapi_nr_rx_data_indication_t *rx_ind, nfapi_nr_crc_indication_t *crc_ind) {
+  AssertFatal(crc_ind->number_crcs > 0 &&  rx_ind->number_of_pdus > 0,
+              "Invalid number of crc_ind->number_crcs %d or rx_ind->number_of_pdus %d\n",
+              crc_ind->number_crcs, rx_ind->number_of_pdus);
+  if (crc_ind->number_crcs > rx_ind->number_of_pdus) {
+    int num_unmatched_crcs = 0;
+    nfapi_nr_crc_indication_t *crc_ind_unmatched = calloc(1, sizeof(*crc_ind_unmatched));
+    crc_ind_unmatched->header = crc_ind->header;
+    crc_ind_unmatched->sfn = crc_ind->sfn;
+    crc_ind_unmatched->slot = crc_ind->slot;
+    crc_ind_unmatched->number_crcs = crc_ind->number_crcs - rx_ind->number_of_pdus;
+    crc_ind_unmatched->crc_list = calloc(crc_ind_unmatched->number_crcs, sizeof(nfapi_nr_crc_t));
+    for (int i = 0; i < crc_ind->number_crcs; i++) {
+      if (!rx_ind_has_rnti(rx_ind, crc_ind->crc_list[i].rnti)) {
+          LOG_I(NR_MAC, "crc_ind->crc_list[%d].rnti %x does not match any rx_ind pdu rnti\n",
+                i, crc_ind->crc_list[i].rnti);
+          crc_ind_unmatched->crc_list[num_unmatched_crcs] = crc_ind->crc_list[i];
+          num_unmatched_crcs++;
+          remove_crc_pdu(crc_ind, i);
       }
-      if (UL_INFO.rx_ind.number_of_pdus == 0)
-      {
-        free(rx_ind->pdu_list);
-        rx_ind->pdu_list = NULL;
-        free(rx_ind);
-        rx_ind = NULL;
+      if (crc_ind->number_crcs == rx_ind->number_of_pdus) {
+        break;
       }
     }
-    else
+    AssertFatal(crc_ind_unmatched->number_crcs == num_unmatched_crcs, "crc_ind num_pdus %d doesnt match %d\n",
+                crc_ind_unmatched->number_crcs, num_unmatched_crcs);
+    if (!requeue(&gnb_crc_ind_queue, crc_ind_unmatched))
     {
-      UL_info->crc_ind.number_crcs = 0;
-      UL_info->rx_ind.number_of_pdus = 0;
+      LOG_E(NR_PHY, "requeue failed for crc_ind_unmatched.\n");
+      free_and_zero(crc_ind_unmatched->crc_list);
+      free_and_zero(crc_ind_unmatched);
     }
-  } else if ((UL_INFO.rx_ind.number_of_pdus != 0)
-             || (UL_INFO.crc_ind.number_crcs != 0)) {
-     LOG_E(NR_PHY,
-          "hoping not to have mis-match between CRC ind and RX ind - "
-          "hopefully the missing message is coming shortly "
-          "rx_ind:%d(SFN/SL:%d/%d) crc_ind:%d(SFN/SL:%d/%d) \n",
-          UL_INFO.rx_ind.number_of_pdus,
-          UL_INFO.rx_ind.sfn,
-          UL_INFO.rx_ind.slot,
-          UL_INFO.crc_ind.number_crcs,
-          UL_INFO.crc_ind.sfn,
-          UL_INFO.crc_ind.slot);
+  }
+  else if (crc_ind->number_crcs < rx_ind->number_of_pdus) {
+    int num_unmatched_rxs = 0;
+    nfapi_nr_rx_data_indication_t *rx_ind_unmatched = calloc(1, sizeof(*rx_ind_unmatched));
+    rx_ind_unmatched->header = rx_ind->header;
+    rx_ind_unmatched->sfn = rx_ind->sfn;
+    rx_ind_unmatched->slot = rx_ind->slot;
+    rx_ind_unmatched->number_of_pdus = rx_ind->number_of_pdus - crc_ind->number_crcs;
+    rx_ind_unmatched->pdu_list = calloc(rx_ind_unmatched->number_of_pdus, sizeof(nfapi_nr_pdu_t));
+    for (int i = 0; i < rx_ind->number_of_pdus; i++) {
+      if (!crc_ind_has_rnti(crc_ind, rx_ind->pdu_list[i].rnti)) {
+        LOG_I(NR_MAC, "rx_ind->pdu_list[%d].rnti %d does not match any crc_ind pdu rnti\n",
+              i, rx_ind->pdu_list[i].rnti);
+        rx_ind_unmatched->pdu_list[num_unmatched_rxs] = rx_ind->pdu_list[i];
+        num_unmatched_rxs++;
+        remove_rx_pdu(rx_ind, i);
+      }
+      if (rx_ind->number_of_pdus == crc_ind->number_crcs) {
+        break;
+      }
+    }
+    AssertFatal(rx_ind_unmatched->number_of_pdus == num_unmatched_rxs, "rx_ind num_pdus %d doesnt match %d\n",
+                rx_ind_unmatched->number_of_pdus, num_unmatched_rxs);
+    if (!requeue(&gnb_rx_ind_queue, rx_ind_unmatched))
+    {
+      LOG_E(NR_PHY, "requeue failed for rx_ind_unmatched.\n");
+      free_and_zero(rx_ind_unmatched->pdu_list);
+      free_and_zero(rx_ind_unmatched);
+    }
+  }
+  else {
+    LOG_E(NR_MAC, "The number of crc pdus %d = the number of rx pdus %d\n",
+          crc_ind->number_crcs, rx_ind->number_of_pdus);
   }
 }
 
 void NR_UL_indication(NR_UL_IND_t *UL_info) {
-  AssertFatal(UL_info!=NULL,"UL_INFO is null\n");
+  AssertFatal(UL_info!=NULL,"UL_info is null\n");
 #ifdef DUMP_FAPI
   dump_ul(UL_info);
 #endif
@@ -440,17 +383,63 @@ void NR_UL_indication(NR_UL_IND_t *UL_info) {
   NR_IF_Module_t   *ifi        = nr_if_inst[module_id];
   gNB_MAC_INST     *mac        = RC.nrmac[module_id];
   LOG_D(NR_PHY,"SFN/SLOT:%d.%d module_id:%d CC_id:%d UL_info[rach_pdus:%zu rx_ind:%zu crcs:%zu]\n",
-        UL_info->frame,UL_info->slot,
-        module_id,CC_id, gnb_rach_ind_queue.num_items,
-        gnb_rx_ind_queue.num_items, gnb_crc_ind_queue.num_items);
+        UL_info->frame, UL_info->slot,
+        module_id, CC_id,
+        gnb_rach_ind_queue.num_items,
+        gnb_rx_ind_queue.num_items,
+        gnb_crc_ind_queue.num_items);
+
+  nfapi_nr_rach_indication_t *rach_ind = NULL;
+  nfapi_nr_uci_indication_t *uci_ind = NULL;
+  nfapi_nr_rx_data_indication_t *rx_ind = NULL;
+  nfapi_nr_crc_indication_t *crc_ind = NULL;
+  if (get_softmodem_params()->emulate_l1)
+  {
+    if (gnb_rach_ind_queue.num_items > 0) {
+      LOG_D(NR_MAC, "gnb_rach_ind_queue size = %zu\n", gnb_rach_ind_queue.num_items);
+      rach_ind = get_queue(&gnb_rach_ind_queue);
+      AssertFatal(rach_ind->number_of_pdus > 0, "Invalid number of PDUs\n");
+      UL_info->rach_ind = *rach_ind;
+    }
+    if (gnb_uci_ind_queue.num_items > 0) {
+      LOG_D(NR_MAC, "gnb_uci_ind_queue size = %zu\n", gnb_uci_ind_queue.num_items);
+      uci_ind = get_queue(&gnb_uci_ind_queue);
+      AssertFatal(uci_ind->num_ucis > 0, "Invalid number of PDUs\n");
+      UL_info->uci_ind = *uci_ind;
+    }
+    if (gnb_rx_ind_queue.num_items > 0 && gnb_crc_ind_queue.num_items > 0) {
+      LOG_D(NR_MAC, "gnb_rx_ind_queue size = %zu and gnb_crc_ind_queue size = %zu\n",
+            gnb_rx_ind_queue.num_items, gnb_crc_ind_queue.num_items);
+      rx_ind = get_queue(&gnb_rx_ind_queue);
+      int sfn_slot = NFAPI_SFNSLOT2HEX(rx_ind->sfn, rx_ind->slot);
+      crc_ind = unqueue_matching(&gnb_crc_ind_queue,
+                                 MAX_QUEUE_SIZE,
+                                 crc_sfn_slot_matcher,
+                                 &sfn_slot);
+      if (!crc_ind) {
+        LOG_I(NR_PHY, "No crc indication with the same SFN SLOT of rx indication %u %u\n", rx_ind->sfn, rx_ind->slot);
+        requeue(&gnb_rx_ind_queue, rx_ind);
+      }
+      else {
+        AssertFatal(rx_ind->number_of_pdus > 0, "Invalid number of PDUs\n");
+        AssertFatal(crc_ind->number_crcs > 0, "Invalid number of PDUs\n");
+        if (crc_ind->number_crcs != rx_ind->number_of_pdus)
+          match_crc_rx_pdu(rx_ind, crc_ind);
+        UL_info->rx_ind = *rx_ind;
+        UL_info->crc_ind = *crc_ind;
+      }
+    }
+  }
 
   handle_nr_rach(UL_info);
-  
   handle_nr_uci(UL_info);
   // clear UL DCI prior to handling ULSCH
   mac->UL_dci_req[CC_id].numPdus = 0;
   handle_nr_ulsch(UL_info);
 
+  if (get_softmodem_params()->emulate_l1) {
+    free_unqueued_nfapi_indications(rach_ind, uci_ind, rx_ind, crc_ind);
+  }
   if (NFAPI_MODE != NFAPI_MODE_PNF) {
 
     if (ifi->CC_mask==0) {
diff --git a/openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c b/openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c
index 08807e0202474f96ad4e9d8a56c634bd140a385b..9bce0e884399e947fbc81083a4e5b1de328b87dd 100644
--- a/openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c
+++ b/openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c
@@ -296,11 +296,11 @@ static void copy_dl_tti_req_to_dl_info(nr_downlink_indication_t *dl_info, nfapi_
 {
     NR_UE_MAC_INST_t *mac = get_mac_inst(dl_info->module_id);
     mac->nr_ue_emul_l1.expected_sib = false;
-    memset(mac->nr_ue_emul_l1.index_has_sib, 0, sizeof(*mac->nr_ue_emul_l1.index_has_sib));
+    memset(mac->nr_ue_emul_l1.index_has_sib, 0, sizeof(mac->nr_ue_emul_l1.index_has_sib));
     mac->nr_ue_emul_l1.expected_rar = false;
-    memset(mac->nr_ue_emul_l1.index_has_rar, 0, sizeof(*mac->nr_ue_emul_l1.index_has_rar));
+    memset(mac->nr_ue_emul_l1.index_has_rar, 0, sizeof(mac->nr_ue_emul_l1.index_has_rar));
     mac->nr_ue_emul_l1.expected_dci = false;
-    memset(mac->nr_ue_emul_l1.index_has_dci, 0, sizeof(*mac->nr_ue_emul_l1.index_has_dci));
+    memset(mac->nr_ue_emul_l1.index_has_dci, 0, sizeof(mac->nr_ue_emul_l1.index_has_dci));
     int pdu_idx = 0;
 
     int num_pdus = dl_tti_request->dl_tti_request_body.nPDUs;
@@ -424,7 +424,7 @@ static void copy_tx_data_req_to_dl_info(nr_downlink_indication_t *dl_info, nfapi
 
     if (!dl_info->rx_ind)
     {
-        dl_info->rx_ind = CALLOC(1, sizeof(fapi_nr_rx_indication_t));
+        dl_info->rx_ind = CALLOC(num_pdus, sizeof(fapi_nr_rx_indication_t));
     }
     AssertFatal(dl_info->rx_ind != NULL, "%s: Out of memory in calloc", __FUNCTION__);
     fapi_nr_rx_indication_t *rx_ind = dl_info->rx_ind;
@@ -1038,7 +1038,8 @@ int handle_dci(module_id_t module_id, int cc_id, unsigned int gNB_index, frame_t
 // Note: sdu should always be processed because data and timing advance updates are transmitted by the UE
 int8_t handle_dlsch(nr_downlink_indication_t *dl_info, NR_UL_TIME_ALIGNMENT_t *ul_time_alignment, int pdu_id){
 
-  dl_info->rx_ind->rx_indication_body[pdu_id].pdsch_pdu.harq_pid = g_harq_pid;
+  if (get_softmodem_params()->emulate_l1)
+    dl_info->rx_ind->rx_indication_body[pdu_id].pdsch_pdu.harq_pid = g_harq_pid;
 
   update_harq_status(dl_info->module_id,
                      dl_info->rx_ind->rx_indication_body[pdu_id].pdsch_pdu.harq_pid,
diff --git a/openair2/RRC/LTE/MESSAGES/asn1_msg.c b/openair2/RRC/LTE/MESSAGES/asn1_msg.c
index b06959131618470ba8ce0c7cc9d82c64c23dbbd7..c3e41978e59a3f59b7a6f472d5d9d1f23d2d17aa 100644
--- a/openair2/RRC/LTE/MESSAGES/asn1_msg.c
+++ b/openair2/RRC/LTE/MESSAGES/asn1_msg.c
@@ -4293,9 +4293,10 @@ ssize_t do_nrMeasurementReport(uint8_t *buffer,
   LTE_MeasResultListEUTRA_t  *measResultListEUTRA2=&measResultNeighCells->choice.measResultListEUTRA;
   asn1cSequenceAdd(measResultListEUTRA2->list, struct LTE_MeasResultEUTRA, measresulteutra_list);
   measresulteutra_list->physCellId = phy_id;
-  //asn1cCalloc(measresulteutra_list->cgi_Info, measresult_cgi2);
-  //measresult_cgi2->cellGlobalId= {0};
-  //measresult_cgi2->trackingAreaCode= {0};
+  /* TODO: This asn1cCalloc leaks memory but also masks a bug.
+     If we delete this asn1cCalloc statement, eNB will crash in NSA mode.
+     Please don't delete the following line unless the bug has been found. */
+  asn1cCalloc(measresulteutra_list->cgi_Info, measresult_cgi2);
   struct LTE_MeasResultEUTRA__measResult* measResult= &measresulteutra_list->measResult;
   asn1cCallocOne(measResult->rsrpResult, rsrp_tar);
   asn1cCallocOne(measResult->rsrqResult, rsrq_tar);
diff --git a/openair2/RRC/NR/MESSAGES/asn1_msg.c b/openair2/RRC/NR/MESSAGES/asn1_msg.c
index 7c8ecad91f3c2d8f3bf0fa62ce90a65435925718..d04ed78270f0efd56ef135bd6b3cd2760128b4ff 100755
--- a/openair2/RRC/NR/MESSAGES/asn1_msg.c
+++ b/openair2/RRC/NR/MESSAGES/asn1_msg.c
@@ -1451,6 +1451,30 @@ void fill_mastercellGroupConfig(NR_CellGroupConfig_t *cellGroupConfig, NR_CellGr
   ASN_SEQUENCE_ADD(&ue_context_mastercellGroup->rlc_BearerToAddModList->list, rlc_BearerConfig_drb);
 }
 
+void update_cellGroupConfig(NR_CellGroupConfig_t *cellGroupConfig,
+                            rrc_gNB_carrier_data_t *carrier,
+                            NR_UE_NR_Capability_t *uecap) {
+
+  NR_SpCellConfig_t *SpCellConfig = cellGroupConfig->spCellConfig;
+  if (SpCellConfig == NULL) return;
+
+  NR_ServingCellConfigCommon_t *scc = carrier->servingcellconfigcommon;
+
+  NR_BWP_DownlinkDedicated_t *bwp_Dedicated = SpCellConfig->spCellConfigDedicated->initialDownlinkBWP;
+  set_dl_mcs_table(scc->downlinkConfigCommon->initialDownlinkBWP->genericParameters.subcarrierSpacing,
+                   uecap, bwp_Dedicated, scc);
+
+  struct NR_ServingCellConfig__downlinkBWP_ToAddModList *DL_BWP_list = SpCellConfig->spCellConfigDedicated->downlinkBWP_ToAddModList;
+  if (DL_BWP_list) {
+    for (int i=0; i<DL_BWP_list->list.count; i++){
+      NR_BWP_Downlink_t *bwp = DL_BWP_list->list.array[i];
+      int scs = bwp->bwp_Common->genericParameters.subcarrierSpacing;
+      set_dl_mcs_table(scs, uecap, bwp->bwp_Dedicated, carrier->servingcellconfigcommon);
+    }
+  }
+}
+
+
 void fill_initial_cellGroupConfig(int uid,
                                   NR_CellGroupConfig_t *cellGroupConfig,
                                   NR_ServingCellConfigCommon_t *scc,
@@ -1870,6 +1894,8 @@ int16_t do_RRCReconfiguration(
     NR_SDAP_Config_t             *sdap_config,
     NR_MeasConfig_t              *meas_config,
     struct NR_RRCReconfiguration_v1530_IEs__dedicatedNAS_MessageList *dedicatedNAS_MessageList,
+    rrc_gNB_ue_context_t         *const ue_context_pP,
+    rrc_gNB_carrier_data_t       *carrier,
     NR_MAC_CellGroupConfig_t     *mac_CellGroupConfig,
     NR_CellGroupConfig_t         *cellGroupConfig)
 //------------------------------------------------------------------------------
@@ -1906,15 +1932,6 @@ int16_t do_RRCReconfiguration(
       ie->radioBearerConfig->srb3_ToRelease    = NULL;
       ie->radioBearerConfig->drb_ToReleaseList = DRB_releaseList;
     }
-    /******************** Secondary Cell Group ********************/
-    // rrc_gNB_carrier_data_t *carrier = &(gnb_rrc_inst->carrier);
-    // fill_default_secondaryCellGroup( carrier->servingcellconfigcommon,
-    //                                  ue_context_pP->ue_context.secondaryCellGroup,
-    //                                  1,
-    //                                  1,
-    //                                  carrier->pdsch_AntennaPorts,
-    //                                  carrier->initial_csi_index[ue_context_p->local_uid + 1],
-    //                                  ue_context_pP->local_uid);
 
     /******************** Meas Config ********************/
     // measConfig
@@ -1930,6 +1947,9 @@ int16_t do_RRCReconfiguration(
     }
 
     if(cellGroupConfig!=NULL){
+      update_cellGroupConfig(cellGroupConfig,
+                             carrier,
+                             ue_context_pP->ue_context.UE_Capability_nr);
       enc_rval = uper_encode_to_buffer(&asn_DEF_NR_CellGroupConfig,
           NULL,
           (void *)cellGroupConfig,
diff --git a/openair2/RRC/NR/MESSAGES/asn1_msg.h b/openair2/RRC/NR/MESSAGES/asn1_msg.h
index cb971acd6020a9bdf2ce23bdb33301cb5034a1cd..7fe08704c2bdb64d0f90ea71e48a851ed34553ec 100644
--- a/openair2/RRC/NR/MESSAGES/asn1_msg.h
+++ b/openair2/RRC/NR/MESSAGES/asn1_msg.h
@@ -110,6 +110,10 @@ void fill_initial_cellGroupConfig(int uid,
 				  NR_ServingCellConfigCommon_t *scc,
                                   rrc_gNB_carrier_data_t *carrier);
 
+void update_cellGroupConfig(NR_CellGroupConfig_t *cellGroupConfig,
+                            rrc_gNB_carrier_data_t *carrier,
+                            NR_UE_NR_Capability_t *uecap);
+
 void fill_mastercellGroupConfig(NR_CellGroupConfig_t *cellGroupConfig, NR_CellGroupConfig_t *ue_context_mastercellGroup);
 
 uint8_t do_RRCSetup(rrc_gNB_ue_context_t         *const ue_context_pP,
@@ -145,6 +149,8 @@ int16_t do_RRCReconfiguration(
     NR_SDAP_Config_t             *sdap_config,
     NR_MeasConfig_t              *meas_config,
     struct NR_RRCReconfiguration_v1530_IEs__dedicatedNAS_MessageList *dedicatedNAS_MessageList,
+    rrc_gNB_ue_context_t         *const ue_context_pP,
+    rrc_gNB_carrier_data_t       *carrier,
     NR_MAC_CellGroupConfig_t     *mac_CellGroupConfig,
     NR_CellGroupConfig_t         *cellGroupConfig);
 
diff --git a/openair2/RRC/NR/nr_rrc_config.c b/openair2/RRC/NR/nr_rrc_config.c
index 6b7f9a21b93cfc13f1f95d8c07c070014928b524..f8f05f2fe59abd98efc07f35637685d81910dd7c 100644
--- a/openair2/RRC/NR/nr_rrc_config.c
+++ b/openair2/RRC/NR/nr_rrc_config.c
@@ -31,17 +31,64 @@
 #include "nr_rrc_config.h"
 #include "common/utils/nr/nr_common.h"
 
+void prepare_sim_uecap(NR_UE_NR_Capability_t *cap,
+                       NR_ServingCellConfigCommon_t *scc,
+                       int numerology,
+                       int rbsize,
+                       int mcs_table) {
+
+  int band = *scc->downlinkConfigCommon->frequencyInfoDL->frequencyBandList.list.array[0];
+  NR_BandNR_t *nr_bandnr = CALLOC(1,sizeof(NR_BandNR_t));
+  nr_bandnr->bandNR = band;
+  ASN_SEQUENCE_ADD(&cap->rf_Parameters.supportedBandListNR.list,
+                   nr_bandnr);
+  if (mcs_table == 1) {
+    int bw = get_supported_band_index(numerology, band, rbsize);
+    if (band>256) {
+      NR_BandNR_t *bandNRinfo = cap->rf_Parameters.supportedBandListNR.list.array[0];
+      bandNRinfo->pdsch_256QAM_FR2 = CALLOC(1,sizeof(*bandNRinfo->pdsch_256QAM_FR2));
+      *bandNRinfo->pdsch_256QAM_FR2 = NR_BandNR__pdsch_256QAM_FR2_supported;
+    }
+    else{
+      cap->phy_Parameters.phy_ParametersFR1 = CALLOC(1,sizeof(*cap->phy_Parameters.phy_ParametersFR1));
+      NR_Phy_ParametersFR1_t *phy_fr1 = cap->phy_Parameters.phy_ParametersFR1;
+      phy_fr1->pdsch_256QAM_FR1 = CALLOC(1,sizeof(*phy_fr1->pdsch_256QAM_FR1));
+      *phy_fr1->pdsch_256QAM_FR1 = NR_Phy_ParametersFR1__pdsch_256QAM_FR1_supported;
+    }
+    cap->featureSets = CALLOC(1,sizeof(*cap->featureSets));
+    NR_FeatureSets_t *fs=cap->featureSets;
+    fs->featureSetsDownlinkPerCC = CALLOC(1,sizeof(*fs->featureSetsDownlinkPerCC));
+    NR_FeatureSetDownlinkPerCC_t *fs_cc = CALLOC(1,sizeof(NR_FeatureSetDownlinkPerCC_t));
+    fs_cc->supportedSubcarrierSpacingDL = numerology;
+    if(band>256) {
+      fs_cc->supportedBandwidthDL.present = NR_SupportedBandwidth_PR_fr2;
+      fs_cc->supportedBandwidthDL.choice.fr2 = bw;
+    }
+    else{
+      fs_cc->supportedBandwidthDL.present = NR_SupportedBandwidth_PR_fr1;
+      fs_cc->supportedBandwidthDL.choice.fr1 = bw;
+    }
+    fs_cc->supportedModulationOrderDL = CALLOC(1,sizeof(*fs_cc->supportedModulationOrderDL));
+    *fs_cc->supportedModulationOrderDL = NR_ModulationOrder_qam256;
+    ASN_SEQUENCE_ADD(&fs->featureSetsDownlinkPerCC->list,
+                     fs_cc);
+  }
+}
+
 void nr_rrc_config_dl_tda(NR_ServingCellConfigCommon_t *scc){
 
   lte_frame_type_t frame_type = get_frame_type(*scc->downlinkConfigCommon->frequencyInfoDL->frequencyBandList.list.array[0], *scc->ssbSubcarrierSpacing);
-
+  int curr_bwp = scc->downlinkConfigCommon->frequencyInfoDL->scs_SpecificCarrierList.list.array[0]->carrierBandwidth;
+  // coreset duration setting to be improved in the framework of RRC harmonization, potentially using a common function
+  int len_coreset = 1;
+  if (curr_bwp < 48)
+    len_coreset = 2;
   // setting default TDA for DL with
   struct NR_PDSCH_TimeDomainResourceAllocation *timedomainresourceallocation = CALLOC(1,sizeof(NR_PDSCH_TimeDomainResourceAllocation_t));
   timedomainresourceallocation->mappingType = NR_PDSCH_TimeDomainResourceAllocation__mappingType_typeA;
-  timedomainresourceallocation->startSymbolAndLength = get_SLIV(1,13); // basic slot configuration starting in symbol 1 til the end of the slot
+  timedomainresourceallocation->startSymbolAndLength = get_SLIV(len_coreset,14-len_coreset); // basic slot configuration starting in symbol 1 til the end of the slot
   ASN_SEQUENCE_ADD(&scc->downlinkConfigCommon->initialDownlinkBWP->pdsch_ConfigCommon->choice.setup->pdsch_TimeDomainAllocationList->list,
                    timedomainresourceallocation);
-
   if(frame_type==TDD) {
     // TDD
     if(scc->tdd_UL_DL_ConfigurationCommon) {
@@ -49,7 +96,7 @@ void nr_rrc_config_dl_tda(NR_ServingCellConfigCommon_t *scc){
       if(dl_symb > 1) {
         timedomainresourceallocation = CALLOC(1,sizeof(NR_PDSCH_TimeDomainResourceAllocation_t));
         timedomainresourceallocation->mappingType = NR_PDSCH_TimeDomainResourceAllocation__mappingType_typeA;
-        timedomainresourceallocation->startSymbolAndLength = get_SLIV(1,dl_symb-1); // mixed slot configuration starting in symbol 1 til the end of the dl allocation
+        timedomainresourceallocation->startSymbolAndLength = get_SLIV(len_coreset,dl_symb-len_coreset); // mixed slot configuration starting in symbol 1 til the end of the dl allocation
         ASN_SEQUENCE_ADD(&scc->downlinkConfigCommon->initialDownlinkBWP->pdsch_ConfigCommon->choice.setup->pdsch_TimeDomainAllocationList->list,
                          timedomainresourceallocation);
       }
@@ -102,6 +149,52 @@ void nr_rrc_config_ul_tda(NR_ServingCellConfigCommon_t *scc, int min_fb_delay){
       ASN_SEQUENCE_ADD(&scc->uplinkConfigCommon->initialUplinkBWP->pusch_ConfigCommon->choice.setup->pusch_TimeDomainAllocationList->list,pusch_timedomainresourceallocation_msg3);
     }
   }
+}
+
+
+void set_dl_mcs_table(int scs, NR_UE_NR_Capability_t *cap,
+                      NR_BWP_DownlinkDedicated_t *bwp_Dedicated,
+                      NR_ServingCellConfigCommon_t *scc) {
 
+  if (cap == NULL){
+    bwp_Dedicated->pdsch_Config->choice.setup->mcs_Table = NULL;
+    return;
+  }
+
+  int band = *scc->downlinkConfigCommon->frequencyInfoDL->frequencyBandList.list.array[0];
+  struct NR_FrequencyInfoDL__scs_SpecificCarrierList scs_list = scc->downlinkConfigCommon->frequencyInfoDL->scs_SpecificCarrierList;
+  int bw_rb = -1;
+  for(int i=0; i<scs_list.list.count; i++){
+    if(scs == scs_list.list.array[i]->subcarrierSpacing){
+      bw_rb = scs_list.list.array[i]->carrierBandwidth;
+      break;
+    }
+  }
+  AssertFatal(bw_rb>0,"Could not find scs-SpecificCarrierList element for scs %d",scs);
+  int bw = get_supported_band_index(scs, band, bw_rb);
+  AssertFatal(bw>0,"Supported band corresponding to %d RBs not found\n", bw_rb);
+
+  bool supported = false;
+  if (band>256) {
+    for (int i=0;i<cap->rf_Parameters.supportedBandListNR.list.count;i++) {
+      NR_BandNR_t *bandNRinfo = cap->rf_Parameters.supportedBandListNR.list.array[i];
+      if(bandNRinfo->bandNR == band && bandNRinfo->pdsch_256QAM_FR2) {
+        supported = true;
+        break;
+      }
+    }
+  }
+  else if (cap->phy_Parameters.phy_ParametersFR1 && cap->phy_Parameters.phy_ParametersFR1->pdsch_256QAM_FR1)
+    supported = true;
+
+  if (supported) {
+    if(bwp_Dedicated->pdsch_Config->choice.setup->mcs_Table == NULL)
+      bwp_Dedicated->pdsch_Config->choice.setup->mcs_Table = calloc(1, sizeof(*bwp_Dedicated->pdsch_Config->choice.setup->mcs_Table));
+    *bwp_Dedicated->pdsch_Config->choice.setup->mcs_Table = NR_PDSCH_Config__mcs_Table_qam256;
+  }
+  else
+    bwp_Dedicated->pdsch_Config->choice.setup->mcs_Table = NULL;
 }
 
+
+
diff --git a/openair2/RRC/NR/nr_rrc_config.h b/openair2/RRC/NR/nr_rrc_config.h
index 192fee754ed28ae40526b1283ea0c6013da56926..1a0d091e3594ef01f77dbc3185d01f5ec764c5d8 100644
--- a/openair2/RRC/NR/nr_rrc_config.h
+++ b/openair2/RRC/NR/nr_rrc_config.h
@@ -113,6 +113,14 @@ typedef struct physicalcellgroup_s{
 
 void nr_rrc_config_dl_tda(NR_ServingCellConfigCommon_t *scc);
 void nr_rrc_config_ul_tda(NR_ServingCellConfigCommon_t *scc, int min_fb_delay);
+void set_dl_mcs_table(int scs, NR_UE_NR_Capability_t *cap,
+                      NR_BWP_DownlinkDedicated_t *bwp_Dedicated,
+                      NR_ServingCellConfigCommon_t *scc);
+void prepare_sim_uecap(NR_UE_NR_Capability_t *cap,
+                       NR_ServingCellConfigCommon_t *scc,
+                       int numerology,
+                       int rbsize,
+                       int mcs_table);
 
 
 #endif
diff --git a/openair2/RRC/NR/nr_rrc_defs.h b/openair2/RRC/NR/nr_rrc_defs.h
index c2cf11e7d74c93162b07830c2cb1d1f0455ef23a..1b2c38c8356e90cc5a4daff789b2d86f9e2797ae 100644
--- a/openair2/RRC/NR/nr_rrc_defs.h
+++ b/openair2/RRC/NR/nr_rrc_defs.h
@@ -345,14 +345,18 @@ typedef struct gNB_RRC_UE_s {
   uint8_t                           setup_e_rabs;
   /* Number of e_rab to be setup in the list */
   uint8_t                            nb_of_e_rabs;
-  /* Total number of pdu session already setup in the list */
-  uint8_t                           setup_pdu_sessions;
-  /* Number of pdu session to be setup in the list */
-  uint8_t                            nb_of_pdusessions;
   /* Number of e_rab to be modified in the list */
   uint8_t                            nb_of_modify_e_rabs;
   uint8_t                            nb_of_failed_e_rabs;
   e_rab_param_t                      modify_e_rab[NB_RB_MAX];//[S1AP_MAX_E_RAB];
+  /* Total number of pdu session already setup in the list */
+  uint8_t                            setup_pdu_sessions;
+  /* Number of pdu session to be setup in the list */
+  uint8_t                            nb_of_pdusessions;
+  /* Number of e_rab to be modified in the list */
+  uint8_t                            nb_of_modify_pdusessions;
+  uint8_t                            nb_of_failed_pdusessions;
+  pdu_session_param_t                modify_pdusession[NR_NB_RB_MAX];
   /* list of e_rab to be setup by RRC layers */
   /* list of pdu session to be setup by RRC layers */
   e_rab_param_t                      e_rab[NB_RB_MAX];//[S1AP_MAX_E_RAB];
diff --git a/openair2/RRC/NR/nr_rrc_proto.h b/openair2/RRC/NR/nr_rrc_proto.h
index 30211b6a0b78e3440fc8484ac7405148a730619f..7dceb55a4bb98444e7534708665e3419dcaa880b 100644
--- a/openair2/RRC/NR/nr_rrc_proto.h
+++ b/openair2/RRC/NR/nr_rrc_proto.h
@@ -76,6 +76,7 @@ void rrc_remove_nsa_user(gNB_RRC_INST *rrc, int rnti);
 void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellconfigcommon,
                                      NR_ServingCellConfig_t *servingcellconfigdedicated,
                                      NR_CellGroupConfig_t *secondaryCellGroup,
+                                     NR_UE_NR_Capability_t *uecap,
                                      int scg_id,
                                      int servCellIndex,
                                      int dl_antenna_ports,
@@ -94,6 +95,7 @@ void fill_default_reconfig(NR_ServingCellConfigCommon_t *servingcellconfigcommon
                            NR_ServingCellConfig_t *servingcellconfigdedicated,
                            NR_RRCReconfiguration_IEs_t *reconfig,
                            NR_CellGroupConfig_t *secondaryCellGroup,
+                           NR_UE_NR_Capability_t *uecap,
                            int dl_antenna_ports,
                            int minRXTXTIMEpdsch,
                            int do_csirs,
@@ -208,3 +210,24 @@ void
 rrc_gNB_generate_dedicatedRRCReconfiguration(
     const protocol_ctxt_t     *const ctxt_pP,
     rrc_gNB_ue_context_t      *ue_context_pP);
+
+rlc_op_status_t nr_rrc_rlc_config_asn1_req (const protocol_ctxt_t   * const ctxt_pP,
+    const NR_SRB_ToAddModList_t   * const srb2add_listP,
+    const NR_DRB_ToAddModList_t   * const drb2add_listP,
+    const NR_DRB_ToReleaseList_t  * const drb2release_listP,
+    const LTE_PMCH_InfoList_r9_t * const pmch_InfoList_r9_pP,
+    struct NR_CellGroupConfig__rlc_BearerToAddModList *rlc_bearer2add_list);
+
+boolean_t nr_rrc_pdcp_config_asn1_req(
+  const protocol_ctxt_t *const  ctxt_pP,
+  NR_SRB_ToAddModList_t  *const srb2add_list,
+  NR_DRB_ToAddModList_t  *const drb2add_list,
+  NR_DRB_ToReleaseList_t *const drb2release_list,
+  const uint8_t                   security_modeP,
+  uint8_t                  *const kRRCenc,
+  uint8_t                  *const kRRCint,
+  uint8_t                  *const kUPenc,
+  uint8_t                  *const kUPint
+  ,LTE_PMCH_InfoList_r9_t  *pmch_InfoList_r9
+  ,rb_id_t                 *const defaultDRB,
+  struct NR_CellGroupConfig__rlc_BearerToAddModList *rlc_bearer2add_list);
diff --git a/openair2/RRC/NR/rrc_gNB.c b/openair2/RRC/NR/rrc_gNB.c
index f49a0e24bc8b6aff91e2d33af2eb637ff4ace055..d6c658f01d1f3fa61780b30a5a155ff0e7ddac57 100755
--- a/openair2/RRC/NR/rrc_gNB.c
+++ b/openair2/RRC/NR/rrc_gNB.c
@@ -98,6 +98,7 @@
 #include <openair2/RRC/NR/rrc_gNB_UE_context.h>
 #include <openair2/X2AP/x2ap_eNB.h>
 #include <openair3/ocp-gtpu/gtp_itf.h>
+#include <openair2/RRC/NR/nr_rrc_proto.h>
 
 #include "BIT_STRING.h"
 #include "assertions.h"
@@ -708,6 +709,8 @@ rrc_gNB_generate_defaultRRCReconfiguration(
     dedicatedNAS_MessageList = NULL;
   }
 
+  gNB_RRC_INST *rrc = RC.nrrrc[ctxt_pP->module_id];
+  gNB_RRC_UE_t *ue_p = &ue_context_pP->ue_context;
   memset(buffer, 0, sizeof(buffer));
   size = do_RRCReconfiguration(ctxt_pP, buffer, sizeof(buffer),
                                 xid,
@@ -718,8 +721,10 @@ rrc_gNB_generate_defaultRRCReconfiguration(
                                 NULL,
                                 NULL,
                                 dedicatedNAS_MessageList,
+                                ue_context_pP,
+                                &rrc->carrier,
                                 NULL,
-                                NULL);
+                                ue_p->masterCellGroup);
 
   free(ue_context_pP->ue_context.nas_pdu.buffer);
 
@@ -979,6 +984,8 @@ rrc_gNB_generate_dedicatedRRCReconfiguration(
                                 NULL,
                                 NULL,
                                 dedicatedNAS_MessageList,
+                                ue_context_pP,
+                                &rrc->carrier,
                                 NULL,
                                 cellGroupConfig);
   LOG_DUMPMSG(NR_RRC,DEBUG_RRC,(char *)buffer,size,"[MSG] RRC Reconfiguration\n");
@@ -1021,6 +1028,178 @@ rrc_gNB_generate_dedicatedRRCReconfiguration(
 #endif
 }
 
+//-----------------------------------------------------------------------------
+void
+rrc_gNB_modify_dedicatedRRCReconfiguration(
+  const protocol_ctxt_t     *const ctxt_pP,
+  rrc_gNB_ue_context_t      *ue_context_pP)
+//-----------------------------------------------------------------------------
+{
+  NR_DRB_ToAddMod_t             *DRB_config           = NULL;
+  NR_DRB_ToAddModList_t        **DRB_configList  = NULL;
+  NR_DRB_ToAddModList_t         *DRB_configList2 = NULL;
+  struct NR_RRCReconfiguration_v1530_IEs__dedicatedNAS_MessageList
+                                *dedicatedNAS_MessageList = NULL;
+  NR_DedicatedNAS_Message_t     *dedicatedNAS_Message = NULL;
+  uint8_t                        buffer[RRC_BUF_SIZE];
+  uint16_t                       size;
+  int                            qos_flow_index = 0;
+  int i, j;
+
+  uint8_t xid = rrc_gNB_get_next_transaction_identifier(ctxt_pP->module_id);
+  DRB_configList = &ue_context_pP->ue_context.DRB_configList;
+
+  DRB_configList2 = CALLOC(1, sizeof(NR_DRB_ToAddModList_t));
+  memset(DRB_configList2, 0, sizeof(NR_DRB_ToAddModList_t));
+
+  dedicatedNAS_MessageList = CALLOC(1, sizeof(struct NR_RRCReconfiguration_v1530_IEs__dedicatedNAS_MessageList));
+
+  for (i = 0; i < ue_context_pP->ue_context.nb_of_modify_pdusessions; i++) {
+    // bypass the new and already configured pdu sessions
+    if (ue_context_pP->ue_context.modify_pdusession[i].status >= PDU_SESSION_STATUS_DONE) {
+      ue_context_pP->ue_context.modify_pdusession[i].xid = xid;
+      continue;
+    }
+
+    if (ue_context_pP->ue_context.modify_pdusession[i].cause != NGAP_CAUSE_NOTHING) {
+      // set xid of failure pdu session
+      ue_context_pP->ue_context.modify_pdusession[i].xid = xid;
+      ue_context_pP->ue_context.modify_pdusession[i].status = PDU_SESSION_STATUS_FAILED;
+      continue;
+    }
+
+    // search exist DRB_config
+    for (j = 0; j < (*DRB_configList)->list.count; j++) {
+      if ((*DRB_configList)->list.array[j]->cnAssociation->choice.sdap_Config->pdu_Session == 
+        ue_context_pP->ue_context.modify_pdusession[i].param.pdusession_id) {
+        DRB_config = (*DRB_configList)->list.array[j];
+        break;
+      }
+    }
+
+    if (DRB_config == NULL) {
+      ue_context_pP->ue_context.modify_pdusession[i].xid         = xid;
+      ue_context_pP->ue_context.modify_pdusession[i].status      = PDU_SESSION_STATUS_FAILED;
+      ue_context_pP->ue_context.modify_pdusession[i].cause       = NGAP_CAUSE_RADIO_NETWORK;
+      ue_context_pP->ue_context.modify_pdusession[i].cause_value = NGAP_CauseRadioNetwork_unspecified;
+      ue_context_pP->ue_context.nb_of_failed_pdusessions++;
+      continue;
+    }
+
+    // Reference TS23501 Table 5.7.4-1: Standardized 5QI to QoS characteristics mapping
+    for (qos_flow_index = 0; qos_flow_index < ue_context_pP->ue_context.modify_pdusession[i].param.nb_qos; qos_flow_index++) {
+      switch (ue_context_pP->ue_context.modify_pdusession[i].param.qos[qos_flow_index].fiveQI) {
+        case 1: //100ms
+        case 2: //150ms
+        case 3: //50ms
+        case 4: //300ms
+        case 5: //100ms
+        case 6: //300ms
+        case 7: //100ms
+        case 8: //300ms
+        case 9: //300ms Video (Buffered Streaming)TCP-based (e.g., www, e-mail, chat, ftp, p2p file sharing, progressive video, etc.)
+          // TODO
+          break;
+
+        default:
+          LOG_E(NR_RRC,"not supported 5qi %lu\n", ue_context_pP->ue_context.modify_pdusession[i].param.qos[qos_flow_index].fiveQI);
+          ue_context_pP->ue_context.modify_pdusession[i].status = PDU_SESSION_STATUS_FAILED;
+          ue_context_pP->ue_context.modify_pdusession[i].xid = xid;
+          ue_context_pP->ue_context.modify_pdusession[i].cause       = NGAP_CAUSE_RADIO_NETWORK;
+          ue_context_pP->ue_context.modify_pdusession[i].cause_value = NGAP_CauseRadioNetwork_not_supported_5QI_value;
+          ue_context_pP->ue_context.nb_of_failed_pdusessions++;
+          continue;
+      }
+
+      LOG_I(NR_RRC, "PDU SESSION ID %ld, DRB ID %ld (index %d), QOS flow %d, 5QI %ld \n",
+          DRB_config->cnAssociation->choice.sdap_Config->pdu_Session,
+          DRB_config->drb_Identity, i,
+          qos_flow_index,
+          ue_context_pP->ue_context.modify_pdusession[i].param.qos[qos_flow_index].fiveQI
+         );
+    }
+
+    ASN_SEQUENCE_ADD(&DRB_configList2->list, DRB_config);
+
+    ue_context_pP->ue_context.modify_pdusession[i].status = PDU_SESSION_STATUS_DONE;
+    ue_context_pP->ue_context.modify_pdusession[i].xid = xid;
+
+    if (ue_context_pP->ue_context.modify_pdusession[i].param.nas_pdu.buffer != NULL) {
+      dedicatedNAS_Message = CALLOC(1, sizeof(NR_DedicatedNAS_Message_t));
+      memset(dedicatedNAS_Message, 0, sizeof(OCTET_STRING_t));
+      OCTET_STRING_fromBuf(dedicatedNAS_Message,
+                            (char *)ue_context_pP->ue_context.modify_pdusession[i].param.nas_pdu.buffer,
+                            ue_context_pP->ue_context.modify_pdusession[i].param.nas_pdu.length);
+      ASN_SEQUENCE_ADD(&dedicatedNAS_MessageList->list, dedicatedNAS_Message);
+
+      LOG_I(NR_RRC,"add NAS info with size %d (pdusession id %d)\n",ue_context_pP->ue_context.pduSession[i].param.nas_pdu.length,
+        ue_context_pP->ue_context.modify_pdusession[i].param.pdusession_id);
+    } else {
+      // TODO
+      LOG_E(NR_RRC,"no NAS info (pdusession id %d)\n", ue_context_pP->ue_context.modify_pdusession[i].param.pdusession_id);
+    }
+  }
+
+  /* If list is empty free the list and reset the address */
+  if (dedicatedNAS_MessageList->list.count == 0) {
+    free(dedicatedNAS_MessageList);
+    dedicatedNAS_MessageList = NULL;
+  }
+
+  memset(buffer, 0, sizeof(buffer));
+  size = do_RRCReconfiguration(ctxt_pP, buffer, sizeof(buffer),
+                                xid,
+                                NULL,
+                                DRB_configList2,
+                                NULL,
+                                NULL,
+                                NULL,
+                                NULL,
+                                dedicatedNAS_MessageList,
+                                NULL,
+                                NULL,
+                                NULL,
+                                NULL);
+  LOG_DUMPMSG(NR_RRC, DEBUG_RRC, (char *)buffer, size, "[MSG] RRC Reconfiguration\n");
+
+  /* Free all NAS PDUs */
+  for (i = 0; i < ue_context_pP->ue_context.nb_of_modify_pdusessions; i++) {
+    if (ue_context_pP->ue_context.modify_pdusession[i].param.nas_pdu.buffer != NULL) {
+      /* Free the NAS PDU buffer and invalidate it */
+      free(ue_context_pP->ue_context.modify_pdusession[i].param.nas_pdu.buffer);
+      ue_context_pP->ue_context.modify_pdusession[i].param.nas_pdu.buffer = NULL;
+    }
+  }
+
+  LOG_I(NR_RRC,
+        "[gNB %d] Frame %d, Logical Channel DL-DCCH, Generate RRCReconfiguration (bytes %d, UE RNTI %x)\n",
+        ctxt_pP->module_id, ctxt_pP->frame, size, ue_context_pP->ue_context.rnti);
+  LOG_D(NR_RRC,
+        "[FRAME %05d][RRC_gNB][MOD %u][][--- PDCP_DATA_REQ/%d Bytes (rrcReconfiguration to UE %x MUI %d) --->][PDCP][MOD %u][RB %u]\n",
+        ctxt_pP->frame, ctxt_pP->module_id, size, ue_context_pP->ue_context.rnti, rrc_gNB_mui, ctxt_pP->module_id, DCCH);
+
+#ifdef ITTI_SIM
+  MessageDef *message_p;
+  uint8_t *message_buffer;
+  message_buffer = itti_malloc (TASK_RRC_GNB_SIM, TASK_RRC_UE_SIM, size);
+  memcpy (message_buffer, buffer, size);
+  message_p = itti_alloc_new_message (TASK_RRC_GNB_SIM, 0, GNB_RRC_DCCH_DATA_IND);
+  GNB_RRC_DCCH_DATA_IND (message_p).rbid = DCCH;
+  GNB_RRC_DCCH_DATA_IND (message_p).sdu = message_buffer;
+  GNB_RRC_DCCH_DATA_IND (message_p).size	= size;
+  itti_send_msg_to_task (TASK_RRC_UE_SIM, ctxt_pP->instance, message_p);
+#else
+  nr_rrc_data_req(
+    ctxt_pP,
+    DCCH,
+    rrc_gNB_mui++,
+    SDU_CONFIRM_NO,
+    size,
+    buffer,
+    PDCP_TRANSMISSION_MODE_CONTROL);
+#endif
+}
+
 //-----------------------------------------------------------------------------
 void
 rrc_gNB_generate_dedicatedRRCReconfiguration_release(
@@ -1078,6 +1257,8 @@ rrc_gNB_generate_dedicatedRRCReconfiguration_release(
                                NULL,
                                dedicatedNAS_MessageList,
                                NULL,
+                               NULL,
+                               NULL,
                                NULL);
 
   ue_context_pP->ue_context.pdu_session_release_command_flag = 1;
@@ -1627,6 +1808,8 @@ rrc_gNB_process_RRCConnectionReestablishmentComplete(
                                 NULL, // MeasObj_list,
                                 NULL,
                                 NULL,
+                                NULL,
+                                NULL,
                                 NULL);
   LOG_DUMPMSG(NR_RRC,DEBUG_RRC,(char *)buffer,size,
               "[MSG] RRC Reconfiguration\n");
@@ -2188,10 +2371,23 @@ rrc_gNB_decode_dcch(
             //NGAP_PDUSESSION_RELEASE_RESPONSE
             rrc_gNB_send_NGAP_PDUSESSION_RELEASE_RESPONSE(ctxt_pP, ue_context_p, xid);
           } else if (ue_context_p->ue_context.established_pdu_sessions_flag != 1) {
-            if (ue_context_p->ue_context.setup_pdu_sessions > 0) {
+            if (ue_context_p->ue_context.nb_of_pdusessions > 0) {
               rrc_gNB_send_NGAP_PDUSESSION_SETUP_RESP(ctxt_pP,
                 ue_context_p,
                 ul_dcch_msg->message.choice.c1->choice.rrcReconfigurationComplete->rrc_TransactionIdentifier);
+              ue_context_p->ue_context.nb_of_pdusessions = 0;
+            }
+          }
+          if (ue_context_p->ue_context.nb_of_modify_pdusessions > 0) {
+            rrc_gNB_send_NGAP_PDUSESSION_MODIFY_RESP(ctxt_pP,
+                                                     ue_context_p,
+                                                     ul_dcch_msg->message.choice.c1->choice.rrcReconfigurationComplete->rrc_TransactionIdentifier);
+            ue_context_p->ue_context.nb_of_modify_pdusessions = 0;
+            ue_context_p->ue_context.nb_of_failed_pdusessions = 0;
+            memset(ue_context_p->ue_context.modify_pdusession, 0, sizeof(ue_context_p->ue_context.modify_pdusession));
+
+            for(int i = 0; i < NR_NB_RB_MAX; i++) {
+              ue_context_p->ue_context.modify_pdusession[i].xid = -1;
             }
           }
         }
@@ -3156,51 +3352,6 @@ unsigned int get_ul_bw_mask(gNB_RRC_INST *rrc,NR_UE_NR_Capability_t *cap) {
   return(0);
 }
 
-int is_dl_256QAM_supported(gNB_RRC_INST *rrc,NR_UE_NR_Capability_t *cap) {
-  int common_band = *rrc->carrier.servingcellconfigcommon->downlinkConfigCommon->frequencyInfoDL->frequencyBandList.list.array[0];
-  int common_scs  = rrc->carrier.servingcellconfigcommon->downlinkConfigCommon->frequencyInfoDL->scs_SpecificCarrierList.list.array[0]->subcarrierSpacing;
-  if (common_band>256) {
-    for (int i=0;i<cap->rf_Parameters.supportedBandListNR.list.count;i++) {
-       NR_BandNR_t *bandNRinfo = cap->rf_Parameters.supportedBandListNR.list.array[i];
-       if (bandNRinfo->bandNR == common_band && !bandNRinfo->pdsch_256QAM_FR2) return (0);
-    }
-  }
-  else if (cap->phy_Parameters.phy_ParametersFR1 && !cap->phy_Parameters.phy_ParametersFR1->pdsch_256QAM_FR1) return(0);
-
-  // check featureSet
-  NR_FeatureSets_t *fs=cap->featureSets;
-  if (fs) {
-    // go through DL feature sets and look for one with current SCS
-    for (int i=0;i<fs->featureSetsDownlinkPerCC->list.count;i++) {
-       if (fs->featureSetsDownlinkPerCC->list.array[i]->supportedSubcarrierSpacingDL == common_scs &&
-           fs->featureSetsDownlinkPerCC->list.array[i]->supportedModulationOrderDL &&
-           *fs->featureSetsDownlinkPerCC->list.array[i]->supportedModulationOrderDL == NR_ModulationOrder_qam256) return(1);
-    }
-  }
-  return(0);
-}
-
-int is_ul_256QAM_supported(gNB_RRC_INST *rrc,NR_UE_NR_Capability_t *cap) {
-  int common_band = *rrc->carrier.servingcellconfigcommon->uplinkConfigCommon->frequencyInfoUL->frequencyBandList->list.array[0];
-  int common_scs  = rrc->carrier.servingcellconfigcommon->uplinkConfigCommon->frequencyInfoUL->scs_SpecificCarrierList.list.array[0]->subcarrierSpacing;
-  for (int i=0;i<cap->rf_Parameters.supportedBandListNR.list.count;i++) {
-       NR_BandNR_t *bandNRinfo = cap->rf_Parameters.supportedBandListNR.list.array[i];
-       if (bandNRinfo->bandNR == common_band && !bandNRinfo->pusch_256QAM) return (0);
-  }
-
-  // check featureSet
-  NR_FeatureSets_t *fs=cap->featureSets;
-  if (fs) {
-    // go through UL feature sets and look for one with current SCS
-    for (int i=0;i<fs->featureSetsUplinkPerCC->list.count;i++) {
-       if (fs->featureSetsUplinkPerCC->list.array[i]->supportedSubcarrierSpacingUL == common_scs &&
-           fs->featureSetsUplinkPerCC->list.array[i]->supportedModulationOrderUL &&
-           *fs->featureSetsUplinkPerCC->list.array[i]->supportedModulationOrderUL == NR_ModulationOrder_qam256) return(1);
-    }
-  }
-  return(0);
-}
-
 int get_ul_mimo_layersCB(gNB_RRC_INST *rrc,NR_UE_NR_Capability_t *cap) {
   int common_scs  = rrc->carrier.servingcellconfigcommon->uplinkConfigCommon->frequencyInfoUL->scs_SpecificCarrierList.list.array[0]->subcarrierSpacing;
 
@@ -3270,11 +3421,9 @@ void nr_rrc_subframe_process(protocol_ctxt_t *const ctxt_pP, const int CC_id) {
       }
 
       if (ue_context_p->ue_context.UE_Capability_nr) {
-        fprintf(fd,"NR RRC UE cap: BW DL %x. BW UL %x, 256 QAM DL %s, 256 QAM UL %s, DL MIMO Layers %d UL MIMO Layers (CB) %d UL MIMO Layers (nonCB) %d\n",
+        fprintf(fd,"NR RRC UE cap: BW DL %x. BW UL %x, DL MIMO Layers %d UL MIMO Layers (CB) %d UL MIMO Layers (nonCB) %d\n",
                 get_dl_bw_mask(RC.nrrrc[0],ue_context_p->ue_context.UE_Capability_nr),
                 get_ul_bw_mask(RC.nrrrc[0],ue_context_p->ue_context.UE_Capability_nr),
-                is_dl_256QAM_supported(RC.nrrrc[0],ue_context_p->ue_context.UE_Capability_nr) == 1 ? "yes" : "no",
-                is_ul_256QAM_supported(RC.nrrrc[0],ue_context_p->ue_context.UE_Capability_nr) == 1 ? "yes" : "no",
                 get_dl_mimo_layers(RC.nrrrc[0],ue_context_p->ue_context.UE_Capability_nr),
                 get_ul_mimo_layersCB(RC.nrrrc[0],ue_context_p->ue_context.UE_Capability_nr),
                 get_ul_mimo_layers(RC.nrrrc[0],ue_context_p->ue_context.UE_Capability_nr));
@@ -3469,6 +3618,10 @@ void *rrc_gnb_task(void *args_p) {
         rrc_gNB_process_NGAP_PDUSESSION_SETUP_REQ(msg_p, msg_name_p, instance);
         break;
 
+      case NGAP_PDUSESSION_MODIFY_REQ:
+        rrc_gNB_process_NGAP_PDUSESSION_MODIFY_REQ(msg_p, msg_name_p, instance);
+        break;
+
       case NGAP_PDUSESSION_RELEASE_COMMAND:
         rrc_gNB_process_NGAP_PDUSESSION_RELEASE_COMMAND(msg_p, msg_name_p, instance);
         break;
diff --git a/openair2/RRC/NR/rrc_gNB_NGAP.c b/openair2/RRC/NR/rrc_gNB_NGAP.c
index 08f5a01986e50995440a2a502b0c0d99c1c2fffe..4286ea0d62d1fc67c6c26717a79af498f5bb2b01 100644
--- a/openair2/RRC/NR/rrc_gNB_NGAP.c
+++ b/openair2/RRC/NR/rrc_gNB_NGAP.c
@@ -1058,6 +1058,264 @@ rrc_gNB_process_NGAP_PDUSESSION_SETUP_REQ(
   }
 }
 
+//------------------------------------------------------------------------------
+int
+rrc_gNB_process_NGAP_PDUSESSION_MODIFY_REQ(
+  MessageDef *msg_p,
+  const char *msg_name,
+  instance_t instance
+)
+//------------------------------------------------------------------------------
+{
+  uint16_t                         ue_initial_id;
+  uint32_t                         gNB_ue_ngap_id;
+  uint8_t                          nb_pdusessions_tomodify;
+  rrc_gNB_ue_context_t            *ue_context_p = NULL;
+  uint8_t                          i;
+  uint8_t                          qos_flow_index;
+  protocol_ctxt_t                  ctxt;
+
+  ue_initial_id  = NGAP_PDUSESSION_MODIFY_REQ(msg_p).ue_initial_id;
+  gNB_ue_ngap_id = NGAP_PDUSESSION_MODIFY_REQ(msg_p).gNB_ue_ngap_id;
+  nb_pdusessions_tomodify = NGAP_PDUSESSION_MODIFY_REQ(msg_p).nb_pdusessions_tomodify;
+
+  ue_context_p = rrc_gNB_get_ue_context_from_ngap_ids(instance, ue_initial_id, gNB_ue_ngap_id);
+  if (ue_context_p == NULL) {
+    LOG_W(NR_RRC, "[gNB %ld] In NGAP_PDUSESSION_MODIFY_REQ: unknown UE from NGAP ids (%d, %u)\n", instance, ue_initial_id, gNB_ue_ngap_id);
+    // TODO 
+    return (-1);
+  } else {
+    PROTOCOL_CTXT_SET_BY_INSTANCE(&ctxt, instance, GNB_FLAG_YES, ue_context_p->ue_context.rnti, 0, 0);
+    ctxt.eNB_index = 0;
+
+    ue_context_p->ue_context.gNB_ue_ngap_id = gNB_ue_ngap_id;
+    {
+      int j;
+      boolean_t is_treated[NGAP_MAX_PDUSESSION] = {FALSE};
+      uint8_t nb_of_failed_pdusessions = 0;
+
+      for (i = 0; i < nb_pdusessions_tomodify; i++) {
+        if (is_treated[i] == TRUE) {
+          continue;
+        }
+        
+        //Check if same PDU session ID to handle multiple pdu sessions
+        for (j = i+1; j < nb_pdusessions_tomodify; j++) {
+          if (is_treated[j] == FALSE &&
+              NGAP_PDUSESSION_MODIFY_REQ(msg_p).pdusession_modify_params[j].pdusession_id == 
+                NGAP_PDUSESSION_MODIFY_REQ(msg_p).pdusession_modify_params[i].pdusession_id) {
+            // handle multiple pdu session id
+            LOG_D(NR_RRC, "handle multiple pdu session id \n");
+            ue_context_p->ue_context.modify_pdusession[j].status              = PDU_SESSION_STATUS_NEW;
+            ue_context_p->ue_context.modify_pdusession[j].param.pdusession_id = 
+              NGAP_PDUSESSION_MODIFY_REQ(msg_p).pdusession_modify_params[j].pdusession_id;
+            ue_context_p->ue_context.modify_pdusession[j].cause               = NGAP_CAUSE_RADIO_NETWORK;
+            ue_context_p->ue_context.modify_pdusession[j].cause_value         = NGAP_CauseRadioNetwork_multiple_PDU_session_ID_instances;
+            nb_of_failed_pdusessions++;
+            is_treated[i] = TRUE;
+            is_treated[j] = TRUE;
+          }
+        }
+        // handle multiple pdu session id case
+        if (is_treated[i] == TRUE) {
+          LOG_D(NR_RRC, "handle multiple pdu session id \n");
+          ue_context_p->ue_context.modify_pdusession[i].status              = PDU_SESSION_STATUS_NEW;
+          ue_context_p->ue_context.modify_pdusession[i].param.pdusession_id = 
+            NGAP_PDUSESSION_MODIFY_REQ(msg_p).pdusession_modify_params[i].pdusession_id;
+          ue_context_p->ue_context.modify_pdusession[i].cause               = NGAP_CAUSE_RADIO_NETWORK;
+          ue_context_p->ue_context.modify_pdusession[i].cause_value         = NGAP_CauseRadioNetwork_multiple_PDU_session_ID_instances;
+          nb_of_failed_pdusessions++;
+          continue;
+        }
+
+        // Check pdu session ID is established
+        for (j = 0; j < NR_NB_RB_MAX -3; j++) {
+          if (ue_context_p->ue_context.pduSession[j].param.pdusession_id == 
+            NGAP_PDUSESSION_MODIFY_REQ(msg_p).pdusession_modify_params[i].pdusession_id) {
+            if (ue_context_p->ue_context.pduSession[j].status == PDU_SESSION_STATUS_TORELEASE ||
+                ue_context_p->ue_context.pduSession[j].status == PDU_SESSION_STATUS_DONE) {
+              break;
+            }
+            // Found established pdu session, prepare to send RRC message
+            ue_context_p->ue_context.modify_pdusession[i].status              = PDU_SESSION_STATUS_NEW;
+            ue_context_p->ue_context.modify_pdusession[i].param.pdusession_id = 
+            NGAP_PDUSESSION_MODIFY_REQ(msg_p).pdusession_modify_params[i].pdusession_id;
+            ue_context_p->ue_context.modify_pdusession[i].cause               = NGAP_CAUSE_NOTHING;
+            if (NGAP_PDUSESSION_MODIFY_REQ(msg_p).pdusession_modify_params[i].nas_pdu.buffer != NULL) {
+              ue_context_p->ue_context.modify_pdusession[i].param.nas_pdu.buffer = 
+                NGAP_PDUSESSION_MODIFY_REQ(msg_p).pdusession_modify_params[i].nas_pdu.buffer;
+              ue_context_p->ue_context.modify_pdusession[i].param.nas_pdu.length =
+                NGAP_PDUSESSION_MODIFY_REQ(msg_p).pdusession_modify_params[i].nas_pdu.length;
+            }
+            // Save new pdu session parameters, qos, upf addr, teid
+            for (qos_flow_index = 0; qos_flow_index < NGAP_PDUSESSION_MODIFY_REQ(msg_p).pdusession_modify_params[i].nb_qos; qos_flow_index++) {
+              ue_context_p->ue_context.modify_pdusession[i].param.qos[qos_flow_index] =
+                NGAP_PDUSESSION_MODIFY_REQ(msg_p).pdusession_modify_params[i].qos[qos_flow_index];
+            }
+            ue_context_p->ue_context.modify_pdusession[i].param.nb_qos = 
+            NGAP_PDUSESSION_MODIFY_REQ(msg_p).pdusession_modify_params[i].nb_qos;
+            
+            ue_context_p->ue_context.modify_pdusession[i].param.upf_addr = 
+              ue_context_p->ue_context.pduSession[j].param.upf_addr;
+            ue_context_p->ue_context.modify_pdusession[i].param.gtp_teid = 
+              ue_context_p->ue_context.pduSession[j].param.gtp_teid;
+            
+            is_treated[i] = TRUE;
+            break;
+          }
+        }
+
+        // handle Unknown pdu session ID
+        if (is_treated[i] == FALSE) {
+          LOG_D(NR_RRC, "handle Unknown pdu session ID \n");
+          ue_context_p->ue_context.modify_pdusession[i].status              = PDU_SESSION_STATUS_NEW;
+          ue_context_p->ue_context.modify_pdusession[i].param.pdusession_id = 
+            NGAP_PDUSESSION_MODIFY_REQ(msg_p).pdusession_modify_params[i].pdusession_id;
+          ue_context_p->ue_context.modify_pdusession[i].cause               = NGAP_CAUSE_RADIO_NETWORK;
+          ue_context_p->ue_context.modify_pdusession[i].cause_value         = NGAP_CauseRadioNetwork_unknown_PDU_session_ID;
+          nb_of_failed_pdusessions++;
+          is_treated[i] = TRUE;
+        }
+      }
+
+      ue_context_p->ue_context.nb_of_modify_pdusessions = nb_pdusessions_tomodify;
+      ue_context_p->ue_context.nb_of_failed_pdusessions = nb_of_failed_pdusessions;
+    }
+
+    if (ue_context_p->ue_context.nb_of_failed_pdusessions < ue_context_p->ue_context.nb_of_modify_pdusessions) {
+      LOG_D(NR_RRC, "generate RRCReconfiguration \n");
+      rrc_gNB_modify_dedicatedRRCReconfiguration(&ctxt, ue_context_p);
+    } else { // all pdu modification failed
+      LOG_I(NR_RRC, "pdu session modify failed, fill NGAP_PDUSESSION_MODIFY_RESP with the pdu session information that failed to modify \n");
+      uint8_t nb_of_pdu_sessions_failed = 0;
+      MessageDef *msg_fail_p = NULL;
+      msg_fail_p = itti_alloc_new_message (TASK_RRC_GNB, 0, NGAP_PDUSESSION_MODIFY_RESP);
+      if (msg_fail_p == NULL) {
+        LOG_E(NR_RRC, "itti_alloc_new_message failed, msg_fail_p is NULL \n");
+        return (-1);
+      }
+
+      NGAP_PDUSESSION_MODIFY_RESP(msg_fail_p).gNB_ue_ngap_id = gNB_ue_ngap_id;
+      NGAP_PDUSESSION_MODIFY_RESP(msg_fail_p).nb_of_pdusessions = 0;
+
+      for (nb_of_pdu_sessions_failed = 0; nb_of_pdu_sessions_failed < ue_context_p->ue_context.nb_of_failed_pdusessions; nb_of_pdu_sessions_failed++) {
+        NGAP_PDUSESSION_MODIFY_RESP(msg_fail_p).pdusessions_failed[nb_of_pdu_sessions_failed].pdusession_id = 
+          ue_context_p->ue_context.modify_pdusession[nb_of_pdu_sessions_failed].param.pdusession_id;
+        NGAP_PDUSESSION_MODIFY_RESP(msg_fail_p).pdusessions_failed[nb_of_pdu_sessions_failed].cause = 
+          ue_context_p->ue_context.modify_pdusession[nb_of_pdu_sessions_failed].cause;
+        NGAP_PDUSESSION_MODIFY_RESP(msg_fail_p).pdusessions_failed[nb_of_pdu_sessions_failed].cause_value = 
+          ue_context_p->ue_context.modify_pdusession[nb_of_pdu_sessions_failed].cause_value;
+      }
+
+      NGAP_PDUSESSION_MODIFY_RESP(msg_fail_p).nb_of_pdusessions_failed = 
+        ue_context_p->ue_context.nb_of_failed_pdusessions;
+      itti_send_msg_to_task(TASK_NGAP, instance, msg_fail_p);
+      ue_context_p->ue_context.nb_of_modify_pdusessions = 0;
+      ue_context_p->ue_context.nb_of_failed_pdusessions = 0;
+      memset(ue_context_p->ue_context.modify_pdusession, 0, sizeof(ue_context_p->ue_context.modify_pdusession));
+      return (0);
+    }
+  }
+  return 0;
+}
+
+//------------------------------------------------------------------------------
+int
+rrc_gNB_send_NGAP_PDUSESSION_MODIFY_RESP(
+  const protocol_ctxt_t    *const ctxt_pP,
+  rrc_gNB_ue_context_t     *const ue_context_pP,
+  uint8_t                   xid
+)
+//------------------------------------------------------------------------------
+{
+  MessageDef *msg_p         = NULL;
+  int i, j;
+  uint8_t qos_flow_index;
+  uint8_t pdu_sessions_failed = 0;
+  uint8_t pdu_sessions_done = 0;
+  
+  msg_p = itti_alloc_new_message (TASK_RRC_GNB, 0, NGAP_PDUSESSION_MODIFY_RESP);
+  if (msg_p == NULL) {
+    LOG_E(NR_RRC, "itti_alloc_new_message failed, msg_p is NULL \n");
+    return (-1);
+  }
+
+  LOG_I(NR_RRC, "send message NGAP_PDUSESSION_MODIFY_RESP \n");
+
+  NGAP_PDUSESSION_MODIFY_RESP(msg_p).gNB_ue_ngap_id = ue_context_pP->ue_context.gNB_ue_ngap_id;
+
+  for (i = 0; i < ue_context_pP->ue_context.nb_of_modify_pdusessions; i++) {
+    if (xid == ue_context_pP->ue_context.modify_pdusession[i].xid) {
+      if (ue_context_pP->ue_context.modify_pdusession[i].status == PDU_SESSION_STATUS_DONE) {
+        for (j = 0; j < ue_context_pP->ue_context.setup_pdu_sessions; j++) {
+          if (ue_context_pP->ue_context.modify_pdusession[i].param.pdusession_id == 
+            ue_context_pP->ue_context.pduSession[j].param.pdusession_id) {
+            LOG_I(NR_RRC, "update pdu session %d \n", ue_context_pP->ue_context.pduSession[j].param.pdusession_id);
+            // Update ue_context_pP->ue_context.pduSession
+            ue_context_pP->ue_context.pduSession[j].status = PDU_SESSION_STATUS_ESTABLISHED;
+            ue_context_pP->ue_context.pduSession[j].cause  = NGAP_CAUSE_NOTHING;
+            for (qos_flow_index = 0; qos_flow_index < ue_context_pP->ue_context.modify_pdusession[i].param.nb_qos; qos_flow_index++) {
+              ue_context_pP->ue_context.pduSession[j].param.qos[qos_flow_index] = 
+                ue_context_pP->ue_context.modify_pdusession[i].param.qos[qos_flow_index];
+            }
+            break;
+          }
+        }
+
+        if (j < ue_context_pP->ue_context.setup_pdu_sessions) {
+          NGAP_PDUSESSION_MODIFY_RESP(msg_p).pdusessions[pdu_sessions_done].pdusession_id = 
+            ue_context_pP->ue_context.modify_pdusession[i].param.pdusession_id;
+          for (qos_flow_index = 0; qos_flow_index < ue_context_pP->ue_context.modify_pdusession[i].param.nb_qos; qos_flow_index++) {
+            NGAP_PDUSESSION_MODIFY_RESP(msg_p).pdusessions[pdu_sessions_done].qos[qos_flow_index].qfi = 
+              ue_context_pP->ue_context.modify_pdusession[i].param.qos[qos_flow_index].qfi;
+          }
+          NGAP_PDUSESSION_MODIFY_RESP(msg_p).pdusessions[pdu_sessions_done].nb_of_qos_flow = 
+            ue_context_pP->ue_context.modify_pdusession[i].param.nb_qos;
+          LOG_I(NR_RRC, "Modify Resp (msg index %d, pdu session index %d, status %d, xid %d): nb_of_modify_pdusessions %d,  pdusession_id %d \n ",
+                 pdu_sessions_done,  i, ue_context_pP->ue_context.modify_pdusession[i].status, xid,
+                 ue_context_pP->ue_context.nb_of_modify_pdusessions,
+                 NGAP_PDUSESSION_MODIFY_RESP(msg_p).pdusessions[pdu_sessions_done].pdusession_id);
+          pdu_sessions_done++;
+        } else {
+          NGAP_PDUSESSION_MODIFY_RESP(msg_p).pdusessions_failed[pdu_sessions_failed].pdusession_id = 
+            ue_context_pP->ue_context.modify_pdusession[i].param.pdusession_id;
+          NGAP_PDUSESSION_MODIFY_RESP(msg_p).pdusessions_failed[pdu_sessions_failed].cause = NGAP_CAUSE_RADIO_NETWORK;
+          NGAP_PDUSESSION_MODIFY_RESP(msg_p).pdusessions_failed[pdu_sessions_failed].cause_value = NGAP_CauseRadioNetwork_unknown_PDU_session_ID;
+          pdu_sessions_failed++;
+        }
+      } else if ((ue_context_pP->ue_context.modify_pdusession[i].status == PDU_SESSION_STATUS_NEW) ||
+                 (ue_context_pP->ue_context.modify_pdusession[i].status == PDU_SESSION_STATUS_ESTABLISHED)) {
+        LOG_D (NR_RRC, "PDU SESSION is NEW or already ESTABLISHED\n");
+      } else if (ue_context_pP->ue_context.modify_pdusession[i].status == PDU_SESSION_STATUS_FAILED) {
+        NGAP_PDUSESSION_MODIFY_RESP(msg_p).pdusessions_failed[pdu_sessions_failed].pdusession_id = 
+          ue_context_pP->ue_context.modify_pdusession[i].param.pdusession_id;
+        NGAP_PDUSESSION_MODIFY_RESP(msg_p).pdusessions_failed[pdu_sessions_failed].cause = 
+          ue_context_pP->ue_context.modify_pdusession[i].cause;
+        NGAP_PDUSESSION_MODIFY_RESP(msg_p).pdusessions_failed[pdu_sessions_failed].cause_value = 
+          ue_context_pP->ue_context.modify_pdusession[i].cause_value;
+        pdu_sessions_failed++;
+      }
+    } else {
+      LOG_D(NR_RRC,"xid does not correspond (context pdu session index %d, status %d, xid %d/%d) \n ",
+            i, ue_context_pP->ue_context.modify_pdusession[i].status, xid, ue_context_pP->ue_context.modify_pdusession[i].xid);
+    }
+  }
+
+  NGAP_PDUSESSION_MODIFY_RESP(msg_p).nb_of_pdusessions = pdu_sessions_done;
+  NGAP_PDUSESSION_MODIFY_RESP(msg_p).nb_of_pdusessions_failed = pdu_sessions_failed;
+
+  if (pdu_sessions_done > 0 || pdu_sessions_failed > 0) {
+    LOG_D(NR_RRC,"NGAP_PDUSESSION_MODIFY_RESP: sending the message: nb_of_pdusessions %d, total pdu session %d, index %d\n",
+          ue_context_pP->ue_context.nb_of_modify_pdusessions, ue_context_pP->ue_context.setup_pdu_sessions, i);
+    itti_send_msg_to_task (TASK_NGAP, ctxt_pP->instance, msg_p);
+  } else {
+    itti_free (ITTI_MSG_ORIGIN_ID(msg_p), msg_p);
+  }
+
+  return 0;
+}
+
+//------------------------------------------------------------------------------
 void
 rrc_gNB_send_NGAP_UE_CONTEXT_RELEASE_REQ(
   const module_id_t gnb_mod_idP,
diff --git a/openair2/RRC/NR/rrc_gNB_NGAP.h b/openair2/RRC/NR/rrc_gNB_NGAP.h
index 8779d62ff6b37d9ff7a9464ea87eb1245a2a97a3..5833c8aac217de8476bc9aa38370d243955c402c 100644
--- a/openair2/RRC/NR/rrc_gNB_NGAP.h
+++ b/openair2/RRC/NR/rrc_gNB_NGAP.h
@@ -38,6 +38,7 @@
 #include "NR_RRCSetupComplete-IEs.h"
 #include "NR_RegisteredAMF.h"
 #include "NR_UL-DCCH-Message.h"
+#include "NGAP_CauseRadioNetwork.h"
 
 typedef struct rrc_ue_ngap_ids_s {
   /* Tree related data */
@@ -107,6 +108,27 @@ rrc_gNB_process_NGAP_PDUSESSION_SETUP_REQ(
     instance_t instance
 );
 
+int
+rrc_gNB_process_NGAP_PDUSESSION_MODIFY_REQ(
+  MessageDef *msg_p,
+  const char *msg_name,
+  instance_t instance
+);
+
+int
+rrc_gNB_send_NGAP_PDUSESSION_MODIFY_RESP(
+  const protocol_ctxt_t    *const ctxt_pP,
+  rrc_gNB_ue_context_t     *const ue_context_pP,
+  uint8_t                   xid
+);
+
+void
+rrc_gNB_modify_dedicatedRRCReconfiguration(
+  const protocol_ctxt_t     *const ctxt_pP,
+  rrc_gNB_ue_context_t      *ue_context_pP
+);
+
+
 void
 rrc_gNB_send_NGAP_UE_CONTEXT_RELEASE_REQ(
   const module_id_t gnb_mod_idP,
diff --git a/openair2/RRC/NR/rrc_gNB_nsa.c b/openair2/RRC/NR/rrc_gNB_nsa.c
index 939b35f3f28246bdf3f7d968c8737f072ecf1ce8..70dfebaaf7d60a5a1f7520babfee1ed492dc90bb 100644
--- a/openair2/RRC/NR/rrc_gNB_nsa.c
+++ b/openair2/RRC/NR/rrc_gNB_nsa.c
@@ -42,27 +42,7 @@
 #include <openair2/RRC/NR/rrc_gNB_UE_context.h>
 #include <openair3/ocp-gtpu/gtp_itf.h>
 #include "UTIL/OSA/osa_defs.h"
-
-extern boolean_t nr_rrc_pdcp_config_asn1_req(
-    const protocol_ctxt_t *const  ctxt_pP,
-    NR_SRB_ToAddModList_t  *const srb2add_list,
-    NR_DRB_ToAddModList_t  *const drb2add_list,
-    NR_DRB_ToReleaseList_t *const drb2release_list,
-    const uint8_t                   security_modeP,
-    uint8_t                  *const kRRCenc,
-    uint8_t                  *const kRRCint,
-    uint8_t                  *const kUPenc,
-    uint8_t                  *const kUPint
-    ,LTE_PMCH_InfoList_r9_t  *pmch_InfoList_r9
-    ,rb_id_t                 *const defaultDRB,
-    struct NR_CellGroupConfig__rlc_BearerToAddModList *rlc_bearer2add_list);
-
-extern rlc_op_status_t nr_rrc_rlc_config_asn1_req (const protocol_ctxt_t   * const ctxt_pP,
-    const NR_SRB_ToAddModList_t   * const srb2add_listP,
-    const NR_DRB_ToAddModList_t   * const drb2add_listP,
-    const NR_DRB_ToReleaseList_t  * const drb2release_listP,
-    const LTE_PMCH_InfoList_r9_t * const pmch_InfoList_r9_pP,
-    struct NR_CellGroupConfig__rlc_BearerToAddModList *rlc_bearer2add_list);
+#include <openair2/RRC/NR/nr_rrc_proto.h>
 
 void rrc_parse_ue_capabilities(gNB_RRC_INST *rrc, NR_UE_CapabilityRAT_ContainerList_t *UE_CapabilityRAT_ContainerList, x2ap_ENDC_sgnb_addition_req_t *m, NR_CG_ConfigInfo_IEs_t  *cg_config_info) {
   struct rrc_gNB_ue_context_s        *ue_context_p = NULL;
@@ -265,6 +245,7 @@ void rrc_add_nsa_user(gNB_RRC_INST *rrc,struct rrc_gNB_ue_context_s *ue_context_
                           ue_context_p->ue_context.spCellConfig->spCellConfigDedicated,
                           reconfig_ies,
                           ue_context_p->ue_context.secondaryCellGroup,
+                          ue_context_p->ue_context.UE_Capability_nr,
                           carrier->pdsch_AntennaPorts,
                           carrier->minRXTXTIME,
                           carrier->do_CSIRS,
@@ -275,6 +256,7 @@ void rrc_add_nsa_user(gNB_RRC_INST *rrc,struct rrc_gNB_ue_context_s *ue_context_
                           NULL,
                           reconfig_ies,
                           ue_context_p->ue_context.secondaryCellGroup,
+                          ue_context_p->ue_context.UE_Capability_nr,
                           carrier->pdsch_AntennaPorts,
                           carrier->minRXTXTIME,
                           carrier->do_CSIRS,
diff --git a/openair2/RRC/NR/rrc_gNB_reconfig.c b/openair2/RRC/NR/rrc_gNB_reconfig.c
index b4938404bd5b51853f3777907d33d51d85173d66..1de34804df719c3051b3e049d2df29c746b9c604 100644
--- a/openair2/RRC/NR/rrc_gNB_reconfig.c
+++ b/openair2/RRC/NR/rrc_gNB_reconfig.c
@@ -45,6 +45,7 @@
 #include "SIMULATION/TOOLS/sim.h"
 #include "executables/softmodem-common.h"
 #include "LAYER2/nr_rlc/nr_rlc_oai_api.h"
+#include "nr_rrc_config.h"
 
 #define false 0
 #define true 1
@@ -52,6 +53,7 @@
 void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellconfigcommon,
                                      NR_ServingCellConfig_t *servingcellconfigdedicated,
                                      NR_CellGroupConfig_t *secondaryCellGroup,
+                                     NR_UE_NR_Capability_t *uecap,
                                      int scg_id,
                                      int servCellIndex,
                                      int dl_antenna_ports,
@@ -63,6 +65,9 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco
   AssertFatal(servingcellconfigcommon!=NULL,"servingcellconfigcommon is null\n");
   AssertFatal(secondaryCellGroup!=NULL,"secondaryCellGroup is null\n");
 
+  if(uecap == NULL)
+    LOG_E(RRC,"No UE Capabilities available when programming default CellGroup in NSA\n");
+
   // This assert will never happen in the current implementation because NUMBER_OF_UE_MAX = 4.
   // However, if in the future NUMBER_OF_UE_MAX is increased, it will be necessary to improve the allocation of SRS resources,
   // where the startPosition = 2 or 3 and sl160 = 17, 17, 27 ... 157 only give us 30 different allocations.
@@ -336,12 +341,7 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco
  secondaryCellGroup->spCellConfig->spCellConfigDedicated->initialDownlinkBWP->pdsch_Config->choice.setup->rateMatchPatternGroup1=NULL;
  secondaryCellGroup->spCellConfig->spCellConfigDedicated->initialDownlinkBWP->pdsch_Config->choice.setup->rateMatchPatternGroup2=NULL;
  secondaryCellGroup->spCellConfig->spCellConfigDedicated->initialDownlinkBWP->pdsch_Config->choice.setup->rbg_Size=NR_PDSCH_Config__rbg_Size_config1;
- if (!get_softmodem_params()->use_256qam_table) {
-   secondaryCellGroup->spCellConfig->spCellConfigDedicated->initialDownlinkBWP->pdsch_Config->choice.setup->mcs_Table=NULL;
- } else {
-   secondaryCellGroup->spCellConfig->spCellConfigDedicated->initialDownlinkBWP->pdsch_Config->choice.setup->mcs_Table = calloc(1, sizeof(*secondaryCellGroup->spCellConfig->spCellConfigDedicated->initialDownlinkBWP->pdsch_Config->choice.setup->mcs_Table));
-   *secondaryCellGroup->spCellConfig->spCellConfigDedicated->initialDownlinkBWP->pdsch_Config->choice.setup->mcs_Table = NR_PDSCH_Config__mcs_Table_qam256;
- }
+ secondaryCellGroup->spCellConfig->spCellConfigDedicated->initialDownlinkBWP->pdsch_Config->choice.setup->mcs_Table=NULL;
  secondaryCellGroup->spCellConfig->spCellConfigDedicated->initialDownlinkBWP->pdsch_Config->choice.setup->maxNrofCodeWordsScheduledByDCI = calloc(1,sizeof(*secondaryCellGroup->spCellConfig->spCellConfigDedicated->initialDownlinkBWP->pdsch_Config->choice.setup->maxNrofCodeWordsScheduledByDCI));
  *secondaryCellGroup->spCellConfig->spCellConfigDedicated->initialDownlinkBWP->pdsch_Config->choice.setup->maxNrofCodeWordsScheduledByDCI = NR_PDSCH_Config__maxNrofCodeWordsScheduledByDCI_n1;
  secondaryCellGroup->spCellConfig->spCellConfigDedicated->initialDownlinkBWP->pdsch_Config->choice.setup->prb_BundlingType.present = NR_PDSCH_Config__prb_BundlingType_PR_staticBundling;
@@ -605,43 +605,7 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco
  bwp->bwp_Dedicated->pdsch_Config->choice.setup->rateMatchPatternGroup1=NULL;
  bwp->bwp_Dedicated->pdsch_Config->choice.setup->rateMatchPatternGroup2=NULL;
  bwp->bwp_Dedicated->pdsch_Config->choice.setup->rbg_Size=NR_PDSCH_Config__rbg_Size_config1;
- if (!get_softmodem_params()->use_256qam_table) {
-   bwp->bwp_Dedicated->pdsch_Config->choice.setup->mcs_Table=NULL;
- } else {
-   bwp->bwp_Dedicated->pdsch_Config->choice.setup->mcs_Table = calloc(1, sizeof(*bwp->bwp_Dedicated->pdsch_Config->choice.setup->mcs_Table));
-   *bwp->bwp_Dedicated->pdsch_Config->choice.setup->mcs_Table = NR_PDSCH_Config__mcs_Table_qam256;
- }
- bwp->bwp_Dedicated->pdsch_Config->choice.setup->maxNrofCodeWordsScheduledByDCI = calloc(1,sizeof(*bwp->bwp_Dedicated->pdsch_Config->choice.setup->maxNrofCodeWordsScheduledByDCI));
- *bwp->bwp_Dedicated->pdsch_Config->choice.setup->maxNrofCodeWordsScheduledByDCI = NR_PDSCH_Config__maxNrofCodeWordsScheduledByDCI_n1;
- bwp->bwp_Dedicated->pdsch_Config->choice.setup->prb_BundlingType.present = NR_PDSCH_Config__prb_BundlingType_PR_staticBundling;
- bwp->bwp_Dedicated->pdsch_Config->choice.setup->prb_BundlingType.choice.staticBundling = calloc(1,sizeof(*bwp->bwp_Dedicated->pdsch_Config->choice.setup->prb_BundlingType.choice.staticBundling));
- bwp->bwp_Dedicated->pdsch_Config->choice.setup->prb_BundlingType.choice.staticBundling->bundleSize =
-   calloc(1,sizeof(*bwp->bwp_Dedicated->pdsch_Config->choice.setup->prb_BundlingType.choice.staticBundling->bundleSize));
- *bwp->bwp_Dedicated->pdsch_Config->choice.setup->prb_BundlingType.choice.staticBundling->bundleSize = NR_PDSCH_Config__prb_BundlingType__staticBundling__bundleSize_wideband;
- bwp->bwp_Dedicated->pdsch_Config->choice.setup->zp_CSI_RS_ResourceToAddModList=NULL;
- bwp->bwp_Dedicated->pdsch_Config->choice.setup->zp_CSI_RS_ResourceToReleaseList=NULL;
- bwp->bwp_Dedicated->pdsch_Config->choice.setup->aperiodic_ZP_CSI_RS_ResourceSetsToAddModList=NULL;
- bwp->bwp_Dedicated->pdsch_Config->choice.setup->aperiodic_ZP_CSI_RS_ResourceSetsToReleaseList=NULL;
- bwp->bwp_Dedicated->pdsch_Config->choice.setup->sp_ZP_CSI_RS_ResourceSetsToAddModList=NULL;
- bwp->bwp_Dedicated->pdsch_Config->choice.setup->sp_ZP_CSI_RS_ResourceSetsToReleaseList=NULL;
- bwp->bwp_Dedicated->pdsch_Config->choice.setup->p_ZP_CSI_RS_ResourceSet=NULL;
-
- bwp->bwp_Dedicated->pdsch_Config->choice.setup->tci_StatesToReleaseList=NULL;
- bwp->bwp_Dedicated->pdsch_Config->choice.setup->vrb_ToPRB_Interleaver=NULL;
- bwp->bwp_Dedicated->pdsch_Config->choice.setup->resourceAllocation=NR_PDSCH_Config__resourceAllocation_resourceAllocationType1;
- bwp->bwp_Dedicated->pdsch_Config->choice.setup->pdsch_TimeDomainAllocationList=NULL;
- bwp->bwp_Dedicated->pdsch_Config->choice.setup->pdsch_AggregationFactor=NULL;
- bwp->bwp_Dedicated->pdsch_Config->choice.setup->rateMatchPatternToAddModList=NULL;
- bwp->bwp_Dedicated->pdsch_Config->choice.setup->rateMatchPatternToReleaseList=NULL;
- bwp->bwp_Dedicated->pdsch_Config->choice.setup->rateMatchPatternGroup1=NULL;
- bwp->bwp_Dedicated->pdsch_Config->choice.setup->rateMatchPatternGroup2=NULL;
- bwp->bwp_Dedicated->pdsch_Config->choice.setup->rbg_Size=NR_PDSCH_Config__rbg_Size_config1;
- if (!get_softmodem_params()->use_256qam_table) {
-   bwp->bwp_Dedicated->pdsch_Config->choice.setup->mcs_Table=NULL;
- } else {
-   bwp->bwp_Dedicated->pdsch_Config->choice.setup->mcs_Table = calloc(1, sizeof(*bwp->bwp_Dedicated->pdsch_Config->choice.setup->mcs_Table));
-   *bwp->bwp_Dedicated->pdsch_Config->choice.setup->mcs_Table = NR_PDSCH_Config__mcs_Table_qam256;
- }
+ set_dl_mcs_table(bwp->bwp_Common->genericParameters.subcarrierSpacing, uecap, bwp->bwp_Dedicated, servingcellconfigcommon);
  bwp->bwp_Dedicated->pdsch_Config->choice.setup->maxNrofCodeWordsScheduledByDCI = calloc(1,sizeof(*bwp->bwp_Dedicated->pdsch_Config->choice.setup->maxNrofCodeWordsScheduledByDCI));
  *bwp->bwp_Dedicated->pdsch_Config->choice.setup->maxNrofCodeWordsScheduledByDCI = NR_PDSCH_Config__maxNrofCodeWordsScheduledByDCI_n1;
  bwp->bwp_Dedicated->pdsch_Config->choice.setup->prb_BundlingType.present = NR_PDSCH_Config__prb_BundlingType_PR_staticBundling;
@@ -744,8 +708,8 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco
  pusch_Config->pusch_TimeDomainAllocationList = NULL;
  pusch_Config->pusch_AggregationFactor=NULL;
  pusch_Config->mcs_Table=NULL;
- pusch_Config->mcs_TableTransformPrecoder=NULL;
  pusch_Config->transformPrecoder= NULL;
+ pusch_Config->mcs_TableTransformPrecoder=NULL;
  /* if msg3_transformprecoding is set in conf file - pusch config should not disable it */
  if (servingcellconfigcommon->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup->msg3_transformPrecoder == NULL) {
     pusch_Config->transformPrecoder=calloc(1,sizeof(*pusch_Config->transformPrecoder));
@@ -1335,17 +1299,17 @@ void config_csirs(NR_ServingCellConfigCommon_t *servingcellconfigcommon,
        resourceMapping.frequencyDomainAllocation.choice.row2.buf = calloc(2, sizeof(uint8_t));
        resourceMapping.frequencyDomainAllocation.choice.row2.size = 2;
        resourceMapping.frequencyDomainAllocation.choice.row2.bits_unused = 4;
-       resourceMapping.frequencyDomainAllocation.choice.row2.buf[0]=0;
-       resourceMapping.frequencyDomainAllocation.choice.row2.buf[1]=16;
+       resourceMapping.frequencyDomainAllocation.choice.row2.buf[0] = 0;
+       resourceMapping.frequencyDomainAllocation.choice.row2.buf[1] = 16;
        resourceMapping.nrofPorts = NR_CSI_RS_ResourceMapping__nrofPorts_p1;
        resourceMapping.cdm_Type = NR_CSI_RS_ResourceMapping__cdm_Type_noCDM;
        break;
      case 2:
        resourceMapping.frequencyDomainAllocation.present = NR_CSI_RS_ResourceMapping__frequencyDomainAllocation_PR_other;
-       resourceMapping.frequencyDomainAllocation.choice.row2.buf = calloc(2, sizeof(uint8_t));
-       resourceMapping.frequencyDomainAllocation.choice.row2.size = 1;
-       resourceMapping.frequencyDomainAllocation.choice.row2.bits_unused = 2;
-       resourceMapping.frequencyDomainAllocation.choice.row2.buf[0]=4;
+       resourceMapping.frequencyDomainAllocation.choice.other.buf = calloc(2, sizeof(uint8_t));
+       resourceMapping.frequencyDomainAllocation.choice.other.size = 1;
+       resourceMapping.frequencyDomainAllocation.choice.other.bits_unused = 2;
+       resourceMapping.frequencyDomainAllocation.choice.other.buf[0] = 4;
        resourceMapping.nrofPorts = NR_CSI_RS_ResourceMapping__nrofPorts_p2;
        resourceMapping.cdm_Type = NR_CSI_RS_ResourceMapping__cdm_Type_fd_CDM2;
        break;
@@ -1378,6 +1342,7 @@ void fill_default_reconfig(NR_ServingCellConfigCommon_t *servingcellconfigcommon
                            NR_ServingCellConfig_t *servingcellconfigdedicated,
                            NR_RRCReconfiguration_IEs_t *reconfig,
                            NR_CellGroupConfig_t *secondaryCellGroup,
+                           NR_UE_NR_Capability_t *uecap,
                            int dl_antenna_ports,
                            int minRXTXTIME,
                            int do_csirs,
@@ -1392,6 +1357,7 @@ void fill_default_reconfig(NR_ServingCellConfigCommon_t *servingcellconfigcommon
   fill_default_secondaryCellGroup(servingcellconfigcommon,
                                   servingcellconfigdedicated,
                                   secondaryCellGroup,
+                                  uecap,
                                   1,
                                   1,
                                   dl_antenna_ports,
diff --git a/openair2/RRC/NR_UE/rrc_UE.c b/openair2/RRC/NR_UE/rrc_UE.c
index 2fa058307492cb3782f4682e920a21e185a6e317..fa1690e450cb060f884363b2be539eacadd15790 100644
--- a/openair2/RRC/NR_UE/rrc_UE.c
+++ b/openair2/RRC/NR_UE/rrc_UE.c
@@ -72,6 +72,7 @@
 #include <executables/softmodem-common.h>
 
 #include "nr_nas_msg_sim.h"
+#include <openair2/RRC/NR/nr_rrc_proto.h>
 
 NR_UE_RRC_INST_t *NR_UE_rrc_inst;
 /* NAS Attach request with IMSI */
@@ -178,27 +179,6 @@ static int nr_rrc_set_sub_state( module_id_t ue_mod_idP, Rrc_Sub_State_NR_t subS
   return (0);
 }
 
-extern boolean_t nr_rrc_pdcp_config_asn1_req(
-    const protocol_ctxt_t *const  ctxt_pP,
-    NR_SRB_ToAddModList_t  *const srb2add_list,
-    NR_DRB_ToAddModList_t  *const drb2add_list,
-    NR_DRB_ToReleaseList_t *const drb2release_list,
-    const uint8_t                   security_modeP,
-    uint8_t                  *const kRRCenc,
-    uint8_t                  *const kRRCint,
-    uint8_t                  *const kUPenc,
-    uint8_t                  *const kUPint
-    ,LTE_PMCH_InfoList_r9_t  *pmch_InfoList_r9
-    ,rb_id_t                 *const defaultDRB,
-    struct NR_CellGroupConfig__rlc_BearerToAddModList *rlc_bearer2add_list);
-
-extern rlc_op_status_t nr_rrc_rlc_config_asn1_req (const protocol_ctxt_t   * const ctxt_pP,
-    const NR_SRB_ToAddModList_t   * const srb2add_listP,
-    const NR_DRB_ToAddModList_t   * const drb2add_listP,
-    const NR_DRB_ToReleaseList_t  * const drb2release_listP,
-    const LTE_PMCH_InfoList_r9_t * const pmch_InfoList_r9_pP,
-    struct NR_CellGroupConfig__rlc_BearerToAddModList *rlc_bearer2add_list);
-
 // from LTE-RRC DL-DCCH RRCConnectionReconfiguration nr-secondary-cell-group-config (encoded)
 int8_t nr_rrc_ue_decode_secondary_cellgroup_config(const module_id_t module_id,
                                                    const uint8_t *buffer,
@@ -2230,7 +2210,7 @@ nr_rrc_ue_establish_srb2(
  //      nr_rrc_ue_process_measConfig(ctxt_pP, gNB_index, ie->measConfig);
      }
 
-     if(ie->nonCriticalExtension->masterCellGroup!=NULL) {
+     if((ie->nonCriticalExtension) && (ie->nonCriticalExtension->masterCellGroup!=NULL)) {
        nr_rrc_ue_process_masterCellGroup(
            ctxt_pP,
            gNB_index,
@@ -2243,7 +2223,7 @@ nr_rrc_ue_establish_srb2(
      }
 
      /* Check if there is dedicated NAS information to forward to NAS */
-     if (ie->nonCriticalExtension->dedicatedNAS_MessageList != NULL) {
+     if ((ie->nonCriticalExtension) && (ie->nonCriticalExtension->dedicatedNAS_MessageList != NULL)) {
        int list_count;
        uint32_t pdu_length;
        uint8_t *pdu_buffer;
diff --git a/openair2/UTIL/FIFO/pad_list.c b/openair2/UTIL/FIFO/pad_list.c
deleted file mode 100644
index 124893a756c5c9533378f34af8e56a64235209d4..0000000000000000000000000000000000000000
--- a/openair2/UTIL/FIFO/pad_list.c
+++ /dev/null
@@ -1,607 +0,0 @@
-/*
- * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The OpenAirInterface Software Alliance licenses this file to You under
- * the OAI Public License, Version 1.1  (the "License"); you may not use this file
- * except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.openairinterface.org/?page_id=698
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *-------------------------------------------------------------------------------
- * For more information about the OpenAirInterface (OAI) Software Alliance:
- *      contact@openairinterface.org
- */
-
-/*! \file pad_list.c
-* \brief list management primimtives
-* \author Mohamed Said MOSLI BOUKSIAA, Lionel GAUTHIER, Navid Nikaein
-* \date 2012 - 2014
-* \version 0.5
-* @ingroup util
-*/
-//#define LIST_C
-//#define NULL 0
-
-#include <stdio.h>
-#include <stdlib.h>
-#include "pad_list.h"
-//#include <mpi.h>
-
-
-void job_list_init (Job_List_t *listP) {
-  listP->tail = NULL;
-  listP->head = NULL;
-  listP->nb_elements = 0;
-}
-
-void event_list_init (Event_List_t *listP) {
-  listP->tail = NULL;
-  listP->head = NULL;
-  listP->nb_elements = 0;
-}
-
-void pkt_list_init (Packet_OTG_List_t *listP) {
-  listP->tail = NULL;
-  listP->head = NULL;
-  listP->nb_elements = 0;
-}
-
-//-----------------------------------------------------------------------------
-
-void job_list_free (Job_List_t *listP) {
-  Job_elt_t *le;
-
-  while ((le = job_list_remove_head (listP))) {
-    free(le);
-  }
-}
-
-void event_list_free (Event_List_t *listP) {
-  Event_elt_t *le;
-
-  while ((le = event_list_remove_head (listP))) {
-    free(le);
-  }
-}
-
-void pkt_list_free (Packet_OTG_List_t *listP) {
-  Packet_otg_elt_t *le;
-
-  while ((le = pkt_list_remove_head (listP))) {
-    free(le);
-  }
-}
-
-//-----------------------------------------------------------------------------
-
-Job_elt_t *job_list_get_head (Job_List_t *listP) {
-  return listP->head;
-}
-
-Event_elt_t *event_list_get_head (Event_List_t *listP) {
-  return listP->head;
-}
-
-Packet_otg_elt_t *pkt_list_get_head (Packet_OTG_List_t *listP) {
-  return listP->head;
-}
-
-//-----------------------------------------------------------------------------
-
-/*
- *  remove an element from head of a list
- *  @param  pointer on targeted list
- *  @return pointer on removed Job_elt_t
- */
-Job_elt_t *job_list_remove_head (Job_List_t *listP) {
-  // access optimisation
-  Job_elt_t *head;
-  head = listP->head;
-
-  // almost one element
-  if (head != NULL) {
-    listP->head = head->next;
-    listP->nb_elements = listP->nb_elements - 1;
-
-    // if only one element, update tail
-    if (listP->head == NULL) {
-      listP->tail = NULL;
-    } else {
-      head->next = NULL;
-    }
-  } else {
-    //msg("[MEM_MGT][WARNING] remove_head_from_list(%s) no elements\n",listP->name);
-  }
-
-  return head;
-}
-
-Event_elt_t *event_list_remove_head (Event_List_t *listP) {
-  // access optimisation
-  Event_elt_t *head;
-  head = listP->head;
-
-  // almost one element
-  if (head != NULL) {
-    listP->head = head->next;
-    listP->nb_elements = listP->nb_elements - 1;
-
-    // if only one element, update tail
-    if (listP->head == NULL) {
-      listP->tail = NULL;
-    } else {
-      head->next = NULL;
-    }
-  } else {
-    //msg("[MEM_MGT][WARNING] remove_head_from_list(%s) no elements\n",listP->name);
-  }
-
-  return head;
-}
-
-Packet_otg_elt_t *pkt_list_remove_head (Packet_OTG_List_t *listP) {
-  // access optimisation
-  Packet_otg_elt_t *head;
-  head = listP->head;
-
-  // almost one element
-  if (head != NULL) {
-    listP->head = head->next;
-    listP->nb_elements = listP->nb_elements - 1;
-
-    // if only one element, update tail
-    if (listP->head == NULL) {
-      listP->tail = NULL;
-    } else {
-      head->next = NULL;
-    }
-  } else {
-    //msg("[MEM_MGT][WARNING] remove_head_from_list(%s) no elements\n",listP->name);
-  }
-
-  return head;
-}
-
-//-----------------------------------------------------------------------------
-
-Job_elt_t *job_list_remove_element (Job_elt_t *elementP, Job_List_t *listP) {
-  // access optimisation;
-  Job_elt_t *head;
-
-  if (elementP != NULL) {
-    // test head
-    head = listP->head;
-
-    if (listP->head == elementP) {
-      // almost one element
-      if (head != NULL) {
-        listP->head = head->next;
-        listP->nb_elements = listP->nb_elements - 1;
-
-        // if only one element, update tail
-        if (listP->head == NULL) {
-          listP->tail = NULL;
-        } else {
-          head->next = NULL;
-        }
-      }
-    } else {
-      while (head) {
-        if (head->next == elementP) {
-          head->next = elementP->next;
-          listP->nb_elements = listP->nb_elements - 1;
-
-          if (listP->tail == elementP) {
-            listP->tail = head;
-          }
-
-          return elementP;
-        } else {
-          head = head->next;
-        }
-      }
-    }
-  }
-
-  return elementP;
-}
-
-Event_elt_t *event_list_remove_element (Event_elt_t *elementP, Event_List_t *listP) {
-  // access optimisation;
-  Event_elt_t *head;
-
-  if (elementP != NULL) {
-    // test head
-    head = listP->head;
-
-    if (listP->head == elementP) {
-      // almost one element
-      if (head != NULL) {
-        listP->head = head->next;
-        listP->nb_elements = listP->nb_elements - 1;
-
-        // if only one element, update tail
-        if (listP->head == NULL) {
-          listP->tail = NULL;
-        } else {
-          head->next = NULL;
-        }
-      }
-    } else {
-      while (head) {
-        if (head->next == elementP) {
-          head->next = elementP->next;
-          listP->nb_elements = listP->nb_elements - 1;
-
-          if (listP->tail == elementP) {
-            listP->tail = head;
-          }
-
-          return elementP;
-        } else {
-          head = head->next;
-        }
-      }
-    }
-  }
-
-  return elementP;
-}
-
-Packet_otg_elt_t *pkt_list_remove_element (Packet_otg_elt_t *elementP, Packet_OTG_List_t *listP) {
-  // access optimisation;
-  Packet_otg_elt_t *head;
-
-  if (elementP != NULL) {
-    // test head
-    head = listP->head;
-
-    if (listP->head == elementP) {
-      // almost one element
-      if (head != NULL) {
-        listP->head = head->next;
-        listP->nb_elements = listP->nb_elements - 1;
-
-        // if only one element, update tail
-        if (listP->head == NULL) {
-          listP->tail = NULL;
-        } else {
-          head->next = NULL;
-        }
-      }
-    } else {
-      while (head) {
-        if (head->next == elementP) {
-          head->next = elementP->next;
-          listP->nb_elements = listP->nb_elements - 1;
-
-          if (listP->tail == elementP) {
-            listP->tail = head;
-          }
-
-          return elementP;
-        } else {
-          head = head->next;
-        }
-      }
-    }
-  }
-
-  return elementP;
-}
-
-//-----------------------------------------------------------------------------
-/*
- *  add an element to the beginning of a list
- *  @param  pointer on targeted list
- *  @return pointer on removed Job_elt_t
- */
-
-void job_list_add_head (Job_elt_t *elementP, Job_List_t *listP) {
-  // access optimisation;
-  Job_elt_t *head;
-
-  if (elementP != NULL) {
-    head = listP->head;
-    listP->nb_elements = listP->nb_elements + 1;
-
-    // almost one element
-    if (head == NULL) {
-      listP->head = elementP;
-      listP->tail = elementP;
-    } else {
-      elementP->next = head;
-      listP->head = elementP;
-    }
-  }
-}
-
-void event_list_add_head (Event_elt_t *elementP, Event_List_t *listP) {
-  // access optimisation;
-  Event_elt_t *head;
-
-  if (elementP != NULL) {
-    head = listP->head;
-    listP->nb_elements = listP->nb_elements + 1;
-
-    // almost one element
-    if (head == NULL) {
-      listP->head = elementP;
-      listP->tail = elementP;
-    } else {
-      elementP->next = head;
-      listP->head = elementP;
-    }
-  }
-}
-
-void pkt_list_add_head (Packet_otg_elt_t *elementP, Packet_OTG_List_t *listP) {
-  // access optimisation;
-  Packet_otg_elt_t *head;
-
-  if (elementP != NULL) {
-    head = listP->head;
-    listP->nb_elements = listP->nb_elements + 1;
-
-    // almost one element
-    if (head == NULL) {
-      listP->head = elementP;
-      listP->tail = elementP;
-    } else {
-      elementP->next = head;
-      listP->head = elementP;
-    }
-  }
-}
-
-void event_list_add_element (Event_elt_t *elementP, Event_elt_t *previous, Event_List_t *listP) {
-  // access optimisation;
-  Event_elt_t *next;
-
-  if (elementP != NULL && previous != NULL) {
-    elementP->next = NULL;
-    next = previous->next;
-    listP->nb_elements = listP->nb_elements + 1;
-
-    // almost one element
-    if (next == NULL) {
-      previous->next = elementP;
-      listP->tail = elementP;
-    } else {
-      elementP->next = previous->next;
-      previous->next = elementP;
-    }
-  }
-}
-
-
-//-----------------------------------------------------------------------------
-/*
- *  add an element to the end of a list
- *  @param  pointer on targeted list
- *  @return pointer on removed Job_elt_t
- */
-void job_list_add_tail_eurecom (Job_elt_t *elementP, Job_List_t *listP) {
-  Job_elt_t *tail;
-
-  if (elementP != NULL) {
-    // access optimisation
-    listP->nb_elements = listP->nb_elements + 1;
-    elementP->next = NULL;
-    tail = listP->tail;
-
-    // almost one element
-    if (tail == NULL) {
-      listP->head = elementP;
-    } else {
-      tail->next = elementP;
-    }
-
-    listP->tail = elementP;
-  } else {
-    //msg("[CNT_LIST][ERROR] add_cnt_tail() element NULL\n");
-  }
-}
-
-void event_list_add_tail_eurecom (Event_elt_t *elementP, Event_List_t *listP) {
-  Event_elt_t *tail;
-
-  if (elementP != NULL) {
-    // access optimisation
-    listP->nb_elements = listP->nb_elements + 1;
-    elementP->next = NULL;
-    tail = listP->tail;
-
-    // almost one element
-    if (tail == NULL) {
-      listP->head = elementP;
-    } else {
-      tail->next = elementP;
-    }
-
-    listP->tail = elementP;
-  } else {
-    //msg("[CNT_LIST][ERROR] add_cnt_tail() element NULL\n");
-  }
-}
-
-void pkt_list_add_tail_eurecom (Packet_otg_elt_t *elementP, Packet_OTG_List_t *listP) {
-  Packet_otg_elt_t *tail;
-
-  if (elementP != NULL) {
-    // access optimisation
-    listP->nb_elements = listP->nb_elements + 1;
-    elementP->next = NULL;
-    tail = listP->tail;
-
-    // almost one element
-    if (tail == NULL) {
-      listP->head = elementP;
-    } else {
-      tail->next = elementP;
-    }
-
-    listP->tail = elementP;
-  } else {
-    //msg("[CNT_LIST][ERROR] add_cnt_tail() element NULL\n");
-  }
-}
-
-//-----------------------------------------------------------------------------
-void job_list_add_list (Job_List_t *sublistP, Job_List_t *listP) {
-  if (sublistP) {
-    if (sublistP->head) {
-      // access optimisation
-      Job_elt_t *tail;
-      tail = listP->tail;
-
-      // almost one element
-      if (tail == NULL) {
-        listP->head = sublistP->head;
-      } else {
-        tail->next = sublistP->head;
-      }
-
-      listP->tail = sublistP->tail;
-      // clear sublist
-      sublistP->head = NULL;
-      sublistP->tail = NULL;
-      listP->nb_elements = listP->nb_elements + sublistP->nb_elements;
-      sublistP->nb_elements = 0;
-    }
-  }
-}
-
-void event_list_add_list (Event_List_t *sublistP, Event_List_t *listP) {
-  if (sublistP) {
-    if (sublistP->head) {
-      // access optimisation
-      Event_elt_t *tail;
-      tail = listP->tail;
-
-      // almost one element
-      if (tail == NULL) {
-        listP->head = sublistP->head;
-      } else {
-        tail->next = sublistP->head;
-      }
-
-      listP->tail = sublistP->tail;
-      // clear sublist
-      sublistP->head = NULL;
-      sublistP->tail = NULL;
-      listP->nb_elements = listP->nb_elements + sublistP->nb_elements;
-      sublistP->nb_elements = 0;
-    }
-  }
-}
-
-void pkt_list_add_list (Packet_OTG_List_t *sublistP, Packet_OTG_List_t *listP) {
-  if (sublistP) {
-    if (sublistP->head) {
-      // access optimisation
-      Packet_otg_elt_t *tail;
-      tail = listP->tail;
-
-      // almost one element
-      if (tail == NULL) {
-        listP->head = sublistP->head;
-      } else {
-        tail->next = sublistP->head;
-      }
-
-      listP->tail = sublistP->tail;
-      // clear sublist
-      sublistP->head = NULL;
-      sublistP->tail = NULL;
-      listP->nb_elements = listP->nb_elements + sublistP->nb_elements;
-      sublistP->nb_elements = 0;
-    }
-  }
-}
-
-//-----------------------------------------------------------------------------
-void job_list_display (Job_List_t *listP) {
-  //Correct the output once the content of struct Job is fixed
-  /*Job_elt_t *cursor;
-  unsigned short nb_elements = 0;
-
-  if (listP) {
-    cursor = listP->head;
-    if (cursor) {
-      while (cursor != NULL) {
-          if (cursor->job.type == eNB_DL)
-              printf ("DL eNB From (%d,%d)\n", (cursor->job).nid, (cursor->job).mid);
-          else if (cursor->job.type == UE_DL)
-              printf ("DL UE From (%d,%d)\n", (cursor->job).nid, (cursor->job).mid);
-          else if (cursor->job.type == UE_UL)
-              printf ("UL UE From (%d,%d)\n", (cursor->job).nid, (cursor->job).mid);
-          else if (cursor->job.type == eNB_UL)
-              printf ("UL eNB From (%d,%d)\n", (cursor->job).nid, (cursor->job).mid);
-        //msg ("From (%d,%d) To (%d,%d)\n", (cursor->job).node1, (cursor->job).master1, (cursor->job).node2, (cursor->job).master2);
-        cursor = cursor->next;
-        nb_elements++;
-      }
-      printf ("Found nb_elements %d nb_elements %d\n", nb_elements, listP->nb_elements);
-      //msg ("Found nb_elements %d nb_elements %d\n", nb_elements, listP->nb_elements);
-    }
-  } else {
-    printf ("[SDU_MNGT][WARNING] display_cnt_dbl_lk_list_up() : list is NULL\n");
-    //msg ("[SDU_MNGT][WARNING] display_cnt_dbl_lk_list_up() : list is NULL\n");
-  }*/
-}
-
-void event_list_display (Event_List_t *listP) {
-  Event_elt_t *cursor;
-  unsigned short nb_elements = 0;
-
-  if (listP) {
-    cursor = listP->head;
-
-    if (cursor) {
-      while (cursor != NULL) {
-        printf ("Ev (%d,%d)\n", (cursor->event).type, (cursor->event).frame);
-        //msg ("From (%d,%d) To (%d,%d)\n", (cursor->job).node1, (cursor->job).master1, (cursor->job).node2, (cursor->job).master2);
-        cursor = cursor->next;
-        nb_elements++;
-      }
-
-      printf ("Found nb_elements %d nb_elements %d\n", nb_elements, listP->nb_elements);
-      //msg ("Found nb_elements %d nb_elements %d\n", nb_elements, listP->nb_elements);
-    }
-  } else {
-    printf ("[SDU_MNGT][WARNING] display_cnt_dbl_lk_list_up() : list is NULL\n");
-    //msg ("[SDU_MNGT][WARNING] display_cnt_dbl_lk_list_up() : list is NULL\n");
-  }
-}
-
-void pkt_list_display (Packet_OTG_List_t *listP) {
-  Packet_otg_elt_t *cursor;
-  unsigned short nb_elements = 0;
-
-  if (listP) {
-    cursor = listP->head;
-
-    if (cursor) {
-      while (cursor != NULL) {
-        printf ("Pkt (DST %d, RB %ld)\n", (cursor->otg_pkt).dst_id, (cursor->otg_pkt).rb_id);
-        //msg ("From (%d,%d) To (%d,%d)\n", (cursor->job).node1, (cursor->job).master1, (cursor->job).node2, (cursor->job).master2);
-        cursor = cursor->next;
-        nb_elements++;
-      }
-
-      printf ("Found nb_elements %d nb_elements %d\n", nb_elements, listP->nb_elements);
-      //msg ("Found nb_elements %d nb_elements %d\n", nb_elements, listP->nb_elements);
-    }
-  } else {
-    printf ("[SDU_MNGT][WARNING] display_cnt_dbl_lk_list_up() : list is NULL\n");
-    //msg ("[SDU_MNGT][WARNING] display_cnt_dbl_lk_list_up() : list is NULL\n");
-  }
-}
diff --git a/openair2/UTIL/FIFO/pad_list.h b/openair2/UTIL/FIFO/pad_list.h
deleted file mode 100644
index 2a9ef9893f09512f3b867773cfbc54978c0dad0d..0000000000000000000000000000000000000000
--- a/openair2/UTIL/FIFO/pad_list.h
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The OpenAirInterface Software Alliance licenses this file to You under
- * the OAI Public License, Version 1.1  (the "License"); you may not use this file
- * except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.openairinterface.org/?page_id=698
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *-------------------------------------------------------------------------------
- * For more information about the OpenAirInterface (OAI) Software Alliance:
- *      contact@openairinterface.org
- */
-
-/*! \file pad_list.c
-* \brief list management primimtives
-* \author Mohamed Said MOSLI BOUKSIAA, Lionel GAUTHIER, Navid Nikaein
-* \date 2012 - 2014
-* \version 0.5
-* @ingroup util
-*/
-
-#ifndef __list_H__
-#define __list_H__
-
-#include "types.h"
-//-----------------------------------------------------------------------------
-
-typedef struct Job_List_s {
-  Job_elt_t *head;
-  Job_elt_t *tail;
-  int        nb_elements;
-} Job_List_t;
-
-typedef struct Event_List_s {
-  Event_elt_t *head;
-  Event_elt_t *tail;
-  int          nb_elements;
-} Event_List_t;
-
-typedef struct Packet_OTG_List_s {
-  Packet_otg_elt_t *head;
-  Packet_otg_elt_t *tail;
-  int               nb_elements;
-} Packet_OTG_List_t;
-
-//-----------------------------------------------------------------------------
-void         job_list_init (Job_List_t*);
-void         job_list_free (Job_List_t* listP);
-Job_elt_t* job_list_get_head (Job_List_t*);
-Job_elt_t* job_list_remove_head (Job_List_t* );
-Job_elt_t* job_list_remove_element (Job_elt_t*, Job_List_t*);
-void         job_list_add_head (Job_elt_t* , Job_List_t* );
-void         job_list_add_tail_eurecom (Job_elt_t* , Job_List_t* );
-void         job_list_add_list (Job_List_t* , Job_List_t* );
-void         job_list_display (Job_List_t* );
-
-void         event_list_init (Event_List_t*);
-void         event_list_free (Event_List_t* listP);
-Event_elt_t* event_list_get_head (Event_List_t*);
-Event_elt_t* event_list_remove_head (Event_List_t* );
-Event_elt_t* event_list_remove_element (Event_elt_t*, Event_List_t*);
-void         event_list_add_head (Event_elt_t* , Event_List_t* );
-void         event_list_add_element (Event_elt_t* , Event_elt_t* , Event_List_t* );
-void         event_list_add_tail_eurecom (Event_elt_t* , Event_List_t* );
-void         event_list_add_list (Event_List_t* , Event_List_t* );
-void         event_list_display (Event_List_t* );
-
-void         pkt_list_init (Packet_OTG_List_t*);
-void         pkt_list_free (Packet_OTG_List_t* listP);
-Packet_otg_elt_t* pkt_list_get_head (Packet_OTG_List_t*);
-Packet_otg_elt_t* pkt_list_remove_head (Packet_OTG_List_t* );
-Packet_otg_elt_t* pkt_list_remove_element (Packet_otg_elt_t*, Packet_OTG_List_t*);
-void         pkt_list_add_head (Packet_otg_elt_t* , Packet_OTG_List_t* );
-void         pkt_list_add_element (Packet_otg_elt_t* , Packet_otg_elt_t* , Packet_OTG_List_t* );
-void         pkt_list_add_tail_eurecom (Packet_otg_elt_t* , Packet_OTG_List_t* );
-void         pkt_list_add_list (Packet_OTG_List_t* , Packet_OTG_List_t* );
-void         pkt_list_display (Packet_OTG_List_t* );
-
-#endif
diff --git a/openair2/UTIL/FIFO/types.h b/openair2/UTIL/FIFO/types.h
deleted file mode 100644
index f949b2b72b97407ebee9e563ce216aa4d322aff5..0000000000000000000000000000000000000000
--- a/openair2/UTIL/FIFO/types.h
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The OpenAirInterface Software Alliance licenses this file to You under
- * the OAI Public License, Version 1.1  (the "License"); you may not use this file
- * except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.openairinterface.org/?page_id=698
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *-------------------------------------------------------------------------------
- * For more information about the OpenAirInterface (OAI) Software Alliance:
- *      contact@openairinterface.org
- */
-
-/*! \file pad_list.c
-* \brief list management primimtives
-* \author Mohamed Said MOSLI BOUKSIAA, Lionel GAUTHIER, Navid Nikaein
-* \date 2012 - 2014
-* \version 0.5
-* @ingroup util
-*/
-
-#ifndef __FIFO_TYPES_H__
-#define __FIFO_TYPES_H__
-#include "platform_types.h"
-
-/* Types regrouping both user-defined and regular events */
-typedef enum  {
-  MIN_ET=0,
-  OAI_ET=MIN_ET, // config events
-  SYS_ET,
-  TOPO_ET,
-  APP_ET,
-  EMU_ET,
-  DL_ET, // frame events
-  UL_ET,
-  S_ET,
-  PHY_ET, // protocol events
-  MAC_ET,
-  RLC_ET,
-  PDCP_ET,
-  RRC_ET,
-  MAX_ET
-} Event_Type_t;
-
-/* decomposition of node functions into jobs for a given event */
-typedef enum Job_type_e { JT_OTG, JT_PDCP, JT_PHY_MAC, JT_INIT_SYNC, JT_DL, JT_UL, RN_DL, RN_UL, JT_END} Job_Type_t;
-
-typedef enum Operation_Type_e { READ, WRITE, RESET} Operation_Type_t;
-
-typedef struct Job_s {
-  enum Job_type_e type;
-  int             exe_time; /* execution time at the worker*/
-  int             nid; /* node id*/
-  eNB_flag_t      eNB_flag;
-  frame_t         frame;
-  int             last_slot;
-  int             next_slot;
-  int             ctime;
-} Job_t;
-
-typedef struct Signal_buffers_s { // (s = transmit, r,r0 = receive)
-  double **s_re;
-  double **s_im;
-  double **r_re;
-  double **r_im;
-  double **r_re0;
-  double **r_im0;
-} Signal_buffers_t;
-
-/*!\brief  sybframe type : DL, UL, SF, */
-
-typedef struct Packet_otg_s {
-  unsigned int              sdu_buffer_size;
-  unsigned char            *sdu_buffer;
-  module_id_t               module_id;
-  rb_id_t                   rb_id;
-  module_id_t               dst_id;
-  boolean_t                 is_ue;
-  pdcp_transmission_mode_t  mode;
-} Packet_otg_t;
-
-typedef struct {
-  Event_Type_t type;
-  enum Operation_Type_e optype; //op
-  char             *key;
-  void             *value;
-  frame_t           frame;
-  int ue;
-  int lcid;
-} Event_t;
-
-/*typedef struct Global_Time {
-  uint32_t frame;
-  int32_t slot;
-  int32_t last_slot;
-  int32_t next_slot;
-  double time_s;
-  double time_ms;
-};*/
-
-
-
-typedef struct Packet_otg_elt_s {
-  struct Packet_otg_elt_s *next;
-  struct Packet_otg_elt_s *previous;
-  Packet_otg_t             otg_pkt;
-} Packet_otg_elt_t;
-
-typedef struct Job_element_s {
-  struct Job_element_s *next;
-  Job_t                 job;
-} Job_elt_t;
-
-typedef struct Event_element_s {
-  struct Event_element_s *next;
-  struct Event_element_s *previous;
-  Event_t               event;
-} Event_elt_t;
-#endif
diff --git a/openair2/X2AP/x2ap_eNB.c b/openair2/X2AP/x2ap_eNB.c
index 38e6149ccd2ef103f8425720c53816ca3a546cd4..2b1d19001a12775e13661e0bdb8c3652163a8680 100644
--- a/openair2/X2AP/x2ap_eNB.c
+++ b/openair2/X2AP/x2ap_eNB.c
@@ -621,7 +621,12 @@ void x2ap_eNB_handle_sgNB_release_request(instance_t instance,
   }
 
   target = x2ap_get_eNB(NULL, x2ap_release_req->assoc_id, 0);
-  DevAssert(target != NULL);
+  if (target == NULL) {
+    X2AP_ERROR("no X2AP target eNB on assoc_id %d, dropping sgNB release request\n", x2ap_release_req->assoc_id);
+    /* x2ap_gNB_handle_ENDC_sGNB_release_request_acknowledge() would handle the
+     * ack, but does not do anything */
+    return;
+  }
 
   /* id_source is not used by oai's gNB so it's not big deal. For
    * interoperability with other gNBs things may need to be refined.
diff --git a/openair3/NAS/COMMON/API/NETWORK/nas_message.c b/openair3/NAS/COMMON/API/NETWORK/nas_message.c
index 769eab52609c26425556e8aef61671f737a5e480..d1a9e97025bb59b84617f82e8801e1b6d6ee27cc 100644
--- a/openair3/NAS/COMMON/API/NETWORK/nas_message.c
+++ b/openair3/NAS/COMMON/API/NETWORK/nas_message.c
@@ -1096,7 +1096,8 @@ static int _nas_message_decrypt(
               "Unknown security header type %u", security_header_type);
     LOG_FUNC_RETURN (0);
   };
-
+  LOG_FUNC_RETURN (0);
+  
 }
 
 /****************************************************************************
diff --git a/openair3/NGAP/ngap_common.h b/openair3/NGAP/ngap_common.h
index 283dd2bffa58ae41aca733b9a955053f04bb0bf1..60f7beacd06eb9ef37d86ec705b75e627ea305b3 100644
--- a/openair3/NGAP/ngap_common.h
+++ b/openair3/NGAP/ngap_common.h
@@ -87,6 +87,9 @@
 #include "NGAP_PDUSessionResourceModifyItemModReq.h"
 #include "NGAP_PDUSessionResourceModifyRequestTransfer.h"
 #include "NGAP_QosFlowAddOrModifyRequestItem.h"
+#include "NGAP_PDUSessionResourceModifyResponseTransfer.h"
+#include "NGAP_QosFlowAddOrModifyResponseList.h"
+#include "NGAP_QosFlowAddOrModifyResponseItem.h"
 #include "NGAP_TAIListForPagingItem.h"
 #include "NGAP_GNB-ID.h"
 #include "NGAP_GlobalGNB-ID.h"
diff --git a/openair3/NGAP/ngap_gNB_handlers.c b/openair3/NGAP/ngap_gNB_handlers.c
index 4692d2cd32b1717c77a44d992c3f15ff733497e7..35b152f1298ee2e7ab35fe57a2640e68673740ec 100644
--- a/openair3/NGAP/ngap_gNB_handlers.c
+++ b/openair3/NGAP/ngap_gNB_handlers.c
@@ -1614,13 +1614,6 @@ int ngap_gNB_handle_pdusession_modify_request(uint32_t               assoc_id,
     return -1;
   }
 
-  /* PDUSession Resource modify request = UE-related procedure -> stream != 0 */
-  if (stream == 0) {
-    NGAP_ERROR("[SCTP %d] Received UE-related procedure on stream (%d)\n",
-               assoc_id, stream);
-    return -1;
-  }
-
   ue_desc_p->rx_stream = stream;
 
   if (ue_desc_p->amf_ue_ngap_id != amf_ue_ngap_id) {
@@ -1702,14 +1695,20 @@ int ngap_gNB_handle_pdusession_modify_request(uint32_t               assoc_id,
         switch(pdusessionTransfer_ies->id) {
           /* optional PDUSessionAggregateMaximumBitRate */
           case NGAP_ProtocolIE_ID_id_PDUSessionAggregateMaximumBitRate:
+            // TODO
+            NGAP_ERROR("Cant' handle NGAP_ProtocolIE_ID_id_PDUSessionAggregateMaximumBitRate\n");
             break;
         
           /* optional UL-NGU-UP-TNLModifyList */
           case NGAP_ProtocolIE_ID_id_UL_NGU_UP_TNLModifyList:
+            // TODO
+            NGAP_ERROR("Cant' handle NGAP_ProtocolIE_ID_id_UL_NGU_UP_TNLModifyList\n");
             break;
             
           /* optional NetworkInstance */
           case NGAP_ProtocolIE_ID_id_NetworkInstance:
+            // TODO
+            NGAP_ERROR("Cant' handle NGAP_ProtocolIE_ID_id_NetworkInstance\n");
             break;
 
           /* optional QosFlowAddOrModifyRequestList */
@@ -1729,6 +1728,12 @@ int ngap_gNB_handle_pdusession_modify_request(uint32_t               assoc_id,
                 /* Set the QOS informations */
                 NGAP_PDUSESSION_MODIFY_REQ(message_p).pdusession_modify_params[i].qos[qosIdx].qfi = (uint8_t)qosFlowItem_p->qosFlowIdentifier;
                 if(qosFlowItem_p->qosFlowLevelQosParameters) {
+                  if (qosFlowItem_p->qosFlowLevelQosParameters->qosCharacteristics.present == NGAP_QosCharacteristics_PR_nonDynamic5QI) {
+                    NGAP_PDUSESSION_MODIFY_REQ(message_p).pdusession_modify_params[i].qos[qosIdx].fiveQI =
+                      qosFlowItem_p->qosFlowLevelQosParameters->qosCharacteristics.choice.nonDynamic5QI->fiveQI;
+                  } else if (qosFlowItem_p->qosFlowLevelQosParameters->qosCharacteristics.present == NGAP_QosCharacteristics_PR_dynamic5QI) {
+                    // TODO
+                  }
                   NGAP_PDUSESSION_MODIFY_REQ(message_p).pdusession_modify_params[i].qos[qosIdx].allocation_retention_priority.priority_level =
                     qosFlowItem_p->qosFlowLevelQosParameters->allocationAndRetentionPriority.priorityLevelARP;
                   NGAP_PDUSESSION_MODIFY_REQ(message_p).pdusession_modify_params[i].qos[qosIdx].allocation_retention_priority.pre_emp_capability =
@@ -1742,14 +1747,20 @@ int ngap_gNB_handle_pdusession_modify_request(uint32_t               assoc_id,
 
           /* optional QosFlowToReleaseList */
           case NGAP_ProtocolIE_ID_id_QosFlowToReleaseList:
+            // TODO
+            NGAP_ERROR("Cant' handle NGAP_ProtocolIE_ID_id_QosFlowToReleaseList\n");
             break;
 
           /* optional AdditionalUL-NGU-UP-TNLInformation */
           case NGAP_ProtocolIE_ID_id_AdditionalUL_NGU_UP_TNLInformation:
+            // TODO
+            NGAP_ERROR("Cant' handle NGAP_ProtocolIE_ID_id_AdditionalUL_NGU_UP_TNLInformation\n");
             break;
 
           /* optional CommonNetworkInstance */
           case NGAP_ProtocolIE_ID_id_CommonNetworkInstance:
+            // TODO
+            NGAP_ERROR("Cant' handle NGAP_ProtocolIE_ID_id_CommonNetworkInstance\n");
             break;
             
           default:
diff --git a/openair3/NGAP/ngap_gNB_nas_procedures.c b/openair3/NGAP/ngap_gNB_nas_procedures.c
index a40e8328da401338ba88a1663cb07d89d38e5d02..3f4b7d1aa1c4265c30ebd784c56ca02856087f2f 100644
--- a/openair3/NGAP/ngap_gNB_nas_procedures.c
+++ b/openair3/NGAP/ngap_gNB_nas_procedures.c
@@ -1179,7 +1179,7 @@ int ngap_gNB_pdusession_modify_resp(instance_t instance,
   ie->value.choice.RAN_UE_NGAP_ID = pdusession_modify_resp_p->gNB_ue_ngap_id;
   ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
 
-  /* optional */
+  /* PDUSessionResourceModifyListModRes optional */
   if (pdusession_modify_resp_p->nb_of_pdusessions > 0) {
     ie = (NGAP_PDUSessionResourceModifyResponseIEs_t *)calloc(1, sizeof(NGAP_PDUSessionResourceModifyResponseIEs_t));
     ie->id = NGAP_ProtocolIE_ID_id_PDUSessionResourceModifyListModRes;
@@ -1187,13 +1187,32 @@ int ngap_gNB_pdusession_modify_resp(instance_t instance,
     ie->value.present = NGAP_PDUSessionResourceModifyResponseIEs__value_PR_PDUSessionResourceModifyListModRes;
 
     for (i = 0; i < pdusession_modify_resp_p->nb_of_pdusessions; i++) {
-        NGAP_PDUSessionResourceModifyItemModRes_t *item;
-    
-        item = (NGAP_PDUSessionResourceModifyItemModRes_t *)calloc(1, sizeof(NGAP_PDUSessionResourceModifyItemModRes_t));
-        item->pDUSessionID = pdusession_modify_resp_p->pdusessions[i].pdusession_id;
-        
-        NGAP_DEBUG("pdusession_modify_resp: modified pdusession ID %ld\n", item->pDUSessionID);
-        ASN_SEQUENCE_ADD(&ie->value.choice.PDUSessionResourceModifyListModRes.list, item);
+      NGAP_PDUSessionResourceModifyItemModRes_t *item;
+      NGAP_PDUSessionResourceModifyResponseTransfer_t *transfer_p = NULL;
+  
+      item = (NGAP_PDUSessionResourceModifyItemModRes_t *)calloc(1, sizeof(NGAP_PDUSessionResourceModifyItemModRes_t));
+      item->pDUSessionID = pdusession_modify_resp_p->pdusessions[i].pdusession_id;
+
+      transfer_p = (NGAP_PDUSessionResourceModifyResponseTransfer_t *)calloc(1, sizeof(NGAP_PDUSessionResourceModifyResponseTransfer_t));
+      transfer_p->qosFlowAddOrModifyResponseList = (NGAP_QosFlowAddOrModifyResponseList_t *)calloc(1, sizeof(NGAP_QosFlowAddOrModifyResponseList_t));
+
+      uint8_t qos_flow_index;
+      for (qos_flow_index = 0; qos_flow_index < pdusession_modify_resp_p->pdusessions[i].nb_of_qos_flow; qos_flow_index++) {
+        NGAP_QosFlowAddOrModifyResponseItem_t *qosFlowAddOrModifyResponseItem_p = calloc(1, sizeof(NGAP_QosFlowAddOrModifyResponseItem_t));
+        qosFlowAddOrModifyResponseItem_p->qosFlowIdentifier = 
+          pdusession_modify_resp_p->pdusessions[i].qos[qos_flow_index].qfi;
+        ASN_SEQUENCE_ADD(&transfer_p->qosFlowAddOrModifyResponseList->list, qosFlowAddOrModifyResponseItem_p);
+      }
+
+      memset(&res, 0, sizeof(res));
+      res = asn_encode_to_new_buffer(NULL, ATS_ALIGNED_CANONICAL_PER, &asn_DEF_NGAP_PDUSessionResourceModifyResponseTransfer, transfer_p);
+      item->pDUSessionResourceModifyResponseTransfer.buf = res.buffer;
+      item->pDUSessionResourceModifyResponseTransfer.size = res.result.encoded;
+
+      ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_NGAP_PDUSessionResourceModifyResponseTransfer, transfer_p);
+
+      NGAP_DEBUG("pdusession_modify_resp: modified pdusession ID %ld\n", item->pDUSessionID);
+      ASN_SEQUENCE_ADD(&ie->value.choice.PDUSessionResourceModifyListModRes.list, item);
     }
 
     ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
diff --git a/openair3/TEST/EPC_TEST/TEST_1MME_1ENB_1UE_ATTACH_GUTI/attach_complete.pdml b/openair3/TEST/EPC_TEST/TEST_1MME_1ENB_1UE_ATTACH_GUTI/attach_complete.pdml
deleted file mode 100644
index f7c27272aab199fceddadcd71d16f0cf09105d2f..0000000000000000000000000000000000000000
--- a/openair3/TEST/EPC_TEST/TEST_1MME_1ENB_1UE_ATTACH_GUTI/attach_complete.pdml
+++ /dev/null
@@ -1,4242 +0,0 @@
-<?xml version="1.0" ?>
-<?xml-stylesheet type="text/xsl" href="pdml2html.xsl"?>
-<!-- You can find pdml2html.xsl in /usr/share/wireshark or at http://anonsvn.wireshark.org/trunk/wireshark/pdml2html.xsl. -->
-<pdml capture_file="./attach_complete.pcapng" creator="wireshark/1.10.6" time="Mon Nov  2 09:22:48 2015" version="0">
-  <packet>
-    <proto name="frame" pos="0" showname="Frame 9: 82 bytes on wire (656 bits), 82 bytes captured (656 bits) on interface 0" size="82">
-      <field name="frame.interface_id" pos="0" show="0" showname="Interface id: 0" size="0"/>
-      <field name="frame.encap_type" pos="0" show="1" showname="Encapsulation type: Ethernet (1)" size="0"/>
-      <field name="frame.time" pos="0" show="Sep 25, 2015 16:34:14.289149000" showname="Arrival Time: Sep 25, 2015 16:34:14.289149000 CEST" size="0"/>
-      <field name="frame.offset_shift" pos="0" show="0.000000000" showname="Time shift for this packet: 0.000000000 seconds" size="0"/>
-      <field name="frame.time_epoch" pos="0" show="1443191654.289149000" showname="Epoch Time: 1443191654.289149000 seconds" size="0"/>
-      <field name="frame.time_delta" pos="0" show="1.707367000" showname="Time delta from previous captured frame: 1.707367000 seconds" size="0"/>
-      <field name="frame.time_delta_displayed" pos="0" show="1.707367000" showname="Time delta from previous displayed frame: 1.707367000 seconds" size="0"/>
-      <field name="frame.time_relative" pos="0" show="7.823518000" showname="Time since reference or first frame: 7.823518000 seconds" size="0"/>
-      <field name="frame.number" pos="0" show="9" showname="Frame Number: 9" size="0"/>
-      <field name="frame.len" pos="0" show="82" showname="Frame Length: 82 bytes (656 bits)" size="0"/>
-      <field name="frame.cap_len" pos="0" show="82" showname="Capture Length: 82 bytes (656 bits)" size="0"/>
-      <field name="frame.marked" pos="0" show="0" showname="Frame is marked: False" size="0"/>
-      <field name="frame.ignored" pos="0" show="0" showname="Frame is ignored: False" size="0"/>
-      <field name="frame.protocols" pos="0" show="eth:ip:sctp" showname="Protocols in frame: eth:ip:sctp" size="0"/>
-      <proto name="ip" pos="14" showname="Internet Protocol Version 4, Src: 192.168.12.213 (192.168.12.213), Dst: 192.168.12.17 (192.168.12.17)" size="20">
-        <field name="ip.version" pos="14" show="4" showname="Version: 4" size="1" value="45"/>
-        <field name="ip.hdr_len" pos="14" show="20" showname="Header length: 20 bytes" size="1" value="45"/>
-        <field name="ip.dsfield" pos="15" show="2" showname="Differentiated Services Field: 0x02 (DSCP 0x00: Default; ECN: 0x02: ECT(0) (ECN-Capable Transport))" size="1" value="02">
-          <field name="ip.dsfield.dscp" pos="15" show="0x00" showname="0000 00.. = Differentiated Services Codepoint: Default (0x00)" size="1" unmaskedvalue="02" value="0"/>
-          <field name="ip.dsfield.ecn" pos="15" show="0x02" showname=".... ..10 = Explicit Congestion Notification: ECT(0) (ECN-Capable Transport) (0x02)" size="1" unmaskedvalue="02" value="2"/>
-        </field>
-        <field name="ip.len" pos="16" show="68" showname="Total Length: 68" size="2" value="0044"/>
-        <field name="ip.id" pos="18" show="0x0000" showname="Identification: 0x0000 (0)" size="2" value="0000"/>
-        <field name="ip.flags" pos="20" show="0x02" showname="Flags: 0x02 (Don't Fragment)" size="1" value="40">
-          <field name="ip.flags.rb" pos="20" show="0" showname="0... .... = Reserved bit: Not set" size="1" value="40"/>
-          <field name="ip.flags.df" pos="20" show="1" showname=".1.. .... = Don't fragment: Set" size="1" value="40"/>
-          <field name="ip.flags.mf" pos="20" show="0" showname="..0. .... = More fragments: Not set" size="1" value="40"/>
-        </field>
-        <field name="ip.frag_offset" pos="20" show="0" showname="Fragment offset: 0" size="2" value="4000"/>
-        <field name="ip.ttl" pos="22" show="64" showname="Time to live: 64" size="1" value="40"/>
-        <field name="ip.proto" pos="23" show="132" showname="Protocol: SCTP (132)" size="1" value="84"/>
-        <field name="ip.checksum" pos="24" show="0x9ffd" showname="Header checksum: 0x9ffd [validation disabled]" size="2" value="9ffd">
-          <field name="ip.checksum_good" pos="24" show="0" showname="Good: False" size="2" value="9ffd"/>
-          <field name="ip.checksum_bad" pos="24" show="0" showname="Bad: False" size="2" value="9ffd"/>
-        </field>
-        <field name="ip.src" pos="26" show="192.168.12.213" showname="Source: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.addr" pos="26" show="192.168.12.213" showname="Source or Destination Address: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.src_host" pos="26" show="192.168.12.213" showname="Source Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.host" pos="26" show="192.168.12.213" showname="Source or Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-        <field name="ip.dst" pos="30" show="192.168.12.17" showname="Destination: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.addr" pos="30" show="192.168.12.17" showname="Source or Destination Address: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.dst_host" pos="30" show="192.168.12.17" showname="Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.host" pos="30" show="192.168.12.17" showname="Source or Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-        <field name="" pos="26" show="Source GeoIP: Unknown" size="4" value="c0a80cd5"/>
-        <field name="" pos="30" show="Destination GeoIP: Unknown" size="4" value="c0a80c11"/>
-        <proto name="sctp" pos="34" showname="Stream Control Transmission Protocol, Src Port: s1-control (36412), Dst Port: s1-control (36412)" size="48">
-          <field name="sctp.srcport" pos="34" show="36412" showname="Source port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.dstport" pos="36" show="36412" showname="Destination port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.verification_tag" pos="38" show="0x00000000" showname="Verification tag: 0x00000000" size="4" value="00000000"/>
-          <field hide="yes" name="sctp.port" pos="34" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-          <field hide="yes" name="sctp.port" pos="36" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.checksum" pos="42" show="0xbbfe6088" showname="Checksum: 0xbbfe6088 (not verified)" size="4" value="bbfe6088"/>
-          <field name="" pos="46" show="INIT chunk (Outbound streams: 2, inbound streams: 2)" size="36" value="0100002454f837ab0001a00000020002c4fbb8d7000c00060005000080000004c0000004">
-            <field name="sctp.chunk_type" pos="46" show="1" showname="Chunk type: INIT (1)" size="1" value="01">
-              <field name="sctp.chunk_bit_1" pos="46" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="01" value="0"/>
-              <field name="sctp.chunk_bit_2" pos="46" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="01" value="0"/>
-            </field>
-            <field name="sctp.chunk_flags" pos="47" show="0x00" showname="Chunk flags: 0x00" size="1" value="00"/>
-            <field name="sctp.chunk_length" pos="48" show="36" showname="Chunk length: 36" size="2" value="0024"/>
-            <field name="sctp.init_initiate_tag" pos="50" show="0x54f837ab" showname="Initiate tag: 0x54f837ab" size="4" value="54f837ab"/>
-            <field hide="yes" name="sctp.initiate_tag" pos="50" show="0x54f837ab" showname="Initiate tag: 0x54f837ab" size="4" value="54f837ab"/>
-            <field name="sctp.init_credit" pos="54" show="106496" showname="Advertised receiver window credit (a_rwnd): 106496" size="4" value="0001a000"/>
-            <field name="sctp.init_nr_out_streams" pos="58" show="2" showname="Number of outbound streams: 2" size="2" value="0002"/>
-            <field name="sctp.init_nr_in_streams" pos="60" show="2" showname="Number of inbound streams: 2" size="2" value="0002"/>
-            <field name="sctp.init_initial_tsn" pos="62" show="3304831191" showname="Initial TSN: 3304831191" size="4" value="c4fbb8d7"/>
-            <field name="" pos="66" show="Supported address types parameter (Supported types: IPv4)" size="8" value="000c000600050000">
-              <field name="sctp.parameter_type" pos="66" show="0x000c" showname="Parameter type: Supported address types (0x000c)" size="2" value="000c">
-                <field name="sctp.parameter_bit_1" pos="66" show="0" showname="0... .... .... .... = Bit: Stop processing of chunk" size="2" unmaskedvalue="000c" value="0"/>
-                <field name="sctp.parameter_bit_2" pos="66" show="0" showname=".0.. .... .... .... = Bit: Do not report" size="2" unmaskedvalue="000c" value="0"/>
-              </field>
-              <field name="sctp.parameter_length" pos="68" show="6" showname="Parameter length: 6" size="2" value="0006"/>
-              <field name="sctp.parameter_supported_addres_type" pos="70" show="5" showname="Supported address type: IPv4 address (5)" size="2" value="0005"/>
-              <field name="sctp.parameter_padding" pos="72" show="00:00" showname="Parameter padding: 0000" size="2" value="0000"/>
-            </field>
-            <field name="" pos="74" show="ECN parameter" size="4" value="80000004">
-              <field name="sctp.parameter_type" pos="74" show="0x8000" showname="Parameter type: ECN (0x8000)" size="2" value="8000">
-                <field name="sctp.parameter_bit_1" pos="74" show="1" showname="1... .... .... .... = Bit: Skip parameter and continue processing of the chunk" size="2" unmaskedvalue="8000" value="1"/>
-                <field name="sctp.parameter_bit_2" pos="74" show="0" showname=".0.. .... .... .... = Bit: Do not report" size="2" unmaskedvalue="8000" value="0"/>
-              </field>
-              <field name="sctp.parameter_length" pos="76" show="4" showname="Parameter length: 4" size="2" value="0004"/>
-            </field>
-            <field name="" pos="78" show="Forward TSN supported parameter" size="4" value="c0000004">
-              <field name="sctp.parameter_type" pos="78" show="0xc000" showname="Parameter type: Forward TSN supported (0xc000)" size="2" value="c000">
-                <field name="sctp.parameter_bit_1" pos="78" show="1" showname="1... .... .... .... = Bit: Skip parameter and continue processing of the chunk" size="2" unmaskedvalue="c000" value="1"/>
-                <field name="sctp.parameter_bit_2" pos="78" show="1" showname=".1.. .... .... .... = Bit: Do report" size="2" unmaskedvalue="c000" value="1"/>
-              </field>
-              <field name="sctp.parameter_length" pos="80" show="4" showname="Parameter length: 4" size="2" value="0004"/>
-            </field>
-          </field>
-        </proto>
-      </proto>
-    </proto>
-  </packet>
-  <packet>
-    <proto name="frame" pos="0" showname="Frame 10: 306 bytes on wire (2448 bits), 306 bytes captured (2448 bits) on interface 0" size="306">
-      <field name="frame.interface_id" pos="0" show="0" showname="Interface id: 0" size="0"/>
-      <field name="frame.encap_type" pos="0" show="1" showname="Encapsulation type: Ethernet (1)" size="0"/>
-      <field name="frame.time" pos="0" show="Sep 25, 2015 16:34:14.289229000" showname="Arrival Time: Sep 25, 2015 16:34:14.289229000 CEST" size="0"/>
-      <field name="frame.offset_shift" pos="0" show="0.000000000" showname="Time shift for this packet: 0.000000000 seconds" size="0"/>
-      <field name="frame.time_epoch" pos="0" show="1443191654.289229000" showname="Epoch Time: 1443191654.289229000 seconds" size="0"/>
-      <field name="frame.time_delta" pos="0" show="0.000080000" showname="Time delta from previous captured frame: 0.000080000 seconds" size="0"/>
-      <field name="frame.time_delta_displayed" pos="0" show="0.000080000" showname="Time delta from previous displayed frame: 0.000080000 seconds" size="0"/>
-      <field name="frame.time_relative" pos="0" show="7.823598000" showname="Time since reference or first frame: 7.823598000 seconds" size="0"/>
-      <field name="frame.number" pos="0" show="10" showname="Frame Number: 10" size="0"/>
-      <field name="frame.len" pos="0" show="306" showname="Frame Length: 306 bytes (2448 bits)" size="0"/>
-      <field name="frame.cap_len" pos="0" show="306" showname="Capture Length: 306 bytes (2448 bits)" size="0"/>
-      <field name="frame.marked" pos="0" show="0" showname="Frame is marked: False" size="0"/>
-      <field name="frame.ignored" pos="0" show="0" showname="Frame is ignored: False" size="0"/>
-      <field name="frame.protocols" pos="0" show="eth:ip:sctp" showname="Protocols in frame: eth:ip:sctp" size="0"/>
-      <proto name="ip" pos="14" showname="Internet Protocol Version 4, Src: 192.168.12.17 (192.168.12.17), Dst: 192.168.12.213 (192.168.12.213)" size="20">
-        <field name="ip.version" pos="14" show="4" showname="Version: 4" size="1" value="45"/>
-        <field name="ip.hdr_len" pos="14" show="20" showname="Header length: 20 bytes" size="1" value="45"/>
-        <field name="ip.dsfield" pos="15" show="2" showname="Differentiated Services Field: 0x02 (DSCP 0x00: Default; ECN: 0x02: ECT(0) (ECN-Capable Transport))" size="1" value="02">
-          <field name="ip.dsfield.dscp" pos="15" show="0x00" showname="0000 00.. = Differentiated Services Codepoint: Default (0x00)" size="1" unmaskedvalue="02" value="0"/>
-          <field name="ip.dsfield.ecn" pos="15" show="0x02" showname=".... ..10 = Explicit Congestion Notification: ECT(0) (ECN-Capable Transport) (0x02)" size="1" unmaskedvalue="02" value="2"/>
-        </field>
-        <field name="ip.len" pos="16" show="292" showname="Total Length: 292" size="2" value="0124"/>
-        <field name="ip.id" pos="18" show="0x0000" showname="Identification: 0x0000 (0)" size="2" value="0000"/>
-        <field name="ip.flags" pos="20" show="0x02" showname="Flags: 0x02 (Don't Fragment)" size="1" value="40">
-          <field name="ip.flags.rb" pos="20" show="0" showname="0... .... = Reserved bit: Not set" size="1" value="40"/>
-          <field name="ip.flags.df" pos="20" show="1" showname=".1.. .... = Don't fragment: Set" size="1" value="40"/>
-          <field name="ip.flags.mf" pos="20" show="0" showname="..0. .... = More fragments: Not set" size="1" value="40"/>
-        </field>
-        <field name="ip.frag_offset" pos="20" show="0" showname="Fragment offset: 0" size="2" value="4000"/>
-        <field name="ip.ttl" pos="22" show="64" showname="Time to live: 64" size="1" value="40"/>
-        <field name="ip.proto" pos="23" show="132" showname="Protocol: SCTP (132)" size="1" value="84"/>
-        <field name="ip.checksum" pos="24" show="0x9f1d" showname="Header checksum: 0x9f1d [validation disabled]" size="2" value="9f1d">
-          <field name="ip.checksum_good" pos="24" show="0" showname="Good: False" size="2" value="9f1d"/>
-          <field name="ip.checksum_bad" pos="24" show="0" showname="Bad: False" size="2" value="9f1d"/>
-        </field>
-        <field name="ip.src" pos="26" show="192.168.12.17" showname="Source: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.addr" pos="26" show="192.168.12.17" showname="Source or Destination Address: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.src_host" pos="26" show="192.168.12.17" showname="Source Host: 192.168.12.17" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.host" pos="26" show="192.168.12.17" showname="Source or Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-        <field name="ip.dst" pos="30" show="192.168.12.213" showname="Destination: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.addr" pos="30" show="192.168.12.213" showname="Source or Destination Address: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.dst_host" pos="30" show="192.168.12.213" showname="Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.host" pos="30" show="192.168.12.213" showname="Source or Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-        <field name="" pos="26" show="Source GeoIP: Unknown" size="4" value="c0a80c11"/>
-        <field name="" pos="30" show="Destination GeoIP: Unknown" size="4" value="c0a80cd5"/>
-        <proto name="sctp" pos="34" showname="Stream Control Transmission Protocol, Src Port: s1-control (36412), Dst Port: s1-control (36412)" size="272">
-          <field name="sctp.srcport" pos="34" show="36412" showname="Source port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.dstport" pos="36" show="36412" showname="Destination port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.verification_tag" pos="38" show="0x54f837ab" showname="Verification tag: 0x54f837ab" size="4" value="54f837ab"/>
-          <field hide="yes" name="sctp.port" pos="34" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-          <field hide="yes" name="sctp.port" pos="36" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.checksum" pos="42" show="0xcf674bda" showname="Checksum: 0xcf674bda (not verified)" size="4" value="cf674bda"/>
-          <field name="" pos="46" show="INIT_ACK chunk (Outbound streams: 2, inbound streams: 2)" size="260" value="020001044cd1eca00001a0000002000277b42707000700e8d2e400842319c2ee3bf2eb94dff99192604ab35900000000000000000000000000000000a0ecd14cab37f85400000000000000000d425e07780c0000020002000727b47702008e3cc0a80cd500000000000000000000000000000000000000003c8e01000000000080020024efa851c90c104714b66409dff40a9f2d30a6e0b1be975e2eb1ee7d28f5b61aa90000000000000000000000000000000000000000000000000000000000000000000000000100002454f837ab0001a00000020002c4fbb8d7000c00060005000080000004c00000040000000000000000000000000000000080000004c0000004">
-            <field name="sctp.chunk_type" pos="46" show="2" showname="Chunk type: INIT_ACK (2)" size="1" value="02">
-              <field name="sctp.chunk_bit_1" pos="46" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="02" value="0"/>
-              <field name="sctp.chunk_bit_2" pos="46" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="02" value="0"/>
-            </field>
-            <field name="sctp.chunk_flags" pos="47" show="0x00" showname="Chunk flags: 0x00" size="1" value="00"/>
-            <field name="sctp.chunk_length" pos="48" show="260" showname="Chunk length: 260" size="2" value="0104"/>
-            <field name="sctp.initack_initiate_tag" pos="50" show="0x4cd1eca0" showname="Initiate tag: 0x4cd1eca0" size="4" value="4cd1eca0"/>
-            <field hide="yes" name="sctp.initiate_tag" pos="50" show="0x4cd1eca0" showname="Initiate tag: 0x4cd1eca0" size="4" value="4cd1eca0"/>
-            <field name="sctp.initack_credit" pos="54" show="106496" showname="Advertised receiver window credit (a_rwnd): 106496" size="4" value="0001a000"/>
-            <field name="sctp.initack_nr_out_streams" pos="58" show="2" showname="Number of outbound streams: 2" size="2" value="0002"/>
-            <field name="sctp.initack_nr_in_streams" pos="60" show="2" showname="Number of inbound streams: 2" size="2" value="0002"/>
-            <field name="sctp.initack_initial_tsn" pos="62" show="2008295175" showname="Initial TSN: 2008295175" size="4" value="77b42707"/>
-            <field name="" pos="66" show="State cookie parameter (Cookie length: 228 bytes)" size="232" value="000700e8d2e400842319c2ee3bf2eb94dff99192604ab35900000000000000000000000000000000a0ecd14cab37f85400000000000000000d425e07780c0000020002000727b47702008e3cc0a80cd500000000000000000000000000000000000000003c8e01000000000080020024efa851c90c104714b66409dff40a9f2d30a6e0b1be975e2eb1ee7d28f5b61aa90000000000000000000000000000000000000000000000000000000000000000000000000100002454f837ab0001a00000020002c4fbb8d7000c00060005000080000004c000000400000000000000000000000000000000">
-              <field name="sctp.parameter_type" pos="66" show="0x0007" showname="Parameter type: State cookie (0x0007)" size="2" value="0007">
-                <field name="sctp.parameter_bit_1" pos="66" show="0" showname="0... .... .... .... = Bit: Stop processing of chunk" size="2" unmaskedvalue="0007" value="0"/>
-                <field name="sctp.parameter_bit_2" pos="66" show="0" showname=".0.. .... .... .... = Bit: Do not report" size="2" unmaskedvalue="0007" value="0"/>
-              </field>
-              <field name="sctp.parameter_length" pos="68" show="232" showname="Parameter length: 232" size="2" value="00e8"/>
-              <field name="sctp.parameter_state_cookie" pos="70" show="d2:e4:00:84:23:19:c2:ee:3b:f2:eb:94:df:f9:91:92:60:4a:b3:59:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:a0:ec:d1:4c:ab:37:f8:54:00:00:00:00:00:00:00:00:0d:42:5e:07:78:0c:00:00:02:00:02:00:07:27:b4:77:02:00:8e:3c:c0:a8:0c:d5:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:3c:8e:01:00:00:00:00:00:80:02:00:24:ef:a8:51:c9:0c:10:47:14:b6:64:09:df:f4:0a:9f:2d:30:a6:e0:b1:be:97:5e:2e:b1:ee:7d:28:f5:b6:1a:a9:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:01:00:00:24:54:f8:37:ab:00:01:a0:00:00:02:00:02:c4:fb:b8:d7:00:0c:00:06:00:05:00:00:80:00:00:04:c0:00:00:04:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00" showname="State cookie: d2e400842319c2ee3bf2eb94dff99192604ab35900000000..." size="228" value="d2e400842319c2ee3bf2eb94dff99192604ab35900000000000000000000000000000000a0ecd14cab37f85400000000000000000d425e07780c0000020002000727b47702008e3cc0a80cd500000000000000000000000000000000000000003c8e01000000000080020024efa851c90c104714b66409dff40a9f2d30a6e0b1be975e2eb1ee7d28f5b61aa90000000000000000000000000000000000000000000000000000000000000000000000000100002454f837ab0001a00000020002c4fbb8d7000c00060005000080000004c000000400000000000000000000000000000000"/>
-            </field>
-            <field name="" pos="298" show="ECN parameter" size="4" value="80000004">
-              <field name="sctp.parameter_type" pos="298" show="0x8000" showname="Parameter type: ECN (0x8000)" size="2" value="8000">
-                <field name="sctp.parameter_bit_1" pos="298" show="1" showname="1... .... .... .... = Bit: Skip parameter and continue processing of the chunk" size="2" unmaskedvalue="8000" value="1"/>
-                <field name="sctp.parameter_bit_2" pos="298" show="0" showname=".0.. .... .... .... = Bit: Do not report" size="2" unmaskedvalue="8000" value="0"/>
-              </field>
-              <field name="sctp.parameter_length" pos="300" show="4" showname="Parameter length: 4" size="2" value="0004"/>
-            </field>
-            <field name="" pos="302" show="Forward TSN supported parameter" size="4" value="c0000004">
-              <field name="sctp.parameter_type" pos="302" show="0xc000" showname="Parameter type: Forward TSN supported (0xc000)" size="2" value="c000">
-                <field name="sctp.parameter_bit_1" pos="302" show="1" showname="1... .... .... .... = Bit: Skip parameter and continue processing of the chunk" size="2" unmaskedvalue="c000" value="1"/>
-                <field name="sctp.parameter_bit_2" pos="302" show="1" showname=".1.. .... .... .... = Bit: Do report" size="2" unmaskedvalue="c000" value="1"/>
-              </field>
-              <field name="sctp.parameter_length" pos="304" show="4" showname="Parameter length: 4" size="2" value="0004"/>
-            </field>
-          </field>
-        </proto>
-      </proto>
-    </proto>
-  </packet>
-  <packet>
-    <proto name="frame" pos="0" showname="Frame 11: 278 bytes on wire (2224 bits), 278 bytes captured (2224 bits) on interface 0" size="278">
-      <field name="frame.interface_id" pos="0" show="0" showname="Interface id: 0" size="0"/>
-      <field name="frame.encap_type" pos="0" show="1" showname="Encapsulation type: Ethernet (1)" size="0"/>
-      <field name="frame.time" pos="0" show="Sep 25, 2015 16:34:14.289649000" showname="Arrival Time: Sep 25, 2015 16:34:14.289649000 CEST" size="0"/>
-      <field name="frame.offset_shift" pos="0" show="0.000000000" showname="Time shift for this packet: 0.000000000 seconds" size="0"/>
-      <field name="frame.time_epoch" pos="0" show="1443191654.289649000" showname="Epoch Time: 1443191654.289649000 seconds" size="0"/>
-      <field name="frame.time_delta" pos="0" show="0.000420000" showname="Time delta from previous captured frame: 0.000420000 seconds" size="0"/>
-      <field name="frame.time_delta_displayed" pos="0" show="0.000420000" showname="Time delta from previous displayed frame: 0.000420000 seconds" size="0"/>
-      <field name="frame.time_relative" pos="0" show="7.824018000" showname="Time since reference or first frame: 7.824018000 seconds" size="0"/>
-      <field name="frame.number" pos="0" show="11" showname="Frame Number: 11" size="0"/>
-      <field name="frame.len" pos="0" show="278" showname="Frame Length: 278 bytes (2224 bits)" size="0"/>
-      <field name="frame.cap_len" pos="0" show="278" showname="Capture Length: 278 bytes (2224 bits)" size="0"/>
-      <field name="frame.marked" pos="0" show="0" showname="Frame is marked: False" size="0"/>
-      <field name="frame.ignored" pos="0" show="0" showname="Frame is ignored: False" size="0"/>
-      <field name="frame.protocols" pos="0" show="eth:ip:sctp" showname="Protocols in frame: eth:ip:sctp" size="0"/>
-      <proto name="ip" pos="14" showname="Internet Protocol Version 4, Src: 192.168.12.213 (192.168.12.213), Dst: 192.168.12.17 (192.168.12.17)" size="20">
-        <field name="ip.version" pos="14" show="4" showname="Version: 4" size="1" value="45"/>
-        <field name="ip.hdr_len" pos="14" show="20" showname="Header length: 20 bytes" size="1" value="45"/>
-        <field name="ip.dsfield" pos="15" show="2" showname="Differentiated Services Field: 0x02 (DSCP 0x00: Default; ECN: 0x02: ECT(0) (ECN-Capable Transport))" size="1" value="02">
-          <field name="ip.dsfield.dscp" pos="15" show="0x00" showname="0000 00.. = Differentiated Services Codepoint: Default (0x00)" size="1" unmaskedvalue="02" value="0"/>
-          <field name="ip.dsfield.ecn" pos="15" show="0x02" showname=".... ..10 = Explicit Congestion Notification: ECT(0) (ECN-Capable Transport) (0x02)" size="1" unmaskedvalue="02" value="2"/>
-        </field>
-        <field name="ip.len" pos="16" show="264" showname="Total Length: 264" size="2" value="0108"/>
-        <field name="ip.id" pos="18" show="0x0000" showname="Identification: 0x0000 (0)" size="2" value="0000"/>
-        <field name="ip.flags" pos="20" show="0x02" showname="Flags: 0x02 (Don't Fragment)" size="1" value="40">
-          <field name="ip.flags.rb" pos="20" show="0" showname="0... .... = Reserved bit: Not set" size="1" value="40"/>
-          <field name="ip.flags.df" pos="20" show="1" showname=".1.. .... = Don't fragment: Set" size="1" value="40"/>
-          <field name="ip.flags.mf" pos="20" show="0" showname="..0. .... = More fragments: Not set" size="1" value="40"/>
-        </field>
-        <field name="ip.frag_offset" pos="20" show="0" showname="Fragment offset: 0" size="2" value="4000"/>
-        <field name="ip.ttl" pos="22" show="64" showname="Time to live: 64" size="1" value="40"/>
-        <field name="ip.proto" pos="23" show="132" showname="Protocol: SCTP (132)" size="1" value="84"/>
-        <field name="ip.checksum" pos="24" show="0x9f39" showname="Header checksum: 0x9f39 [validation disabled]" size="2" value="9f39">
-          <field name="ip.checksum_good" pos="24" show="0" showname="Good: False" size="2" value="9f39"/>
-          <field name="ip.checksum_bad" pos="24" show="0" showname="Bad: False" size="2" value="9f39"/>
-        </field>
-        <field name="ip.src" pos="26" show="192.168.12.213" showname="Source: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.addr" pos="26" show="192.168.12.213" showname="Source or Destination Address: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.src_host" pos="26" show="192.168.12.213" showname="Source Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.host" pos="26" show="192.168.12.213" showname="Source or Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-        <field name="ip.dst" pos="30" show="192.168.12.17" showname="Destination: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.addr" pos="30" show="192.168.12.17" showname="Source or Destination Address: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.dst_host" pos="30" show="192.168.12.17" showname="Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.host" pos="30" show="192.168.12.17" showname="Source or Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-        <field name="" pos="26" show="Source GeoIP: Unknown" size="4" value="c0a80cd5"/>
-        <field name="" pos="30" show="Destination GeoIP: Unknown" size="4" value="c0a80c11"/>
-        <proto name="sctp" pos="34" showname="Stream Control Transmission Protocol, Src Port: s1-control (36412), Dst Port: s1-control (36412)" size="244">
-          <field name="sctp.srcport" pos="34" show="36412" showname="Source port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.dstport" pos="36" show="36412" showname="Destination port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.verification_tag" pos="38" show="0x4cd1eca0" showname="Verification tag: 0x4cd1eca0" size="4" value="4cd1eca0"/>
-          <field hide="yes" name="sctp.port" pos="34" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-          <field hide="yes" name="sctp.port" pos="36" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.checksum" pos="42" show="0x4056ad0d" showname="Checksum: 0x4056ad0d (not verified)" size="4" value="4056ad0d"/>
-          <field name="" pos="46" show="COOKIE_ECHO chunk (Cookie length: 228 bytes)" size="232" value="0a0000e8d2e400842319c2ee3bf2eb94dff99192604ab35900000000000000000000000000000000a0ecd14cab37f85400000000000000000d425e07780c0000020002000727b47702008e3cc0a80cd500000000000000000000000000000000000000003c8e01000000000080020024efa851c90c104714b66409dff40a9f2d30a6e0b1be975e2eb1ee7d28f5b61aa90000000000000000000000000000000000000000000000000000000000000000000000000100002454f837ab0001a00000020002c4fbb8d7000c00060005000080000004c000000400000000000000000000000000000000">
-            <field name="sctp.chunk_type" pos="46" show="10" showname="Chunk type: COOKIE_ECHO (10)" size="1" value="0a">
-              <field name="sctp.chunk_bit_1" pos="46" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="0a" value="0"/>
-              <field name="sctp.chunk_bit_2" pos="46" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="0a" value="0"/>
-            </field>
-            <field name="sctp.chunk_flags" pos="47" show="0x00" showname="Chunk flags: 0x00" size="1" value="00"/>
-            <field name="sctp.chunk_length" pos="48" show="232" showname="Chunk length: 232" size="2" value="00e8"/>
-            <field name="sctp.cookie" pos="50" show="d2:e4:00:84:23:19:c2:ee:3b:f2:eb:94:df:f9:91:92:60:4a:b3:59:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:a0:ec:d1:4c:ab:37:f8:54:00:00:00:00:00:00:00:00:0d:42:5e:07:78:0c:00:00:02:00:02:00:07:27:b4:77:02:00:8e:3c:c0:a8:0c:d5:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:3c:8e:01:00:00:00:00:00:80:02:00:24:ef:a8:51:c9:0c:10:47:14:b6:64:09:df:f4:0a:9f:2d:30:a6:e0:b1:be:97:5e:2e:b1:ee:7d:28:f5:b6:1a:a9:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:01:00:00:24:54:f8:37:ab:00:01:a0:00:00:02:00:02:c4:fb:b8:d7:00:0c:00:06:00:05:00:00:80:00:00:04:c0:00:00:04:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00" showname="Cookie: d2e400842319c2ee3bf2eb94dff99192604ab35900000000..." size="228" value="d2e400842319c2ee3bf2eb94dff99192604ab35900000000000000000000000000000000a0ecd14cab37f85400000000000000000d425e07780c0000020002000727b47702008e3cc0a80cd500000000000000000000000000000000000000003c8e01000000000080020024efa851c90c104714b66409dff40a9f2d30a6e0b1be975e2eb1ee7d28f5b61aa90000000000000000000000000000000000000000000000000000000000000000000000000100002454f837ab0001a00000020002c4fbb8d7000c00060005000080000004c000000400000000000000000000000000000000"/>
-          </field>
-        </proto>
-      </proto>
-    </proto>
-  </packet>
-  <packet>
-    <proto name="frame" pos="0" showname="Frame 12: 50 bytes on wire (400 bits), 50 bytes captured (400 bits) on interface 0" size="50">
-      <field name="frame.interface_id" pos="0" show="0" showname="Interface id: 0" size="0"/>
-      <field name="frame.encap_type" pos="0" show="1" showname="Encapsulation type: Ethernet (1)" size="0"/>
-      <field name="frame.time" pos="0" show="Sep 25, 2015 16:34:14.289704000" showname="Arrival Time: Sep 25, 2015 16:34:14.289704000 CEST" size="0"/>
-      <field name="frame.offset_shift" pos="0" show="0.000000000" showname="Time shift for this packet: 0.000000000 seconds" size="0"/>
-      <field name="frame.time_epoch" pos="0" show="1443191654.289704000" showname="Epoch Time: 1443191654.289704000 seconds" size="0"/>
-      <field name="frame.time_delta" pos="0" show="0.000055000" showname="Time delta from previous captured frame: 0.000055000 seconds" size="0"/>
-      <field name="frame.time_delta_displayed" pos="0" show="0.000055000" showname="Time delta from previous displayed frame: 0.000055000 seconds" size="0"/>
-      <field name="frame.time_relative" pos="0" show="7.824073000" showname="Time since reference or first frame: 7.824073000 seconds" size="0"/>
-      <field name="frame.number" pos="0" show="12" showname="Frame Number: 12" size="0"/>
-      <field name="frame.len" pos="0" show="50" showname="Frame Length: 50 bytes (400 bits)" size="0"/>
-      <field name="frame.cap_len" pos="0" show="50" showname="Capture Length: 50 bytes (400 bits)" size="0"/>
-      <field name="frame.marked" pos="0" show="0" showname="Frame is marked: False" size="0"/>
-      <field name="frame.ignored" pos="0" show="0" showname="Frame is ignored: False" size="0"/>
-      <field name="frame.protocols" pos="0" show="eth:ip:sctp" showname="Protocols in frame: eth:ip:sctp" size="0"/>
-      <proto name="ip" pos="14" showname="Internet Protocol Version 4, Src: 192.168.12.17 (192.168.12.17), Dst: 192.168.12.213 (192.168.12.213)" size="20">
-        <field name="ip.version" pos="14" show="4" showname="Version: 4" size="1" value="45"/>
-        <field name="ip.hdr_len" pos="14" show="20" showname="Header length: 20 bytes" size="1" value="45"/>
-        <field name="ip.dsfield" pos="15" show="2" showname="Differentiated Services Field: 0x02 (DSCP 0x00: Default; ECN: 0x02: ECT(0) (ECN-Capable Transport))" size="1" value="02">
-          <field name="ip.dsfield.dscp" pos="15" show="0x00" showname="0000 00.. = Differentiated Services Codepoint: Default (0x00)" size="1" unmaskedvalue="02" value="0"/>
-          <field name="ip.dsfield.ecn" pos="15" show="0x02" showname=".... ..10 = Explicit Congestion Notification: ECT(0) (ECN-Capable Transport) (0x02)" size="1" unmaskedvalue="02" value="2"/>
-        </field>
-        <field name="ip.len" pos="16" show="36" showname="Total Length: 36" size="2" value="0024"/>
-        <field name="ip.id" pos="18" show="0x0000" showname="Identification: 0x0000 (0)" size="2" value="0000"/>
-        <field name="ip.flags" pos="20" show="0x02" showname="Flags: 0x02 (Don't Fragment)" size="1" value="40">
-          <field name="ip.flags.rb" pos="20" show="0" showname="0... .... = Reserved bit: Not set" size="1" value="40"/>
-          <field name="ip.flags.df" pos="20" show="1" showname=".1.. .... = Don't fragment: Set" size="1" value="40"/>
-          <field name="ip.flags.mf" pos="20" show="0" showname="..0. .... = More fragments: Not set" size="1" value="40"/>
-        </field>
-        <field name="ip.frag_offset" pos="20" show="0" showname="Fragment offset: 0" size="2" value="4000"/>
-        <field name="ip.ttl" pos="22" show="64" showname="Time to live: 64" size="1" value="40"/>
-        <field name="ip.proto" pos="23" show="132" showname="Protocol: SCTP (132)" size="1" value="84"/>
-        <field name="ip.checksum" pos="24" show="0xa01d" showname="Header checksum: 0xa01d [validation disabled]" size="2" value="a01d">
-          <field name="ip.checksum_good" pos="24" show="0" showname="Good: False" size="2" value="a01d"/>
-          <field name="ip.checksum_bad" pos="24" show="0" showname="Bad: False" size="2" value="a01d"/>
-        </field>
-        <field name="ip.src" pos="26" show="192.168.12.17" showname="Source: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.addr" pos="26" show="192.168.12.17" showname="Source or Destination Address: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.src_host" pos="26" show="192.168.12.17" showname="Source Host: 192.168.12.17" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.host" pos="26" show="192.168.12.17" showname="Source or Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-        <field name="ip.dst" pos="30" show="192.168.12.213" showname="Destination: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.addr" pos="30" show="192.168.12.213" showname="Source or Destination Address: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.dst_host" pos="30" show="192.168.12.213" showname="Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.host" pos="30" show="192.168.12.213" showname="Source or Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-        <field name="" pos="26" show="Source GeoIP: Unknown" size="4" value="c0a80c11"/>
-        <field name="" pos="30" show="Destination GeoIP: Unknown" size="4" value="c0a80cd5"/>
-        <proto name="sctp" pos="34" showname="Stream Control Transmission Protocol, Src Port: s1-control (36412), Dst Port: s1-control (36412)" size="16">
-          <field name="sctp.srcport" pos="34" show="36412" showname="Source port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.dstport" pos="36" show="36412" showname="Destination port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.verification_tag" pos="38" show="0x54f837ab" showname="Verification tag: 0x54f837ab" size="4" value="54f837ab"/>
-          <field hide="yes" name="sctp.port" pos="34" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-          <field hide="yes" name="sctp.port" pos="36" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.checksum" pos="42" show="0x629de6e0" showname="Checksum: 0x629de6e0 (not verified)" size="4" value="629de6e0"/>
-          <field name="" pos="46" show="COOKIE_ACK chunk" size="4" value="0b000004">
-            <field name="sctp.chunk_type" pos="46" show="11" showname="Chunk type: COOKIE_ACK (11)" size="1" value="0b">
-              <field name="sctp.chunk_bit_1" pos="46" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="0b" value="0"/>
-              <field name="sctp.chunk_bit_2" pos="46" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="0b" value="0"/>
-            </field>
-            <field name="sctp.chunk_flags" pos="47" show="0x00" showname="Chunk flags: 0x00" size="1" value="00"/>
-            <field name="sctp.chunk_length" pos="48" show="4" showname="Chunk length: 4" size="2" value="0004"/>
-          </field>
-        </proto>
-      </proto>
-    </proto>
-  </packet>
-  <packet>
-    <proto name="frame" pos="0" showname="Frame 13: 122 bytes on wire (976 bits), 122 bytes captured (976 bits) on interface 0" size="122">
-      <field name="frame.interface_id" pos="0" show="0" showname="Interface id: 0" size="0"/>
-      <field name="frame.encap_type" pos="0" show="1" showname="Encapsulation type: Ethernet (1)" size="0"/>
-      <field name="frame.time" pos="0" show="Sep 25, 2015 16:34:14.290056000" showname="Arrival Time: Sep 25, 2015 16:34:14.290056000 CEST" size="0"/>
-      <field name="frame.offset_shift" pos="0" show="0.000000000" showname="Time shift for this packet: 0.000000000 seconds" size="0"/>
-      <field name="frame.time_epoch" pos="0" show="1443191654.290056000" showname="Epoch Time: 1443191654.290056000 seconds" size="0"/>
-      <field name="frame.time_delta" pos="0" show="0.000352000" showname="Time delta from previous captured frame: 0.000352000 seconds" size="0"/>
-      <field name="frame.time_delta_displayed" pos="0" show="0.000352000" showname="Time delta from previous displayed frame: 0.000352000 seconds" size="0"/>
-      <field name="frame.time_relative" pos="0" show="7.824425000" showname="Time since reference or first frame: 7.824425000 seconds" size="0"/>
-      <field name="frame.number" pos="0" show="13" showname="Frame Number: 13" size="0"/>
-      <field name="frame.len" pos="0" show="122" showname="Frame Length: 122 bytes (976 bits)" size="0"/>
-      <field name="frame.cap_len" pos="0" show="122" showname="Capture Length: 122 bytes (976 bits)" size="0"/>
-      <field name="frame.marked" pos="0" show="0" showname="Frame is marked: False" size="0"/>
-      <field name="frame.ignored" pos="0" show="0" showname="Frame is ignored: False" size="0"/>
-      <field name="frame.protocols" pos="0" show="eth:ip:sctp:s1ap:s1ap:s1ap:s1ap:s1ap:s1ap" showname="Protocols in frame: eth:ip:sctp:s1ap:s1ap:s1ap:s1ap:s1ap:s1ap" size="0"/>
-      <proto name="ip" pos="14" showname="Internet Protocol Version 4, Src: 192.168.12.213 (192.168.12.213), Dst: 192.168.12.17 (192.168.12.17)" size="20">
-        <field name="ip.version" pos="14" show="4" showname="Version: 4" size="1" value="45"/>
-        <field name="ip.hdr_len" pos="14" show="20" showname="Header length: 20 bytes" size="1" value="45"/>
-        <field name="ip.dsfield" pos="15" show="2" showname="Differentiated Services Field: 0x02 (DSCP 0x00: Default; ECN: 0x02: ECT(0) (ECN-Capable Transport))" size="1" value="02">
-          <field name="ip.dsfield.dscp" pos="15" show="0x00" showname="0000 00.. = Differentiated Services Codepoint: Default (0x00)" size="1" unmaskedvalue="02" value="0"/>
-          <field name="ip.dsfield.ecn" pos="15" show="0x02" showname=".... ..10 = Explicit Congestion Notification: ECT(0) (ECN-Capable Transport) (0x02)" size="1" unmaskedvalue="02" value="2"/>
-        </field>
-        <field name="ip.len" pos="16" show="108" showname="Total Length: 108" size="2" value="006c"/>
-        <field name="ip.id" pos="18" show="0x0001" showname="Identification: 0x0001 (1)" size="2" value="0001"/>
-        <field name="ip.flags" pos="20" show="0x02" showname="Flags: 0x02 (Don't Fragment)" size="1" value="40">
-          <field name="ip.flags.rb" pos="20" show="0" showname="0... .... = Reserved bit: Not set" size="1" value="40"/>
-          <field name="ip.flags.df" pos="20" show="1" showname=".1.. .... = Don't fragment: Set" size="1" value="40"/>
-          <field name="ip.flags.mf" pos="20" show="0" showname="..0. .... = More fragments: Not set" size="1" value="40"/>
-        </field>
-        <field name="ip.frag_offset" pos="20" show="0" showname="Fragment offset: 0" size="2" value="4000"/>
-        <field name="ip.ttl" pos="22" show="64" showname="Time to live: 64" size="1" value="40"/>
-        <field name="ip.proto" pos="23" show="132" showname="Protocol: SCTP (132)" size="1" value="84"/>
-        <field name="ip.checksum" pos="24" show="0x9fd4" showname="Header checksum: 0x9fd4 [validation disabled]" size="2" value="9fd4">
-          <field name="ip.checksum_good" pos="24" show="0" showname="Good: False" size="2" value="9fd4"/>
-          <field name="ip.checksum_bad" pos="24" show="0" showname="Bad: False" size="2" value="9fd4"/>
-        </field>
-        <field name="ip.src" pos="26" show="192.168.12.213" showname="Source: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.addr" pos="26" show="192.168.12.213" showname="Source or Destination Address: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.src_host" pos="26" show="192.168.12.213" showname="Source Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.host" pos="26" show="192.168.12.213" showname="Source or Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-        <field name="ip.dst" pos="30" show="192.168.12.17" showname="Destination: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.addr" pos="30" show="192.168.12.17" showname="Source or Destination Address: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.dst_host" pos="30" show="192.168.12.17" showname="Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.host" pos="30" show="192.168.12.17" showname="Source or Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-        <field name="" pos="26" show="Source GeoIP: Unknown" size="4" value="c0a80cd5"/>
-        <field name="" pos="30" show="Destination GeoIP: Unknown" size="4" value="c0a80c11"/>
-        <proto name="sctp" pos="34" showname="Stream Control Transmission Protocol, Src Port: s1-control (36412), Dst Port: s1-control (36412)" size="28">
-          <field name="sctp.srcport" pos="34" show="36412" showname="Source port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.dstport" pos="36" show="36412" showname="Destination port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.verification_tag" pos="38" show="0x4cd1eca0" showname="Verification tag: 0x4cd1eca0" size="4" value="4cd1eca0"/>
-          <field hide="yes" name="sctp.port" pos="34" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-          <field hide="yes" name="sctp.port" pos="36" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.checksum" pos="42" show="0x9981d0bb" showname="Checksum: 0x9981d0bb (not verified)" size="4" value="9981d0bb"/>
-          <field name="" pos="46" show="DATA chunk(ordered, complete segment, TSN: 3304831191, SID: 0, SSN: 0, PPID: 18, payload length: 59 bytes)" size="16" value="0003004bc4fbb8d70000000000000012">
-            <field name="sctp.chunk_type" pos="46" show="0" showname="Chunk type: DATA (0)" size="1" value="00">
-              <field name="sctp.chunk_bit_1" pos="46" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="00" value="0"/>
-              <field name="sctp.chunk_bit_2" pos="46" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="00" value="0"/>
-            </field>
-            <field name="sctp.chunk_flags" pos="47" show="0x03" showname="Chunk flags: 0x03" size="1" value="03">
-              <field name="sctp.data_e_bit" pos="47" show="1" showname=".... ...1 = E-Bit: Last segment" size="1" unmaskedvalue="03" value="1"/>
-              <field name="sctp.data_b_bit" pos="47" show="1" showname=".... ..1. = B-Bit: First segment" size="1" unmaskedvalue="03" value="1"/>
-              <field name="sctp.data_u_bit" pos="47" show="0" showname=".... .0.. = U-Bit: Ordered delivery" size="1" unmaskedvalue="03" value="0"/>
-              <field name="sctp.data_i_bit" pos="47" show="0" showname=".... 0... = I-Bit: Possibly delay SACK" size="1" unmaskedvalue="03" value="0"/>
-            </field>
-            <field name="sctp.chunk_length" pos="48" show="75" showname="Chunk length: 75" size="2" value="004b"/>
-            <field name="sctp.data_tsn" pos="50" show="3304831191" showname="TSN: 3304831191" size="4" value="c4fbb8d7"/>
-            <field name="sctp.data_sid" pos="54" show="0x0000" showname="Stream Identifier: 0x0000" size="2" value="0000"/>
-            <field name="sctp.data_ssn" pos="56" show="0" showname="Stream sequence number: 0" size="2" value="0000"/>
-            <field name="sctp.data_payload_proto_id" pos="58" show="18" showname="Payload protocol identifier: S1 Application Protocol (S1AP) (18)" size="4" value="00000012"/>
-            <field name="sctp.chunk_padding" pos="121" show="00" showname="Chunk padding: 00" size="1" value="00"/>
-          </field>
-          <proto name="s1ap" pos="62" showname="S1 Application Protocol" size="59">
-            <field hide="yes" name="per.extension_bit" pos="62" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-            <field hide="yes" name="per.choice_index" pos="62" show="0" showname="Choice Index: 0" size="1" value="00"/>
-            <field name="s1ap.S1AP_PDU" pos="62" show="0" showname="S1AP-PDU: initiatingMessage (0)" size="59" value="00110037000004003b00080002f8590000e000003c40140880654e425f45757265636f6d5f4c5445426f78004000070000004002f8590089400140">
-              <field name="s1ap.initiatingMessage" pos="62" show="" showname="initiatingMessage" size="59" value="">
-                <field name="s1ap.procedureCode" pos="63" show="17" showname="procedureCode: id-S1Setup (17)" size="1" value="11"/>
-                <field hide="yes" name="per.enum_index" pos="64" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                <field name="s1ap.criticality" pos="64" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                <field hide="yes" name="per.open_type_length" pos="65" show="55" showname="Open Type Length: 55" size="1" value="37"/>
-                <field name="s1ap.value" pos="66" show="" showname="value" size="55" value="">
-                  <field name="s1ap.S1SetupRequest" pos="66" show="" showname="S1SetupRequest" size="55" value="">
-                    <field hide="yes" name="per.extension_bit" pos="66" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-                    <field hide="yes" name="per.sequence_of_length" pos="67" show="4" showname="Sequence-Of Length: 4" size="2" value="0004"/>
-                    <field name="s1ap.protocolIEs" pos="69" show="4" showname="protocolIEs: 4 items" size="52" value="003b00080002f8590000e000003c40140880654e425f45757265636f6d5f4c5445426f78004000070000004002f8590089400140">
-                      <field name="" pos="69" show="Item 0: id-Global-ENB-ID" size="12" value="003b00080002f8590000e000">
-                        <field name="s1ap.ProtocolIE_Field" pos="69" show="" showname="ProtocolIE-Field" size="12" value="">
-                          <field name="s1ap.id" pos="69" show="59" showname="id: id-Global-ENB-ID (59)" size="2" value="003b"/>
-                          <field hide="yes" name="per.enum_index" pos="71" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                          <field name="s1ap.criticality" pos="71" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                          <field hide="yes" name="per.open_type_length" pos="72" show="8" showname="Open Type Length: 8" size="1" value="08"/>
-                          <field name="s1ap.value" pos="73" show="" showname="value" size="8" value="">
-                            <field name="s1ap.Global_ENB_ID" pos="73" show="" showname="Global-ENB-ID" size="7" value="">
-                              <field hide="yes" name="per.extension_bit" pos="73" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-                              <field hide="yes" name="per.optional_field_bit" pos="73" show="0" showname=".0.. .... Optional Field Bit: False (iE-Extensions is NOT present)" size="1" unmaskedvalue="00" value="0"/>
-                              <field name="s1ap.pLMNidentity" pos="74" show="02:f8:59" showname="pLMNidentity: 02f859" size="3" value="02f859"/>
-                              <field name="e212.mcc" pos="74" show="208" showname="Mobile Country Code (MCC): France (208)" size="2" value="02f8"/>
-                              <field name="e212.mnc" pos="75" show="95" showname="Mobile Network Code (MNC): Unknown (95)" size="2" value="f859"/>
-                              <field hide="yes" name="per.extension_bit" pos="77" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-                              <field hide="yes" name="per.choice_index" pos="77" show="0" showname="Choice Index: 0" size="1" value="00"/>
-                              <field name="s1ap.eNB_ID" pos="77" show="0" showname="eNB-ID: macroENB-ID (0)" size="3" value="0000e0">
-                                <field name="s1ap.macroENB_ID" pos="77" show="00:e0:00" showname="macroENB-ID: 00e000 [bit length 20, 4 LSB pad bits, 0000 0000  1110 0000  0000 .... decimal value 3584]" size="3" value="00e000"/>
-                              </field>
-                            </field>
-                          </field>
-                        </field>
-                      </field>
-                      <field name="" pos="81" show="Item 1: id-eNBname" size="24" value="003c40140880654e425f45757265636f6d5f4c5445426f78">
-                        <field name="s1ap.ProtocolIE_Field" pos="81" show="" showname="ProtocolIE-Field" size="24" value="">
-                          <field name="s1ap.id" pos="81" show="60" showname="id: id-eNBname (60)" size="2" value="003c"/>
-                          <field hide="yes" name="per.enum_index" pos="83" show="1" showname="Enumerated Index: 1" size="1" value="40"/>
-                          <field name="s1ap.criticality" pos="83" show="1" showname="criticality: ignore (1)" size="1" value="40"/>
-                          <field hide="yes" name="per.open_type_length" pos="84" show="20" showname="Open Type Length: 20" size="1" value="14"/>
-                          <field name="s1ap.value" pos="85" show="" showname="value" size="20" value="">
-                            <field name="per.extension_present_bit" pos="85" show="0" showname="0... .... Extension Present Bit: False" size="1" unmaskedvalue="08" value="0"/>
-                            <field hide="yes" name="per.octet_string_length" pos="85" show="18" showname="Octet String Length: 18" size="1" value="08"/>
-                            <field name="s1ap.ENBname" pos="87" show="eNB_Eurecom_LTEBox" showname="ENBname: eNB_Eurecom_LTEBox" size="18" value="654e425f45757265636f6d5f4c5445426f78"/>
-                          </field>
-                        </field>
-                      </field>
-                      <field name="" pos="105" show="Item 2: id-SupportedTAs" size="11" value="004000070000004002f859">
-                        <field name="s1ap.ProtocolIE_Field" pos="105" show="" showname="ProtocolIE-Field" size="11" value="">
-                          <field name="s1ap.id" pos="105" show="64" showname="id: id-SupportedTAs (64)" size="2" value="0040"/>
-                          <field hide="yes" name="per.enum_index" pos="107" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                          <field name="s1ap.criticality" pos="107" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                          <field hide="yes" name="per.open_type_length" pos="108" show="7" showname="Open Type Length: 7" size="1" value="07"/>
-                          <field name="s1ap.value" pos="109" show="" showname="value" size="7" value="">
-                            <field hide="yes" name="per.sequence_of_length" pos="109" show="1" showname="Sequence-Of Length: 1" size="1" value="00"/>
-                            <field name="s1ap.SupportedTAs" pos="110" show="1" showname="SupportedTAs: 1 item" size="6" value="00004002f859">
-                              <field name="" pos="110" show="Item 0" size="6" value="00004002f859">
-                                <field name="s1ap.SupportedTAs_Item" pos="110" show="" showname="SupportedTAs-Item" size="6" value="">
-                                  <field hide="yes" name="per.extension_bit" pos="110" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-                                  <field hide="yes" name="per.optional_field_bit" pos="110" show="0" showname=".0.. .... Optional Field Bit: False (iE-Extensions is NOT present)" size="1" unmaskedvalue="00" value="0"/>
-                                  <field name="s1ap.tAC" pos="110" show="00:01" showname="tAC: 0001" size="2" value="0001"/>
-                                  <field hide="yes" name="per.sequence_of_length" pos="112" show="1" showname="Sequence-Of Length: 1" size="1" value="40"/>
-                                  <field name="s1ap.broadcastPLMNs" pos="112" show="1" showname="broadcastPLMNs: 1 item" size="4" value="4002f859">
-                                    <field name="" pos="112" show="Item 0" size="4" value="4002f859">
-                                      <field name="s1ap.PLMNidentity" pos="113" show="02:f8:59" showname="PLMNidentity: 02f859" size="3" value="02f859"/>
-                                      <field name="e212.mcc" pos="113" show="208" showname="Mobile Country Code (MCC): France (208)" size="2" value="02f8"/>
-                                      <field name="e212.mnc" pos="114" show="95" showname="Mobile Network Code (MNC): Unknown (95)" size="2" value="f859"/>
-                                    </field>
-                                  </field>
-                                </field>
-                              </field>
-                            </field>
-                          </field>
-                        </field>
-                      </field>
-                      <field name="" pos="116" show="Item 3: id-DefaultPagingDRX" size="5" value="0089400140">
-                        <field name="s1ap.ProtocolIE_Field" pos="116" show="" showname="ProtocolIE-Field" size="5" value="">
-                          <field name="s1ap.id" pos="116" show="137" showname="id: id-DefaultPagingDRX (137)" size="2" value="0089"/>
-                          <field hide="yes" name="per.enum_index" pos="118" show="1" showname="Enumerated Index: 1" size="1" value="40"/>
-                          <field name="s1ap.criticality" pos="118" show="1" showname="criticality: ignore (1)" size="1" value="40"/>
-                          <field hide="yes" name="per.open_type_length" pos="119" show="1" showname="Open Type Length: 1" size="1" value="01"/>
-                          <field name="s1ap.value" pos="120" show="" showname="value" size="1" value="">
-                            <field hide="yes" name="per.extension_present_bit" pos="120" show="0" showname="0... .... Extension Present Bit: False" size="1" unmaskedvalue="40" value="0"/>
-                            <field hide="yes" name="per.enum_index" pos="120" show="2" showname="Enumerated Index: 2" size="1" value="40"/>
-                            <field name="s1ap.PagingDRX" pos="120" show="2" showname="PagingDRX: v128 (2)" size="1" value="40"/>
-                          </field>
-                        </field>
-                      </field>
-                    </field>
-                  </field>
-                </field>
-              </field>
-            </field>
-          </proto>
-        </proto>
-      </proto>
-    </proto>
-  </packet>
-  <packet>
-    <proto name="frame" pos="0" showname="Frame 14: 62 bytes on wire (496 bits), 62 bytes captured (496 bits) on interface 0" size="62">
-      <field name="frame.interface_id" pos="0" show="0" showname="Interface id: 0" size="0"/>
-      <field name="frame.encap_type" pos="0" show="1" showname="Encapsulation type: Ethernet (1)" size="0"/>
-      <field name="frame.time" pos="0" show="Sep 25, 2015 16:34:14.290087000" showname="Arrival Time: Sep 25, 2015 16:34:14.290087000 CEST" size="0"/>
-      <field name="frame.offset_shift" pos="0" show="0.000000000" showname="Time shift for this packet: 0.000000000 seconds" size="0"/>
-      <field name="frame.time_epoch" pos="0" show="1443191654.290087000" showname="Epoch Time: 1443191654.290087000 seconds" size="0"/>
-      <field name="frame.time_delta" pos="0" show="0.000031000" showname="Time delta from previous captured frame: 0.000031000 seconds" size="0"/>
-      <field name="frame.time_delta_displayed" pos="0" show="0.000031000" showname="Time delta from previous displayed frame: 0.000031000 seconds" size="0"/>
-      <field name="frame.time_relative" pos="0" show="7.824456000" showname="Time since reference or first frame: 7.824456000 seconds" size="0"/>
-      <field name="frame.number" pos="0" show="14" showname="Frame Number: 14" size="0"/>
-      <field name="frame.len" pos="0" show="62" showname="Frame Length: 62 bytes (496 bits)" size="0"/>
-      <field name="frame.cap_len" pos="0" show="62" showname="Capture Length: 62 bytes (496 bits)" size="0"/>
-      <field name="frame.marked" pos="0" show="0" showname="Frame is marked: False" size="0"/>
-      <field name="frame.ignored" pos="0" show="0" showname="Frame is ignored: False" size="0"/>
-      <field name="frame.protocols" pos="0" show="eth:ip:sctp" showname="Protocols in frame: eth:ip:sctp" size="0"/>
-      <proto name="ip" pos="14" showname="Internet Protocol Version 4, Src: 192.168.12.17 (192.168.12.17), Dst: 192.168.12.213 (192.168.12.213)" size="20">
-        <field name="ip.version" pos="14" show="4" showname="Version: 4" size="1" value="45"/>
-        <field name="ip.hdr_len" pos="14" show="20" showname="Header length: 20 bytes" size="1" value="45"/>
-        <field name="ip.dsfield" pos="15" show="2" showname="Differentiated Services Field: 0x02 (DSCP 0x00: Default; ECN: 0x02: ECT(0) (ECN-Capable Transport))" size="1" value="02">
-          <field name="ip.dsfield.dscp" pos="15" show="0x00" showname="0000 00.. = Differentiated Services Codepoint: Default (0x00)" size="1" unmaskedvalue="02" value="0"/>
-          <field name="ip.dsfield.ecn" pos="15" show="0x02" showname=".... ..10 = Explicit Congestion Notification: ECT(0) (ECN-Capable Transport) (0x02)" size="1" unmaskedvalue="02" value="2"/>
-        </field>
-        <field name="ip.len" pos="16" show="48" showname="Total Length: 48" size="2" value="0030"/>
-        <field name="ip.id" pos="18" show="0x0000" showname="Identification: 0x0000 (0)" size="2" value="0000"/>
-        <field name="ip.flags" pos="20" show="0x02" showname="Flags: 0x02 (Don't Fragment)" size="1" value="40">
-          <field name="ip.flags.rb" pos="20" show="0" showname="0... .... = Reserved bit: Not set" size="1" value="40"/>
-          <field name="ip.flags.df" pos="20" show="1" showname=".1.. .... = Don't fragment: Set" size="1" value="40"/>
-          <field name="ip.flags.mf" pos="20" show="0" showname="..0. .... = More fragments: Not set" size="1" value="40"/>
-        </field>
-        <field name="ip.frag_offset" pos="20" show="0" showname="Fragment offset: 0" size="2" value="4000"/>
-        <field name="ip.ttl" pos="22" show="64" showname="Time to live: 64" size="1" value="40"/>
-        <field name="ip.proto" pos="23" show="132" showname="Protocol: SCTP (132)" size="1" value="84"/>
-        <field name="ip.checksum" pos="24" show="0xa011" showname="Header checksum: 0xa011 [validation disabled]" size="2" value="a011">
-          <field name="ip.checksum_good" pos="24" show="0" showname="Good: False" size="2" value="a011"/>
-          <field name="ip.checksum_bad" pos="24" show="0" showname="Bad: False" size="2" value="a011"/>
-        </field>
-        <field name="ip.src" pos="26" show="192.168.12.17" showname="Source: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.addr" pos="26" show="192.168.12.17" showname="Source or Destination Address: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.src_host" pos="26" show="192.168.12.17" showname="Source Host: 192.168.12.17" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.host" pos="26" show="192.168.12.17" showname="Source or Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-        <field name="ip.dst" pos="30" show="192.168.12.213" showname="Destination: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.addr" pos="30" show="192.168.12.213" showname="Source or Destination Address: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.dst_host" pos="30" show="192.168.12.213" showname="Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.host" pos="30" show="192.168.12.213" showname="Source or Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-        <field name="" pos="26" show="Source GeoIP: Unknown" size="4" value="c0a80c11"/>
-        <field name="" pos="30" show="Destination GeoIP: Unknown" size="4" value="c0a80cd5"/>
-        <proto name="sctp" pos="34" showname="Stream Control Transmission Protocol, Src Port: s1-control (36412), Dst Port: s1-control (36412)" size="28">
-          <field name="sctp.srcport" pos="34" show="36412" showname="Source port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.dstport" pos="36" show="36412" showname="Destination port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.verification_tag" pos="38" show="0x54f837ab" showname="Verification tag: 0x54f837ab" size="4" value="54f837ab"/>
-          <field hide="yes" name="sctp.port" pos="34" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-          <field hide="yes" name="sctp.port" pos="36" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.checksum" pos="42" show="0x1a9ba246" showname="Checksum: 0x1a9ba246 (not verified)" size="4" value="1a9ba246"/>
-          <field name="" pos="46" show="SACK chunk (Cumulative TSN: 3304831191, a_rwnd: 106437, gaps: 0, duplicate TSNs: 0)" size="16" value="03000010c4fbb8d700019fc500000000">
-            <field name="sctp.chunk_type" pos="46" show="3" showname="Chunk type: SACK (3)" size="1" value="03">
-              <field name="sctp.chunk_bit_1" pos="46" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="03" value="0"/>
-              <field name="sctp.chunk_bit_2" pos="46" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="03" value="0"/>
-            </field>
-            <field name="sctp.chunk_flags" pos="47" show="0x00" showname="Chunk flags: 0x00" size="1" value="00">
-              <field name="sctp.sack_nounce_sum" pos="47" show="0" showname=".... ...0 = Nounce sum: 0" size="1" unmaskedvalue="00" value="0"/>
-            </field>
-            <field name="sctp.chunk_length" pos="48" show="16" showname="Chunk length: 16" size="2" value="0010"/>
-            <field name="sctp.sack_cumulative_tsn_ack" pos="50" show="3304831191" showname="Cumulative TSN ACK: 3304831191" size="4" value="c4fbb8d7"/>
-            <field name="sctp.sack_a_rwnd" pos="54" show="106437" showname="Advertised receiver window credit (a_rwnd): 106437" size="4" value="00019fc5"/>
-            <field name="sctp.sack_number_of_gap_blocks" pos="58" show="0" showname="Number of gap acknowledgement blocks: 0" size="2" value="0000"/>
-            <field name="sctp.sack_number_of_duplicated_tsns" pos="60" show="0" showname="Number of duplicated TSNs: 0" size="2" value="0000"/>
-          </field>
-        </proto>
-      </proto>
-    </proto>
-  </packet>
-  <packet>
-    <proto name="frame" pos="0" showname="Frame 15: 114 bytes on wire (912 bits), 114 bytes captured (912 bits) on interface 0" size="114">
-      <field name="frame.interface_id" pos="0" show="0" showname="Interface id: 0" size="0"/>
-      <field name="frame.encap_type" pos="0" show="1" showname="Encapsulation type: Ethernet (1)" size="0"/>
-      <field name="frame.time" pos="0" show="Sep 25, 2015 16:34:14.290488000" showname="Arrival Time: Sep 25, 2015 16:34:14.290488000 CEST" size="0"/>
-      <field name="frame.offset_shift" pos="0" show="0.000000000" showname="Time shift for this packet: 0.000000000 seconds" size="0"/>
-      <field name="frame.time_epoch" pos="0" show="1443191654.290488000" showname="Epoch Time: 1443191654.290488000 seconds" size="0"/>
-      <field name="frame.time_delta" pos="0" show="0.000401000" showname="Time delta from previous captured frame: 0.000401000 seconds" size="0"/>
-      <field name="frame.time_delta_displayed" pos="0" show="0.000401000" showname="Time delta from previous displayed frame: 0.000401000 seconds" size="0"/>
-      <field name="frame.time_relative" pos="0" show="7.824857000" showname="Time since reference or first frame: 7.824857000 seconds" size="0"/>
-      <field name="frame.number" pos="0" show="15" showname="Frame Number: 15" size="0"/>
-      <field name="frame.len" pos="0" show="114" showname="Frame Length: 114 bytes (912 bits)" size="0"/>
-      <field name="frame.cap_len" pos="0" show="114" showname="Capture Length: 114 bytes (912 bits)" size="0"/>
-      <field name="frame.marked" pos="0" show="0" showname="Frame is marked: False" size="0"/>
-      <field name="frame.ignored" pos="0" show="0" showname="Frame is ignored: False" size="0"/>
-      <field name="frame.protocols" pos="0" show="eth:ip:sctp:s1ap:s1ap:s1ap:s1ap" showname="Protocols in frame: eth:ip:sctp:s1ap:s1ap:s1ap:s1ap" size="0"/>
-      <proto name="ip" pos="14" showname="Internet Protocol Version 4, Src: 192.168.12.17 (192.168.12.17), Dst: 192.168.12.213 (192.168.12.213)" size="20">
-        <field name="ip.version" pos="14" show="4" showname="Version: 4" size="1" value="45"/>
-        <field name="ip.hdr_len" pos="14" show="20" showname="Header length: 20 bytes" size="1" value="45"/>
-        <field name="ip.dsfield" pos="15" show="2" showname="Differentiated Services Field: 0x02 (DSCP 0x00: Default; ECN: 0x02: ECT(0) (ECN-Capable Transport))" size="1" value="02">
-          <field name="ip.dsfield.dscp" pos="15" show="0x00" showname="0000 00.. = Differentiated Services Codepoint: Default (0x00)" size="1" unmaskedvalue="02" value="0"/>
-          <field name="ip.dsfield.ecn" pos="15" show="0x02" showname=".... ..10 = Explicit Congestion Notification: ECT(0) (ECN-Capable Transport) (0x02)" size="1" unmaskedvalue="02" value="2"/>
-        </field>
-        <field name="ip.len" pos="16" show="100" showname="Total Length: 100" size="2" value="0064"/>
-        <field name="ip.id" pos="18" show="0x0000" showname="Identification: 0x0000 (0)" size="2" value="0000"/>
-        <field name="ip.flags" pos="20" show="0x02" showname="Flags: 0x02 (Don't Fragment)" size="1" value="40">
-          <field name="ip.flags.rb" pos="20" show="0" showname="0... .... = Reserved bit: Not set" size="1" value="40"/>
-          <field name="ip.flags.df" pos="20" show="1" showname=".1.. .... = Don't fragment: Set" size="1" value="40"/>
-          <field name="ip.flags.mf" pos="20" show="0" showname="..0. .... = More fragments: Not set" size="1" value="40"/>
-        </field>
-        <field name="ip.frag_offset" pos="20" show="0" showname="Fragment offset: 0" size="2" value="4000"/>
-        <field name="ip.ttl" pos="22" show="64" showname="Time to live: 64" size="1" value="40"/>
-        <field name="ip.proto" pos="23" show="132" showname="Protocol: SCTP (132)" size="1" value="84"/>
-        <field name="ip.checksum" pos="24" show="0x9fdd" showname="Header checksum: 0x9fdd [validation disabled]" size="2" value="9fdd">
-          <field name="ip.checksum_good" pos="24" show="0" showname="Good: False" size="2" value="9fdd"/>
-          <field name="ip.checksum_bad" pos="24" show="0" showname="Bad: False" size="2" value="9fdd"/>
-        </field>
-        <field name="ip.src" pos="26" show="192.168.12.17" showname="Source: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.addr" pos="26" show="192.168.12.17" showname="Source or Destination Address: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.src_host" pos="26" show="192.168.12.17" showname="Source Host: 192.168.12.17" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.host" pos="26" show="192.168.12.17" showname="Source or Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-        <field name="ip.dst" pos="30" show="192.168.12.213" showname="Destination: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.addr" pos="30" show="192.168.12.213" showname="Source or Destination Address: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.dst_host" pos="30" show="192.168.12.213" showname="Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.host" pos="30" show="192.168.12.213" showname="Source or Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-        <field name="" pos="26" show="Source GeoIP: Unknown" size="4" value="c0a80c11"/>
-        <field name="" pos="30" show="Destination GeoIP: Unknown" size="4" value="c0a80cd5"/>
-        <proto name="sctp" pos="34" showname="Stream Control Transmission Protocol, Src Port: s1-control (36412), Dst Port: s1-control (36412)" size="28">
-          <field name="sctp.srcport" pos="34" show="36412" showname="Source port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.dstport" pos="36" show="36412" showname="Destination port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.verification_tag" pos="38" show="0x54f837ab" showname="Verification tag: 0x54f837ab" size="4" value="54f837ab"/>
-          <field hide="yes" name="sctp.port" pos="34" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-          <field hide="yes" name="sctp.port" pos="36" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.checksum" pos="42" show="0x93a80c99" showname="Checksum: 0x93a80c99 (not verified)" size="4" value="93a80c99"/>
-          <field name="" pos="46" show="DATA chunk(ordered, complete segment, TSN: 2008295175, SID: 0, SSN: 0, PPID: 301989888, payload length: 49 bytes)" size="16" value="0003004177b427070000000012000000">
-            <field name="sctp.chunk_type" pos="46" show="0" showname="Chunk type: DATA (0)" size="1" value="00">
-              <field name="sctp.chunk_bit_1" pos="46" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="00" value="0"/>
-              <field name="sctp.chunk_bit_2" pos="46" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="00" value="0"/>
-            </field>
-            <field name="sctp.chunk_flags" pos="47" show="0x03" showname="Chunk flags: 0x03" size="1" value="03">
-              <field name="sctp.data_e_bit" pos="47" show="1" showname=".... ...1 = E-Bit: Last segment" size="1" unmaskedvalue="03" value="1"/>
-              <field name="sctp.data_b_bit" pos="47" show="1" showname=".... ..1. = B-Bit: First segment" size="1" unmaskedvalue="03" value="1"/>
-              <field name="sctp.data_u_bit" pos="47" show="0" showname=".... .0.. = U-Bit: Ordered delivery" size="1" unmaskedvalue="03" value="0"/>
-              <field name="sctp.data_i_bit" pos="47" show="0" showname=".... 0... = I-Bit: Possibly delay SACK" size="1" unmaskedvalue="03" value="0"/>
-            </field>
-            <field name="sctp.chunk_length" pos="48" show="65" showname="Chunk length: 65" size="2" value="0041"/>
-            <field name="sctp.data_tsn" pos="50" show="2008295175" showname="TSN: 2008295175" size="4" value="77b42707"/>
-            <field name="sctp.data_sid" pos="54" show="0x0000" showname="Stream Identifier: 0x0000" size="2" value="0000"/>
-            <field name="sctp.data_ssn" pos="56" show="0" showname="Stream sequence number: 0" size="2" value="0000"/>
-            <field name="sctp.data_payload_proto_id" pos="58" show="301989888" showname="Payload protocol identifier: Unknown (301989888)" size="4" value="12000000"/>
-            <field name="sctp.chunk_padding" pos="111" show="00:00:00" showname="Chunk padding: 000000" size="3" value="000000"/>
-          </field>
-          <proto name="s1ap" pos="62" showname="S1 Application Protocol" size="49">
-            <field hide="yes" name="per.extension_bit" pos="62" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="20" value="0"/>
-            <field hide="yes" name="per.choice_index" pos="62" show="1" showname="Choice Index: 1" size="1" value="20"/>
-            <field name="s1ap.S1AP_PDU" pos="62" show="1" showname="S1AP-PDU: successfulOutcome (1)" size="49" value="2011002d00000200690021000002f8590006800000040005001e00080009c3650a011e1f2021222324381d08005740010a">
-              <field name="s1ap.successfulOutcome" pos="62" show="" showname="successfulOutcome" size="49" value="">
-                <field name="s1ap.procedureCode" pos="63" show="17" showname="procedureCode: id-S1Setup (17)" size="1" value="11"/>
-                <field hide="yes" name="per.enum_index" pos="64" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                <field name="s1ap.criticality" pos="64" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                <field hide="yes" name="per.open_type_length" pos="65" show="45" showname="Open Type Length: 45" size="1" value="2d"/>
-                <field name="s1ap.value" pos="66" show="" showname="value" size="45" value="">
-                  <field name="s1ap.S1SetupResponse" pos="66" show="" showname="S1SetupResponse" size="45" value="">
-                    <field hide="yes" name="per.extension_bit" pos="66" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-                    <field hide="yes" name="per.sequence_of_length" pos="67" show="2" showname="Sequence-Of Length: 2" size="2" value="0002"/>
-                    <field name="s1ap.protocolIEs" pos="69" show="2" showname="protocolIEs: 2 items" size="42" value="00690021000002f8590006800000040005001e00080009c3650a011e1f2021222324381d08005740010a">
-                      <field name="" pos="69" show="Item 0: id-ServedGUMMEIs" size="37" value="00690021000002f8590006800000040005001e00080009c3650a011e1f2021222324381d08">
-                        <field name="s1ap.ProtocolIE_Field" pos="69" show="" showname="ProtocolIE-Field" size="37" value="">
-                          <field name="s1ap.id" pos="69" show="105" showname="id: id-ServedGUMMEIs (105)" size="2" value="0069"/>
-                          <field hide="yes" name="per.enum_index" pos="71" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                          <field name="s1ap.criticality" pos="71" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                          <field hide="yes" name="per.open_type_length" pos="72" show="33" showname="Open Type Length: 33" size="1" value="21"/>
-                          <field name="s1ap.value" pos="73" show="" showname="value" size="33" value="">
-                            <field hide="yes" name="per.sequence_of_length" pos="73" show="1" showname="Sequence-Of Length: 1" size="1" value="00"/>
-                            <field name="s1ap.ServedGUMMEIs" pos="73" show="1" showname="ServedGUMMEIs: 1 item" size="33" value="000002f8590006800000040005001e00080009c3650a011e1f2021222324381d08">
-                              <field name="" pos="73" show="Item 0" size="33" value="000002f8590006800000040005001e00080009c3650a011e1f2021222324381d08">
-                                <field name="s1ap.ServedGUMMEIsItem" pos="73" show="" showname="ServedGUMMEIsItem" size="33" value="">
-                                  <field hide="yes" name="per.extension_bit" pos="73" show="0" showname="...0 .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-                                  <field hide="yes" name="per.optional_field_bit" pos="73" show="0" showname=".... 0... Optional Field Bit: False (iE-Extensions is NOT present)" size="1" unmaskedvalue="00" value="0"/>
-                                  <field hide="yes" name="per.sequence_of_length" pos="73" show="1" showname="Sequence-Of Length: 1" size="1" value="00"/>
-                                  <field name="s1ap.servedPLMNs" pos="74" show="1" showname="servedPLMNs: 1 item" size="4" value="0002f859">
-                                    <field name="" pos="74" show="Item 0" size="4" value="0002f859">
-                                      <field name="s1ap.PLMNidentity" pos="75" show="02:f8:59" showname="PLMNidentity: 02f859" size="3" value="02f859"/>
-                                      <field name="e212.mcc" pos="75" show="208" showname="Mobile Country Code (MCC): France (208)" size="2" value="02f8"/>
-                                      <field name="e212.mnc" pos="76" show="95" showname="Mobile Network Code (MNC): Unknown (95)" size="2" value="f859"/>
-                                    </field>
-                                  </field>
-                                  <field hide="yes" name="per.sequence_of_length" pos="78" show="7" showname="Sequence-Of Length: 7" size="2" value="0006"/>
-                                  <field name="s1ap.servedGroupIDs" pos="80" show="7" showname="servedGroupIDs: 7 items" size="14" value="800000040005001e00080009c365">
-                                    <field name="" pos="80" show="Item 0" size="2" value="8000">
-                                      <field name="s1ap.MME_Group_ID" pos="80" show="80:00" showname="MME-Group-ID: 8000" size="2" value="8000"/>
-                                    </field>
-                                    <field name="" pos="82" show="Item 1" size="2" value="0004">
-                                      <field name="s1ap.MME_Group_ID" pos="82" show="00:04" showname="MME-Group-ID: 0004" size="2" value="0004"/>
-                                    </field>
-                                    <field name="" pos="84" show="Item 2" size="2" value="0005">
-                                      <field name="s1ap.MME_Group_ID" pos="84" show="00:05" showname="MME-Group-ID: 0005" size="2" value="0005"/>
-                                    </field>
-                                    <field name="" pos="86" show="Item 3" size="2" value="001e">
-                                      <field name="s1ap.MME_Group_ID" pos="86" show="00:1e" showname="MME-Group-ID: 001e" size="2" value="001e"/>
-                                    </field>
-                                    <field name="" pos="88" show="Item 4" size="2" value="0008">
-                                      <field name="s1ap.MME_Group_ID" pos="88" show="00:08" showname="MME-Group-ID: 0008" size="2" value="0008"/>
-                                    </field>
-                                    <field name="" pos="90" show="Item 5" size="2" value="0009">
-                                      <field name="s1ap.MME_Group_ID" pos="90" show="00:09" showname="MME-Group-ID: 0009" size="2" value="0009"/>
-                                    </field>
-                                    <field name="" pos="92" show="Item 6" size="2" value="c365">
-                                      <field name="s1ap.MME_Group_ID" pos="92" show="c3:65" showname="MME-Group-ID: c365" size="2" value="c365"/>
-                                    </field>
-                                  </field>
-                                  <field hide="yes" name="per.sequence_of_length" pos="94" show="11" showname="Sequence-Of Length: 11" size="1" value="0a"/>
-                                  <field name="s1ap.servedMMECs" pos="95" show="11" showname="servedMMECs: 11 items" size="11" value="011e1f2021222324381d08">
-                                    <field name="" pos="95" show="Item 0" size="1" value="01">
-                                      <field name="s1ap.MME_Code" pos="95" show="01" showname="MME-Code: 01" size="1" value="01"/>
-                                    </field>
-                                    <field name="" pos="96" show="Item 1" size="1" value="1e">
-                                      <field name="s1ap.MME_Code" pos="96" show="1e" showname="MME-Code: 1e" size="1" value="1e"/>
-                                    </field>
-                                    <field name="" pos="97" show="Item 2" size="1" value="1f">
-                                      <field name="s1ap.MME_Code" pos="97" show="1f" showname="MME-Code: 1f" size="1" value="1f"/>
-                                    </field>
-                                    <field name="" pos="98" show="Item 3" size="1" value="20">
-                                      <field name="s1ap.MME_Code" pos="98" show="20" showname="MME-Code: 20" size="1" value="20"/>
-                                    </field>
-                                    <field name="" pos="99" show="Item 4" size="1" value="21">
-                                      <field name="s1ap.MME_Code" pos="99" show="21" showname="MME-Code: 21" size="1" value="21"/>
-                                    </field>
-                                    <field name="" pos="100" show="Item 5" size="1" value="22">
-                                      <field name="s1ap.MME_Code" pos="100" show="22" showname="MME-Code: 22" size="1" value="22"/>
-                                    </field>
-                                    <field name="" pos="101" show="Item 6" size="1" value="23">
-                                      <field name="s1ap.MME_Code" pos="101" show="23" showname="MME-Code: 23" size="1" value="23"/>
-                                    </field>
-                                    <field name="" pos="102" show="Item 7" size="1" value="24">
-                                      <field name="s1ap.MME_Code" pos="102" show="24" showname="MME-Code: 24" size="1" value="24"/>
-                                    </field>
-                                    <field name="" pos="103" show="Item 8" size="1" value="38">
-                                      <field name="s1ap.MME_Code" pos="103" show="38" showname="MME-Code: 38" size="1" value="38"/>
-                                    </field>
-                                    <field name="" pos="104" show="Item 9" size="1" value="1d">
-                                      <field name="s1ap.MME_Code" pos="104" show="1d" showname="MME-Code: 1d" size="1" value="1d"/>
-                                    </field>
-                                    <field name="" pos="105" show="Item 10" size="1" value="08">
-                                      <field name="s1ap.MME_Code" pos="105" show="08" showname="MME-Code: 08" size="1" value="08"/>
-                                    </field>
-                                  </field>
-                                </field>
-                              </field>
-                            </field>
-                          </field>
-                        </field>
-                      </field>
-                      <field name="" pos="106" show="Item 1: id-RelativeMMECapacity" size="5" value="005740010a">
-                        <field name="s1ap.ProtocolIE_Field" pos="106" show="" showname="ProtocolIE-Field" size="5" value="">
-                          <field name="s1ap.id" pos="106" show="87" showname="id: id-RelativeMMECapacity (87)" size="2" value="0057"/>
-                          <field hide="yes" name="per.enum_index" pos="108" show="1" showname="Enumerated Index: 1" size="1" value="40"/>
-                          <field name="s1ap.criticality" pos="108" show="1" showname="criticality: ignore (1)" size="1" value="40"/>
-                          <field hide="yes" name="per.open_type_length" pos="109" show="1" showname="Open Type Length: 1" size="1" value="01"/>
-                          <field name="s1ap.value" pos="110" show="" showname="value" size="1" value="">
-                            <field name="s1ap.RelativeMMECapacity" pos="110" show="10" showname="RelativeMMECapacity: 10" size="1" value="0a"/>
-                          </field>
-                        </field>
-                      </field>
-                    </field>
-                  </field>
-                </field>
-              </field>
-            </field>
-          </proto>
-        </proto>
-      </proto>
-    </proto>
-  </packet>
-  <packet>
-    <proto name="frame" pos="0" showname="Frame 16: 62 bytes on wire (496 bits), 62 bytes captured (496 bits) on interface 0" size="62">
-      <field name="frame.interface_id" pos="0" show="0" showname="Interface id: 0" size="0"/>
-      <field name="frame.encap_type" pos="0" show="1" showname="Encapsulation type: Ethernet (1)" size="0"/>
-      <field name="frame.time" pos="0" show="Sep 25, 2015 16:34:14.290617000" showname="Arrival Time: Sep 25, 2015 16:34:14.290617000 CEST" size="0"/>
-      <field name="frame.offset_shift" pos="0" show="0.000000000" showname="Time shift for this packet: 0.000000000 seconds" size="0"/>
-      <field name="frame.time_epoch" pos="0" show="1443191654.290617000" showname="Epoch Time: 1443191654.290617000 seconds" size="0"/>
-      <field name="frame.time_delta" pos="0" show="0.000129000" showname="Time delta from previous captured frame: 0.000129000 seconds" size="0"/>
-      <field name="frame.time_delta_displayed" pos="0" show="0.000129000" showname="Time delta from previous displayed frame: 0.000129000 seconds" size="0"/>
-      <field name="frame.time_relative" pos="0" show="7.824986000" showname="Time since reference or first frame: 7.824986000 seconds" size="0"/>
-      <field name="frame.number" pos="0" show="16" showname="Frame Number: 16" size="0"/>
-      <field name="frame.len" pos="0" show="62" showname="Frame Length: 62 bytes (496 bits)" size="0"/>
-      <field name="frame.cap_len" pos="0" show="62" showname="Capture Length: 62 bytes (496 bits)" size="0"/>
-      <field name="frame.marked" pos="0" show="0" showname="Frame is marked: False" size="0"/>
-      <field name="frame.ignored" pos="0" show="0" showname="Frame is ignored: False" size="0"/>
-      <field name="frame.protocols" pos="0" show="eth:ip:sctp" showname="Protocols in frame: eth:ip:sctp" size="0"/>
-      <proto name="ip" pos="14" showname="Internet Protocol Version 4, Src: 192.168.12.213 (192.168.12.213), Dst: 192.168.12.17 (192.168.12.17)" size="20">
-        <field name="ip.version" pos="14" show="4" showname="Version: 4" size="1" value="45"/>
-        <field name="ip.hdr_len" pos="14" show="20" showname="Header length: 20 bytes" size="1" value="45"/>
-        <field name="ip.dsfield" pos="15" show="2" showname="Differentiated Services Field: 0x02 (DSCP 0x00: Default; ECN: 0x02: ECT(0) (ECN-Capable Transport))" size="1" value="02">
-          <field name="ip.dsfield.dscp" pos="15" show="0x00" showname="0000 00.. = Differentiated Services Codepoint: Default (0x00)" size="1" unmaskedvalue="02" value="0"/>
-          <field name="ip.dsfield.ecn" pos="15" show="0x02" showname=".... ..10 = Explicit Congestion Notification: ECT(0) (ECN-Capable Transport) (0x02)" size="1" unmaskedvalue="02" value="2"/>
-        </field>
-        <field name="ip.len" pos="16" show="48" showname="Total Length: 48" size="2" value="0030"/>
-        <field name="ip.id" pos="18" show="0x0002" showname="Identification: 0x0002 (2)" size="2" value="0002"/>
-        <field name="ip.flags" pos="20" show="0x02" showname="Flags: 0x02 (Don't Fragment)" size="1" value="40">
-          <field name="ip.flags.rb" pos="20" show="0" showname="0... .... = Reserved bit: Not set" size="1" value="40"/>
-          <field name="ip.flags.df" pos="20" show="1" showname=".1.. .... = Don't fragment: Set" size="1" value="40"/>
-          <field name="ip.flags.mf" pos="20" show="0" showname="..0. .... = More fragments: Not set" size="1" value="40"/>
-        </field>
-        <field name="ip.frag_offset" pos="20" show="0" showname="Fragment offset: 0" size="2" value="4000"/>
-        <field name="ip.ttl" pos="22" show="64" showname="Time to live: 64" size="1" value="40"/>
-        <field name="ip.proto" pos="23" show="132" showname="Protocol: SCTP (132)" size="1" value="84"/>
-        <field name="ip.checksum" pos="24" show="0xa00f" showname="Header checksum: 0xa00f [validation disabled]" size="2" value="a00f">
-          <field name="ip.checksum_good" pos="24" show="0" showname="Good: False" size="2" value="a00f"/>
-          <field name="ip.checksum_bad" pos="24" show="0" showname="Bad: False" size="2" value="a00f"/>
-        </field>
-        <field name="ip.src" pos="26" show="192.168.12.213" showname="Source: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.addr" pos="26" show="192.168.12.213" showname="Source or Destination Address: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.src_host" pos="26" show="192.168.12.213" showname="Source Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.host" pos="26" show="192.168.12.213" showname="Source or Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-        <field name="ip.dst" pos="30" show="192.168.12.17" showname="Destination: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.addr" pos="30" show="192.168.12.17" showname="Source or Destination Address: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.dst_host" pos="30" show="192.168.12.17" showname="Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.host" pos="30" show="192.168.12.17" showname="Source or Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-        <field name="" pos="26" show="Source GeoIP: Unknown" size="4" value="c0a80cd5"/>
-        <field name="" pos="30" show="Destination GeoIP: Unknown" size="4" value="c0a80c11"/>
-        <proto name="sctp" pos="34" showname="Stream Control Transmission Protocol, Src Port: s1-control (36412), Dst Port: s1-control (36412)" size="28">
-          <field name="sctp.srcport" pos="34" show="36412" showname="Source port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.dstport" pos="36" show="36412" showname="Destination port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.verification_tag" pos="38" show="0x4cd1eca0" showname="Verification tag: 0x4cd1eca0" size="4" value="4cd1eca0"/>
-          <field hide="yes" name="sctp.port" pos="34" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-          <field hide="yes" name="sctp.port" pos="36" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.checksum" pos="42" show="0x7385d3c3" showname="Checksum: 0x7385d3c3 (not verified)" size="4" value="7385d3c3"/>
-          <field name="" pos="46" show="SACK chunk (Cumulative TSN: 2008295175, a_rwnd: 106447, gaps: 0, duplicate TSNs: 0)" size="16" value="0300001077b4270700019fcf00000000">
-            <field name="sctp.chunk_type" pos="46" show="3" showname="Chunk type: SACK (3)" size="1" value="03">
-              <field name="sctp.chunk_bit_1" pos="46" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="03" value="0"/>
-              <field name="sctp.chunk_bit_2" pos="46" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="03" value="0"/>
-            </field>
-            <field name="sctp.chunk_flags" pos="47" show="0x00" showname="Chunk flags: 0x00" size="1" value="00">
-              <field name="sctp.sack_nounce_sum" pos="47" show="0" showname=".... ...0 = Nounce sum: 0" size="1" unmaskedvalue="00" value="0"/>
-            </field>
-            <field name="sctp.chunk_length" pos="48" show="16" showname="Chunk length: 16" size="2" value="0010"/>
-            <field name="sctp.sack_cumulative_tsn_ack" pos="50" show="2008295175" showname="Cumulative TSN ACK: 2008295175" size="4" value="77b42707"/>
-            <field name="sctp.sack_a_rwnd" pos="54" show="106447" showname="Advertised receiver window credit (a_rwnd): 106447" size="4" value="00019fcf"/>
-            <field name="sctp.sack_number_of_gap_blocks" pos="58" show="0" showname="Number of gap acknowledgement blocks: 0" size="2" value="0000"/>
-            <field name="sctp.sack_number_of_duplicated_tsns" pos="60" show="0" showname="Number of duplicated TSNs: 0" size="2" value="0000"/>
-          </field>
-        </proto>
-      </proto>
-    </proto>
-  </packet>
-  <packet>
-    <proto name="frame" pos="0" showname="Frame 56: 98 bytes on wire (784 bits), 98 bytes captured (784 bits) on interface 0" size="98">
-      <field name="frame.interface_id" pos="0" show="0" showname="Interface id: 0" size="0"/>
-      <field name="frame.encap_type" pos="0" show="1" showname="Encapsulation type: Ethernet (1)" size="0"/>
-      <field name="frame.time" pos="0" show="Sep 25, 2015 16:34:46.604468000" showname="Arrival Time: Sep 25, 2015 16:34:46.604468000 CEST" size="0"/>
-      <field name="frame.offset_shift" pos="0" show="0.000000000" showname="Time shift for this packet: 0.000000000 seconds" size="0"/>
-      <field name="frame.time_epoch" pos="0" show="1443191686.604468000" showname="Epoch Time: 1443191686.604468000 seconds" size="0"/>
-      <field name="frame.time_delta" pos="0" show="0.112851000" showname="Time delta from previous captured frame: 0.112851000 seconds" size="0"/>
-      <field name="frame.time_delta_displayed" pos="0" show="0.112851000" showname="Time delta from previous displayed frame: 0.112851000 seconds" size="0"/>
-      <field name="frame.time_relative" pos="0" show="40.138837000" showname="Time since reference or first frame: 40.138837000 seconds" size="0"/>
-      <field name="frame.number" pos="0" show="56" showname="Frame Number: 56" size="0"/>
-      <field name="frame.len" pos="0" show="98" showname="Frame Length: 98 bytes (784 bits)" size="0"/>
-      <field name="frame.cap_len" pos="0" show="98" showname="Capture Length: 98 bytes (784 bits)" size="0"/>
-      <field name="frame.marked" pos="0" show="0" showname="Frame is marked: False" size="0"/>
-      <field name="frame.ignored" pos="0" show="0" showname="Frame is ignored: False" size="0"/>
-      <field name="frame.protocols" pos="0" show="eth:ip:sctp" showname="Protocols in frame: eth:ip:sctp" size="0"/>
-      <proto name="ip" pos="14" showname="Internet Protocol Version 4, Src: 192.168.12.213 (192.168.12.213), Dst: 192.168.12.17 (192.168.12.17)" size="20">
-        <field name="ip.version" pos="14" show="4" showname="Version: 4" size="1" value="45"/>
-        <field name="ip.hdr_len" pos="14" show="20" showname="Header length: 20 bytes" size="1" value="45"/>
-        <field name="ip.dsfield" pos="15" show="2" showname="Differentiated Services Field: 0x02 (DSCP 0x00: Default; ECN: 0x02: ECT(0) (ECN-Capable Transport))" size="1" value="02">
-          <field name="ip.dsfield.dscp" pos="15" show="0x00" showname="0000 00.. = Differentiated Services Codepoint: Default (0x00)" size="1" unmaskedvalue="02" value="0"/>
-          <field name="ip.dsfield.ecn" pos="15" show="0x02" showname=".... ..10 = Explicit Congestion Notification: ECT(0) (ECN-Capable Transport) (0x02)" size="1" unmaskedvalue="02" value="2"/>
-        </field>
-        <field name="ip.len" pos="16" show="84" showname="Total Length: 84" size="2" value="0054"/>
-        <field name="ip.id" pos="18" show="0x0003" showname="Identification: 0x0003 (3)" size="2" value="0003"/>
-        <field name="ip.flags" pos="20" show="0x02" showname="Flags: 0x02 (Don't Fragment)" size="1" value="40">
-          <field name="ip.flags.rb" pos="20" show="0" showname="0... .... = Reserved bit: Not set" size="1" value="40"/>
-          <field name="ip.flags.df" pos="20" show="1" showname=".1.. .... = Don't fragment: Set" size="1" value="40"/>
-          <field name="ip.flags.mf" pos="20" show="0" showname="..0. .... = More fragments: Not set" size="1" value="40"/>
-        </field>
-        <field name="ip.frag_offset" pos="20" show="0" showname="Fragment offset: 0" size="2" value="4000"/>
-        <field name="ip.ttl" pos="22" show="64" showname="Time to live: 64" size="1" value="40"/>
-        <field name="ip.proto" pos="23" show="132" showname="Protocol: SCTP (132)" size="1" value="84"/>
-        <field name="ip.checksum" pos="24" show="0x9fea" showname="Header checksum: 0x9fea [validation disabled]" size="2" value="9fea">
-          <field name="ip.checksum_good" pos="24" show="0" showname="Good: False" size="2" value="9fea"/>
-          <field name="ip.checksum_bad" pos="24" show="0" showname="Bad: False" size="2" value="9fea"/>
-        </field>
-        <field name="ip.src" pos="26" show="192.168.12.213" showname="Source: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.addr" pos="26" show="192.168.12.213" showname="Source or Destination Address: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.src_host" pos="26" show="192.168.12.213" showname="Source Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.host" pos="26" show="192.168.12.213" showname="Source or Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-        <field name="ip.dst" pos="30" show="192.168.12.17" showname="Destination: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.addr" pos="30" show="192.168.12.17" showname="Source or Destination Address: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.dst_host" pos="30" show="192.168.12.17" showname="Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.host" pos="30" show="192.168.12.17" showname="Source or Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-        <field name="" pos="26" show="Source GeoIP: Unknown" size="4" value="c0a80cd5"/>
-        <field name="" pos="30" show="Destination GeoIP: Unknown" size="4" value="c0a80c11"/>
-        <proto name="sctp" pos="34" showname="Stream Control Transmission Protocol, Src Port: s1-control (36412), Dst Port: s1-control (36412)" size="64">
-          <field name="sctp.srcport" pos="34" show="36412" showname="Source port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.dstport" pos="36" show="36412" showname="Destination port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.verification_tag" pos="38" show="0x4cd1eca0" showname="Verification tag: 0x4cd1eca0" size="4" value="4cd1eca0"/>
-          <field hide="yes" name="sctp.port" pos="34" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-          <field hide="yes" name="sctp.port" pos="36" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.checksum" pos="42" show="0x0a5b2e92" showname="Checksum: 0x0a5b2e92 (not verified)" size="4" value="0a5b2e92"/>
-          <field name="" pos="46" show="HEARTBEAT chunk (Information: 48 bytes)" size="52" value="040000340001003002008e3cc0a80c110000000000000000007459d10088ffff1e201d8180932214010000007730e920aa62f65b">
-            <field name="sctp.chunk_type" pos="46" show="4" showname="Chunk type: HEARTBEAT (4)" size="1" value="04">
-              <field name="sctp.chunk_bit_1" pos="46" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="04" value="0"/>
-              <field name="sctp.chunk_bit_2" pos="46" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="04" value="0"/>
-            </field>
-            <field name="sctp.chunk_flags" pos="47" show="0x00" showname="Chunk flags: 0x00" size="1" value="00"/>
-            <field name="sctp.chunk_length" pos="48" show="52" showname="Chunk length: 52" size="2" value="0034"/>
-            <field name="" pos="50" show="Heartbeat info parameter (Information: 44 bytes)" size="48" value="0001003002008e3cc0a80c110000000000000000007459d10088ffff1e201d8180932214010000007730e920aa62f65b">
-              <field name="sctp.parameter_type" pos="50" show="0x0001" showname="Parameter type: Heartbeat info (0x0001)" size="2" value="0001">
-                <field name="sctp.parameter_bit_1" pos="50" show="0" showname="0... .... .... .... = Bit: Stop processing of chunk" size="2" unmaskedvalue="0001" value="0"/>
-                <field name="sctp.parameter_bit_2" pos="50" show="0" showname=".0.. .... .... .... = Bit: Do not report" size="2" unmaskedvalue="0001" value="0"/>
-              </field>
-              <field name="sctp.parameter_length" pos="52" show="48" showname="Parameter length: 48" size="2" value="0030"/>
-              <field name="sctp.parameter_heartbeat_information" pos="54" show="02:00:8e:3c:c0:a8:0c:11:00:00:00:00:00:00:00:00:00:74:59:d1:00:88:ff:ff:1e:20:1d:81:80:93:22:14:01:00:00:00:77:30:e9:20:aa:62:f6:5b" showname="Heartbeat information: 02008e3cc0a80c110000000000000000007459d10088ffff..." size="44" value="02008e3cc0a80c110000000000000000007459d10088ffff1e201d8180932214010000007730e920aa62f65b"/>
-            </field>
-          </field>
-        </proto>
-      </proto>
-    </proto>
-  </packet>
-  <packet>
-    <proto name="frame" pos="0" showname="Frame 57: 98 bytes on wire (784 bits), 98 bytes captured (784 bits) on interface 0" size="98">
-      <field name="frame.interface_id" pos="0" show="0" showname="Interface id: 0" size="0"/>
-      <field name="frame.encap_type" pos="0" show="1" showname="Encapsulation type: Ethernet (1)" size="0"/>
-      <field name="frame.time" pos="0" show="Sep 25, 2015 16:34:46.604504000" showname="Arrival Time: Sep 25, 2015 16:34:46.604504000 CEST" size="0"/>
-      <field name="frame.offset_shift" pos="0" show="0.000000000" showname="Time shift for this packet: 0.000000000 seconds" size="0"/>
-      <field name="frame.time_epoch" pos="0" show="1443191686.604504000" showname="Epoch Time: 1443191686.604504000 seconds" size="0"/>
-      <field name="frame.time_delta" pos="0" show="0.000036000" showname="Time delta from previous captured frame: 0.000036000 seconds" size="0"/>
-      <field name="frame.time_delta_displayed" pos="0" show="0.000036000" showname="Time delta from previous displayed frame: 0.000036000 seconds" size="0"/>
-      <field name="frame.time_relative" pos="0" show="40.138873000" showname="Time since reference or first frame: 40.138873000 seconds" size="0"/>
-      <field name="frame.number" pos="0" show="57" showname="Frame Number: 57" size="0"/>
-      <field name="frame.len" pos="0" show="98" showname="Frame Length: 98 bytes (784 bits)" size="0"/>
-      <field name="frame.cap_len" pos="0" show="98" showname="Capture Length: 98 bytes (784 bits)" size="0"/>
-      <field name="frame.marked" pos="0" show="0" showname="Frame is marked: False" size="0"/>
-      <field name="frame.ignored" pos="0" show="0" showname="Frame is ignored: False" size="0"/>
-      <field name="frame.protocols" pos="0" show="eth:ip:sctp" showname="Protocols in frame: eth:ip:sctp" size="0"/>
-      <proto name="ip" pos="14" showname="Internet Protocol Version 4, Src: 192.168.12.17 (192.168.12.17), Dst: 192.168.12.213 (192.168.12.213)" size="20">
-        <field name="ip.version" pos="14" show="4" showname="Version: 4" size="1" value="45"/>
-        <field name="ip.hdr_len" pos="14" show="20" showname="Header length: 20 bytes" size="1" value="45"/>
-        <field name="ip.dsfield" pos="15" show="2" showname="Differentiated Services Field: 0x02 (DSCP 0x00: Default; ECN: 0x02: ECT(0) (ECN-Capable Transport))" size="1" value="02">
-          <field name="ip.dsfield.dscp" pos="15" show="0x00" showname="0000 00.. = Differentiated Services Codepoint: Default (0x00)" size="1" unmaskedvalue="02" value="0"/>
-          <field name="ip.dsfield.ecn" pos="15" show="0x02" showname=".... ..10 = Explicit Congestion Notification: ECT(0) (ECN-Capable Transport) (0x02)" size="1" unmaskedvalue="02" value="2"/>
-        </field>
-        <field name="ip.len" pos="16" show="84" showname="Total Length: 84" size="2" value="0054"/>
-        <field name="ip.id" pos="18" show="0x0000" showname="Identification: 0x0000 (0)" size="2" value="0000"/>
-        <field name="ip.flags" pos="20" show="0x02" showname="Flags: 0x02 (Don't Fragment)" size="1" value="40">
-          <field name="ip.flags.rb" pos="20" show="0" showname="0... .... = Reserved bit: Not set" size="1" value="40"/>
-          <field name="ip.flags.df" pos="20" show="1" showname=".1.. .... = Don't fragment: Set" size="1" value="40"/>
-          <field name="ip.flags.mf" pos="20" show="0" showname="..0. .... = More fragments: Not set" size="1" value="40"/>
-        </field>
-        <field name="ip.frag_offset" pos="20" show="0" showname="Fragment offset: 0" size="2" value="4000"/>
-        <field name="ip.ttl" pos="22" show="64" showname="Time to live: 64" size="1" value="40"/>
-        <field name="ip.proto" pos="23" show="132" showname="Protocol: SCTP (132)" size="1" value="84"/>
-        <field name="ip.checksum" pos="24" show="0x9fed" showname="Header checksum: 0x9fed [validation disabled]" size="2" value="9fed">
-          <field name="ip.checksum_good" pos="24" show="0" showname="Good: False" size="2" value="9fed"/>
-          <field name="ip.checksum_bad" pos="24" show="0" showname="Bad: False" size="2" value="9fed"/>
-        </field>
-        <field name="ip.src" pos="26" show="192.168.12.17" showname="Source: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.addr" pos="26" show="192.168.12.17" showname="Source or Destination Address: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.src_host" pos="26" show="192.168.12.17" showname="Source Host: 192.168.12.17" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.host" pos="26" show="192.168.12.17" showname="Source or Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-        <field name="ip.dst" pos="30" show="192.168.12.213" showname="Destination: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.addr" pos="30" show="192.168.12.213" showname="Source or Destination Address: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.dst_host" pos="30" show="192.168.12.213" showname="Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.host" pos="30" show="192.168.12.213" showname="Source or Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-        <field name="" pos="26" show="Source GeoIP: Unknown" size="4" value="c0a80c11"/>
-        <field name="" pos="30" show="Destination GeoIP: Unknown" size="4" value="c0a80cd5"/>
-        <proto name="sctp" pos="34" showname="Stream Control Transmission Protocol, Src Port: s1-control (36412), Dst Port: s1-control (36412)" size="64">
-          <field name="sctp.srcport" pos="34" show="36412" showname="Source port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.dstport" pos="36" show="36412" showname="Destination port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.verification_tag" pos="38" show="0x54f837ab" showname="Verification tag: 0x54f837ab" size="4" value="54f837ab"/>
-          <field hide="yes" name="sctp.port" pos="34" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-          <field hide="yes" name="sctp.port" pos="36" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.checksum" pos="42" show="0x388245ea" showname="Checksum: 0x388245ea (not verified)" size="4" value="388245ea"/>
-          <field name="" pos="46" show="HEARTBEAT_ACK chunk (Information: 48 bytes)" size="52" value="050000340001003002008e3cc0a80c110000000000000000007459d10088ffff1e201d8180932214010000007730e920aa62f65b">
-            <field name="sctp.chunk_type" pos="46" show="5" showname="Chunk type: HEARTBEAT_ACK (5)" size="1" value="05">
-              <field name="sctp.chunk_bit_1" pos="46" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="05" value="0"/>
-              <field name="sctp.chunk_bit_2" pos="46" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="05" value="0"/>
-            </field>
-            <field name="sctp.chunk_flags" pos="47" show="0x00" showname="Chunk flags: 0x00" size="1" value="00"/>
-            <field name="sctp.chunk_length" pos="48" show="52" showname="Chunk length: 52" size="2" value="0034"/>
-            <field name="" pos="50" show="Heartbeat info parameter (Information: 44 bytes)" size="48" value="0001003002008e3cc0a80c110000000000000000007459d10088ffff1e201d8180932214010000007730e920aa62f65b">
-              <field name="sctp.parameter_type" pos="50" show="0x0001" showname="Parameter type: Heartbeat info (0x0001)" size="2" value="0001">
-                <field name="sctp.parameter_bit_1" pos="50" show="0" showname="0... .... .... .... = Bit: Stop processing of chunk" size="2" unmaskedvalue="0001" value="0"/>
-                <field name="sctp.parameter_bit_2" pos="50" show="0" showname=".0.. .... .... .... = Bit: Do not report" size="2" unmaskedvalue="0001" value="0"/>
-              </field>
-              <field name="sctp.parameter_length" pos="52" show="48" showname="Parameter length: 48" size="2" value="0030"/>
-              <field name="sctp.parameter_heartbeat_information" pos="54" show="02:00:8e:3c:c0:a8:0c:11:00:00:00:00:00:00:00:00:00:74:59:d1:00:88:ff:ff:1e:20:1d:81:80:93:22:14:01:00:00:00:77:30:e9:20:aa:62:f6:5b" showname="Heartbeat information: 02008e3cc0a80c110000000000000000007459d10088ffff..." size="44" value="02008e3cc0a80c110000000000000000007459d10088ffff1e201d8180932214010000007730e920aa62f65b"/>
-            </field>
-          </field>
-        </proto>
-      </proto>
-    </proto>
-  </packet>
-  <packet>
-    <proto name="frame" pos="0" showname="Frame 60: 98 bytes on wire (784 bits), 98 bytes captured (784 bits) on interface 0" size="98">
-      <field name="frame.interface_id" pos="0" show="0" showname="Interface id: 0" size="0"/>
-      <field name="frame.encap_type" pos="0" show="1" showname="Encapsulation type: Ethernet (1)" size="0"/>
-      <field name="frame.time" pos="0" show="Sep 25, 2015 16:34:47.154133000" showname="Arrival Time: Sep 25, 2015 16:34:47.154133000 CEST" size="0"/>
-      <field name="frame.offset_shift" pos="0" show="0.000000000" showname="Time shift for this packet: 0.000000000 seconds" size="0"/>
-      <field name="frame.time_epoch" pos="0" show="1443191687.154133000" showname="Epoch Time: 1443191687.154133000 seconds" size="0"/>
-      <field name="frame.time_delta" pos="0" show="0.500903000" showname="Time delta from previous captured frame: 0.500903000 seconds" size="0"/>
-      <field name="frame.time_delta_displayed" pos="0" show="0.500903000" showname="Time delta from previous displayed frame: 0.500903000 seconds" size="0"/>
-      <field name="frame.time_relative" pos="0" show="40.688502000" showname="Time since reference or first frame: 40.688502000 seconds" size="0"/>
-      <field name="frame.number" pos="0" show="60" showname="Frame Number: 60" size="0"/>
-      <field name="frame.len" pos="0" show="98" showname="Frame Length: 98 bytes (784 bits)" size="0"/>
-      <field name="frame.cap_len" pos="0" show="98" showname="Capture Length: 98 bytes (784 bits)" size="0"/>
-      <field name="frame.marked" pos="0" show="0" showname="Frame is marked: False" size="0"/>
-      <field name="frame.ignored" pos="0" show="0" showname="Frame is ignored: False" size="0"/>
-      <field name="frame.protocols" pos="0" show="eth:ip:sctp" showname="Protocols in frame: eth:ip:sctp" size="0"/>
-      <proto name="ip" pos="14" showname="Internet Protocol Version 4, Src: 192.168.12.17 (192.168.12.17), Dst: 192.168.12.213 (192.168.12.213)" size="20">
-        <field name="ip.version" pos="14" show="4" showname="Version: 4" size="1" value="45"/>
-        <field name="ip.hdr_len" pos="14" show="20" showname="Header length: 20 bytes" size="1" value="45"/>
-        <field name="ip.dsfield" pos="15" show="2" showname="Differentiated Services Field: 0x02 (DSCP 0x00: Default; ECN: 0x02: ECT(0) (ECN-Capable Transport))" size="1" value="02">
-          <field name="ip.dsfield.dscp" pos="15" show="0x00" showname="0000 00.. = Differentiated Services Codepoint: Default (0x00)" size="1" unmaskedvalue="02" value="0"/>
-          <field name="ip.dsfield.ecn" pos="15" show="0x02" showname=".... ..10 = Explicit Congestion Notification: ECT(0) (ECN-Capable Transport) (0x02)" size="1" unmaskedvalue="02" value="2"/>
-        </field>
-        <field name="ip.len" pos="16" show="84" showname="Total Length: 84" size="2" value="0054"/>
-        <field name="ip.id" pos="18" show="0x0000" showname="Identification: 0x0000 (0)" size="2" value="0000"/>
-        <field name="ip.flags" pos="20" show="0x02" showname="Flags: 0x02 (Don't Fragment)" size="1" value="40">
-          <field name="ip.flags.rb" pos="20" show="0" showname="0... .... = Reserved bit: Not set" size="1" value="40"/>
-          <field name="ip.flags.df" pos="20" show="1" showname=".1.. .... = Don't fragment: Set" size="1" value="40"/>
-          <field name="ip.flags.mf" pos="20" show="0" showname="..0. .... = More fragments: Not set" size="1" value="40"/>
-        </field>
-        <field name="ip.frag_offset" pos="20" show="0" showname="Fragment offset: 0" size="2" value="4000"/>
-        <field name="ip.ttl" pos="22" show="64" showname="Time to live: 64" size="1" value="40"/>
-        <field name="ip.proto" pos="23" show="132" showname="Protocol: SCTP (132)" size="1" value="84"/>
-        <field name="ip.checksum" pos="24" show="0x9fed" showname="Header checksum: 0x9fed [validation disabled]" size="2" value="9fed">
-          <field name="ip.checksum_good" pos="24" show="0" showname="Good: False" size="2" value="9fed"/>
-          <field name="ip.checksum_bad" pos="24" show="0" showname="Bad: False" size="2" value="9fed"/>
-        </field>
-        <field name="ip.src" pos="26" show="192.168.12.17" showname="Source: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.addr" pos="26" show="192.168.12.17" showname="Source or Destination Address: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.src_host" pos="26" show="192.168.12.17" showname="Source Host: 192.168.12.17" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.host" pos="26" show="192.168.12.17" showname="Source or Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-        <field name="ip.dst" pos="30" show="192.168.12.213" showname="Destination: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.addr" pos="30" show="192.168.12.213" showname="Source or Destination Address: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.dst_host" pos="30" show="192.168.12.213" showname="Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.host" pos="30" show="192.168.12.213" showname="Source or Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-        <field name="" pos="26" show="Source GeoIP: Unknown" size="4" value="c0a80c11"/>
-        <field name="" pos="30" show="Destination GeoIP: Unknown" size="4" value="c0a80cd5"/>
-        <proto name="sctp" pos="34" showname="Stream Control Transmission Protocol, Src Port: s1-control (36412), Dst Port: s1-control (36412)" size="64">
-          <field name="sctp.srcport" pos="34" show="36412" showname="Source port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.dstport" pos="36" show="36412" showname="Destination port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.verification_tag" pos="38" show="0x54f837ab" showname="Verification tag: 0x54f837ab" size="4" value="54f837ab"/>
-          <field hide="yes" name="sctp.port" pos="34" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-          <field hide="yes" name="sctp.port" pos="36" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.checksum" pos="42" show="0x3ecfdb18" showname="Checksum: 0x3ecfdb18 (not verified)" size="4" value="3ecfdb18"/>
-          <field name="" pos="46" show="HEARTBEAT chunk (Information: 48 bytes)" size="52" value="040000340001003002008e3cc0a80cd50000000000000000000000000000000000000000e00c3300010000008db53fb930a0b65f">
-            <field name="sctp.chunk_type" pos="46" show="4" showname="Chunk type: HEARTBEAT (4)" size="1" value="04">
-              <field name="sctp.chunk_bit_1" pos="46" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="04" value="0"/>
-              <field name="sctp.chunk_bit_2" pos="46" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="04" value="0"/>
-            </field>
-            <field name="sctp.chunk_flags" pos="47" show="0x00" showname="Chunk flags: 0x00" size="1" value="00"/>
-            <field name="sctp.chunk_length" pos="48" show="52" showname="Chunk length: 52" size="2" value="0034"/>
-            <field name="" pos="50" show="Heartbeat info parameter (Information: 44 bytes)" size="48" value="0001003002008e3cc0a80cd50000000000000000000000000000000000000000e00c3300010000008db53fb930a0b65f">
-              <field name="sctp.parameter_type" pos="50" show="0x0001" showname="Parameter type: Heartbeat info (0x0001)" size="2" value="0001">
-                <field name="sctp.parameter_bit_1" pos="50" show="0" showname="0... .... .... .... = Bit: Stop processing of chunk" size="2" unmaskedvalue="0001" value="0"/>
-                <field name="sctp.parameter_bit_2" pos="50" show="0" showname=".0.. .... .... .... = Bit: Do not report" size="2" unmaskedvalue="0001" value="0"/>
-              </field>
-              <field name="sctp.parameter_length" pos="52" show="48" showname="Parameter length: 48" size="2" value="0030"/>
-              <field name="sctp.parameter_heartbeat_information" pos="54" show="02:00:8e:3c:c0:a8:0c:d5:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:e0:0c:33:00:01:00:00:00:8d:b5:3f:b9:30:a0:b6:5f" showname="Heartbeat information: 02008e3cc0a80cd500000000000000000000000000000000..." size="44" value="02008e3cc0a80cd50000000000000000000000000000000000000000e00c3300010000008db53fb930a0b65f"/>
-            </field>
-          </field>
-        </proto>
-      </proto>
-    </proto>
-  </packet>
-  <packet>
-    <proto name="frame" pos="0" showname="Frame 61: 98 bytes on wire (784 bits), 98 bytes captured (784 bits) on interface 0" size="98">
-      <field name="frame.interface_id" pos="0" show="0" showname="Interface id: 0" size="0"/>
-      <field name="frame.encap_type" pos="0" show="1" showname="Encapsulation type: Ethernet (1)" size="0"/>
-      <field name="frame.time" pos="0" show="Sep 25, 2015 16:34:47.154270000" showname="Arrival Time: Sep 25, 2015 16:34:47.154270000 CEST" size="0"/>
-      <field name="frame.offset_shift" pos="0" show="0.000000000" showname="Time shift for this packet: 0.000000000 seconds" size="0"/>
-      <field name="frame.time_epoch" pos="0" show="1443191687.154270000" showname="Epoch Time: 1443191687.154270000 seconds" size="0"/>
-      <field name="frame.time_delta" pos="0" show="0.000137000" showname="Time delta from previous captured frame: 0.000137000 seconds" size="0"/>
-      <field name="frame.time_delta_displayed" pos="0" show="0.000137000" showname="Time delta from previous displayed frame: 0.000137000 seconds" size="0"/>
-      <field name="frame.time_relative" pos="0" show="40.688639000" showname="Time since reference or first frame: 40.688639000 seconds" size="0"/>
-      <field name="frame.number" pos="0" show="61" showname="Frame Number: 61" size="0"/>
-      <field name="frame.len" pos="0" show="98" showname="Frame Length: 98 bytes (784 bits)" size="0"/>
-      <field name="frame.cap_len" pos="0" show="98" showname="Capture Length: 98 bytes (784 bits)" size="0"/>
-      <field name="frame.marked" pos="0" show="0" showname="Frame is marked: False" size="0"/>
-      <field name="frame.ignored" pos="0" show="0" showname="Frame is ignored: False" size="0"/>
-      <field name="frame.protocols" pos="0" show="eth:ip:sctp" showname="Protocols in frame: eth:ip:sctp" size="0"/>
-      <proto name="ip" pos="14" showname="Internet Protocol Version 4, Src: 192.168.12.213 (192.168.12.213), Dst: 192.168.12.17 (192.168.12.17)" size="20">
-        <field name="ip.version" pos="14" show="4" showname="Version: 4" size="1" value="45"/>
-        <field name="ip.hdr_len" pos="14" show="20" showname="Header length: 20 bytes" size="1" value="45"/>
-        <field name="ip.dsfield" pos="15" show="2" showname="Differentiated Services Field: 0x02 (DSCP 0x00: Default; ECN: 0x02: ECT(0) (ECN-Capable Transport))" size="1" value="02">
-          <field name="ip.dsfield.dscp" pos="15" show="0x00" showname="0000 00.. = Differentiated Services Codepoint: Default (0x00)" size="1" unmaskedvalue="02" value="0"/>
-          <field name="ip.dsfield.ecn" pos="15" show="0x02" showname=".... ..10 = Explicit Congestion Notification: ECT(0) (ECN-Capable Transport) (0x02)" size="1" unmaskedvalue="02" value="2"/>
-        </field>
-        <field name="ip.len" pos="16" show="84" showname="Total Length: 84" size="2" value="0054"/>
-        <field name="ip.id" pos="18" show="0x0004" showname="Identification: 0x0004 (4)" size="2" value="0004"/>
-        <field name="ip.flags" pos="20" show="0x02" showname="Flags: 0x02 (Don't Fragment)" size="1" value="40">
-          <field name="ip.flags.rb" pos="20" show="0" showname="0... .... = Reserved bit: Not set" size="1" value="40"/>
-          <field name="ip.flags.df" pos="20" show="1" showname=".1.. .... = Don't fragment: Set" size="1" value="40"/>
-          <field name="ip.flags.mf" pos="20" show="0" showname="..0. .... = More fragments: Not set" size="1" value="40"/>
-        </field>
-        <field name="ip.frag_offset" pos="20" show="0" showname="Fragment offset: 0" size="2" value="4000"/>
-        <field name="ip.ttl" pos="22" show="64" showname="Time to live: 64" size="1" value="40"/>
-        <field name="ip.proto" pos="23" show="132" showname="Protocol: SCTP (132)" size="1" value="84"/>
-        <field name="ip.checksum" pos="24" show="0x9fe9" showname="Header checksum: 0x9fe9 [validation disabled]" size="2" value="9fe9">
-          <field name="ip.checksum_good" pos="24" show="0" showname="Good: False" size="2" value="9fe9"/>
-          <field name="ip.checksum_bad" pos="24" show="0" showname="Bad: False" size="2" value="9fe9"/>
-        </field>
-        <field name="ip.src" pos="26" show="192.168.12.213" showname="Source: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.addr" pos="26" show="192.168.12.213" showname="Source or Destination Address: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.src_host" pos="26" show="192.168.12.213" showname="Source Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.host" pos="26" show="192.168.12.213" showname="Source or Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-        <field name="ip.dst" pos="30" show="192.168.12.17" showname="Destination: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.addr" pos="30" show="192.168.12.17" showname="Source or Destination Address: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.dst_host" pos="30" show="192.168.12.17" showname="Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.host" pos="30" show="192.168.12.17" showname="Source or Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-        <field name="" pos="26" show="Source GeoIP: Unknown" size="4" value="c0a80cd5"/>
-        <field name="" pos="30" show="Destination GeoIP: Unknown" size="4" value="c0a80c11"/>
-        <proto name="sctp" pos="34" showname="Stream Control Transmission Protocol, Src Port: s1-control (36412), Dst Port: s1-control (36412)" size="64">
-          <field name="sctp.srcport" pos="34" show="36412" showname="Source port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.dstport" pos="36" show="36412" showname="Destination port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.verification_tag" pos="38" show="0x4cd1eca0" showname="Verification tag: 0x4cd1eca0" size="4" value="4cd1eca0"/>
-          <field hide="yes" name="sctp.port" pos="34" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-          <field hide="yes" name="sctp.port" pos="36" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.checksum" pos="42" show="0x0c16b060" showname="Checksum: 0x0c16b060 (not verified)" size="4" value="0c16b060"/>
-          <field name="" pos="46" show="HEARTBEAT_ACK chunk (Information: 48 bytes)" size="52" value="050000340001003002008e3cc0a80cd50000000000000000000000000000000000000000e00c3300010000008db53fb930a0b65f">
-            <field name="sctp.chunk_type" pos="46" show="5" showname="Chunk type: HEARTBEAT_ACK (5)" size="1" value="05">
-              <field name="sctp.chunk_bit_1" pos="46" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="05" value="0"/>
-              <field name="sctp.chunk_bit_2" pos="46" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="05" value="0"/>
-            </field>
-            <field name="sctp.chunk_flags" pos="47" show="0x00" showname="Chunk flags: 0x00" size="1" value="00"/>
-            <field name="sctp.chunk_length" pos="48" show="52" showname="Chunk length: 52" size="2" value="0034"/>
-            <field name="" pos="50" show="Heartbeat info parameter (Information: 44 bytes)" size="48" value="0001003002008e3cc0a80cd50000000000000000000000000000000000000000e00c3300010000008db53fb930a0b65f">
-              <field name="sctp.parameter_type" pos="50" show="0x0001" showname="Parameter type: Heartbeat info (0x0001)" size="2" value="0001">
-                <field name="sctp.parameter_bit_1" pos="50" show="0" showname="0... .... .... .... = Bit: Stop processing of chunk" size="2" unmaskedvalue="0001" value="0"/>
-                <field name="sctp.parameter_bit_2" pos="50" show="0" showname=".0.. .... .... .... = Bit: Do not report" size="2" unmaskedvalue="0001" value="0"/>
-              </field>
-              <field name="sctp.parameter_length" pos="52" show="48" showname="Parameter length: 48" size="2" value="0030"/>
-              <field name="sctp.parameter_heartbeat_information" pos="54" show="02:00:8e:3c:c0:a8:0c:d5:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:e0:0c:33:00:01:00:00:00:8d:b5:3f:b9:30:a0:b6:5f" showname="Heartbeat information: 02008e3cc0a80cd500000000000000000000000000000000..." size="44" value="02008e3cc0a80cd50000000000000000000000000000000000000000e00c3300010000008db53fb930a0b65f"/>
-            </field>
-          </field>
-        </proto>
-      </proto>
-    </proto>
-  </packet>
-  <packet>
-    <proto name="frame" pos="0" showname="Frame 76: 186 bytes on wire (1488 bits), 186 bytes captured (1488 bits) on interface 0" size="186">
-      <field name="frame.interface_id" pos="0" show="0" showname="Interface id: 0" size="0"/>
-      <field name="frame.encap_type" pos="0" show="1" showname="Encapsulation type: Ethernet (1)" size="0"/>
-      <field name="frame.time" pos="0" show="Sep 25, 2015 16:34:53.748321000" showname="Arrival Time: Sep 25, 2015 16:34:53.748321000 CEST" size="0"/>
-      <field name="frame.offset_shift" pos="0" show="0.000000000" showname="Time shift for this packet: 0.000000000 seconds" size="0"/>
-      <field name="frame.time_epoch" pos="0" show="1443191693.748321000" showname="Epoch Time: 1443191693.748321000 seconds" size="0"/>
-      <field name="frame.time_delta" pos="0" show="1.074002000" showname="Time delta from previous captured frame: 1.074002000 seconds" size="0"/>
-      <field name="frame.time_delta_displayed" pos="0" show="1.074002000" showname="Time delta from previous displayed frame: 1.074002000 seconds" size="0"/>
-      <field name="frame.time_relative" pos="0" show="47.282690000" showname="Time since reference or first frame: 47.282690000 seconds" size="0"/>
-      <field name="frame.number" pos="0" show="76" showname="Frame Number: 76" size="0"/>
-      <field name="frame.len" pos="0" show="186" showname="Frame Length: 186 bytes (1488 bits)" size="0"/>
-      <field name="frame.cap_len" pos="0" show="186" showname="Capture Length: 186 bytes (1488 bits)" size="0"/>
-      <field name="frame.marked" pos="0" show="0" showname="Frame is marked: False" size="0"/>
-      <field name="frame.ignored" pos="0" show="0" showname="Frame is ignored: False" size="0"/>
-      <field name="frame.protocols" pos="0" show="eth:ip:sctp:s1ap:s1ap:s1ap:s1ap:nas-eps:ipcp:s1ap:s1ap:s1ap:s1ap" showname="Protocols in frame: eth:ip:sctp:s1ap:s1ap:s1ap:s1ap:nas-eps:ipcp:s1ap:s1ap:s1ap:s1ap" size="0"/>
-      <proto name="ip" pos="14" showname="Internet Protocol Version 4, Src: 192.168.12.213 (192.168.12.213), Dst: 192.168.12.17 (192.168.12.17)" size="20">
-        <field name="ip.version" pos="14" show="4" showname="Version: 4" size="1" value="45"/>
-        <field name="ip.hdr_len" pos="14" show="20" showname="Header length: 20 bytes" size="1" value="45"/>
-        <field name="ip.dsfield" pos="15" show="2" showname="Differentiated Services Field: 0x02 (DSCP 0x00: Default; ECN: 0x02: ECT(0) (ECN-Capable Transport))" size="1" value="02">
-          <field name="ip.dsfield.dscp" pos="15" show="0x00" showname="0000 00.. = Differentiated Services Codepoint: Default (0x00)" size="1" unmaskedvalue="02" value="0"/>
-          <field name="ip.dsfield.ecn" pos="15" show="0x02" showname=".... ..10 = Explicit Congestion Notification: ECT(0) (ECN-Capable Transport) (0x02)" size="1" unmaskedvalue="02" value="2"/>
-        </field>
-        <field name="ip.len" pos="16" show="172" showname="Total Length: 172" size="2" value="00ac"/>
-        <field name="ip.id" pos="18" show="0x0005" showname="Identification: 0x0005 (5)" size="2" value="0005"/>
-        <field name="ip.flags" pos="20" show="0x02" showname="Flags: 0x02 (Don't Fragment)" size="1" value="40">
-          <field name="ip.flags.rb" pos="20" show="0" showname="0... .... = Reserved bit: Not set" size="1" value="40"/>
-          <field name="ip.flags.df" pos="20" show="1" showname=".1.. .... = Don't fragment: Set" size="1" value="40"/>
-          <field name="ip.flags.mf" pos="20" show="0" showname="..0. .... = More fragments: Not set" size="1" value="40"/>
-        </field>
-        <field name="ip.frag_offset" pos="20" show="0" showname="Fragment offset: 0" size="2" value="4000"/>
-        <field name="ip.ttl" pos="22" show="64" showname="Time to live: 64" size="1" value="40"/>
-        <field name="ip.proto" pos="23" show="132" showname="Protocol: SCTP (132)" size="1" value="84"/>
-        <field name="ip.checksum" pos="24" show="0x9f90" showname="Header checksum: 0x9f90 [validation disabled]" size="2" value="9f90">
-          <field name="ip.checksum_good" pos="24" show="0" showname="Good: False" size="2" value="9f90"/>
-          <field name="ip.checksum_bad" pos="24" show="0" showname="Bad: False" size="2" value="9f90"/>
-        </field>
-        <field name="ip.src" pos="26" show="192.168.12.213" showname="Source: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.addr" pos="26" show="192.168.12.213" showname="Source or Destination Address: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.src_host" pos="26" show="192.168.12.213" showname="Source Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.host" pos="26" show="192.168.12.213" showname="Source or Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-        <field name="ip.dst" pos="30" show="192.168.12.17" showname="Destination: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.addr" pos="30" show="192.168.12.17" showname="Source or Destination Address: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.dst_host" pos="30" show="192.168.12.17" showname="Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.host" pos="30" show="192.168.12.17" showname="Source or Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-        <field name="" pos="26" show="Source GeoIP: Unknown" size="4" value="c0a80cd5"/>
-        <field name="" pos="30" show="Destination GeoIP: Unknown" size="4" value="c0a80c11"/>
-        <proto name="sctp" pos="34" showname="Stream Control Transmission Protocol, Src Port: s1-control (36412), Dst Port: s1-control (36412)" size="28">
-          <field name="sctp.srcport" pos="34" show="36412" showname="Source port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.dstport" pos="36" show="36412" showname="Destination port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.verification_tag" pos="38" show="0x4cd1eca0" showname="Verification tag: 0x4cd1eca0" size="4" value="4cd1eca0"/>
-          <field hide="yes" name="sctp.port" pos="34" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-          <field hide="yes" name="sctp.port" pos="36" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.checksum" pos="42" show="0x47f403e8" showname="Checksum: 0x47f403e8 (not verified)" size="4" value="47f403e8"/>
-          <field name="" pos="46" show="DATA chunk(ordered, complete segment, TSN: 3304831192, SID: 1, SSN: 0, PPID: 18, payload length: 122 bytes)" size="16" value="0003008ac4fbb8d80001000000000012">
-            <field name="sctp.chunk_type" pos="46" show="0" showname="Chunk type: DATA (0)" size="1" value="00">
-              <field name="sctp.chunk_bit_1" pos="46" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="00" value="0"/>
-              <field name="sctp.chunk_bit_2" pos="46" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="00" value="0"/>
-            </field>
-            <field name="sctp.chunk_flags" pos="47" show="0x03" showname="Chunk flags: 0x03" size="1" value="03">
-              <field name="sctp.data_e_bit" pos="47" show="1" showname=".... ...1 = E-Bit: Last segment" size="1" unmaskedvalue="03" value="1"/>
-              <field name="sctp.data_b_bit" pos="47" show="1" showname=".... ..1. = B-Bit: First segment" size="1" unmaskedvalue="03" value="1"/>
-              <field name="sctp.data_u_bit" pos="47" show="0" showname=".... .0.. = U-Bit: Ordered delivery" size="1" unmaskedvalue="03" value="0"/>
-              <field name="sctp.data_i_bit" pos="47" show="0" showname=".... 0... = I-Bit: Possibly delay SACK" size="1" unmaskedvalue="03" value="0"/>
-            </field>
-            <field name="sctp.chunk_length" pos="48" show="138" showname="Chunk length: 138" size="2" value="008a"/>
-            <field name="sctp.data_tsn" pos="50" show="3304831192" showname="TSN: 3304831192" size="4" value="c4fbb8d8"/>
-            <field name="sctp.data_sid" pos="54" show="0x0001" showname="Stream Identifier: 0x0001" size="2" value="0001"/>
-            <field name="sctp.data_ssn" pos="56" show="0" showname="Stream sequence number: 0" size="2" value="0000"/>
-            <field name="sctp.data_payload_proto_id" pos="58" show="18" showname="Payload protocol identifier: S1 Application Protocol (S1AP) (18)" size="4" value="00000012"/>
-            <field name="sctp.chunk_padding" pos="184" show="00:00" showname="Chunk padding: 0000" size="2" value="0000"/>
-          </field>
-          <proto name="s1ap" pos="62" showname="S1 Application Protocol" size="122">
-            <field hide="yes" name="per.extension_bit" pos="62" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-            <field hide="yes" name="per.choice_index" pos="62" show="0" showname="Choice Index: 0" size="1" value="00"/>
-            <field name="s1ap.S1AP_PDU" pos="62" show="0" showname="S1AP-PDU: initiatingMessage (0)" size="122" value="000c0076000006000800048006692d001a00414017c4dba6bb020741010bf602f8598000016c00092002e0e000200201d011271a8080211001000010810600000000830600000000000d00000a005202f8590001004300060002f8590001006440080002f85900e000000086400130004b000700000000800001">
-              <field name="s1ap.initiatingMessage" pos="62" show="" showname="initiatingMessage" size="122" value="">
-                <field name="s1ap.procedureCode" pos="63" show="12" showname="procedureCode: id-initialUEMessage (12)" size="1" value="0c"/>
-                <field hide="yes" name="per.enum_index" pos="64" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                <field name="s1ap.criticality" pos="64" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                <field hide="yes" name="per.open_type_length" pos="65" show="118" showname="Open Type Length: 118" size="1" value="76"/>
-                <field name="s1ap.value" pos="66" show="" showname="value" size="118" value="">
-                  <field name="s1ap.InitialUEMessage" pos="66" show="" showname="InitialUEMessage" size="118" value="">
-                    <field hide="yes" name="per.extension_bit" pos="66" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-                    <field hide="yes" name="per.sequence_of_length" pos="67" show="6" showname="Sequence-Of Length: 6" size="2" value="0006"/>
-                    <field name="s1ap.protocolIEs" pos="69" show="6" showname="protocolIEs: 6 items" size="115" value="000800048006692d001a00414017c4dba6bb020741010bf602f8598000016c00092002e0e000200201d011271a8080211001000010810600000000830600000000000d00000a005202f8590001004300060002f8590001006440080002f85900e000000086400130004b000700000000800001">
-                      <field name="" pos="69" show="Item 0: id-eNB-UE-S1AP-ID" size="8" value="000800048006692d">
-                        <field name="s1ap.ProtocolIE_Field" pos="69" show="" showname="ProtocolIE-Field" size="8" value="">
-                          <field name="s1ap.id" pos="69" show="8" showname="id: id-eNB-UE-S1AP-ID (8)" size="2" value="0008"/>
-                          <field hide="yes" name="per.enum_index" pos="71" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                          <field name="s1ap.criticality" pos="71" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                          <field hide="yes" name="per.open_type_length" pos="72" show="4" showname="Open Type Length: 4" size="1" value="04"/>
-                          <field name="s1ap.value" pos="73" show="" showname="value" size="4" value="">
-                            <field name="s1ap.ENB_UE_S1AP_ID" pos="73" show="420141" showname="ENB-UE-S1AP-ID: 420141" size="4" value="8006692d"/>
-                          </field>
-                        </field>
-                      </field>
-                      <field name="" pos="77" show="Item 1: id-NAS-PDU" size="69" value="001a00414017c4dba6bb020741010bf602f8598000016c00092002e0e000200201d011271a8080211001000010810600000000830600000000000d00000a005202f8590001">
-                        <field name="s1ap.ProtocolIE_Field" pos="77" show="" showname="ProtocolIE-Field" size="69" value="">
-                          <field name="s1ap.id" pos="77" show="26" showname="id: id-NAS-PDU (26)" size="2" value="001a"/>
-                          <field hide="yes" name="per.enum_index" pos="79" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                          <field name="s1ap.criticality" pos="79" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                          <field hide="yes" name="per.open_type_length" pos="80" show="65" showname="Open Type Length: 65" size="1" value="41"/>
-                          <field name="s1ap.value" pos="81" show="" showname="value" size="65" value="">
-                            <field hide="yes" name="per.octet_string_length" pos="81" show="64" showname="Octet String Length: 64" size="1" value="40"/>
-                            <field name="s1ap.NAS_PDU" pos="82" show="17:c4:db:a6:bb:02:07:41:01:0b:f6:02:f8:59:80:00:01:6c:00:09:20:02:e0:e0:00:20:02:01:d0:11:27:1a:80:80:21:10:01:00:00:10:81:06:00:00:00:00:83:06:00:00:00:00:00:0d:00:00:0a:00:52:02:f8:59:00:01" showname="NAS-PDU: 17c4dba6bb020741010bf602f8598000016c00092002e0e0..." size="64" value="17c4dba6bb020741010bf602f8598000016c00092002e0e000200201d011271a8080211001000010810600000000830600000000000d00000a005202f8590001"/>
-                            <proto name="nas-eps" pos="82" showname="Non-Access-Stratum (NAS)PDU" size="64">
-                              <field name="nas_eps.security_header_type" pos="82" show="1" showname="0001 .... = Security header type: Integrity protected (1)" size="1" unmaskedvalue="17" value="1"/>
-                              <field name="gsm_a.L3_protocol_discriminator" pos="82" show="0x07" showname=".... 0111 = Protocol discriminator: EPS mobility management messages (0x07)" size="1" unmaskedvalue="17" value="7"/>
-                              <field name="nas_eps.msg_auth_code" pos="83" show="0xc4dba6bb" showname="Message authentication code: 0xc4dba6bb" size="4" value="c4dba6bb"/>
-                              <field name="nas_eps.seq_no" pos="87" show="2" showname="Sequence number: 2" size="1" value="02"/>
-                              <field name="nas_eps.security_header_type" pos="88" show="0" showname="0000 .... = Security header type: Plain NAS message, not security protected (0)" size="1" unmaskedvalue="07" value="0"/>
-                              <field name="gsm_a.L3_protocol_discriminator" pos="88" show="0x07" showname=".... 0111 = Protocol discriminator: EPS mobility management messages (0x07)" size="1" unmaskedvalue="07" value="7"/>
-                              <field name="nas_eps.nas_msg_emm_type" pos="89" show="0x41" showname="NAS EPS Mobility Management Message Type: Attach request (0x41)" size="1" value="41"/>
-                              <field name="nas_eps.emm.tsc" pos="90" show="0" showname="0... .... = Type of security context flag (TSC): Native security context (for KSIasme)" size="1" value="01"/>
-                              <field name="nas_eps.emm.nas_key_set_id" pos="90" show="0" showname=".000 .... = NAS key set identifier:  (0)" size="1" value="01"/>
-                              <field name="nas_eps.spare_bits" pos="90" show="0x00" showname=".... 0... = Spare bit(s): 0x00" size="1" value="01"/>
-                              <field name="nas_eps.emm.eps_att_type" pos="90" show="1" showname=".... .001 = EPS attach type: EPS attach (1)" size="1" value="01"/>
-                              <field name="" pos="91" show="EPS mobile identity" size="12" value="0bf602f8598000016c000920">
-                                <field name="gsm_a.len" pos="91" show="11" showname="Length: 11" size="1" value="0b"/>
-                                <field name="nas_eps.emm.odd_even" pos="92" show="0" showname=".... 0... = odd/even indic: 0" size="1" unmaskedvalue="f6" value="0"/>
-                                <field name="nas_eps.emm.type_of_id" pos="92" show="6" showname=".... .110 = Type of identity: GUTI (6)" size="1" unmaskedvalue="f6" value="6"/>
-                                <field name="e212.mcc" pos="93" show="208" showname="Mobile Country Code (MCC): France (208)" size="2" value="02f8"/>
-                                <field name="e212.mnc" pos="94" show="95" showname="Mobile Network Code (MNC): Unknown (95)" size="2" value="f859"/>
-                                <field name="nas_eps.emm.mme_grp_id" pos="96" show="32768" showname="MME Group ID: 32768" size="2" value="8000"/>
-                                <field name="nas_eps.emm.mme_code" pos="98" show="1" showname="MME Code: 1" size="1" value="01"/>
-                                <field name="nas_eps.emm.m_tmsi" pos="99" show="0x6c000920" showname="M-TMSI: 0x6c000920" size="4" value="6c000920"/>
-                              </field>
-                              <field name="" pos="103" show="UE network capability" size="3" value="02e0e0">
-                                <field name="gsm_a.len" pos="103" show="2" showname="Length: 2" size="1" value="02"/>
-                                <field name="nas_eps.emm.eea0" pos="104" show="1" showname="1... .... = EEA0: Supported" size="1" unmaskedvalue="e0" value="1"/>
-                                <field name="nas_eps.emm.128eea1" pos="104" show="1" showname=".1.. .... = 128-EEA1: Supported" size="1" unmaskedvalue="e0" value="1"/>
-                                <field name="nas_eps.emm.128eea2" pos="104" show="1" showname="..1. .... = 128-EEA2: Supported" size="1" unmaskedvalue="e0" value="1"/>
-                                <field name="nas_eps.emm.eea3" pos="104" show="0" showname="...0 .... = 128-EEA3: Not Supported" size="1" unmaskedvalue="e0" value="0"/>
-                                <field name="nas_eps.emm.eea4" pos="104" show="0" showname=".... 0... = EEA4: Not Supported" size="1" unmaskedvalue="e0" value="0"/>
-                                <field name="nas_eps.emm.eea5" pos="104" show="0" showname=".... .0.. = EEA5: Not Supported" size="1" unmaskedvalue="e0" value="0"/>
-                                <field name="nas_eps.emm.eea6" pos="104" show="0" showname=".... ..0. = EEA6: Not Supported" size="1" unmaskedvalue="e0" value="0"/>
-                                <field name="nas_eps.emm.eea7" pos="104" show="0" showname=".... ...0 = EEA7: Not Supported" size="1" unmaskedvalue="e0" value="0"/>
-                                <field name="nas_eps.emm.eia0" pos="105" show="1" showname="1... .... = EIA0: Supported" size="1" unmaskedvalue="e0" value="1"/>
-                                <field name="nas_eps.emm.128eia1" pos="105" show="1" showname=".1.. .... = 128-EIA1: Supported" size="1" unmaskedvalue="e0" value="1"/>
-                                <field name="nas_eps.emm.128eia2" pos="105" show="1" showname="..1. .... = 128-EIA2: Supported" size="1" unmaskedvalue="e0" value="1"/>
-                                <field name="nas_eps.emm.eia3" pos="105" show="0" showname="...0 .... = 128-EIA3: Not Supported" size="1" unmaskedvalue="e0" value="0"/>
-                                <field name="nas_eps.emm.eia4" pos="105" show="0" showname=".... 0... = EIA4: Not Supported" size="1" unmaskedvalue="e0" value="0"/>
-                                <field name="nas_eps.emm.eia5" pos="105" show="0" showname=".... .0.. = EIA5: Not Supported" size="1" unmaskedvalue="e0" value="0"/>
-                                <field name="nas_eps.emm.eia6" pos="105" show="0" showname=".... ..0. = EIA6: Not Supported" size="1" unmaskedvalue="e0" value="0"/>
-                                <field name="nas_eps.emm.eia7" pos="105" show="0" showname=".... ...0 = EIA7: Not Supported" size="1" unmaskedvalue="e0" value="0"/>
-                              </field>
-                              <field name="" pos="106" show="ESM message container" size="34" value="00200201d011271a8080211001000010810600000000830600000000000d00000a00">
-                                <field name="gsm_a.len" pos="106" show="32" showname="Length: 32" size="2" value="0020"/>
-                                <field name="nas_eps.emm.esm_msg_cont" pos="108" show="02:01:d0:11:27:1a:80:80:21:10:01:00:00:10:81:06:00:00:00:00:83:06:00:00:00:00:00:0d:00:00:0a:00" showname="ESM message container contents: 0201d011271a808021100100001081060000000083060000..." size="32" value="0201d011271a8080211001000010810600000000830600000000000d00000a00">
-                                  <field name="nas_eps.bearer_id" pos="108" show="0" showname="0000 .... = EPS bearer identity: No EPS bearer identity assigned (0)" size="1" unmaskedvalue="02" value="0"/>
-                                  <field name="gsm_a.L3_protocol_discriminator" pos="108" show="0x02" showname=".... 0010 = Protocol discriminator: EPS session management messages (0x02)" size="1" unmaskedvalue="02" value="2"/>
-                                  <field name="nas_eps.esm.proc_trans_id" pos="109" show="1" showname="Procedure transaction identity: 1" size="1" value="01"/>
-                                  <field name="nas_eps.nas_msg_esm_type" pos="110" show="0xd0" showname="NAS EPS session management messages: PDN connectivity request (0xd0)" size="1" value="d0"/>
-                                  <field name="nas_eps.esm_pdn_type" pos="111" show="1" showname="0001 .... = PDN type: IPv4 (1)" size="1" value="11"/>
-                                  <field name="nas_eps.esm_request_type" pos="111" show="1" showname=".... 0001 = Request type: initial request (1)" size="1" value="11"/>
-                                  <field name="" pos="112" show="Protocol Configuration Options" size="28" value="271a8080211001000010810600000000830600000000000d00000a00">
-                                    <field name="gsm_a.gm.elem_id" pos="112" show="0x27" showname="Element ID: 0x27" size="1" value="27"/>
-                                    <field name="gsm_a.len" pos="113" show="26" showname="Length: 26" size="1" value="1a"/>
-                                    <field name="gsm_a.gm.sm.link_dir" pos="114" show="0" showname="Link direction: MS to network (0)" size="0"/>
-                                    <field name="gsm_a.gm.sm.ext" pos="114" show="1" showname="1... .... = Extension: True" size="1" unmaskedvalue="80" value="1"/>
-                                    <field name="" pos="114" show="Configuration Protocol: PPP for use with IP PDP type or IP PDN type (0)" size="1" value="80"/>
-                                    <field name="gsm_a.gm.sm.pco_pid" pos="115" show="32801" showname="Protocol or Container ID: Internet Protocol Control Protocol (0x8021)" size="2" value="8021">
-                                      <field name="" pos="117" show="Length: 0x10 (16)" size="1" value="10"/>
-                                      <proto name="ipcp" pos="118" showname="PPP IP Control Protocol" size="16">
-                                        <field name="ppp.code" pos="118" show="1" showname="Code: Configuration Request (1)" size="1" value="01"/>
-                                        <field name="ppp.identifier" pos="119" show="0" showname="Identifier: 0 (0x00)" size="1" value="00"/>
-                                        <field name="ppp.length" pos="120" show="16" showname="Length: 16" size="2" value="0010"/>
-                                        <field name="" pos="122" show="Options: (12 bytes), Primary DNS Server IP Address, Secondary DNS Server IP Address" size="12" value="810600000000830600000000">
-                                          <field name="" pos="122" show="Primary DNS Server IP Address: 0.0.0.0" size="6" value="810600000000">
-                                            <field name="ipcp.opt.type" pos="122" show="129" showname="Type: Primary DNS Server IP Address (129)" size="1" value="81"/>
-                                            <field name="ipcp.opt.length" pos="123" show="6" showname="Length: 6" size="1" value="06"/>
-                                            <field name="ipcp.opt.pri_dns_address" pos="124" show="0.0.0.0" showname="Primary DNS Address: 0.0.0.0 (0.0.0.0)" size="4" value="00000000"/>
-                                          </field>
-                                          <field name="" pos="128" show="Secondary DNS Server IP Address: 0.0.0.0" size="6" value="830600000000">
-                                            <field name="ipcp.opt.type" pos="128" show="131" showname="Type: Secondary DNS Server IP Address (131)" size="1" value="83"/>
-                                            <field name="ipcp.opt.length" pos="129" show="6" showname="Length: 6" size="1" value="06"/>
-                                            <field name="ipcp.opt.sec_dns_address" pos="130" show="0.0.0.0" showname="Secondary DNS Address: 0.0.0.0 (0.0.0.0)" size="4" value="00000000"/>
-                                          </field>
-                                        </field>
-                                      </proto>
-                                    </field>
-                                    <field name="gsm_a.gm.sm.pco_pid" pos="134" show="13" showname="Protocol or Container ID: DNS Server IPv4 Address Request (0x000d)" size="2" value="000d">
-                                      <field name="" pos="136" show="Length: 0x00 (0)" size="1" value="00"/>
-                                    </field>
-                                    <field name="gsm_a.gm.sm.pco_pid" pos="137" show="10" showname="Protocol or Container ID: IP address allocation via NAS signalling (0x000a)" size="2" value="000a">
-                                      <field name="" pos="139" show="Length: 0x00 (0)" size="1" value="00"/>
-                                    </field>
-                                  </field>
-                                </field>
-                              </field>
-                              <field name="" pos="140" show="Tracking area identity - Last visited registered TAI" size="6" value="5202f8590001">
-                                <field name="nas_eps.emm.elem_id" pos="140" show="0x52" showname="Element ID: 0x52" size="1" value="52"/>
-                                <field name="e212.mcc" pos="141" show="208" showname="Mobile Country Code (MCC): France (208)" size="2" value="02f8"/>
-                                <field name="e212.mnc" pos="142" show="95" showname="Mobile Network Code (MNC): Unknown (95)" size="2" value="f859"/>
-                                <field name="nas_eps.emm.tai_tac" pos="144" show="0x0001" showname="Tracking area code(TAC): 0x0001" size="2" value="0001"/>
-                              </field>
-                            </proto>
-                          </field>
-                        </field>
-                      </field>
-                      <field name="" pos="146" show="Item 2: id-TAI" size="10" value="004300060002f8590001">
-                        <field name="s1ap.ProtocolIE_Field" pos="146" show="" showname="ProtocolIE-Field" size="10" value="">
-                          <field name="s1ap.id" pos="146" show="67" showname="id: id-TAI (67)" size="2" value="0043"/>
-                          <field hide="yes" name="per.enum_index" pos="148" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                          <field name="s1ap.criticality" pos="148" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                          <field hide="yes" name="per.open_type_length" pos="149" show="6" showname="Open Type Length: 6" size="1" value="06"/>
-                          <field name="s1ap.value" pos="150" show="" showname="value" size="6" value="">
-                            <field name="s1ap.TAI" pos="150" show="" showname="TAI" size="6" value="">
-                              <field hide="yes" name="per.extension_bit" pos="150" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-                              <field hide="yes" name="per.optional_field_bit" pos="150" show="0" showname=".0.. .... Optional Field Bit: False (iE-Extensions is NOT present)" size="1" unmaskedvalue="00" value="0"/>
-                              <field name="s1ap.pLMNidentity" pos="151" show="02:f8:59" showname="pLMNidentity: 02f859" size="3" value="02f859"/>
-                              <field name="e212.mcc" pos="151" show="208" showname="Mobile Country Code (MCC): France (208)" size="2" value="02f8"/>
-                              <field name="e212.mnc" pos="152" show="95" showname="Mobile Network Code (MNC): Unknown (95)" size="2" value="f859"/>
-                              <field name="s1ap.tAC" pos="154" show="00:01" showname="tAC: 0001" size="2" value="0001"/>
-                            </field>
-                          </field>
-                        </field>
-                      </field>
-                      <field name="" pos="156" show="Item 3: id-EUTRAN-CGI" size="12" value="006440080002f85900e00000">
-                        <field name="s1ap.ProtocolIE_Field" pos="156" show="" showname="ProtocolIE-Field" size="12" value="">
-                          <field name="s1ap.id" pos="156" show="100" showname="id: id-EUTRAN-CGI (100)" size="2" value="0064"/>
-                          <field hide="yes" name="per.enum_index" pos="158" show="1" showname="Enumerated Index: 1" size="1" value="40"/>
-                          <field name="s1ap.criticality" pos="158" show="1" showname="criticality: ignore (1)" size="1" value="40"/>
-                          <field hide="yes" name="per.open_type_length" pos="159" show="8" showname="Open Type Length: 8" size="1" value="08"/>
-                          <field name="s1ap.value" pos="160" show="" showname="value" size="8" value="">
-                            <field name="s1ap.EUTRAN_CGI" pos="160" show="" showname="EUTRAN-CGI" size="7" value="">
-                              <field hide="yes" name="per.extension_bit" pos="160" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-                              <field hide="yes" name="per.optional_field_bit" pos="160" show="0" showname=".0.. .... Optional Field Bit: False (iE-Extensions is NOT present)" size="1" unmaskedvalue="00" value="0"/>
-                              <field name="s1ap.pLMNidentity" pos="161" show="02:f8:59" showname="pLMNidentity: 02f859" size="3" value="02f859"/>
-                              <field name="e212.mcc" pos="161" show="208" showname="Mobile Country Code (MCC): France (208)" size="2" value="02f8"/>
-                              <field name="e212.mnc" pos="162" show="95" showname="Mobile Network Code (MNC): Unknown (95)" size="2" value="f859"/>
-                              <field name="s1ap.cell_ID" pos="160" show="00:e0:00:00" showname="cell-ID: 00e00000 [bit length 28, 4 LSB pad bits, 0000 0000  1110 0000  0000 0000  0000 .... decimal value 917504]" size="4" value="00e00000"/>
-                            </field>
-                          </field>
-                        </field>
-                      </field>
-                      <field name="" pos="168" show="Item 4: id-RRC-Establishment-Cause" size="5" value="0086400130">
-                        <field name="s1ap.ProtocolIE_Field" pos="168" show="" showname="ProtocolIE-Field" size="5" value="">
-                          <field name="s1ap.id" pos="168" show="134" showname="id: id-RRC-Establishment-Cause (134)" size="2" value="0086"/>
-                          <field hide="yes" name="per.enum_index" pos="170" show="1" showname="Enumerated Index: 1" size="1" value="40"/>
-                          <field name="s1ap.criticality" pos="170" show="1" showname="criticality: ignore (1)" size="1" value="40"/>
-                          <field hide="yes" name="per.open_type_length" pos="171" show="1" showname="Open Type Length: 1" size="1" value="01"/>
-                          <field name="s1ap.value" pos="172" show="" showname="value" size="1" value="">
-                            <field hide="yes" name="per.extension_present_bit" pos="172" show="0" showname="0... .... Extension Present Bit: False" size="1" unmaskedvalue="30" value="0"/>
-                            <field hide="yes" name="per.enum_index" pos="172" show="3" showname="Enumerated Index: 3" size="1" value="30"/>
-                            <field name="s1ap.RRC_Establishment_Cause" pos="172" show="3" showname="RRC-Establishment-Cause: mo-Signalling (3)" size="1" value="30"/>
-                          </field>
-                        </field>
-                      </field>
-                      <field name="" pos="173" show="Item 5: id-GUMMEI-ID" size="11" value="004b000700000000800001">
-                        <field name="s1ap.ProtocolIE_Field" pos="173" show="" showname="ProtocolIE-Field" size="11" value="">
-                          <field name="s1ap.id" pos="173" show="75" showname="id: id-GUMMEI-ID (75)" size="2" value="004b"/>
-                          <field hide="yes" name="per.enum_index" pos="175" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                          <field name="s1ap.criticality" pos="175" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                          <field hide="yes" name="per.open_type_length" pos="176" show="7" showname="Open Type Length: 7" size="1" value="07"/>
-                          <field name="s1ap.value" pos="177" show="" showname="value" size="7" value="">
-                            <field name="s1ap.GUMMEI" pos="177" show="" showname="GUMMEI" size="7" value="">
-                              <field hide="yes" name="per.extension_bit" pos="177" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-                              <field hide="yes" name="per.optional_field_bit" pos="177" show="0" showname=".0.. .... Optional Field Bit: False (iE-Extensions is NOT present)" size="1" unmaskedvalue="00" value="0"/>
-                              <field name="s1ap.pLMN_Identity" pos="178" show="00:00:00" showname="pLMN-Identity: 000000" size="3" value="000000"/>
-                              <field name="e212.mcc" pos="178" show="0" showname="Mobile Country Code (MCC): Unknown (0)" size="2" value="0000"/>
-                              <field name="e212.mnc" pos="179" show="0" showname="Mobile Network Code (MNC): Unknown (000)" size="2" value="0000"/>
-                              <field name="s1ap.mME_Group_ID" pos="181" show="80:00" showname="mME-Group-ID: 8000" size="2" value="8000"/>
-                              <field name="s1ap.mME_Code" pos="183" show="01" showname="mME-Code: 01" size="1" value="01"/>
-                            </field>
-                          </field>
-                        </field>
-                      </field>
-                    </field>
-                  </field>
-                </field>
-              </field>
-            </field>
-          </proto>
-        </proto>
-      </proto>
-    </proto>
-  </packet>
-  <packet>
-    <proto name="frame" pos="0" showname="Frame 77: 110 bytes on wire (880 bits), 110 bytes captured (880 bits) on interface 0" size="110">
-      <field name="frame.interface_id" pos="0" show="0" showname="Interface id: 0" size="0"/>
-      <field name="frame.encap_type" pos="0" show="1" showname="Encapsulation type: Ethernet (1)" size="0"/>
-      <field name="frame.time" pos="0" show="Sep 25, 2015 16:34:53.749945000" showname="Arrival Time: Sep 25, 2015 16:34:53.749945000 CEST" size="0"/>
-      <field name="frame.offset_shift" pos="0" show="0.000000000" showname="Time shift for this packet: 0.000000000 seconds" size="0"/>
-      <field name="frame.time_epoch" pos="0" show="1443191693.749945000" showname="Epoch Time: 1443191693.749945000 seconds" size="0"/>
-      <field name="frame.time_delta" pos="0" show="0.001624000" showname="Time delta from previous captured frame: 0.001624000 seconds" size="0"/>
-      <field name="frame.time_delta_displayed" pos="0" show="0.001624000" showname="Time delta from previous displayed frame: 0.001624000 seconds" size="0"/>
-      <field name="frame.time_relative" pos="0" show="47.284314000" showname="Time since reference or first frame: 47.284314000 seconds" size="0"/>
-      <field name="frame.number" pos="0" show="77" showname="Frame Number: 77" size="0"/>
-      <field name="frame.len" pos="0" show="110" showname="Frame Length: 110 bytes (880 bits)" size="0"/>
-      <field name="frame.cap_len" pos="0" show="110" showname="Capture Length: 110 bytes (880 bits)" size="0"/>
-      <field name="frame.marked" pos="0" show="0" showname="Frame is marked: False" size="0"/>
-      <field name="frame.ignored" pos="0" show="0" showname="Frame is ignored: False" size="0"/>
-      <field name="frame.protocols" pos="0" show="eth:ip:sctp:s1ap:s1ap:s1ap:s1ap:s1ap:nas-eps" showname="Protocols in frame: eth:ip:sctp:s1ap:s1ap:s1ap:s1ap:s1ap:nas-eps" size="0"/>
-      <proto name="ip" pos="14" showname="Internet Protocol Version 4, Src: 192.168.12.17 (192.168.12.17), Dst: 192.168.12.213 (192.168.12.213)" size="20">
-        <field name="ip.version" pos="14" show="4" showname="Version: 4" size="1" value="45"/>
-        <field name="ip.hdr_len" pos="14" show="20" showname="Header length: 20 bytes" size="1" value="45"/>
-        <field name="ip.dsfield" pos="15" show="2" showname="Differentiated Services Field: 0x02 (DSCP 0x00: Default; ECN: 0x02: ECT(0) (ECN-Capable Transport))" size="1" value="02">
-          <field name="ip.dsfield.dscp" pos="15" show="0x00" showname="0000 00.. = Differentiated Services Codepoint: Default (0x00)" size="1" unmaskedvalue="02" value="0"/>
-          <field name="ip.dsfield.ecn" pos="15" show="0x02" showname=".... ..10 = Explicit Congestion Notification: ECT(0) (ECN-Capable Transport) (0x02)" size="1" unmaskedvalue="02" value="2"/>
-        </field>
-        <field name="ip.len" pos="16" show="96" showname="Total Length: 96" size="2" value="0060"/>
-        <field name="ip.id" pos="18" show="0x0000" showname="Identification: 0x0000 (0)" size="2" value="0000"/>
-        <field name="ip.flags" pos="20" show="0x02" showname="Flags: 0x02 (Don't Fragment)" size="1" value="40">
-          <field name="ip.flags.rb" pos="20" show="0" showname="0... .... = Reserved bit: Not set" size="1" value="40"/>
-          <field name="ip.flags.df" pos="20" show="1" showname=".1.. .... = Don't fragment: Set" size="1" value="40"/>
-          <field name="ip.flags.mf" pos="20" show="0" showname="..0. .... = More fragments: Not set" size="1" value="40"/>
-        </field>
-        <field name="ip.frag_offset" pos="20" show="0" showname="Fragment offset: 0" size="2" value="4000"/>
-        <field name="ip.ttl" pos="22" show="64" showname="Time to live: 64" size="1" value="40"/>
-        <field name="ip.proto" pos="23" show="132" showname="Protocol: SCTP (132)" size="1" value="84"/>
-        <field name="ip.checksum" pos="24" show="0x9fe1" showname="Header checksum: 0x9fe1 [validation disabled]" size="2" value="9fe1">
-          <field name="ip.checksum_good" pos="24" show="0" showname="Good: False" size="2" value="9fe1"/>
-          <field name="ip.checksum_bad" pos="24" show="0" showname="Bad: False" size="2" value="9fe1"/>
-        </field>
-        <field name="ip.src" pos="26" show="192.168.12.17" showname="Source: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.addr" pos="26" show="192.168.12.17" showname="Source or Destination Address: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.src_host" pos="26" show="192.168.12.17" showname="Source Host: 192.168.12.17" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.host" pos="26" show="192.168.12.17" showname="Source or Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-        <field name="ip.dst" pos="30" show="192.168.12.213" showname="Destination: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.addr" pos="30" show="192.168.12.213" showname="Source or Destination Address: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.dst_host" pos="30" show="192.168.12.213" showname="Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.host" pos="30" show="192.168.12.213" showname="Source or Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-        <field name="" pos="26" show="Source GeoIP: Unknown" size="4" value="c0a80c11"/>
-        <field name="" pos="30" show="Destination GeoIP: Unknown" size="4" value="c0a80cd5"/>
-        <proto name="sctp" pos="34" showname="Stream Control Transmission Protocol, Src Port: s1-control (36412), Dst Port: s1-control (36412)" size="44">
-          <field name="sctp.srcport" pos="34" show="36412" showname="Source port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.dstport" pos="36" show="36412" showname="Destination port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.verification_tag" pos="38" show="0x54f837ab" showname="Verification tag: 0x54f837ab" size="4" value="54f837ab"/>
-          <field hide="yes" name="sctp.port" pos="34" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-          <field hide="yes" name="sctp.port" pos="36" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.checksum" pos="42" show="0x69f9ecaa" showname="Checksum: 0x69f9ecaa (not verified)" size="4" value="69f9ecaa"/>
-          <field name="" pos="46" show="SACK chunk (Cumulative TSN: 3304831192, a_rwnd: 106496, gaps: 0, duplicate TSNs: 0)" size="16" value="03000010c4fbb8d80001a00000000000">
-            <field name="sctp.chunk_type" pos="46" show="3" showname="Chunk type: SACK (3)" size="1" value="03">
-              <field name="sctp.chunk_bit_1" pos="46" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="03" value="0"/>
-              <field name="sctp.chunk_bit_2" pos="46" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="03" value="0"/>
-            </field>
-            <field name="sctp.chunk_flags" pos="47" show="0x00" showname="Chunk flags: 0x00" size="1" value="00">
-              <field name="sctp.sack_nounce_sum" pos="47" show="0" showname=".... ...0 = Nounce sum: 0" size="1" unmaskedvalue="00" value="0"/>
-            </field>
-            <field name="sctp.chunk_length" pos="48" show="16" showname="Chunk length: 16" size="2" value="0010"/>
-            <field name="sctp.sack_cumulative_tsn_ack" pos="50" show="3304831192" showname="Cumulative TSN ACK: 3304831192" size="4" value="c4fbb8d8"/>
-            <field name="sctp.sack_a_rwnd" pos="54" show="106496" showname="Advertised receiver window credit (a_rwnd): 106496" size="4" value="0001a000"/>
-            <field name="sctp.sack_number_of_gap_blocks" pos="58" show="0" showname="Number of gap acknowledgement blocks: 0" size="2" value="0000"/>
-            <field name="sctp.sack_number_of_duplicated_tsns" pos="60" show="0" showname="Number of duplicated TSNs: 0" size="2" value="0000"/>
-          </field>
-          <field name="" pos="62" show="DATA chunk(ordered, complete segment, TSN: 2008295176, SID: 1, SSN: 0, PPID: 301989888, payload length: 32 bytes)" size="16" value="0003003077b427080001000012000000">
-            <field name="sctp.chunk_type" pos="62" show="0" showname="Chunk type: DATA (0)" size="1" value="00">
-              <field name="sctp.chunk_bit_1" pos="62" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="00" value="0"/>
-              <field name="sctp.chunk_bit_2" pos="62" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="00" value="0"/>
-            </field>
-            <field name="sctp.chunk_flags" pos="63" show="0x03" showname="Chunk flags: 0x03" size="1" value="03">
-              <field name="sctp.data_e_bit" pos="63" show="1" showname=".... ...1 = E-Bit: Last segment" size="1" unmaskedvalue="03" value="1"/>
-              <field name="sctp.data_b_bit" pos="63" show="1" showname=".... ..1. = B-Bit: First segment" size="1" unmaskedvalue="03" value="1"/>
-              <field name="sctp.data_u_bit" pos="63" show="0" showname=".... .0.. = U-Bit: Ordered delivery" size="1" unmaskedvalue="03" value="0"/>
-              <field name="sctp.data_i_bit" pos="63" show="0" showname=".... 0... = I-Bit: Possibly delay SACK" size="1" unmaskedvalue="03" value="0"/>
-            </field>
-            <field name="sctp.chunk_length" pos="64" show="48" showname="Chunk length: 48" size="2" value="0030"/>
-            <field name="sctp.data_tsn" pos="66" show="2008295176" showname="TSN: 2008295176" size="4" value="77b42708"/>
-            <field name="sctp.data_sid" pos="70" show="0x0001" showname="Stream Identifier: 0x0001" size="2" value="0001"/>
-            <field name="sctp.data_ssn" pos="72" show="0" showname="Stream sequence number: 0" size="2" value="0000"/>
-            <field name="sctp.data_payload_proto_id" pos="74" show="301989888" showname="Payload protocol identifier: Unknown (301989888)" size="4" value="12000000"/>
-          </field>
-          <proto name="s1ap" pos="78" showname="S1 Application Protocol" size="32">
-            <field hide="yes" name="per.extension_bit" pos="78" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-            <field hide="yes" name="per.choice_index" pos="78" show="0" showname="Choice Index: 0" size="1" value="00"/>
-            <field name="s1ap.S1AP_PDU" pos="78" show="0" showname="S1AP-PDU: initiatingMessage (0)" size="32" value="000b001c00000300000005c0740010d0000800048006692d001a000403075501">
-              <field name="s1ap.initiatingMessage" pos="78" show="" showname="initiatingMessage" size="32" value="">
-                <field name="s1ap.procedureCode" pos="79" show="11" showname="procedureCode: id-downlinkNASTransport (11)" size="1" value="0b"/>
-                <field hide="yes" name="per.enum_index" pos="80" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                <field name="s1ap.criticality" pos="80" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                <field hide="yes" name="per.open_type_length" pos="81" show="28" showname="Open Type Length: 28" size="1" value="1c"/>
-                <field name="s1ap.value" pos="82" show="" showname="value" size="28" value="">
-                  <field name="s1ap.DownlinkNASTransport" pos="82" show="" showname="DownlinkNASTransport" size="28" value="">
-                    <field hide="yes" name="per.extension_bit" pos="82" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-                    <field hide="yes" name="per.sequence_of_length" pos="83" show="3" showname="Sequence-Of Length: 3" size="2" value="0003"/>
-                    <field name="s1ap.protocolIEs" pos="85" show="3" showname="protocolIEs: 3 items" size="25" value="00000005c0740010d0000800048006692d001a000403075501">
-                      <field name="" pos="85" show="Item 0: id-MME-UE-S1AP-ID" size="9" value="00000005c0740010d0">
-                        <field name="s1ap.ProtocolIE_Field" pos="85" show="" showname="ProtocolIE-Field" size="9" value="">
-                          <field name="s1ap.id" pos="85" show="0" showname="id: id-MME-UE-S1AP-ID (0)" size="2" value="0000"/>
-                          <field hide="yes" name="per.enum_index" pos="87" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                          <field name="s1ap.criticality" pos="87" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                          <field hide="yes" name="per.open_type_length" pos="88" show="5" showname="Open Type Length: 5" size="1" value="05"/>
-                          <field name="s1ap.value" pos="89" show="" showname="value" size="5" value="">
-                            <field name="s1ap.MME_UE_S1AP_ID" pos="89" show="1946161360" showname="MME-UE-S1AP-ID: 1946161360" size="5" value="c0740010d0"/>
-                          </field>
-                        </field>
-                      </field>
-                      <field name="" pos="94" show="Item 1: id-eNB-UE-S1AP-ID" size="8" value="000800048006692d">
-                        <field name="s1ap.ProtocolIE_Field" pos="94" show="" showname="ProtocolIE-Field" size="8" value="">
-                          <field name="s1ap.id" pos="94" show="8" showname="id: id-eNB-UE-S1AP-ID (8)" size="2" value="0008"/>
-                          <field hide="yes" name="per.enum_index" pos="96" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                          <field name="s1ap.criticality" pos="96" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                          <field hide="yes" name="per.open_type_length" pos="97" show="4" showname="Open Type Length: 4" size="1" value="04"/>
-                          <field name="s1ap.value" pos="98" show="" showname="value" size="4" value="">
-                            <field name="s1ap.ENB_UE_S1AP_ID" pos="98" show="420141" showname="ENB-UE-S1AP-ID: 420141" size="4" value="8006692d"/>
-                          </field>
-                        </field>
-                      </field>
-                      <field name="" pos="102" show="Item 2: id-NAS-PDU" size="8" value="001a000403075501">
-                        <field name="s1ap.ProtocolIE_Field" pos="102" show="" showname="ProtocolIE-Field" size="8" value="">
-                          <field name="s1ap.id" pos="102" show="26" showname="id: id-NAS-PDU (26)" size="2" value="001a"/>
-                          <field hide="yes" name="per.enum_index" pos="104" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                          <field name="s1ap.criticality" pos="104" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                          <field hide="yes" name="per.open_type_length" pos="105" show="4" showname="Open Type Length: 4" size="1" value="04"/>
-                          <field name="s1ap.value" pos="106" show="" showname="value" size="4" value="">
-                            <field hide="yes" name="per.octet_string_length" pos="106" show="3" showname="Octet String Length: 3" size="1" value="03"/>
-                            <field name="s1ap.NAS_PDU" pos="107" show="07:55:01" showname="NAS-PDU: 075501" size="3" value="075501"/>
-                            <proto name="nas-eps" pos="107" showname="Non-Access-Stratum (NAS)PDU" size="3">
-                              <field name="nas_eps.security_header_type" pos="107" show="0" showname="0000 .... = Security header type: Plain NAS message, not security protected (0)" size="1" unmaskedvalue="07" value="0"/>
-                              <field name="gsm_a.L3_protocol_discriminator" pos="107" show="0x07" showname=".... 0111 = Protocol discriminator: EPS mobility management messages (0x07)" size="1" unmaskedvalue="07" value="7"/>
-                              <field name="nas_eps.nas_msg_emm_type" pos="108" show="0x55" showname="NAS EPS Mobility Management Message Type: Identity request (0x55)" size="1" value="55"/>
-                              <field name="nas_eps.emm.spare_half_octet" pos="109" show="0" showname="0000 .... = Spare half octet: 0" size="1" value="01"/>
-                              <field name="nas_eps.emm.id_type2" pos="109" show="1" showname=".... 0001 = Identity type 2: IMSI (1)" size="1" value="01"/>
-                            </proto>
-                          </field>
-                        </field>
-                      </field>
-                    </field>
-                  </field>
-                </field>
-              </field>
-            </field>
-          </proto>
-        </proto>
-      </proto>
-    </proto>
-  </packet>
-  <packet>
-    <proto name="frame" pos="0" showname="Frame 78: 146 bytes on wire (1168 bits), 146 bytes captured (1168 bits) on interface 0" size="146">
-      <field name="frame.interface_id" pos="0" show="0" showname="Interface id: 0" size="0"/>
-      <field name="frame.encap_type" pos="0" show="1" showname="Encapsulation type: Ethernet (1)" size="0"/>
-      <field name="frame.time" pos="0" show="Sep 25, 2015 16:34:53.767126000" showname="Arrival Time: Sep 25, 2015 16:34:53.767126000 CEST" size="0"/>
-      <field name="frame.offset_shift" pos="0" show="0.000000000" showname="Time shift for this packet: 0.000000000 seconds" size="0"/>
-      <field name="frame.time_epoch" pos="0" show="1443191693.767126000" showname="Epoch Time: 1443191693.767126000 seconds" size="0"/>
-      <field name="frame.time_delta" pos="0" show="0.017181000" showname="Time delta from previous captured frame: 0.017181000 seconds" size="0"/>
-      <field name="frame.time_delta_displayed" pos="0" show="0.017181000" showname="Time delta from previous displayed frame: 0.017181000 seconds" size="0"/>
-      <field name="frame.time_relative" pos="0" show="47.301495000" showname="Time since reference or first frame: 47.301495000 seconds" size="0"/>
-      <field name="frame.number" pos="0" show="78" showname="Frame Number: 78" size="0"/>
-      <field name="frame.len" pos="0" show="146" showname="Frame Length: 146 bytes (1168 bits)" size="0"/>
-      <field name="frame.cap_len" pos="0" show="146" showname="Capture Length: 146 bytes (1168 bits)" size="0"/>
-      <field name="frame.marked" pos="0" show="0" showname="Frame is marked: False" size="0"/>
-      <field name="frame.ignored" pos="0" show="0" showname="Frame is ignored: False" size="0"/>
-      <field name="frame.protocols" pos="0" show="eth:ip:sctp:s1ap:s1ap:s1ap:s1ap:s1ap:nas-eps:s1ap:s1ap" showname="Protocols in frame: eth:ip:sctp:s1ap:s1ap:s1ap:s1ap:s1ap:nas-eps:s1ap:s1ap" size="0"/>
-      <proto name="ip" pos="14" showname="Internet Protocol Version 4, Src: 192.168.12.213 (192.168.12.213), Dst: 192.168.12.17 (192.168.12.17)" size="20">
-        <field name="ip.version" pos="14" show="4" showname="Version: 4" size="1" value="45"/>
-        <field name="ip.hdr_len" pos="14" show="20" showname="Header length: 20 bytes" size="1" value="45"/>
-        <field name="ip.dsfield" pos="15" show="2" showname="Differentiated Services Field: 0x02 (DSCP 0x00: Default; ECN: 0x02: ECT(0) (ECN-Capable Transport))" size="1" value="02">
-          <field name="ip.dsfield.dscp" pos="15" show="0x00" showname="0000 00.. = Differentiated Services Codepoint: Default (0x00)" size="1" unmaskedvalue="02" value="0"/>
-          <field name="ip.dsfield.ecn" pos="15" show="0x02" showname=".... ..10 = Explicit Congestion Notification: ECT(0) (ECN-Capable Transport) (0x02)" size="1" unmaskedvalue="02" value="2"/>
-        </field>
-        <field name="ip.len" pos="16" show="132" showname="Total Length: 132" size="2" value="0084"/>
-        <field name="ip.id" pos="18" show="0x0006" showname="Identification: 0x0006 (6)" size="2" value="0006"/>
-        <field name="ip.flags" pos="20" show="0x02" showname="Flags: 0x02 (Don't Fragment)" size="1" value="40">
-          <field name="ip.flags.rb" pos="20" show="0" showname="0... .... = Reserved bit: Not set" size="1" value="40"/>
-          <field name="ip.flags.df" pos="20" show="1" showname=".1.. .... = Don't fragment: Set" size="1" value="40"/>
-          <field name="ip.flags.mf" pos="20" show="0" showname="..0. .... = More fragments: Not set" size="1" value="40"/>
-        </field>
-        <field name="ip.frag_offset" pos="20" show="0" showname="Fragment offset: 0" size="2" value="4000"/>
-        <field name="ip.ttl" pos="22" show="64" showname="Time to live: 64" size="1" value="40"/>
-        <field name="ip.proto" pos="23" show="132" showname="Protocol: SCTP (132)" size="1" value="84"/>
-        <field name="ip.checksum" pos="24" show="0x9fb7" showname="Header checksum: 0x9fb7 [validation disabled]" size="2" value="9fb7">
-          <field name="ip.checksum_good" pos="24" show="0" showname="Good: False" size="2" value="9fb7"/>
-          <field name="ip.checksum_bad" pos="24" show="0" showname="Bad: False" size="2" value="9fb7"/>
-        </field>
-        <field name="ip.src" pos="26" show="192.168.12.213" showname="Source: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.addr" pos="26" show="192.168.12.213" showname="Source or Destination Address: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.src_host" pos="26" show="192.168.12.213" showname="Source Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.host" pos="26" show="192.168.12.213" showname="Source or Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-        <field name="ip.dst" pos="30" show="192.168.12.17" showname="Destination: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.addr" pos="30" show="192.168.12.17" showname="Source or Destination Address: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.dst_host" pos="30" show="192.168.12.17" showname="Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.host" pos="30" show="192.168.12.17" showname="Source or Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-        <field name="" pos="26" show="Source GeoIP: Unknown" size="4" value="c0a80cd5"/>
-        <field name="" pos="30" show="Destination GeoIP: Unknown" size="4" value="c0a80c11"/>
-        <proto name="sctp" pos="34" showname="Stream Control Transmission Protocol, Src Port: s1-control (36412), Dst Port: s1-control (36412)" size="44">
-          <field name="sctp.srcport" pos="34" show="36412" showname="Source port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.dstport" pos="36" show="36412" showname="Destination port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.verification_tag" pos="38" show="0x4cd1eca0" showname="Verification tag: 0x4cd1eca0" size="4" value="4cd1eca0"/>
-          <field hide="yes" name="sctp.port" pos="34" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-          <field hide="yes" name="sctp.port" pos="36" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.checksum" pos="42" show="0x6cae2fa5" showname="Checksum: 0x6cae2fa5 (not verified)" size="4" value="6cae2fa5"/>
-          <field name="" pos="46" show="SACK chunk (Cumulative TSN: 2008295176, a_rwnd: 106496, gaps: 0, duplicate TSNs: 0)" size="16" value="0300001077b427080001a00000000000">
-            <field name="sctp.chunk_type" pos="46" show="3" showname="Chunk type: SACK (3)" size="1" value="03">
-              <field name="sctp.chunk_bit_1" pos="46" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="03" value="0"/>
-              <field name="sctp.chunk_bit_2" pos="46" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="03" value="0"/>
-            </field>
-            <field name="sctp.chunk_flags" pos="47" show="0x00" showname="Chunk flags: 0x00" size="1" value="00">
-              <field name="sctp.sack_nounce_sum" pos="47" show="0" showname=".... ...0 = Nounce sum: 0" size="1" unmaskedvalue="00" value="0"/>
-            </field>
-            <field name="sctp.chunk_length" pos="48" show="16" showname="Chunk length: 16" size="2" value="0010"/>
-            <field name="sctp.sack_cumulative_tsn_ack" pos="50" show="2008295176" showname="Cumulative TSN ACK: 2008295176" size="4" value="77b42708"/>
-            <field name="sctp.sack_a_rwnd" pos="54" show="106496" showname="Advertised receiver window credit (a_rwnd): 106496" size="4" value="0001a000"/>
-            <field name="sctp.sack_number_of_gap_blocks" pos="58" show="0" showname="Number of gap acknowledgement blocks: 0" size="2" value="0000"/>
-            <field name="sctp.sack_number_of_duplicated_tsns" pos="60" show="0" showname="Number of duplicated TSNs: 0" size="2" value="0000"/>
-          </field>
-          <field name="" pos="62" show="DATA chunk(ordered, complete segment, TSN: 3304831193, SID: 1, SSN: 1, PPID: 18, payload length: 68 bytes)" size="16" value="00030054c4fbb8d90001000100000012">
-            <field name="sctp.chunk_type" pos="62" show="0" showname="Chunk type: DATA (0)" size="1" value="00">
-              <field name="sctp.chunk_bit_1" pos="62" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="00" value="0"/>
-              <field name="sctp.chunk_bit_2" pos="62" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="00" value="0"/>
-            </field>
-            <field name="sctp.chunk_flags" pos="63" show="0x03" showname="Chunk flags: 0x03" size="1" value="03">
-              <field name="sctp.data_e_bit" pos="63" show="1" showname=".... ...1 = E-Bit: Last segment" size="1" unmaskedvalue="03" value="1"/>
-              <field name="sctp.data_b_bit" pos="63" show="1" showname=".... ..1. = B-Bit: First segment" size="1" unmaskedvalue="03" value="1"/>
-              <field name="sctp.data_u_bit" pos="63" show="0" showname=".... .0.. = U-Bit: Ordered delivery" size="1" unmaskedvalue="03" value="0"/>
-              <field name="sctp.data_i_bit" pos="63" show="0" showname=".... 0... = I-Bit: Possibly delay SACK" size="1" unmaskedvalue="03" value="0"/>
-            </field>
-            <field name="sctp.chunk_length" pos="64" show="84" showname="Chunk length: 84" size="2" value="0054"/>
-            <field name="sctp.data_tsn" pos="66" show="3304831193" showname="TSN: 3304831193" size="4" value="c4fbb8d9"/>
-            <field name="sctp.data_sid" pos="70" show="0x0001" showname="Stream Identifier: 0x0001" size="2" value="0001"/>
-            <field name="sctp.data_ssn" pos="72" show="1" showname="Stream sequence number: 1" size="2" value="0001"/>
-            <field name="sctp.data_payload_proto_id" pos="74" show="18" showname="Payload protocol identifier: S1 Application Protocol (S1AP) (18)" size="4" value="00000012"/>
-          </field>
-          <proto name="s1ap" pos="78" showname="S1 Application Protocol" size="68">
-            <field hide="yes" name="per.extension_bit" pos="78" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-            <field hide="yes" name="per.choice_index" pos="78" show="0" showname="Choice Index: 0" size="1" value="00"/>
-            <field name="s1ap.S1AP_PDU" pos="78" show="0" showname="S1AP-PDU: initiatingMessage (0)" size="68" value="000d404000000500000005c0740010d0000800048006692d001a00121117b3e0e284030756082980590000000020006440080002f85900e00000004340060002f8590001">
-              <field name="s1ap.initiatingMessage" pos="78" show="" showname="initiatingMessage" size="68" value="">
-                <field name="s1ap.procedureCode" pos="79" show="13" showname="procedureCode: id-uplinkNASTransport (13)" size="1" value="0d"/>
-                <field hide="yes" name="per.enum_index" pos="80" show="1" showname="Enumerated Index: 1" size="1" value="40"/>
-                <field name="s1ap.criticality" pos="80" show="1" showname="criticality: ignore (1)" size="1" value="40"/>
-                <field hide="yes" name="per.open_type_length" pos="81" show="64" showname="Open Type Length: 64" size="1" value="40"/>
-                <field name="s1ap.value" pos="82" show="" showname="value" size="64" value="">
-                  <field name="s1ap.UplinkNASTransport" pos="82" show="" showname="UplinkNASTransport" size="64" value="">
-                    <field hide="yes" name="per.extension_bit" pos="82" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-                    <field hide="yes" name="per.sequence_of_length" pos="83" show="5" showname="Sequence-Of Length: 5" size="2" value="0005"/>
-                    <field name="s1ap.protocolIEs" pos="85" show="5" showname="protocolIEs: 5 items" size="61" value="00000005c0740010d0000800048006692d001a00121117b3e0e284030756082980590000000020006440080002f85900e00000004340060002f8590001">
-                      <field name="" pos="85" show="Item 0: id-MME-UE-S1AP-ID" size="9" value="00000005c0740010d0">
-                        <field name="s1ap.ProtocolIE_Field" pos="85" show="" showname="ProtocolIE-Field" size="9" value="">
-                          <field name="s1ap.id" pos="85" show="0" showname="id: id-MME-UE-S1AP-ID (0)" size="2" value="0000"/>
-                          <field hide="yes" name="per.enum_index" pos="87" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                          <field name="s1ap.criticality" pos="87" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                          <field hide="yes" name="per.open_type_length" pos="88" show="5" showname="Open Type Length: 5" size="1" value="05"/>
-                          <field name="s1ap.value" pos="89" show="" showname="value" size="5" value="">
-                            <field name="s1ap.MME_UE_S1AP_ID" pos="89" show="1946161360" showname="MME-UE-S1AP-ID: 1946161360" size="5" value="c0740010d0"/>
-                          </field>
-                        </field>
-                      </field>
-                      <field name="" pos="94" show="Item 1: id-eNB-UE-S1AP-ID" size="8" value="000800048006692d">
-                        <field name="s1ap.ProtocolIE_Field" pos="94" show="" showname="ProtocolIE-Field" size="8" value="">
-                          <field name="s1ap.id" pos="94" show="8" showname="id: id-eNB-UE-S1AP-ID (8)" size="2" value="0008"/>
-                          <field hide="yes" name="per.enum_index" pos="96" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                          <field name="s1ap.criticality" pos="96" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                          <field hide="yes" name="per.open_type_length" pos="97" show="4" showname="Open Type Length: 4" size="1" value="04"/>
-                          <field name="s1ap.value" pos="98" show="" showname="value" size="4" value="">
-                            <field name="s1ap.ENB_UE_S1AP_ID" pos="98" show="420141" showname="ENB-UE-S1AP-ID: 420141" size="4" value="8006692d"/>
-                          </field>
-                        </field>
-                      </field>
-                      <field name="" pos="102" show="Item 2: id-NAS-PDU" size="22" value="001a00121117b3e0e284030756082980590000000020">
-                        <field name="s1ap.ProtocolIE_Field" pos="102" show="" showname="ProtocolIE-Field" size="22" value="">
-                          <field name="s1ap.id" pos="102" show="26" showname="id: id-NAS-PDU (26)" size="2" value="001a"/>
-                          <field hide="yes" name="per.enum_index" pos="104" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                          <field name="s1ap.criticality" pos="104" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                          <field hide="yes" name="per.open_type_length" pos="105" show="18" showname="Open Type Length: 18" size="1" value="12"/>
-                          <field name="s1ap.value" pos="106" show="" showname="value" size="18" value="">
-                            <field hide="yes" name="per.octet_string_length" pos="106" show="17" showname="Octet String Length: 17" size="1" value="11"/>
-                            <field name="s1ap.NAS_PDU" pos="107" show="17:b3:e0:e2:84:03:07:56:08:29:80:59:00:00:00:00:20" showname="NAS-PDU: 17b3e0e284030756082980590000000020" size="17" value="17b3e0e284030756082980590000000020"/>
-                            <proto name="nas-eps" pos="107" showname="Non-Access-Stratum (NAS)PDU" size="17">
-                              <field name="nas_eps.security_header_type" pos="107" show="1" showname="0001 .... = Security header type: Integrity protected (1)" size="1" unmaskedvalue="17" value="1"/>
-                              <field name="gsm_a.L3_protocol_discriminator" pos="107" show="0x07" showname=".... 0111 = Protocol discriminator: EPS mobility management messages (0x07)" size="1" unmaskedvalue="17" value="7"/>
-                              <field name="nas_eps.msg_auth_code" pos="108" show="0xb3e0e284" showname="Message authentication code: 0xb3e0e284" size="4" value="b3e0e284"/>
-                              <field name="nas_eps.seq_no" pos="112" show="3" showname="Sequence number: 3" size="1" value="03"/>
-                              <field name="nas_eps.security_header_type" pos="113" show="0" showname="0000 .... = Security header type: Plain NAS message, not security protected (0)" size="1" unmaskedvalue="07" value="0"/>
-                              <field name="gsm_a.L3_protocol_discriminator" pos="113" show="0x07" showname=".... 0111 = Protocol discriminator: EPS mobility management messages (0x07)" size="1" unmaskedvalue="07" value="7"/>
-                              <field name="nas_eps.nas_msg_emm_type" pos="114" show="0x56" showname="NAS EPS Mobility Management Message Type: Identity response (0x56)" size="1" value="56"/>
-                              <field name="" pos="115" show="Mobile identity - IMSI (208950000000002)" size="9" value="082980590000000020">
-                                <field name="gsm_a.len" pos="115" show="8" showname="Length: 8" size="1" value="08"/>
-                                <field name="" pos="116" show="0010 .... = Identity Digit 1: 2" size="1" value="29"/>
-                                <field name="gsm_a.oddevenind" pos="116" show="1" showname=".... 1... = Odd/even indication: Odd number of identity digits" size="1" unmaskedvalue="29" value="1"/>
-                                <field name="gsm_a.ie.mobileid.type" pos="116" show="1" showname=".... .001 = Mobile Identity Type: IMSI (1)" size="1" unmaskedvalue="29" value="1"/>
-                                <field name="gsm_a.imsi" pos="116" show="208950000000002" showname="BCD Digits: 208950000000002" size="8" value="2980590000000020"/>
-                              </field>
-                            </proto>
-                          </field>
-                        </field>
-                      </field>
-                      <field name="" pos="124" show="Item 3: id-EUTRAN-CGI" size="12" value="006440080002f85900e00000">
-                        <field name="s1ap.ProtocolIE_Field" pos="124" show="" showname="ProtocolIE-Field" size="12" value="">
-                          <field name="s1ap.id" pos="124" show="100" showname="id: id-EUTRAN-CGI (100)" size="2" value="0064"/>
-                          <field hide="yes" name="per.enum_index" pos="126" show="1" showname="Enumerated Index: 1" size="1" value="40"/>
-                          <field name="s1ap.criticality" pos="126" show="1" showname="criticality: ignore (1)" size="1" value="40"/>
-                          <field hide="yes" name="per.open_type_length" pos="127" show="8" showname="Open Type Length: 8" size="1" value="08"/>
-                          <field name="s1ap.value" pos="128" show="" showname="value" size="8" value="">
-                            <field name="s1ap.EUTRAN_CGI" pos="128" show="" showname="EUTRAN-CGI" size="7" value="">
-                              <field hide="yes" name="per.extension_bit" pos="128" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-                              <field hide="yes" name="per.optional_field_bit" pos="128" show="0" showname=".0.. .... Optional Field Bit: False (iE-Extensions is NOT present)" size="1" unmaskedvalue="00" value="0"/>
-                              <field name="s1ap.pLMNidentity" pos="129" show="02:f8:59" showname="pLMNidentity: 02f859" size="3" value="02f859"/>
-                              <field name="e212.mcc" pos="129" show="208" showname="Mobile Country Code (MCC): France (208)" size="2" value="02f8"/>
-                              <field name="e212.mnc" pos="130" show="95" showname="Mobile Network Code (MNC): Unknown (95)" size="2" value="f859"/>
-                              <field name="s1ap.cell_ID" pos="128" show="00:e0:00:00" showname="cell-ID: 00e00000 [bit length 28, 4 LSB pad bits, 0000 0000  1110 0000  0000 0000  0000 .... decimal value 917504]" size="4" value="00e00000"/>
-                            </field>
-                          </field>
-                        </field>
-                      </field>
-                      <field name="" pos="136" show="Item 4: id-TAI" size="10" value="004340060002f8590001">
-                        <field name="s1ap.ProtocolIE_Field" pos="136" show="" showname="ProtocolIE-Field" size="10" value="">
-                          <field name="s1ap.id" pos="136" show="67" showname="id: id-TAI (67)" size="2" value="0043"/>
-                          <field hide="yes" name="per.enum_index" pos="138" show="1" showname="Enumerated Index: 1" size="1" value="40"/>
-                          <field name="s1ap.criticality" pos="138" show="1" showname="criticality: ignore (1)" size="1" value="40"/>
-                          <field hide="yes" name="per.open_type_length" pos="139" show="6" showname="Open Type Length: 6" size="1" value="06"/>
-                          <field name="s1ap.value" pos="140" show="" showname="value" size="6" value="">
-                            <field name="s1ap.TAI" pos="140" show="" showname="TAI" size="6" value="">
-                              <field hide="yes" name="per.extension_bit" pos="140" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-                              <field hide="yes" name="per.optional_field_bit" pos="140" show="0" showname=".0.. .... Optional Field Bit: False (iE-Extensions is NOT present)" size="1" unmaskedvalue="00" value="0"/>
-                              <field name="s1ap.pLMNidentity" pos="141" show="02:f8:59" showname="pLMNidentity: 02f859" size="3" value="02f859"/>
-                              <field name="e212.mcc" pos="141" show="208" showname="Mobile Country Code (MCC): France (208)" size="2" value="02f8"/>
-                              <field name="e212.mnc" pos="142" show="95" showname="Mobile Network Code (MNC): Unknown (95)" size="2" value="f859"/>
-                              <field name="s1ap.tAC" pos="144" show="00:01" showname="tAC: 0001" size="2" value="0001"/>
-                            </field>
-                          </field>
-                        </field>
-                      </field>
-                    </field>
-                  </field>
-                </field>
-              </field>
-            </field>
-          </proto>
-        </proto>
-      </proto>
-    </proto>
-  </packet>
-  <packet>
-    <proto name="frame" pos="0" showname="Frame 79: 146 bytes on wire (1168 bits), 146 bytes captured (1168 bits) on interface 0" size="146">
-      <field name="frame.interface_id" pos="0" show="0" showname="Interface id: 0" size="0"/>
-      <field name="frame.encap_type" pos="0" show="1" showname="Encapsulation type: Ethernet (1)" size="0"/>
-      <field name="frame.time" pos="0" show="Sep 25, 2015 16:34:53.771623000" showname="Arrival Time: Sep 25, 2015 16:34:53.771623000 CEST" size="0"/>
-      <field name="frame.offset_shift" pos="0" show="0.000000000" showname="Time shift for this packet: 0.000000000 seconds" size="0"/>
-      <field name="frame.time_epoch" pos="0" show="1443191693.771623000" showname="Epoch Time: 1443191693.771623000 seconds" size="0"/>
-      <field name="frame.time_delta" pos="0" show="0.004497000" showname="Time delta from previous captured frame: 0.004497000 seconds" size="0"/>
-      <field name="frame.time_delta_displayed" pos="0" show="0.004497000" showname="Time delta from previous displayed frame: 0.004497000 seconds" size="0"/>
-      <field name="frame.time_relative" pos="0" show="47.305992000" showname="Time since reference or first frame: 47.305992000 seconds" size="0"/>
-      <field name="frame.number" pos="0" show="79" showname="Frame Number: 79" size="0"/>
-      <field name="frame.len" pos="0" show="146" showname="Frame Length: 146 bytes (1168 bits)" size="0"/>
-      <field name="frame.cap_len" pos="0" show="146" showname="Capture Length: 146 bytes (1168 bits)" size="0"/>
-      <field name="frame.marked" pos="0" show="0" showname="Frame is marked: False" size="0"/>
-      <field name="frame.ignored" pos="0" show="0" showname="Frame is ignored: False" size="0"/>
-      <field name="frame.protocols" pos="0" show="eth:ip:sctp:s1ap:s1ap:s1ap:s1ap:s1ap:nas-eps" showname="Protocols in frame: eth:ip:sctp:s1ap:s1ap:s1ap:s1ap:s1ap:nas-eps" size="0"/>
-      <proto name="ip" pos="14" showname="Internet Protocol Version 4, Src: 192.168.12.17 (192.168.12.17), Dst: 192.168.12.213 (192.168.12.213)" size="20">
-        <field name="ip.version" pos="14" show="4" showname="Version: 4" size="1" value="45"/>
-        <field name="ip.hdr_len" pos="14" show="20" showname="Header length: 20 bytes" size="1" value="45"/>
-        <field name="ip.dsfield" pos="15" show="2" showname="Differentiated Services Field: 0x02 (DSCP 0x00: Default; ECN: 0x02: ECT(0) (ECN-Capable Transport))" size="1" value="02">
-          <field name="ip.dsfield.dscp" pos="15" show="0x00" showname="0000 00.. = Differentiated Services Codepoint: Default (0x00)" size="1" unmaskedvalue="02" value="0"/>
-          <field name="ip.dsfield.ecn" pos="15" show="0x02" showname=".... ..10 = Explicit Congestion Notification: ECT(0) (ECN-Capable Transport) (0x02)" size="1" unmaskedvalue="02" value="2"/>
-        </field>
-        <field name="ip.len" pos="16" show="132" showname="Total Length: 132" size="2" value="0084"/>
-        <field name="ip.id" pos="18" show="0x0000" showname="Identification: 0x0000 (0)" size="2" value="0000"/>
-        <field name="ip.flags" pos="20" show="0x02" showname="Flags: 0x02 (Don't Fragment)" size="1" value="40">
-          <field name="ip.flags.rb" pos="20" show="0" showname="0... .... = Reserved bit: Not set" size="1" value="40"/>
-          <field name="ip.flags.df" pos="20" show="1" showname=".1.. .... = Don't fragment: Set" size="1" value="40"/>
-          <field name="ip.flags.mf" pos="20" show="0" showname="..0. .... = More fragments: Not set" size="1" value="40"/>
-        </field>
-        <field name="ip.frag_offset" pos="20" show="0" showname="Fragment offset: 0" size="2" value="4000"/>
-        <field name="ip.ttl" pos="22" show="64" showname="Time to live: 64" size="1" value="40"/>
-        <field name="ip.proto" pos="23" show="132" showname="Protocol: SCTP (132)" size="1" value="84"/>
-        <field name="ip.checksum" pos="24" show="0x9fbd" showname="Header checksum: 0x9fbd [validation disabled]" size="2" value="9fbd">
-          <field name="ip.checksum_good" pos="24" show="0" showname="Good: False" size="2" value="9fbd"/>
-          <field name="ip.checksum_bad" pos="24" show="0" showname="Bad: False" size="2" value="9fbd"/>
-        </field>
-        <field name="ip.src" pos="26" show="192.168.12.17" showname="Source: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.addr" pos="26" show="192.168.12.17" showname="Source or Destination Address: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.src_host" pos="26" show="192.168.12.17" showname="Source Host: 192.168.12.17" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.host" pos="26" show="192.168.12.17" showname="Source or Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-        <field name="ip.dst" pos="30" show="192.168.12.213" showname="Destination: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.addr" pos="30" show="192.168.12.213" showname="Source or Destination Address: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.dst_host" pos="30" show="192.168.12.213" showname="Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.host" pos="30" show="192.168.12.213" showname="Source or Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-        <field name="" pos="26" show="Source GeoIP: Unknown" size="4" value="c0a80c11"/>
-        <field name="" pos="30" show="Destination GeoIP: Unknown" size="4" value="c0a80cd5"/>
-        <proto name="sctp" pos="34" showname="Stream Control Transmission Protocol, Src Port: s1-control (36412), Dst Port: s1-control (36412)" size="44">
-          <field name="sctp.srcport" pos="34" show="36412" showname="Source port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.dstport" pos="36" show="36412" showname="Destination port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.verification_tag" pos="38" show="0x54f837ab" showname="Verification tag: 0x54f837ab" size="4" value="54f837ab"/>
-          <field hide="yes" name="sctp.port" pos="34" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-          <field hide="yes" name="sctp.port" pos="36" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.checksum" pos="42" show="0xf61432bc" showname="Checksum: 0xf61432bc (not verified)" size="4" value="f61432bc"/>
-          <field name="" pos="46" show="SACK chunk (Cumulative TSN: 3304831193, a_rwnd: 106496, gaps: 0, duplicate TSNs: 0)" size="16" value="03000010c4fbb8d90001a00000000000">
-            <field name="sctp.chunk_type" pos="46" show="3" showname="Chunk type: SACK (3)" size="1" value="03">
-              <field name="sctp.chunk_bit_1" pos="46" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="03" value="0"/>
-              <field name="sctp.chunk_bit_2" pos="46" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="03" value="0"/>
-            </field>
-            <field name="sctp.chunk_flags" pos="47" show="0x00" showname="Chunk flags: 0x00" size="1" value="00">
-              <field name="sctp.sack_nounce_sum" pos="47" show="0" showname=".... ...0 = Nounce sum: 0" size="1" unmaskedvalue="00" value="0"/>
-            </field>
-            <field name="sctp.chunk_length" pos="48" show="16" showname="Chunk length: 16" size="2" value="0010"/>
-            <field name="sctp.sack_cumulative_tsn_ack" pos="50" show="3304831193" showname="Cumulative TSN ACK: 3304831193" size="4" value="c4fbb8d9"/>
-            <field name="sctp.sack_a_rwnd" pos="54" show="106496" showname="Advertised receiver window credit (a_rwnd): 106496" size="4" value="0001a000"/>
-            <field name="sctp.sack_number_of_gap_blocks" pos="58" show="0" showname="Number of gap acknowledgement blocks: 0" size="2" value="0000"/>
-            <field name="sctp.sack_number_of_duplicated_tsns" pos="60" show="0" showname="Number of duplicated TSNs: 0" size="2" value="0000"/>
-          </field>
-          <field name="" pos="62" show="DATA chunk(ordered, complete segment, TSN: 2008295177, SID: 1, SSN: 1, PPID: 301989888, payload length: 65 bytes)" size="16" value="0003005177b427090001000112000000">
-            <field name="sctp.chunk_type" pos="62" show="0" showname="Chunk type: DATA (0)" size="1" value="00">
-              <field name="sctp.chunk_bit_1" pos="62" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="00" value="0"/>
-              <field name="sctp.chunk_bit_2" pos="62" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="00" value="0"/>
-            </field>
-            <field name="sctp.chunk_flags" pos="63" show="0x03" showname="Chunk flags: 0x03" size="1" value="03">
-              <field name="sctp.data_e_bit" pos="63" show="1" showname=".... ...1 = E-Bit: Last segment" size="1" unmaskedvalue="03" value="1"/>
-              <field name="sctp.data_b_bit" pos="63" show="1" showname=".... ..1. = B-Bit: First segment" size="1" unmaskedvalue="03" value="1"/>
-              <field name="sctp.data_u_bit" pos="63" show="0" showname=".... .0.. = U-Bit: Ordered delivery" size="1" unmaskedvalue="03" value="0"/>
-              <field name="sctp.data_i_bit" pos="63" show="0" showname=".... 0... = I-Bit: Possibly delay SACK" size="1" unmaskedvalue="03" value="0"/>
-            </field>
-            <field name="sctp.chunk_length" pos="64" show="81" showname="Chunk length: 81" size="2" value="0051"/>
-            <field name="sctp.data_tsn" pos="66" show="2008295177" showname="TSN: 2008295177" size="4" value="77b42709"/>
-            <field name="sctp.data_sid" pos="70" show="0x0001" showname="Stream Identifier: 0x0001" size="2" value="0001"/>
-            <field name="sctp.data_ssn" pos="72" show="1" showname="Stream sequence number: 1" size="2" value="0001"/>
-            <field name="sctp.data_payload_proto_id" pos="74" show="301989888" showname="Payload protocol identifier: Unknown (301989888)" size="4" value="12000000"/>
-            <field name="sctp.chunk_padding" pos="143" show="00:00:00" showname="Chunk padding: 000000" size="3" value="000000"/>
-          </field>
-          <proto name="s1ap" pos="78" showname="S1 Application Protocol" size="65">
-            <field hide="yes" name="per.extension_bit" pos="78" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-            <field hide="yes" name="per.choice_index" pos="78" show="0" showname="Choice Index: 0" size="1" value="00"/>
-            <field name="s1ap.S1AP_PDU" pos="78" show="0" showname="S1AP-PDU: initiatingMessage (0)" size="65" value="000b003d00000300000005c0740010d0000800048006692d001a00252407520007cefaf5dd90a76da30d2c6775f4e41f10a19ee7945f198000a2a656d4988ff528">
-              <field name="s1ap.initiatingMessage" pos="78" show="" showname="initiatingMessage" size="65" value="">
-                <field name="s1ap.procedureCode" pos="79" show="11" showname="procedureCode: id-downlinkNASTransport (11)" size="1" value="0b"/>
-                <field hide="yes" name="per.enum_index" pos="80" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                <field name="s1ap.criticality" pos="80" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                <field hide="yes" name="per.open_type_length" pos="81" show="61" showname="Open Type Length: 61" size="1" value="3d"/>
-                <field name="s1ap.value" pos="82" show="" showname="value" size="61" value="">
-                  <field name="s1ap.DownlinkNASTransport" pos="82" show="" showname="DownlinkNASTransport" size="61" value="">
-                    <field hide="yes" name="per.extension_bit" pos="82" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-                    <field hide="yes" name="per.sequence_of_length" pos="83" show="3" showname="Sequence-Of Length: 3" size="2" value="0003"/>
-                    <field name="s1ap.protocolIEs" pos="85" show="3" showname="protocolIEs: 3 items" size="58" value="00000005c0740010d0000800048006692d001a00252407520007cefaf5dd90a76da30d2c6775f4e41f10a19ee7945f198000a2a656d4988ff528">
-                      <field name="" pos="85" show="Item 0: id-MME-UE-S1AP-ID" size="9" value="00000005c0740010d0">
-                        <field name="s1ap.ProtocolIE_Field" pos="85" show="" showname="ProtocolIE-Field" size="9" value="">
-                          <field name="s1ap.id" pos="85" show="0" showname="id: id-MME-UE-S1AP-ID (0)" size="2" value="0000"/>
-                          <field hide="yes" name="per.enum_index" pos="87" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                          <field name="s1ap.criticality" pos="87" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                          <field hide="yes" name="per.open_type_length" pos="88" show="5" showname="Open Type Length: 5" size="1" value="05"/>
-                          <field name="s1ap.value" pos="89" show="" showname="value" size="5" value="">
-                            <field name="s1ap.MME_UE_S1AP_ID" pos="89" show="1946161360" showname="MME-UE-S1AP-ID: 1946161360" size="5" value="c0740010d0"/>
-                          </field>
-                        </field>
-                      </field>
-                      <field name="" pos="94" show="Item 1: id-eNB-UE-S1AP-ID" size="8" value="000800048006692d">
-                        <field name="s1ap.ProtocolIE_Field" pos="94" show="" showname="ProtocolIE-Field" size="8" value="">
-                          <field name="s1ap.id" pos="94" show="8" showname="id: id-eNB-UE-S1AP-ID (8)" size="2" value="0008"/>
-                          <field hide="yes" name="per.enum_index" pos="96" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                          <field name="s1ap.criticality" pos="96" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                          <field hide="yes" name="per.open_type_length" pos="97" show="4" showname="Open Type Length: 4" size="1" value="04"/>
-                          <field name="s1ap.value" pos="98" show="" showname="value" size="4" value="">
-                            <field name="s1ap.ENB_UE_S1AP_ID" pos="98" show="420141" showname="ENB-UE-S1AP-ID: 420141" size="4" value="8006692d"/>
-                          </field>
-                        </field>
-                      </field>
-                      <field name="" pos="102" show="Item 2: id-NAS-PDU" size="41" value="001a00252407520007cefaf5dd90a76da30d2c6775f4e41f10a19ee7945f198000a2a656d4988ff528">
-                        <field name="s1ap.ProtocolIE_Field" pos="102" show="" showname="ProtocolIE-Field" size="41" value="">
-                          <field name="s1ap.id" pos="102" show="26" showname="id: id-NAS-PDU (26)" size="2" value="001a"/>
-                          <field hide="yes" name="per.enum_index" pos="104" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                          <field name="s1ap.criticality" pos="104" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                          <field hide="yes" name="per.open_type_length" pos="105" show="37" showname="Open Type Length: 37" size="1" value="25"/>
-                          <field name="s1ap.value" pos="106" show="" showname="value" size="37" value="">
-                            <field hide="yes" name="per.octet_string_length" pos="106" show="36" showname="Octet String Length: 36" size="1" value="24"/>
-                            <field name="s1ap.NAS_PDU" pos="107" show="07:52:00:07:ce:fa:f5:dd:90:a7:6d:a3:0d:2c:67:75:f4:e4:1f:10:a1:9e:e7:94:5f:19:80:00:a2:a6:56:d4:98:8f:f5:28" showname="NAS-PDU: 07520007cefaf5dd90a76da30d2c6775f4e41f10a19ee794..." size="36" value="07520007cefaf5dd90a76da30d2c6775f4e41f10a19ee7945f198000a2a656d4988ff528"/>
-                            <proto name="nas-eps" pos="107" showname="Non-Access-Stratum (NAS)PDU" size="36">
-                              <field name="nas_eps.security_header_type" pos="107" show="0" showname="0000 .... = Security header type: Plain NAS message, not security protected (0)" size="1" unmaskedvalue="07" value="0"/>
-                              <field name="gsm_a.L3_protocol_discriminator" pos="107" show="0x07" showname=".... 0111 = Protocol discriminator: EPS mobility management messages (0x07)" size="1" unmaskedvalue="07" value="7"/>
-                              <field name="nas_eps.nas_msg_emm_type" pos="108" show="0x52" showname="NAS EPS Mobility Management Message Type: Authentication request (0x52)" size="1" value="52"/>
-                              <field name="nas_eps.emm.spare_half_octet" pos="109" show="0" showname="0000 .... = Spare half octet: 0" size="1" value="00"/>
-                              <field name="nas_eps.emm.tsc" pos="109" show="0" showname=".... 0... = Type of security context flag (TSC): Native security context (for KSIasme)" size="1" value="00"/>
-                              <field name="nas_eps.emm.nas_key_set_id" pos="109" show="0" showname=".... .000 = NAS key set identifier:  (0) ASME" size="1" value="00"/>
-                              <field name="" pos="110" show="Authentication Parameter RAND - EPS challenge" size="16" value="07cefaf5dd90a76da30d2c6775f4e41f">
-                                <field name="gsm_a.dtap.rand" pos="110" show="07:ce:fa:f5:dd:90:a7:6d:a3:0d:2c:67:75:f4:e4:1f" showname="RAND value: 07cefaf5dd90a76da30d2c6775f4e41f" size="16" value="07cefaf5dd90a76da30d2c6775f4e41f"/>
-                              </field>
-                              <field name="" pos="126" show="Authentication Parameter AUTN (UMTS and EPS authentication challenge) - EPS challenge" size="17" value="10a19ee7945f198000a2a656d4988ff528">
-                                <field name="gsm_a.len" pos="126" show="16" showname="Length: 16" size="1" value="10"/>
-                                <field name="gsm_a.dtap.autn" pos="127" show="a1:9e:e7:94:5f:19:80:00:a2:a6:56:d4:98:8f:f5:28" showname="AUTN value: a19ee7945f198000a2a656d4988ff528" size="16" value="a19ee7945f198000a2a656d4988ff528">
-                                  <field name="gsm_a.dtap.autn.sqn_xor_ak" pos="127" show="a1:9e:e7:94:5f:19" showname="SQN xor AK: a19ee7945f19" size="6" value="a19ee7945f19"/>
-                                  <field name="gsm_a.dtap.autn.amf" pos="133" show="80:00" showname="AMF: 8000" size="2" value="8000"/>
-                                  <field name="gsm_a.dtap.autn.mac" pos="135" show="a2:a6:56:d4:98:8f:f5:28" showname="MAC: a2a656d4988ff528" size="8" value="a2a656d4988ff528"/>
-                                </field>
-                              </field>
-                            </proto>
-                          </field>
-                        </field>
-                      </field>
-                    </field>
-                  </field>
-                </field>
-              </field>
-            </field>
-          </proto>
-        </proto>
-      </proto>
-    </proto>
-  </packet>
-  <packet>
-    <proto name="frame" pos="0" showname="Frame 80: 62 bytes on wire (496 bits), 62 bytes captured (496 bits) on interface 0" size="62">
-      <field name="frame.interface_id" pos="0" show="0" showname="Interface id: 0" size="0"/>
-      <field name="frame.encap_type" pos="0" show="1" showname="Encapsulation type: Ethernet (1)" size="0"/>
-      <field name="frame.time" pos="0" show="Sep 25, 2015 16:34:53.971568000" showname="Arrival Time: Sep 25, 2015 16:34:53.971568000 CEST" size="0"/>
-      <field name="frame.offset_shift" pos="0" show="0.000000000" showname="Time shift for this packet: 0.000000000 seconds" size="0"/>
-      <field name="frame.time_epoch" pos="0" show="1443191693.971568000" showname="Epoch Time: 1443191693.971568000 seconds" size="0"/>
-      <field name="frame.time_delta" pos="0" show="0.199945000" showname="Time delta from previous captured frame: 0.199945000 seconds" size="0"/>
-      <field name="frame.time_delta_displayed" pos="0" show="0.199945000" showname="Time delta from previous displayed frame: 0.199945000 seconds" size="0"/>
-      <field name="frame.time_relative" pos="0" show="47.505937000" showname="Time since reference or first frame: 47.505937000 seconds" size="0"/>
-      <field name="frame.number" pos="0" show="80" showname="Frame Number: 80" size="0"/>
-      <field name="frame.len" pos="0" show="62" showname="Frame Length: 62 bytes (496 bits)" size="0"/>
-      <field name="frame.cap_len" pos="0" show="62" showname="Capture Length: 62 bytes (496 bits)" size="0"/>
-      <field name="frame.marked" pos="0" show="0" showname="Frame is marked: False" size="0"/>
-      <field name="frame.ignored" pos="0" show="0" showname="Frame is ignored: False" size="0"/>
-      <field name="frame.protocols" pos="0" show="eth:ip:sctp" showname="Protocols in frame: eth:ip:sctp" size="0"/>
-      <proto name="ip" pos="14" showname="Internet Protocol Version 4, Src: 192.168.12.213 (192.168.12.213), Dst: 192.168.12.17 (192.168.12.17)" size="20">
-        <field name="ip.version" pos="14" show="4" showname="Version: 4" size="1" value="45"/>
-        <field name="ip.hdr_len" pos="14" show="20" showname="Header length: 20 bytes" size="1" value="45"/>
-        <field name="ip.dsfield" pos="15" show="2" showname="Differentiated Services Field: 0x02 (DSCP 0x00: Default; ECN: 0x02: ECT(0) (ECN-Capable Transport))" size="1" value="02">
-          <field name="ip.dsfield.dscp" pos="15" show="0x00" showname="0000 00.. = Differentiated Services Codepoint: Default (0x00)" size="1" unmaskedvalue="02" value="0"/>
-          <field name="ip.dsfield.ecn" pos="15" show="0x02" showname=".... ..10 = Explicit Congestion Notification: ECT(0) (ECN-Capable Transport) (0x02)" size="1" unmaskedvalue="02" value="2"/>
-        </field>
-        <field name="ip.len" pos="16" show="48" showname="Total Length: 48" size="2" value="0030"/>
-        <field name="ip.id" pos="18" show="0x0007" showname="Identification: 0x0007 (7)" size="2" value="0007"/>
-        <field name="ip.flags" pos="20" show="0x02" showname="Flags: 0x02 (Don't Fragment)" size="1" value="40">
-          <field name="ip.flags.rb" pos="20" show="0" showname="0... .... = Reserved bit: Not set" size="1" value="40"/>
-          <field name="ip.flags.df" pos="20" show="1" showname=".1.. .... = Don't fragment: Set" size="1" value="40"/>
-          <field name="ip.flags.mf" pos="20" show="0" showname="..0. .... = More fragments: Not set" size="1" value="40"/>
-        </field>
-        <field name="ip.frag_offset" pos="20" show="0" showname="Fragment offset: 0" size="2" value="4000"/>
-        <field name="ip.ttl" pos="22" show="64" showname="Time to live: 64" size="1" value="40"/>
-        <field name="ip.proto" pos="23" show="132" showname="Protocol: SCTP (132)" size="1" value="84"/>
-        <field name="ip.checksum" pos="24" show="0xa00a" showname="Header checksum: 0xa00a [validation disabled]" size="2" value="a00a">
-          <field name="ip.checksum_good" pos="24" show="0" showname="Good: False" size="2" value="a00a"/>
-          <field name="ip.checksum_bad" pos="24" show="0" showname="Bad: False" size="2" value="a00a"/>
-        </field>
-        <field name="ip.src" pos="26" show="192.168.12.213" showname="Source: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.addr" pos="26" show="192.168.12.213" showname="Source or Destination Address: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.src_host" pos="26" show="192.168.12.213" showname="Source Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.host" pos="26" show="192.168.12.213" showname="Source or Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-        <field name="ip.dst" pos="30" show="192.168.12.17" showname="Destination: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.addr" pos="30" show="192.168.12.17" showname="Source or Destination Address: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.dst_host" pos="30" show="192.168.12.17" showname="Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.host" pos="30" show="192.168.12.17" showname="Source or Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-        <field name="" pos="26" show="Source GeoIP: Unknown" size="4" value="c0a80cd5"/>
-        <field name="" pos="30" show="Destination GeoIP: Unknown" size="4" value="c0a80c11"/>
-        <proto name="sctp" pos="34" showname="Stream Control Transmission Protocol, Src Port: s1-control (36412), Dst Port: s1-control (36412)" size="28">
-          <field name="sctp.srcport" pos="34" show="36412" showname="Source port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.dstport" pos="36" show="36412" showname="Destination port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.verification_tag" pos="38" show="0x4cd1eca0" showname="Verification tag: 0x4cd1eca0" size="4" value="4cd1eca0"/>
-          <field hide="yes" name="sctp.port" pos="34" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-          <field hide="yes" name="sctp.port" pos="36" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.checksum" pos="42" show="0x9017abdf" showname="Checksum: 0x9017abdf (not verified)" size="4" value="9017abdf"/>
-          <field name="" pos="46" show="SACK chunk (Cumulative TSN: 2008295177, a_rwnd: 106496, gaps: 0, duplicate TSNs: 0)" size="16" value="0300001077b427090001a00000000000">
-            <field name="sctp.chunk_type" pos="46" show="3" showname="Chunk type: SACK (3)" size="1" value="03">
-              <field name="sctp.chunk_bit_1" pos="46" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="03" value="0"/>
-              <field name="sctp.chunk_bit_2" pos="46" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="03" value="0"/>
-            </field>
-            <field name="sctp.chunk_flags" pos="47" show="0x00" showname="Chunk flags: 0x00" size="1" value="00">
-              <field name="sctp.sack_nounce_sum" pos="47" show="0" showname=".... ...0 = Nounce sum: 0" size="1" unmaskedvalue="00" value="0"/>
-            </field>
-            <field name="sctp.chunk_length" pos="48" show="16" showname="Chunk length: 16" size="2" value="0010"/>
-            <field name="sctp.sack_cumulative_tsn_ack" pos="50" show="2008295177" showname="Cumulative TSN ACK: 2008295177" size="4" value="77b42709"/>
-            <field name="sctp.sack_a_rwnd" pos="54" show="106496" showname="Advertised receiver window credit (a_rwnd): 106496" size="4" value="0001a000"/>
-            <field name="sctp.sack_number_of_gap_blocks" pos="58" show="0" showname="Number of gap acknowledgement blocks: 0" size="2" value="0000"/>
-            <field name="sctp.sack_number_of_duplicated_tsns" pos="60" show="0" showname="Number of duplicated TSNs: 0" size="2" value="0000"/>
-          </field>
-        </proto>
-      </proto>
-    </proto>
-  </packet>
-  <packet>
-    <proto name="frame" pos="0" showname="Frame 81: 130 bytes on wire (1040 bits), 130 bytes captured (1040 bits) on interface 0" size="130">
-      <field name="frame.interface_id" pos="0" show="0" showname="Interface id: 0" size="0"/>
-      <field name="frame.encap_type" pos="0" show="1" showname="Encapsulation type: Ethernet (1)" size="0"/>
-      <field name="frame.time" pos="0" show="Sep 25, 2015 16:34:53.977130000" showname="Arrival Time: Sep 25, 2015 16:34:53.977130000 CEST" size="0"/>
-      <field name="frame.offset_shift" pos="0" show="0.000000000" showname="Time shift for this packet: 0.000000000 seconds" size="0"/>
-      <field name="frame.time_epoch" pos="0" show="1443191693.977130000" showname="Epoch Time: 1443191693.977130000 seconds" size="0"/>
-      <field name="frame.time_delta" pos="0" show="0.005562000" showname="Time delta from previous captured frame: 0.005562000 seconds" size="0"/>
-      <field name="frame.time_delta_displayed" pos="0" show="0.005562000" showname="Time delta from previous displayed frame: 0.005562000 seconds" size="0"/>
-      <field name="frame.time_relative" pos="0" show="47.511499000" showname="Time since reference or first frame: 47.511499000 seconds" size="0"/>
-      <field name="frame.number" pos="0" show="81" showname="Frame Number: 81" size="0"/>
-      <field name="frame.len" pos="0" show="130" showname="Frame Length: 130 bytes (1040 bits)" size="0"/>
-      <field name="frame.cap_len" pos="0" show="130" showname="Capture Length: 130 bytes (1040 bits)" size="0"/>
-      <field name="frame.marked" pos="0" show="0" showname="Frame is marked: False" size="0"/>
-      <field name="frame.ignored" pos="0" show="0" showname="Frame is ignored: False" size="0"/>
-      <field name="frame.protocols" pos="0" show="eth:ip:sctp:s1ap:s1ap:s1ap:s1ap:s1ap:nas-eps:s1ap:s1ap" showname="Protocols in frame: eth:ip:sctp:s1ap:s1ap:s1ap:s1ap:s1ap:nas-eps:s1ap:s1ap" size="0"/>
-      <proto name="ip" pos="14" showname="Internet Protocol Version 4, Src: 192.168.12.213 (192.168.12.213), Dst: 192.168.12.17 (192.168.12.17)" size="20">
-        <field name="ip.version" pos="14" show="4" showname="Version: 4" size="1" value="45"/>
-        <field name="ip.hdr_len" pos="14" show="20" showname="Header length: 20 bytes" size="1" value="45"/>
-        <field name="ip.dsfield" pos="15" show="2" showname="Differentiated Services Field: 0x02 (DSCP 0x00: Default; ECN: 0x02: ECT(0) (ECN-Capable Transport))" size="1" value="02">
-          <field name="ip.dsfield.dscp" pos="15" show="0x00" showname="0000 00.. = Differentiated Services Codepoint: Default (0x00)" size="1" unmaskedvalue="02" value="0"/>
-          <field name="ip.dsfield.ecn" pos="15" show="0x02" showname=".... ..10 = Explicit Congestion Notification: ECT(0) (ECN-Capable Transport) (0x02)" size="1" unmaskedvalue="02" value="2"/>
-        </field>
-        <field name="ip.len" pos="16" show="116" showname="Total Length: 116" size="2" value="0074"/>
-        <field name="ip.id" pos="18" show="0x0008" showname="Identification: 0x0008 (8)" size="2" value="0008"/>
-        <field name="ip.flags" pos="20" show="0x02" showname="Flags: 0x02 (Don't Fragment)" size="1" value="40">
-          <field name="ip.flags.rb" pos="20" show="0" showname="0... .... = Reserved bit: Not set" size="1" value="40"/>
-          <field name="ip.flags.df" pos="20" show="1" showname=".1.. .... = Don't fragment: Set" size="1" value="40"/>
-          <field name="ip.flags.mf" pos="20" show="0" showname="..0. .... = More fragments: Not set" size="1" value="40"/>
-        </field>
-        <field name="ip.frag_offset" pos="20" show="0" showname="Fragment offset: 0" size="2" value="4000"/>
-        <field name="ip.ttl" pos="22" show="64" showname="Time to live: 64" size="1" value="40"/>
-        <field name="ip.proto" pos="23" show="132" showname="Protocol: SCTP (132)" size="1" value="84"/>
-        <field name="ip.checksum" pos="24" show="0x9fc5" showname="Header checksum: 0x9fc5 [validation disabled]" size="2" value="9fc5">
-          <field name="ip.checksum_good" pos="24" show="0" showname="Good: False" size="2" value="9fc5"/>
-          <field name="ip.checksum_bad" pos="24" show="0" showname="Bad: False" size="2" value="9fc5"/>
-        </field>
-        <field name="ip.src" pos="26" show="192.168.12.213" showname="Source: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.addr" pos="26" show="192.168.12.213" showname="Source or Destination Address: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.src_host" pos="26" show="192.168.12.213" showname="Source Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.host" pos="26" show="192.168.12.213" showname="Source or Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-        <field name="ip.dst" pos="30" show="192.168.12.17" showname="Destination: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.addr" pos="30" show="192.168.12.17" showname="Source or Destination Address: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.dst_host" pos="30" show="192.168.12.17" showname="Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.host" pos="30" show="192.168.12.17" showname="Source or Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-        <field name="" pos="26" show="Source GeoIP: Unknown" size="4" value="c0a80cd5"/>
-        <field name="" pos="30" show="Destination GeoIP: Unknown" size="4" value="c0a80c11"/>
-        <proto name="sctp" pos="34" showname="Stream Control Transmission Protocol, Src Port: s1-control (36412), Dst Port: s1-control (36412)" size="28">
-          <field name="sctp.srcport" pos="34" show="36412" showname="Source port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.dstport" pos="36" show="36412" showname="Destination port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.verification_tag" pos="38" show="0x4cd1eca0" showname="Verification tag: 0x4cd1eca0" size="4" value="4cd1eca0"/>
-          <field hide="yes" name="sctp.port" pos="34" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-          <field hide="yes" name="sctp.port" pos="36" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.checksum" pos="42" show="0x2fbe8f7d" showname="Checksum: 0x2fbe8f7d (not verified)" size="4" value="2fbe8f7d"/>
-          <field name="" pos="46" show="DATA chunk(ordered, complete segment, TSN: 3304831194, SID: 1, SSN: 2, PPID: 18, payload length: 68 bytes)" size="16" value="00030054c4fbb8da0001000200000012">
-            <field name="sctp.chunk_type" pos="46" show="0" showname="Chunk type: DATA (0)" size="1" value="00">
-              <field name="sctp.chunk_bit_1" pos="46" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="00" value="0"/>
-              <field name="sctp.chunk_bit_2" pos="46" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="00" value="0"/>
-            </field>
-            <field name="sctp.chunk_flags" pos="47" show="0x03" showname="Chunk flags: 0x03" size="1" value="03">
-              <field name="sctp.data_e_bit" pos="47" show="1" showname=".... ...1 = E-Bit: Last segment" size="1" unmaskedvalue="03" value="1"/>
-              <field name="sctp.data_b_bit" pos="47" show="1" showname=".... ..1. = B-Bit: First segment" size="1" unmaskedvalue="03" value="1"/>
-              <field name="sctp.data_u_bit" pos="47" show="0" showname=".... .0.. = U-Bit: Ordered delivery" size="1" unmaskedvalue="03" value="0"/>
-              <field name="sctp.data_i_bit" pos="47" show="0" showname=".... 0... = I-Bit: Possibly delay SACK" size="1" unmaskedvalue="03" value="0"/>
-            </field>
-            <field name="sctp.chunk_length" pos="48" show="84" showname="Chunk length: 84" size="2" value="0054"/>
-            <field name="sctp.data_tsn" pos="50" show="3304831194" showname="TSN: 3304831194" size="4" value="c4fbb8da"/>
-            <field name="sctp.data_sid" pos="54" show="0x0001" showname="Stream Identifier: 0x0001" size="2" value="0001"/>
-            <field name="sctp.data_ssn" pos="56" show="2" showname="Stream sequence number: 2" size="2" value="0002"/>
-            <field name="sctp.data_payload_proto_id" pos="58" show="18" showname="Payload protocol identifier: S1 Application Protocol (S1AP) (18)" size="4" value="00000012"/>
-          </field>
-          <proto name="s1ap" pos="62" showname="S1 Application Protocol" size="68">
-            <field hide="yes" name="per.extension_bit" pos="62" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-            <field hide="yes" name="per.choice_index" pos="62" show="0" showname="Choice Index: 0" size="1" value="00"/>
-            <field name="s1ap.S1AP_PDU" pos="62" show="0" showname="S1AP-PDU: initiatingMessage (0)" size="68" value="000d404000000500000005c0740010d0000800048006692d001a00121117aecd82eb0407530829a497732efc0114006440080002f85900e00000004340060002f8590001">
-              <field name="s1ap.initiatingMessage" pos="62" show="" showname="initiatingMessage" size="68" value="">
-                <field name="s1ap.procedureCode" pos="63" show="13" showname="procedureCode: id-uplinkNASTransport (13)" size="1" value="0d"/>
-                <field hide="yes" name="per.enum_index" pos="64" show="1" showname="Enumerated Index: 1" size="1" value="40"/>
-                <field name="s1ap.criticality" pos="64" show="1" showname="criticality: ignore (1)" size="1" value="40"/>
-                <field hide="yes" name="per.open_type_length" pos="65" show="64" showname="Open Type Length: 64" size="1" value="40"/>
-                <field name="s1ap.value" pos="66" show="" showname="value" size="64" value="">
-                  <field name="s1ap.UplinkNASTransport" pos="66" show="" showname="UplinkNASTransport" size="64" value="">
-                    <field hide="yes" name="per.extension_bit" pos="66" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-                    <field hide="yes" name="per.sequence_of_length" pos="67" show="5" showname="Sequence-Of Length: 5" size="2" value="0005"/>
-                    <field name="s1ap.protocolIEs" pos="69" show="5" showname="protocolIEs: 5 items" size="61" value="00000005c0740010d0000800048006692d001a00121117aecd82eb0407530829a497732efc0114006440080002f85900e00000004340060002f8590001">
-                      <field name="" pos="69" show="Item 0: id-MME-UE-S1AP-ID" size="9" value="00000005c0740010d0">
-                        <field name="s1ap.ProtocolIE_Field" pos="69" show="" showname="ProtocolIE-Field" size="9" value="">
-                          <field name="s1ap.id" pos="69" show="0" showname="id: id-MME-UE-S1AP-ID (0)" size="2" value="0000"/>
-                          <field hide="yes" name="per.enum_index" pos="71" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                          <field name="s1ap.criticality" pos="71" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                          <field hide="yes" name="per.open_type_length" pos="72" show="5" showname="Open Type Length: 5" size="1" value="05"/>
-                          <field name="s1ap.value" pos="73" show="" showname="value" size="5" value="">
-                            <field name="s1ap.MME_UE_S1AP_ID" pos="73" show="1946161360" showname="MME-UE-S1AP-ID: 1946161360" size="5" value="c0740010d0"/>
-                          </field>
-                        </field>
-                      </field>
-                      <field name="" pos="78" show="Item 1: id-eNB-UE-S1AP-ID" size="8" value="000800048006692d">
-                        <field name="s1ap.ProtocolIE_Field" pos="78" show="" showname="ProtocolIE-Field" size="8" value="">
-                          <field name="s1ap.id" pos="78" show="8" showname="id: id-eNB-UE-S1AP-ID (8)" size="2" value="0008"/>
-                          <field hide="yes" name="per.enum_index" pos="80" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                          <field name="s1ap.criticality" pos="80" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                          <field hide="yes" name="per.open_type_length" pos="81" show="4" showname="Open Type Length: 4" size="1" value="04"/>
-                          <field name="s1ap.value" pos="82" show="" showname="value" size="4" value="">
-                            <field name="s1ap.ENB_UE_S1AP_ID" pos="82" show="420141" showname="ENB-UE-S1AP-ID: 420141" size="4" value="8006692d"/>
-                          </field>
-                        </field>
-                      </field>
-                      <field name="" pos="86" show="Item 2: id-NAS-PDU" size="22" value="001a00121117aecd82eb0407530829a497732efc0114">
-                        <field name="s1ap.ProtocolIE_Field" pos="86" show="" showname="ProtocolIE-Field" size="22" value="">
-                          <field name="s1ap.id" pos="86" show="26" showname="id: id-NAS-PDU (26)" size="2" value="001a"/>
-                          <field hide="yes" name="per.enum_index" pos="88" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                          <field name="s1ap.criticality" pos="88" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                          <field hide="yes" name="per.open_type_length" pos="89" show="18" showname="Open Type Length: 18" size="1" value="12"/>
-                          <field name="s1ap.value" pos="90" show="" showname="value" size="18" value="">
-                            <field hide="yes" name="per.octet_string_length" pos="90" show="17" showname="Octet String Length: 17" size="1" value="11"/>
-                            <field name="s1ap.NAS_PDU" pos="91" show="17:ae:cd:82:eb:04:07:53:08:29:a4:97:73:2e:fc:01:14" showname="NAS-PDU: 17aecd82eb0407530829a497732efc0114" size="17" value="17aecd82eb0407530829a497732efc0114"/>
-                            <proto name="nas-eps" pos="91" showname="Non-Access-Stratum (NAS)PDU" size="17">
-                              <field name="nas_eps.security_header_type" pos="91" show="1" showname="0001 .... = Security header type: Integrity protected (1)" size="1" unmaskedvalue="17" value="1"/>
-                              <field name="gsm_a.L3_protocol_discriminator" pos="91" show="0x07" showname=".... 0111 = Protocol discriminator: EPS mobility management messages (0x07)" size="1" unmaskedvalue="17" value="7"/>
-                              <field name="nas_eps.msg_auth_code" pos="92" show="0xaecd82eb" showname="Message authentication code: 0xaecd82eb" size="4" value="aecd82eb"/>
-                              <field name="nas_eps.seq_no" pos="96" show="4" showname="Sequence number: 4" size="1" value="04"/>
-                              <field name="nas_eps.security_header_type" pos="97" show="0" showname="0000 .... = Security header type: Plain NAS message, not security protected (0)" size="1" unmaskedvalue="07" value="0"/>
-                              <field name="gsm_a.L3_protocol_discriminator" pos="97" show="0x07" showname=".... 0111 = Protocol discriminator: EPS mobility management messages (0x07)" size="1" unmaskedvalue="07" value="7"/>
-                              <field name="nas_eps.nas_msg_emm_type" pos="98" show="0x53" showname="NAS EPS Mobility Management Message Type: Authentication response (0x53)" size="1" value="53"/>
-                              <field name="" pos="99" show="Authentication response parameter" size="9" value="0829a497732efc0114">
-                                <field name="gsm_a.len" pos="99" show="8" showname="Length: 8" size="1" value="08"/>
-                                <field name="nas_eps.emm.res" pos="100" show="29:a4:97:73:2e:fc:01:14" showname="RES: 29a497732efc0114" size="8" value="29a497732efc0114"/>
-                              </field>
-                            </proto>
-                          </field>
-                        </field>
-                      </field>
-                      <field name="" pos="108" show="Item 3: id-EUTRAN-CGI" size="12" value="006440080002f85900e00000">
-                        <field name="s1ap.ProtocolIE_Field" pos="108" show="" showname="ProtocolIE-Field" size="12" value="">
-                          <field name="s1ap.id" pos="108" show="100" showname="id: id-EUTRAN-CGI (100)" size="2" value="0064"/>
-                          <field hide="yes" name="per.enum_index" pos="110" show="1" showname="Enumerated Index: 1" size="1" value="40"/>
-                          <field name="s1ap.criticality" pos="110" show="1" showname="criticality: ignore (1)" size="1" value="40"/>
-                          <field hide="yes" name="per.open_type_length" pos="111" show="8" showname="Open Type Length: 8" size="1" value="08"/>
-                          <field name="s1ap.value" pos="112" show="" showname="value" size="8" value="">
-                            <field name="s1ap.EUTRAN_CGI" pos="112" show="" showname="EUTRAN-CGI" size="7" value="">
-                              <field hide="yes" name="per.extension_bit" pos="112" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-                              <field hide="yes" name="per.optional_field_bit" pos="112" show="0" showname=".0.. .... Optional Field Bit: False (iE-Extensions is NOT present)" size="1" unmaskedvalue="00" value="0"/>
-                              <field name="s1ap.pLMNidentity" pos="113" show="02:f8:59" showname="pLMNidentity: 02f859" size="3" value="02f859"/>
-                              <field name="e212.mcc" pos="113" show="208" showname="Mobile Country Code (MCC): France (208)" size="2" value="02f8"/>
-                              <field name="e212.mnc" pos="114" show="95" showname="Mobile Network Code (MNC): Unknown (95)" size="2" value="f859"/>
-                              <field name="s1ap.cell_ID" pos="112" show="00:e0:00:00" showname="cell-ID: 00e00000 [bit length 28, 4 LSB pad bits, 0000 0000  1110 0000  0000 0000  0000 .... decimal value 917504]" size="4" value="00e00000"/>
-                            </field>
-                          </field>
-                        </field>
-                      </field>
-                      <field name="" pos="120" show="Item 4: id-TAI" size="10" value="004340060002f8590001">
-                        <field name="s1ap.ProtocolIE_Field" pos="120" show="" showname="ProtocolIE-Field" size="10" value="">
-                          <field name="s1ap.id" pos="120" show="67" showname="id: id-TAI (67)" size="2" value="0043"/>
-                          <field hide="yes" name="per.enum_index" pos="122" show="1" showname="Enumerated Index: 1" size="1" value="40"/>
-                          <field name="s1ap.criticality" pos="122" show="1" showname="criticality: ignore (1)" size="1" value="40"/>
-                          <field hide="yes" name="per.open_type_length" pos="123" show="6" showname="Open Type Length: 6" size="1" value="06"/>
-                          <field name="s1ap.value" pos="124" show="" showname="value" size="6" value="">
-                            <field name="s1ap.TAI" pos="124" show="" showname="TAI" size="6" value="">
-                              <field hide="yes" name="per.extension_bit" pos="124" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-                              <field hide="yes" name="per.optional_field_bit" pos="124" show="0" showname=".0.. .... Optional Field Bit: False (iE-Extensions is NOT present)" size="1" unmaskedvalue="00" value="0"/>
-                              <field name="s1ap.pLMNidentity" pos="125" show="02:f8:59" showname="pLMNidentity: 02f859" size="3" value="02f859"/>
-                              <field name="e212.mcc" pos="125" show="208" showname="Mobile Country Code (MCC): France (208)" size="2" value="02f8"/>
-                              <field name="e212.mnc" pos="126" show="95" showname="Mobile Network Code (MNC): Unknown (95)" size="2" value="f859"/>
-                              <field name="s1ap.tAC" pos="128" show="00:01" showname="tAC: 0001" size="2" value="0001"/>
-                            </field>
-                          </field>
-                        </field>
-                      </field>
-                    </field>
-                  </field>
-                </field>
-              </field>
-            </field>
-          </proto>
-        </proto>
-      </proto>
-    </proto>
-  </packet>
-  <packet>
-    <proto name="frame" pos="0" showname="Frame 82: 122 bytes on wire (976 bits), 122 bytes captured (976 bits) on interface 0" size="122">
-      <field name="frame.interface_id" pos="0" show="0" showname="Interface id: 0" size="0"/>
-      <field name="frame.encap_type" pos="0" show="1" showname="Encapsulation type: Ethernet (1)" size="0"/>
-      <field name="frame.time" pos="0" show="Sep 25, 2015 16:34:53.978741000" showname="Arrival Time: Sep 25, 2015 16:34:53.978741000 CEST" size="0"/>
-      <field name="frame.offset_shift" pos="0" show="0.000000000" showname="Time shift for this packet: 0.000000000 seconds" size="0"/>
-      <field name="frame.time_epoch" pos="0" show="1443191693.978741000" showname="Epoch Time: 1443191693.978741000 seconds" size="0"/>
-      <field name="frame.time_delta" pos="0" show="0.001611000" showname="Time delta from previous captured frame: 0.001611000 seconds" size="0"/>
-      <field name="frame.time_delta_displayed" pos="0" show="0.001611000" showname="Time delta from previous displayed frame: 0.001611000 seconds" size="0"/>
-      <field name="frame.time_relative" pos="0" show="47.513110000" showname="Time since reference or first frame: 47.513110000 seconds" size="0"/>
-      <field name="frame.number" pos="0" show="82" showname="Frame Number: 82" size="0"/>
-      <field name="frame.len" pos="0" show="122" showname="Frame Length: 122 bytes (976 bits)" size="0"/>
-      <field name="frame.cap_len" pos="0" show="122" showname="Capture Length: 122 bytes (976 bits)" size="0"/>
-      <field name="frame.marked" pos="0" show="0" showname="Frame is marked: False" size="0"/>
-      <field name="frame.ignored" pos="0" show="0" showname="Frame is ignored: False" size="0"/>
-      <field name="frame.protocols" pos="0" show="eth:ip:sctp:s1ap:s1ap:s1ap:s1ap:s1ap:nas-eps" showname="Protocols in frame: eth:ip:sctp:s1ap:s1ap:s1ap:s1ap:s1ap:nas-eps" size="0"/>
-      <proto name="ip" pos="14" showname="Internet Protocol Version 4, Src: 192.168.12.17 (192.168.12.17), Dst: 192.168.12.213 (192.168.12.213)" size="20">
-        <field name="ip.version" pos="14" show="4" showname="Version: 4" size="1" value="45"/>
-        <field name="ip.hdr_len" pos="14" show="20" showname="Header length: 20 bytes" size="1" value="45"/>
-        <field name="ip.dsfield" pos="15" show="2" showname="Differentiated Services Field: 0x02 (DSCP 0x00: Default; ECN: 0x02: ECT(0) (ECN-Capable Transport))" size="1" value="02">
-          <field name="ip.dsfield.dscp" pos="15" show="0x00" showname="0000 00.. = Differentiated Services Codepoint: Default (0x00)" size="1" unmaskedvalue="02" value="0"/>
-          <field name="ip.dsfield.ecn" pos="15" show="0x02" showname=".... ..10 = Explicit Congestion Notification: ECT(0) (ECN-Capable Transport) (0x02)" size="1" unmaskedvalue="02" value="2"/>
-        </field>
-        <field name="ip.len" pos="16" show="108" showname="Total Length: 108" size="2" value="006c"/>
-        <field name="ip.id" pos="18" show="0x0000" showname="Identification: 0x0000 (0)" size="2" value="0000"/>
-        <field name="ip.flags" pos="20" show="0x02" showname="Flags: 0x02 (Don't Fragment)" size="1" value="40">
-          <field name="ip.flags.rb" pos="20" show="0" showname="0... .... = Reserved bit: Not set" size="1" value="40"/>
-          <field name="ip.flags.df" pos="20" show="1" showname=".1.. .... = Don't fragment: Set" size="1" value="40"/>
-          <field name="ip.flags.mf" pos="20" show="0" showname="..0. .... = More fragments: Not set" size="1" value="40"/>
-        </field>
-        <field name="ip.frag_offset" pos="20" show="0" showname="Fragment offset: 0" size="2" value="4000"/>
-        <field name="ip.ttl" pos="22" show="64" showname="Time to live: 64" size="1" value="40"/>
-        <field name="ip.proto" pos="23" show="132" showname="Protocol: SCTP (132)" size="1" value="84"/>
-        <field name="ip.checksum" pos="24" show="0x9fd5" showname="Header checksum: 0x9fd5 [validation disabled]" size="2" value="9fd5">
-          <field name="ip.checksum_good" pos="24" show="0" showname="Good: False" size="2" value="9fd5"/>
-          <field name="ip.checksum_bad" pos="24" show="0" showname="Bad: False" size="2" value="9fd5"/>
-        </field>
-        <field name="ip.src" pos="26" show="192.168.12.17" showname="Source: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.addr" pos="26" show="192.168.12.17" showname="Source or Destination Address: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.src_host" pos="26" show="192.168.12.17" showname="Source Host: 192.168.12.17" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.host" pos="26" show="192.168.12.17" showname="Source or Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-        <field name="ip.dst" pos="30" show="192.168.12.213" showname="Destination: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.addr" pos="30" show="192.168.12.213" showname="Source or Destination Address: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.dst_host" pos="30" show="192.168.12.213" showname="Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.host" pos="30" show="192.168.12.213" showname="Source or Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-        <field name="" pos="26" show="Source GeoIP: Unknown" size="4" value="c0a80c11"/>
-        <field name="" pos="30" show="Destination GeoIP: Unknown" size="4" value="c0a80cd5"/>
-        <proto name="sctp" pos="34" showname="Stream Control Transmission Protocol, Src Port: s1-control (36412), Dst Port: s1-control (36412)" size="44">
-          <field name="sctp.srcport" pos="34" show="36412" showname="Source port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.dstport" pos="36" show="36412" showname="Destination port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.verification_tag" pos="38" show="0x54f837ab" showname="Verification tag: 0x54f837ab" size="4" value="54f837ab"/>
-          <field hide="yes" name="sctp.port" pos="34" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-          <field hide="yes" name="sctp.port" pos="36" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.checksum" pos="42" show="0x5c01fd01" showname="Checksum: 0x5c01fd01 (not verified)" size="4" value="5c01fd01"/>
-          <field name="" pos="46" show="SACK chunk (Cumulative TSN: 3304831194, a_rwnd: 106496, gaps: 0, duplicate TSNs: 0)" size="16" value="03000010c4fbb8da0001a00000000000">
-            <field name="sctp.chunk_type" pos="46" show="3" showname="Chunk type: SACK (3)" size="1" value="03">
-              <field name="sctp.chunk_bit_1" pos="46" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="03" value="0"/>
-              <field name="sctp.chunk_bit_2" pos="46" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="03" value="0"/>
-            </field>
-            <field name="sctp.chunk_flags" pos="47" show="0x00" showname="Chunk flags: 0x00" size="1" value="00">
-              <field name="sctp.sack_nounce_sum" pos="47" show="0" showname=".... ...0 = Nounce sum: 0" size="1" unmaskedvalue="00" value="0"/>
-            </field>
-            <field name="sctp.chunk_length" pos="48" show="16" showname="Chunk length: 16" size="2" value="0010"/>
-            <field name="sctp.sack_cumulative_tsn_ack" pos="50" show="3304831194" showname="Cumulative TSN ACK: 3304831194" size="4" value="c4fbb8da"/>
-            <field name="sctp.sack_a_rwnd" pos="54" show="106496" showname="Advertised receiver window credit (a_rwnd): 106496" size="4" value="0001a000"/>
-            <field name="sctp.sack_number_of_gap_blocks" pos="58" show="0" showname="Number of gap acknowledgement blocks: 0" size="2" value="0000"/>
-            <field name="sctp.sack_number_of_duplicated_tsns" pos="60" show="0" showname="Number of duplicated TSNs: 0" size="2" value="0000"/>
-          </field>
-          <field name="" pos="62" show="DATA chunk(ordered, complete segment, TSN: 2008295178, SID: 1, SSN: 2, PPID: 301989888, payload length: 42 bytes)" size="16" value="0003003a77b4270a0001000212000000">
-            <field name="sctp.chunk_type" pos="62" show="0" showname="Chunk type: DATA (0)" size="1" value="00">
-              <field name="sctp.chunk_bit_1" pos="62" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="00" value="0"/>
-              <field name="sctp.chunk_bit_2" pos="62" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="00" value="0"/>
-            </field>
-            <field name="sctp.chunk_flags" pos="63" show="0x03" showname="Chunk flags: 0x03" size="1" value="03">
-              <field name="sctp.data_e_bit" pos="63" show="1" showname=".... ...1 = E-Bit: Last segment" size="1" unmaskedvalue="03" value="1"/>
-              <field name="sctp.data_b_bit" pos="63" show="1" showname=".... ..1. = B-Bit: First segment" size="1" unmaskedvalue="03" value="1"/>
-              <field name="sctp.data_u_bit" pos="63" show="0" showname=".... .0.. = U-Bit: Ordered delivery" size="1" unmaskedvalue="03" value="0"/>
-              <field name="sctp.data_i_bit" pos="63" show="0" showname=".... 0... = I-Bit: Possibly delay SACK" size="1" unmaskedvalue="03" value="0"/>
-            </field>
-            <field name="sctp.chunk_length" pos="64" show="58" showname="Chunk length: 58" size="2" value="003a"/>
-            <field name="sctp.data_tsn" pos="66" show="2008295178" showname="TSN: 2008295178" size="4" value="77b4270a"/>
-            <field name="sctp.data_sid" pos="70" show="0x0001" showname="Stream Identifier: 0x0001" size="2" value="0001"/>
-            <field name="sctp.data_ssn" pos="72" show="2" showname="Stream sequence number: 2" size="2" value="0002"/>
-            <field name="sctp.data_payload_proto_id" pos="74" show="301989888" showname="Payload protocol identifier: Unknown (301989888)" size="4" value="12000000"/>
-            <field name="sctp.chunk_padding" pos="120" show="00:00" showname="Chunk padding: 0000" size="2" value="0000"/>
-          </field>
-          <proto name="s1ap" pos="78" showname="S1 Application Protocol" size="42">
-            <field hide="yes" name="per.extension_bit" pos="78" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-            <field hide="yes" name="per.choice_index" pos="78" show="0" showname="Choice Index: 0" size="1" value="00"/>
-            <field name="s1ap.S1AP_PDU" pos="78" show="0" showname="S1AP-PDU: initiatingMessage (0)" size="42" value="000b002600000300000005c0740010d0000800048006692d001a000e0d376566048700075d020002e0e0">
-              <field name="s1ap.initiatingMessage" pos="78" show="" showname="initiatingMessage" size="42" value="">
-                <field name="s1ap.procedureCode" pos="79" show="11" showname="procedureCode: id-downlinkNASTransport (11)" size="1" value="0b"/>
-                <field hide="yes" name="per.enum_index" pos="80" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                <field name="s1ap.criticality" pos="80" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                <field hide="yes" name="per.open_type_length" pos="81" show="38" showname="Open Type Length: 38" size="1" value="26"/>
-                <field name="s1ap.value" pos="82" show="" showname="value" size="38" value="">
-                  <field name="s1ap.DownlinkNASTransport" pos="82" show="" showname="DownlinkNASTransport" size="38" value="">
-                    <field hide="yes" name="per.extension_bit" pos="82" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-                    <field hide="yes" name="per.sequence_of_length" pos="83" show="3" showname="Sequence-Of Length: 3" size="2" value="0003"/>
-                    <field name="s1ap.protocolIEs" pos="85" show="3" showname="protocolIEs: 3 items" size="35" value="00000005c0740010d0000800048006692d001a000e0d376566048700075d020002e0e0">
-                      <field name="" pos="85" show="Item 0: id-MME-UE-S1AP-ID" size="9" value="00000005c0740010d0">
-                        <field name="s1ap.ProtocolIE_Field" pos="85" show="" showname="ProtocolIE-Field" size="9" value="">
-                          <field name="s1ap.id" pos="85" show="0" showname="id: id-MME-UE-S1AP-ID (0)" size="2" value="0000"/>
-                          <field hide="yes" name="per.enum_index" pos="87" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                          <field name="s1ap.criticality" pos="87" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                          <field hide="yes" name="per.open_type_length" pos="88" show="5" showname="Open Type Length: 5" size="1" value="05"/>
-                          <field name="s1ap.value" pos="89" show="" showname="value" size="5" value="">
-                            <field name="s1ap.MME_UE_S1AP_ID" pos="89" show="1946161360" showname="MME-UE-S1AP-ID: 1946161360" size="5" value="c0740010d0"/>
-                          </field>
-                        </field>
-                      </field>
-                      <field name="" pos="94" show="Item 1: id-eNB-UE-S1AP-ID" size="8" value="000800048006692d">
-                        <field name="s1ap.ProtocolIE_Field" pos="94" show="" showname="ProtocolIE-Field" size="8" value="">
-                          <field name="s1ap.id" pos="94" show="8" showname="id: id-eNB-UE-S1AP-ID (8)" size="2" value="0008"/>
-                          <field hide="yes" name="per.enum_index" pos="96" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                          <field name="s1ap.criticality" pos="96" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                          <field hide="yes" name="per.open_type_length" pos="97" show="4" showname="Open Type Length: 4" size="1" value="04"/>
-                          <field name="s1ap.value" pos="98" show="" showname="value" size="4" value="">
-                            <field name="s1ap.ENB_UE_S1AP_ID" pos="98" show="420141" showname="ENB-UE-S1AP-ID: 420141" size="4" value="8006692d"/>
-                          </field>
-                        </field>
-                      </field>
-                      <field name="" pos="102" show="Item 2: id-NAS-PDU" size="18" value="001a000e0d376566048700075d020002e0e0">
-                        <field name="s1ap.ProtocolIE_Field" pos="102" show="" showname="ProtocolIE-Field" size="18" value="">
-                          <field name="s1ap.id" pos="102" show="26" showname="id: id-NAS-PDU (26)" size="2" value="001a"/>
-                          <field hide="yes" name="per.enum_index" pos="104" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                          <field name="s1ap.criticality" pos="104" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                          <field hide="yes" name="per.open_type_length" pos="105" show="14" showname="Open Type Length: 14" size="1" value="0e"/>
-                          <field name="s1ap.value" pos="106" show="" showname="value" size="14" value="">
-                            <field hide="yes" name="per.octet_string_length" pos="106" show="13" showname="Octet String Length: 13" size="1" value="0d"/>
-                            <field name="s1ap.NAS_PDU" pos="107" show="37:65:66:04:87:00:07:5d:02:00:02:e0:e0" showname="NAS-PDU: 376566048700075d020002e0e0" size="13" value="376566048700075d020002e0e0"/>
-                            <proto name="nas-eps" pos="107" showname="Non-Access-Stratum (NAS)PDU" size="13">
-                              <field name="nas_eps.security_header_type" pos="107" show="3" showname="0011 .... = Security header type: Integrity protected with new EPS security context (3)" size="1" unmaskedvalue="37" value="3"/>
-                              <field name="gsm_a.L3_protocol_discriminator" pos="107" show="0x07" showname=".... 0111 = Protocol discriminator: EPS mobility management messages (0x07)" size="1" unmaskedvalue="37" value="7"/>
-                              <field name="nas_eps.msg_auth_code" pos="108" show="0x65660487" showname="Message authentication code: 0x65660487" size="4" value="65660487"/>
-                              <field name="nas_eps.seq_no" pos="112" show="0" showname="Sequence number: 0" size="1" value="00"/>
-                              <field name="nas_eps.security_header_type" pos="113" show="0" showname="0000 .... = Security header type: Plain NAS message, not security protected (0)" size="1" unmaskedvalue="07" value="0"/>
-                              <field name="gsm_a.L3_protocol_discriminator" pos="113" show="0x07" showname=".... 0111 = Protocol discriminator: EPS mobility management messages (0x07)" size="1" unmaskedvalue="07" value="7"/>
-                              <field name="nas_eps.nas_msg_emm_type" pos="114" show="0x5d" showname="NAS EPS Mobility Management Message Type: Security mode command (0x5d)" size="1" value="5d"/>
-                              <field name="" pos="115" show="NAS security algorithms - Selected NAS security algorithms" size="1" value="02">
-                                <field name="nas_eps.spare_bits" pos="115" show="0x00" showname="0... .... = Spare bit(s): 0x00" size="1" value="02"/>
-                                <field name="nas_eps.emm.toc" pos="115" show="0" showname=".000 .... = Type of ciphering algorithm: EPS encryption algorithm EEA0 (null ciphering algorithm) (0)" size="1" unmaskedvalue="02" value="0"/>
-                                <field name="nas_eps.spare_bits" pos="115" show="0x00" showname=".... 0... = Spare bit(s): 0x00" size="1" value="02"/>
-                                <field name="nas_eps.emm.toi" pos="115" show="2" showname=".... .010 = Type of integrity protection algorithm: EPS integrity algorithm 128-EIA2 (2)" size="1" unmaskedvalue="02" value="2"/>
-                              </field>
-                              <field name="nas_eps.emm.spare_half_octet" pos="116" show="0" showname="0000 .... = Spare half octet: 0" size="1" value="00"/>
-                              <field name="nas_eps.emm.tsc" pos="116" show="0" showname=".... 0... = Type of security context flag (TSC): Native security context (for KSIasme)" size="1" value="00"/>
-                              <field name="nas_eps.emm.nas_key_set_id" pos="116" show="0" showname=".... .000 = NAS key set identifier:  (0) ASME" size="1" value="00"/>
-                              <field name="" pos="117" show="UE security capability - Replayed UE security capabilities" size="3" value="02e0e0">
-                                <field name="gsm_a.len" pos="117" show="2" showname="Length: 2" size="1" value="02"/>
-                                <field name="nas_eps.emm.eea0" pos="118" show="1" showname="1... .... = EEA0: Supported" size="1" unmaskedvalue="e0" value="1"/>
-                                <field name="nas_eps.emm.128eea1" pos="118" show="1" showname=".1.. .... = 128-EEA1: Supported" size="1" unmaskedvalue="e0" value="1"/>
-                                <field name="nas_eps.emm.128eea2" pos="118" show="1" showname="..1. .... = 128-EEA2: Supported" size="1" unmaskedvalue="e0" value="1"/>
-                                <field name="nas_eps.emm.eea3" pos="118" show="0" showname="...0 .... = 128-EEA3: Not Supported" size="1" unmaskedvalue="e0" value="0"/>
-                                <field name="nas_eps.emm.eea4" pos="118" show="0" showname=".... 0... = EEA4: Not Supported" size="1" unmaskedvalue="e0" value="0"/>
-                                <field name="nas_eps.emm.eea5" pos="118" show="0" showname=".... .0.. = EEA5: Not Supported" size="1" unmaskedvalue="e0" value="0"/>
-                                <field name="nas_eps.emm.eea6" pos="118" show="0" showname=".... ..0. = EEA6: Not Supported" size="1" unmaskedvalue="e0" value="0"/>
-                                <field name="nas_eps.emm.eea7" pos="118" show="0" showname=".... ...0 = EEA7: Not Supported" size="1" unmaskedvalue="e0" value="0"/>
-                                <field name="nas_eps.emm.eia0" pos="119" show="1" showname="1... .... = EIA0: Supported" size="1" unmaskedvalue="e0" value="1"/>
-                                <field name="nas_eps.emm.128eia1" pos="119" show="1" showname=".1.. .... = 128-EIA1: Supported" size="1" unmaskedvalue="e0" value="1"/>
-                                <field name="nas_eps.emm.128eia2" pos="119" show="1" showname="..1. .... = 128-EIA2: Supported" size="1" unmaskedvalue="e0" value="1"/>
-                                <field name="nas_eps.emm.eia3" pos="119" show="0" showname="...0 .... = 128-EIA3: Not Supported" size="1" unmaskedvalue="e0" value="0"/>
-                                <field name="nas_eps.emm.eia4" pos="119" show="0" showname=".... 0... = EIA4: Not Supported" size="1" unmaskedvalue="e0" value="0"/>
-                                <field name="nas_eps.emm.eia5" pos="119" show="0" showname=".... .0.. = EIA5: Not Supported" size="1" unmaskedvalue="e0" value="0"/>
-                                <field name="nas_eps.emm.eia6" pos="119" show="0" showname=".... ..0. = EIA6: Not Supported" size="1" unmaskedvalue="e0" value="0"/>
-                                <field name="nas_eps.emm.eia7" pos="119" show="0" showname=".... ...0 = EIA7: Not Supported" size="1" unmaskedvalue="e0" value="0"/>
-                              </field>
-                            </proto>
-                          </field>
-                        </field>
-                      </field>
-                    </field>
-                  </field>
-                </field>
-              </field>
-            </field>
-          </proto>
-        </proto>
-      </proto>
-    </proto>
-  </packet>
-  <packet>
-    <proto name="frame" pos="0" showname="Frame 83: 138 bytes on wire (1104 bits), 138 bytes captured (1104 bits) on interface 0" size="138">
-      <field name="frame.interface_id" pos="0" show="0" showname="Interface id: 0" size="0"/>
-      <field name="frame.encap_type" pos="0" show="1" showname="Encapsulation type: Ethernet (1)" size="0"/>
-      <field name="frame.time" pos="0" show="Sep 25, 2015 16:34:53.997356000" showname="Arrival Time: Sep 25, 2015 16:34:53.997356000 CEST" size="0"/>
-      <field name="frame.offset_shift" pos="0" show="0.000000000" showname="Time shift for this packet: 0.000000000 seconds" size="0"/>
-      <field name="frame.time_epoch" pos="0" show="1443191693.997356000" showname="Epoch Time: 1443191693.997356000 seconds" size="0"/>
-      <field name="frame.time_delta" pos="0" show="0.018615000" showname="Time delta from previous captured frame: 0.018615000 seconds" size="0"/>
-      <field name="frame.time_delta_displayed" pos="0" show="0.018615000" showname="Time delta from previous displayed frame: 0.018615000 seconds" size="0"/>
-      <field name="frame.time_relative" pos="0" show="47.531725000" showname="Time since reference or first frame: 47.531725000 seconds" size="0"/>
-      <field name="frame.number" pos="0" show="83" showname="Frame Number: 83" size="0"/>
-      <field name="frame.len" pos="0" show="138" showname="Frame Length: 138 bytes (1104 bits)" size="0"/>
-      <field name="frame.cap_len" pos="0" show="138" showname="Capture Length: 138 bytes (1104 bits)" size="0"/>
-      <field name="frame.marked" pos="0" show="0" showname="Frame is marked: False" size="0"/>
-      <field name="frame.ignored" pos="0" show="0" showname="Frame is ignored: False" size="0"/>
-      <field name="frame.protocols" pos="0" show="eth:ip:sctp:s1ap:s1ap:s1ap:s1ap:s1ap:nas-eps:s1ap:s1ap" showname="Protocols in frame: eth:ip:sctp:s1ap:s1ap:s1ap:s1ap:s1ap:nas-eps:s1ap:s1ap" size="0"/>
-      <proto name="ip" pos="14" showname="Internet Protocol Version 4, Src: 192.168.12.213 (192.168.12.213), Dst: 192.168.12.17 (192.168.12.17)" size="20">
-        <field name="ip.version" pos="14" show="4" showname="Version: 4" size="1" value="45"/>
-        <field name="ip.hdr_len" pos="14" show="20" showname="Header length: 20 bytes" size="1" value="45"/>
-        <field name="ip.dsfield" pos="15" show="2" showname="Differentiated Services Field: 0x02 (DSCP 0x00: Default; ECN: 0x02: ECT(0) (ECN-Capable Transport))" size="1" value="02">
-          <field name="ip.dsfield.dscp" pos="15" show="0x00" showname="0000 00.. = Differentiated Services Codepoint: Default (0x00)" size="1" unmaskedvalue="02" value="0"/>
-          <field name="ip.dsfield.ecn" pos="15" show="0x02" showname=".... ..10 = Explicit Congestion Notification: ECT(0) (ECN-Capable Transport) (0x02)" size="1" unmaskedvalue="02" value="2"/>
-        </field>
-        <field name="ip.len" pos="16" show="124" showname="Total Length: 124" size="2" value="007c"/>
-        <field name="ip.id" pos="18" show="0x0009" showname="Identification: 0x0009 (9)" size="2" value="0009"/>
-        <field name="ip.flags" pos="20" show="0x02" showname="Flags: 0x02 (Don't Fragment)" size="1" value="40">
-          <field name="ip.flags.rb" pos="20" show="0" showname="0... .... = Reserved bit: Not set" size="1" value="40"/>
-          <field name="ip.flags.df" pos="20" show="1" showname=".1.. .... = Don't fragment: Set" size="1" value="40"/>
-          <field name="ip.flags.mf" pos="20" show="0" showname="..0. .... = More fragments: Not set" size="1" value="40"/>
-        </field>
-        <field name="ip.frag_offset" pos="20" show="0" showname="Fragment offset: 0" size="2" value="4000"/>
-        <field name="ip.ttl" pos="22" show="64" showname="Time to live: 64" size="1" value="40"/>
-        <field name="ip.proto" pos="23" show="132" showname="Protocol: SCTP (132)" size="1" value="84"/>
-        <field name="ip.checksum" pos="24" show="0x9fbc" showname="Header checksum: 0x9fbc [validation disabled]" size="2" value="9fbc">
-          <field name="ip.checksum_good" pos="24" show="0" showname="Good: False" size="2" value="9fbc"/>
-          <field name="ip.checksum_bad" pos="24" show="0" showname="Bad: False" size="2" value="9fbc"/>
-        </field>
-        <field name="ip.src" pos="26" show="192.168.12.213" showname="Source: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.addr" pos="26" show="192.168.12.213" showname="Source or Destination Address: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.src_host" pos="26" show="192.168.12.213" showname="Source Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.host" pos="26" show="192.168.12.213" showname="Source or Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-        <field name="ip.dst" pos="30" show="192.168.12.17" showname="Destination: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.addr" pos="30" show="192.168.12.17" showname="Source or Destination Address: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.dst_host" pos="30" show="192.168.12.17" showname="Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.host" pos="30" show="192.168.12.17" showname="Source or Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-        <field name="" pos="26" show="Source GeoIP: Unknown" size="4" value="c0a80cd5"/>
-        <field name="" pos="30" show="Destination GeoIP: Unknown" size="4" value="c0a80c11"/>
-        <proto name="sctp" pos="34" showname="Stream Control Transmission Protocol, Src Port: s1-control (36412), Dst Port: s1-control (36412)" size="44">
-          <field name="sctp.srcport" pos="34" show="36412" showname="Source port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.dstport" pos="36" show="36412" showname="Destination port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.verification_tag" pos="38" show="0x4cd1eca0" showname="Verification tag: 0x4cd1eca0" size="4" value="4cd1eca0"/>
-          <field hide="yes" name="sctp.port" pos="34" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-          <field hide="yes" name="sctp.port" pos="36" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.checksum" pos="42" show="0xd5500667" showname="Checksum: 0xd5500667 (not verified)" size="4" value="d5500667"/>
-          <field name="" pos="46" show="SACK chunk (Cumulative TSN: 2008295178, a_rwnd: 106496, gaps: 0, duplicate TSNs: 0)" size="16" value="0300001077b4270a0001a00000000000">
-            <field name="sctp.chunk_type" pos="46" show="3" showname="Chunk type: SACK (3)" size="1" value="03">
-              <field name="sctp.chunk_bit_1" pos="46" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="03" value="0"/>
-              <field name="sctp.chunk_bit_2" pos="46" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="03" value="0"/>
-            </field>
-            <field name="sctp.chunk_flags" pos="47" show="0x00" showname="Chunk flags: 0x00" size="1" value="00">
-              <field name="sctp.sack_nounce_sum" pos="47" show="0" showname=".... ...0 = Nounce sum: 0" size="1" unmaskedvalue="00" value="0"/>
-            </field>
-            <field name="sctp.chunk_length" pos="48" show="16" showname="Chunk length: 16" size="2" value="0010"/>
-            <field name="sctp.sack_cumulative_tsn_ack" pos="50" show="2008295178" showname="Cumulative TSN ACK: 2008295178" size="4" value="77b4270a"/>
-            <field name="sctp.sack_a_rwnd" pos="54" show="106496" showname="Advertised receiver window credit (a_rwnd): 106496" size="4" value="0001a000"/>
-            <field name="sctp.sack_number_of_gap_blocks" pos="58" show="0" showname="Number of gap acknowledgement blocks: 0" size="2" value="0000"/>
-            <field name="sctp.sack_number_of_duplicated_tsns" pos="60" show="0" showname="Number of duplicated TSNs: 0" size="2" value="0000"/>
-          </field>
-          <field name="" pos="62" show="DATA chunk(ordered, complete segment, TSN: 3304831195, SID: 1, SSN: 3, PPID: 18, payload length: 59 bytes)" size="16" value="0003004bc4fbb8db0001000300000012">
-            <field name="sctp.chunk_type" pos="62" show="0" showname="Chunk type: DATA (0)" size="1" value="00">
-              <field name="sctp.chunk_bit_1" pos="62" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="00" value="0"/>
-              <field name="sctp.chunk_bit_2" pos="62" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="00" value="0"/>
-            </field>
-            <field name="sctp.chunk_flags" pos="63" show="0x03" showname="Chunk flags: 0x03" size="1" value="03">
-              <field name="sctp.data_e_bit" pos="63" show="1" showname=".... ...1 = E-Bit: Last segment" size="1" unmaskedvalue="03" value="1"/>
-              <field name="sctp.data_b_bit" pos="63" show="1" showname=".... ..1. = B-Bit: First segment" size="1" unmaskedvalue="03" value="1"/>
-              <field name="sctp.data_u_bit" pos="63" show="0" showname=".... .0.. = U-Bit: Ordered delivery" size="1" unmaskedvalue="03" value="0"/>
-              <field name="sctp.data_i_bit" pos="63" show="0" showname=".... 0... = I-Bit: Possibly delay SACK" size="1" unmaskedvalue="03" value="0"/>
-            </field>
-            <field name="sctp.chunk_length" pos="64" show="75" showname="Chunk length: 75" size="2" value="004b"/>
-            <field name="sctp.data_tsn" pos="66" show="3304831195" showname="TSN: 3304831195" size="4" value="c4fbb8db"/>
-            <field name="sctp.data_sid" pos="70" show="0x0001" showname="Stream Identifier: 0x0001" size="2" value="0001"/>
-            <field name="sctp.data_ssn" pos="72" show="3" showname="Stream sequence number: 3" size="2" value="0003"/>
-            <field name="sctp.data_payload_proto_id" pos="74" show="18" showname="Payload protocol identifier: S1 Application Protocol (S1AP) (18)" size="4" value="00000012"/>
-            <field name="sctp.chunk_padding" pos="137" show="00" showname="Chunk padding: 00" size="1" value="00"/>
-          </field>
-          <proto name="s1ap" pos="78" showname="S1 Application Protocol" size="59">
-            <field hide="yes" name="per.extension_bit" pos="78" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-            <field hide="yes" name="per.choice_index" pos="78" show="0" showname="Choice Index: 0" size="1" value="00"/>
-            <field name="s1ap.S1AP_PDU" pos="78" show="0" showname="S1AP-PDU: initiatingMessage (0)" size="59" value="000d403700000500000005c0740010d0000800048006692d001a0009084795eaf72e00075e006440080002f85900e00000004340060002f8590001">
-              <field name="s1ap.initiatingMessage" pos="78" show="" showname="initiatingMessage" size="59" value="">
-                <field name="s1ap.procedureCode" pos="79" show="13" showname="procedureCode: id-uplinkNASTransport (13)" size="1" value="0d"/>
-                <field hide="yes" name="per.enum_index" pos="80" show="1" showname="Enumerated Index: 1" size="1" value="40"/>
-                <field name="s1ap.criticality" pos="80" show="1" showname="criticality: ignore (1)" size="1" value="40"/>
-                <field hide="yes" name="per.open_type_length" pos="81" show="55" showname="Open Type Length: 55" size="1" value="37"/>
-                <field name="s1ap.value" pos="82" show="" showname="value" size="55" value="">
-                  <field name="s1ap.UplinkNASTransport" pos="82" show="" showname="UplinkNASTransport" size="55" value="">
-                    <field hide="yes" name="per.extension_bit" pos="82" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-                    <field hide="yes" name="per.sequence_of_length" pos="83" show="5" showname="Sequence-Of Length: 5" size="2" value="0005"/>
-                    <field name="s1ap.protocolIEs" pos="85" show="5" showname="protocolIEs: 5 items" size="52" value="00000005c0740010d0000800048006692d001a0009084795eaf72e00075e006440080002f85900e00000004340060002f8590001">
-                      <field name="" pos="85" show="Item 0: id-MME-UE-S1AP-ID" size="9" value="00000005c0740010d0">
-                        <field name="s1ap.ProtocolIE_Field" pos="85" show="" showname="ProtocolIE-Field" size="9" value="">
-                          <field name="s1ap.id" pos="85" show="0" showname="id: id-MME-UE-S1AP-ID (0)" size="2" value="0000"/>
-                          <field hide="yes" name="per.enum_index" pos="87" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                          <field name="s1ap.criticality" pos="87" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                          <field hide="yes" name="per.open_type_length" pos="88" show="5" showname="Open Type Length: 5" size="1" value="05"/>
-                          <field name="s1ap.value" pos="89" show="" showname="value" size="5" value="">
-                            <field name="s1ap.MME_UE_S1AP_ID" pos="89" show="1946161360" showname="MME-UE-S1AP-ID: 1946161360" size="5" value="c0740010d0"/>
-                          </field>
-                        </field>
-                      </field>
-                      <field name="" pos="94" show="Item 1: id-eNB-UE-S1AP-ID" size="8" value="000800048006692d">
-                        <field name="s1ap.ProtocolIE_Field" pos="94" show="" showname="ProtocolIE-Field" size="8" value="">
-                          <field name="s1ap.id" pos="94" show="8" showname="id: id-eNB-UE-S1AP-ID (8)" size="2" value="0008"/>
-                          <field hide="yes" name="per.enum_index" pos="96" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                          <field name="s1ap.criticality" pos="96" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                          <field hide="yes" name="per.open_type_length" pos="97" show="4" showname="Open Type Length: 4" size="1" value="04"/>
-                          <field name="s1ap.value" pos="98" show="" showname="value" size="4" value="">
-                            <field name="s1ap.ENB_UE_S1AP_ID" pos="98" show="420141" showname="ENB-UE-S1AP-ID: 420141" size="4" value="8006692d"/>
-                          </field>
-                        </field>
-                      </field>
-                      <field name="" pos="102" show="Item 2: id-NAS-PDU" size="13" value="001a0009084795eaf72e00075e">
-                        <field name="s1ap.ProtocolIE_Field" pos="102" show="" showname="ProtocolIE-Field" size="13" value="">
-                          <field name="s1ap.id" pos="102" show="26" showname="id: id-NAS-PDU (26)" size="2" value="001a"/>
-                          <field hide="yes" name="per.enum_index" pos="104" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                          <field name="s1ap.criticality" pos="104" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                          <field hide="yes" name="per.open_type_length" pos="105" show="9" showname="Open Type Length: 9" size="1" value="09"/>
-                          <field name="s1ap.value" pos="106" show="" showname="value" size="9" value="">
-                            <field hide="yes" name="per.octet_string_length" pos="106" show="8" showname="Octet String Length: 8" size="1" value="08"/>
-                            <field name="s1ap.NAS_PDU" pos="107" show="47:95:ea:f7:2e:00:07:5e" showname="NAS-PDU: 4795eaf72e00075e" size="8" value="4795eaf72e00075e"/>
-                            <proto name="nas-eps" pos="107" showname="Non-Access-Stratum (NAS)PDU" size="8">
-                              <field name="nas_eps.security_header_type" pos="107" show="4" showname="0100 .... = Security header type: Integrity protected and ciphered with new EPS security context (4)" size="1" unmaskedvalue="47" value="4"/>
-                              <field name="gsm_a.L3_protocol_discriminator" pos="107" show="0x07" showname=".... 0111 = Protocol discriminator: EPS mobility management messages (0x07)" size="1" unmaskedvalue="47" value="7"/>
-                              <field name="nas_eps.msg_auth_code" pos="108" show="0x95eaf72e" showname="Message authentication code: 0x95eaf72e" size="4" value="95eaf72e"/>
-                              <field name="nas_eps.seq_no" pos="112" show="0" showname="Sequence number: 0" size="1" value="00"/>
-                              <field name="nas_eps.security_header_type" pos="113" show="0" showname="0000 .... = Security header type: Plain NAS message, not security protected (0)" size="1" unmaskedvalue="07" value="0"/>
-                              <field name="gsm_a.L3_protocol_discriminator" pos="113" show="0x07" showname=".... 0111 = Protocol discriminator: EPS mobility management messages (0x07)" size="1" unmaskedvalue="07" value="7"/>
-                              <field name="nas_eps.nas_msg_emm_type" pos="114" show="0x5e" showname="NAS EPS Mobility Management Message Type: Security mode complete (0x5e)" size="1" value="5e"/>
-                            </proto>
-                          </field>
-                        </field>
-                      </field>
-                      <field name="" pos="115" show="Item 3: id-EUTRAN-CGI" size="12" value="006440080002f85900e00000">
-                        <field name="s1ap.ProtocolIE_Field" pos="115" show="" showname="ProtocolIE-Field" size="12" value="">
-                          <field name="s1ap.id" pos="115" show="100" showname="id: id-EUTRAN-CGI (100)" size="2" value="0064"/>
-                          <field hide="yes" name="per.enum_index" pos="117" show="1" showname="Enumerated Index: 1" size="1" value="40"/>
-                          <field name="s1ap.criticality" pos="117" show="1" showname="criticality: ignore (1)" size="1" value="40"/>
-                          <field hide="yes" name="per.open_type_length" pos="118" show="8" showname="Open Type Length: 8" size="1" value="08"/>
-                          <field name="s1ap.value" pos="119" show="" showname="value" size="8" value="">
-                            <field name="s1ap.EUTRAN_CGI" pos="119" show="" showname="EUTRAN-CGI" size="7" value="">
-                              <field hide="yes" name="per.extension_bit" pos="119" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-                              <field hide="yes" name="per.optional_field_bit" pos="119" show="0" showname=".0.. .... Optional Field Bit: False (iE-Extensions is NOT present)" size="1" unmaskedvalue="00" value="0"/>
-                              <field name="s1ap.pLMNidentity" pos="120" show="02:f8:59" showname="pLMNidentity: 02f859" size="3" value="02f859"/>
-                              <field name="e212.mcc" pos="120" show="208" showname="Mobile Country Code (MCC): France (208)" size="2" value="02f8"/>
-                              <field name="e212.mnc" pos="121" show="95" showname="Mobile Network Code (MNC): Unknown (95)" size="2" value="f859"/>
-                              <field name="s1ap.cell_ID" pos="119" show="00:e0:00:00" showname="cell-ID: 00e00000 [bit length 28, 4 LSB pad bits, 0000 0000  1110 0000  0000 0000  0000 .... decimal value 917504]" size="4" value="00e00000"/>
-                            </field>
-                          </field>
-                        </field>
-                      </field>
-                      <field name="" pos="127" show="Item 4: id-TAI" size="10" value="004340060002f8590001">
-                        <field name="s1ap.ProtocolIE_Field" pos="127" show="" showname="ProtocolIE-Field" size="10" value="">
-                          <field name="s1ap.id" pos="127" show="67" showname="id: id-TAI (67)" size="2" value="0043"/>
-                          <field hide="yes" name="per.enum_index" pos="129" show="1" showname="Enumerated Index: 1" size="1" value="40"/>
-                          <field name="s1ap.criticality" pos="129" show="1" showname="criticality: ignore (1)" size="1" value="40"/>
-                          <field hide="yes" name="per.open_type_length" pos="130" show="6" showname="Open Type Length: 6" size="1" value="06"/>
-                          <field name="s1ap.value" pos="131" show="" showname="value" size="6" value="">
-                            <field name="s1ap.TAI" pos="131" show="" showname="TAI" size="6" value="">
-                              <field hide="yes" name="per.extension_bit" pos="131" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-                              <field hide="yes" name="per.optional_field_bit" pos="131" show="0" showname=".0.. .... Optional Field Bit: False (iE-Extensions is NOT present)" size="1" unmaskedvalue="00" value="0"/>
-                              <field name="s1ap.pLMNidentity" pos="132" show="02:f8:59" showname="pLMNidentity: 02f859" size="3" value="02f859"/>
-                              <field name="e212.mcc" pos="132" show="208" showname="Mobile Country Code (MCC): France (208)" size="2" value="02f8"/>
-                              <field name="e212.mnc" pos="133" show="95" showname="Mobile Network Code (MNC): Unknown (95)" size="2" value="f859"/>
-                              <field name="s1ap.tAC" pos="135" show="00:01" showname="tAC: 0001" size="2" value="0001"/>
-                            </field>
-                          </field>
-                        </field>
-                      </field>
-                    </field>
-                  </field>
-                </field>
-              </field>
-            </field>
-          </proto>
-        </proto>
-      </proto>
-    </proto>
-  </packet>
-  <packet>
-    <proto name="frame" pos="0" showname="Frame 84: 270 bytes on wire (2160 bits), 270 bytes captured (2160 bits) on interface 0" size="270">
-      <field name="frame.interface_id" pos="0" show="0" showname="Interface id: 0" size="0"/>
-      <field name="frame.encap_type" pos="0" show="1" showname="Encapsulation type: Ethernet (1)" size="0"/>
-      <field name="frame.time" pos="0" show="Sep 25, 2015 16:34:54.002963000" showname="Arrival Time: Sep 25, 2015 16:34:54.002963000 CEST" size="0"/>
-      <field name="frame.offset_shift" pos="0" show="0.000000000" showname="Time shift for this packet: 0.000000000 seconds" size="0"/>
-      <field name="frame.time_epoch" pos="0" show="1443191694.002963000" showname="Epoch Time: 1443191694.002963000 seconds" size="0"/>
-      <field name="frame.time_delta" pos="0" show="0.005607000" showname="Time delta from previous captured frame: 0.005607000 seconds" size="0"/>
-      <field name="frame.time_delta_displayed" pos="0" show="0.005607000" showname="Time delta from previous displayed frame: 0.005607000 seconds" size="0"/>
-      <field name="frame.time_relative" pos="0" show="47.537332000" showname="Time since reference or first frame: 47.537332000 seconds" size="0"/>
-      <field name="frame.number" pos="0" show="84" showname="Frame Number: 84" size="0"/>
-      <field name="frame.len" pos="0" show="270" showname="Frame Length: 270 bytes (2160 bits)" size="0"/>
-      <field name="frame.cap_len" pos="0" show="270" showname="Capture Length: 270 bytes (2160 bits)" size="0"/>
-      <field name="frame.marked" pos="0" show="0" showname="Frame is marked: False" size="0"/>
-      <field name="frame.ignored" pos="0" show="0" showname="Frame is ignored: False" size="0"/>
-      <field name="frame.protocols" pos="0" show="eth:ip:sctp:s1ap:s1ap:s1ap:s1ap:s1ap:s1ap:s1ap:nas-eps:ipcp:s1ap:s1ap" showname="Protocols in frame: eth:ip:sctp:s1ap:s1ap:s1ap:s1ap:s1ap:s1ap:s1ap:nas-eps:ipcp:s1ap:s1ap" size="0"/>
-      <proto name="ip" pos="14" showname="Internet Protocol Version 4, Src: 192.168.12.17 (192.168.12.17), Dst: 192.168.12.213 (192.168.12.213)" size="20">
-        <field name="ip.version" pos="14" show="4" showname="Version: 4" size="1" value="45"/>
-        <field name="ip.hdr_len" pos="14" show="20" showname="Header length: 20 bytes" size="1" value="45"/>
-        <field name="ip.dsfield" pos="15" show="2" showname="Differentiated Services Field: 0x02 (DSCP 0x00: Default; ECN: 0x02: ECT(0) (ECN-Capable Transport))" size="1" value="02">
-          <field name="ip.dsfield.dscp" pos="15" show="0x00" showname="0000 00.. = Differentiated Services Codepoint: Default (0x00)" size="1" unmaskedvalue="02" value="0"/>
-          <field name="ip.dsfield.ecn" pos="15" show="0x02" showname=".... ..10 = Explicit Congestion Notification: ECT(0) (ECN-Capable Transport) (0x02)" size="1" unmaskedvalue="02" value="2"/>
-        </field>
-        <field name="ip.len" pos="16" show="256" showname="Total Length: 256" size="2" value="0100"/>
-        <field name="ip.id" pos="18" show="0x0000" showname="Identification: 0x0000 (0)" size="2" value="0000"/>
-        <field name="ip.flags" pos="20" show="0x02" showname="Flags: 0x02 (Don't Fragment)" size="1" value="40">
-          <field name="ip.flags.rb" pos="20" show="0" showname="0... .... = Reserved bit: Not set" size="1" value="40"/>
-          <field name="ip.flags.df" pos="20" show="1" showname=".1.. .... = Don't fragment: Set" size="1" value="40"/>
-          <field name="ip.flags.mf" pos="20" show="0" showname="..0. .... = More fragments: Not set" size="1" value="40"/>
-        </field>
-        <field name="ip.frag_offset" pos="20" show="0" showname="Fragment offset: 0" size="2" value="4000"/>
-        <field name="ip.ttl" pos="22" show="64" showname="Time to live: 64" size="1" value="40"/>
-        <field name="ip.proto" pos="23" show="132" showname="Protocol: SCTP (132)" size="1" value="84"/>
-        <field name="ip.checksum" pos="24" show="0x9f41" showname="Header checksum: 0x9f41 [validation disabled]" size="2" value="9f41">
-          <field name="ip.checksum_good" pos="24" show="0" showname="Good: False" size="2" value="9f41"/>
-          <field name="ip.checksum_bad" pos="24" show="0" showname="Bad: False" size="2" value="9f41"/>
-        </field>
-        <field name="ip.src" pos="26" show="192.168.12.17" showname="Source: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.addr" pos="26" show="192.168.12.17" showname="Source or Destination Address: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.src_host" pos="26" show="192.168.12.17" showname="Source Host: 192.168.12.17" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.host" pos="26" show="192.168.12.17" showname="Source or Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-        <field name="ip.dst" pos="30" show="192.168.12.213" showname="Destination: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.addr" pos="30" show="192.168.12.213" showname="Source or Destination Address: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.dst_host" pos="30" show="192.168.12.213" showname="Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.host" pos="30" show="192.168.12.213" showname="Source or Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-        <field name="" pos="26" show="Source GeoIP: Unknown" size="4" value="c0a80c11"/>
-        <field name="" pos="30" show="Destination GeoIP: Unknown" size="4" value="c0a80cd5"/>
-        <proto name="sctp" pos="34" showname="Stream Control Transmission Protocol, Src Port: s1-control (36412), Dst Port: s1-control (36412)" size="44">
-          <field name="sctp.srcport" pos="34" show="36412" showname="Source port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.dstport" pos="36" show="36412" showname="Destination port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.verification_tag" pos="38" show="0x54f837ab" showname="Verification tag: 0x54f837ab" size="4" value="54f837ab"/>
-          <field hide="yes" name="sctp.port" pos="34" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-          <field hide="yes" name="sctp.port" pos="36" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.checksum" pos="42" show="0xcffe2cbf" showname="Checksum: 0xcffe2cbf (not verified)" size="4" value="cffe2cbf"/>
-          <field name="" pos="46" show="SACK chunk (Cumulative TSN: 3304831195, a_rwnd: 106496, gaps: 0, duplicate TSNs: 0)" size="16" value="03000010c4fbb8db0001a00000000000">
-            <field name="sctp.chunk_type" pos="46" show="3" showname="Chunk type: SACK (3)" size="1" value="03">
-              <field name="sctp.chunk_bit_1" pos="46" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="03" value="0"/>
-              <field name="sctp.chunk_bit_2" pos="46" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="03" value="0"/>
-            </field>
-            <field name="sctp.chunk_flags" pos="47" show="0x00" showname="Chunk flags: 0x00" size="1" value="00">
-              <field name="sctp.sack_nounce_sum" pos="47" show="0" showname=".... ...0 = Nounce sum: 0" size="1" unmaskedvalue="00" value="0"/>
-            </field>
-            <field name="sctp.chunk_length" pos="48" show="16" showname="Chunk length: 16" size="2" value="0010"/>
-            <field name="sctp.sack_cumulative_tsn_ack" pos="50" show="3304831195" showname="Cumulative TSN ACK: 3304831195" size="4" value="c4fbb8db"/>
-            <field name="sctp.sack_a_rwnd" pos="54" show="106496" showname="Advertised receiver window credit (a_rwnd): 106496" size="4" value="0001a000"/>
-            <field name="sctp.sack_number_of_gap_blocks" pos="58" show="0" showname="Number of gap acknowledgement blocks: 0" size="2" value="0000"/>
-            <field name="sctp.sack_number_of_duplicated_tsns" pos="60" show="0" showname="Number of duplicated TSNs: 0" size="2" value="0000"/>
-          </field>
-          <field name="" pos="62" show="DATA chunk(ordered, complete segment, TSN: 2008295179, SID: 1, SSN: 3, PPID: 301989888, payload length: 191 bytes)" size="16" value="000300cf77b4270b0001000312000000">
-            <field name="sctp.chunk_type" pos="62" show="0" showname="Chunk type: DATA (0)" size="1" value="00">
-              <field name="sctp.chunk_bit_1" pos="62" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="00" value="0"/>
-              <field name="sctp.chunk_bit_2" pos="62" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="00" value="0"/>
-            </field>
-            <field name="sctp.chunk_flags" pos="63" show="0x03" showname="Chunk flags: 0x03" size="1" value="03">
-              <field name="sctp.data_e_bit" pos="63" show="1" showname=".... ...1 = E-Bit: Last segment" size="1" unmaskedvalue="03" value="1"/>
-              <field name="sctp.data_b_bit" pos="63" show="1" showname=".... ..1. = B-Bit: First segment" size="1" unmaskedvalue="03" value="1"/>
-              <field name="sctp.data_u_bit" pos="63" show="0" showname=".... .0.. = U-Bit: Ordered delivery" size="1" unmaskedvalue="03" value="0"/>
-              <field name="sctp.data_i_bit" pos="63" show="0" showname=".... 0... = I-Bit: Possibly delay SACK" size="1" unmaskedvalue="03" value="0"/>
-            </field>
-            <field name="sctp.chunk_length" pos="64" show="207" showname="Chunk length: 207" size="2" value="00cf"/>
-            <field name="sctp.data_tsn" pos="66" show="2008295179" showname="TSN: 2008295179" size="4" value="77b4270b"/>
-            <field name="sctp.data_sid" pos="70" show="0x0001" showname="Stream Identifier: 0x0001" size="2" value="0001"/>
-            <field name="sctp.data_ssn" pos="72" show="3" showname="Stream sequence number: 3" size="2" value="0003"/>
-            <field name="sctp.data_payload_proto_id" pos="74" show="301989888" showname="Payload protocol identifier: Unknown (301989888)" size="4" value="12000000"/>
-            <field name="sctp.chunk_padding" pos="269" show="00" showname="Chunk padding: 00" size="1" value="00"/>
-          </field>
-          <proto name="s1ap" pos="78" showname="S1 Application Protocol" size="191">
-            <field hide="yes" name="per.extension_bit" pos="78" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-            <field hide="yes" name="per.choice_index" pos="78" show="0" showname="Choice Index: 0" size="1" value="00"/>
-            <field name="s1ap.S1AP_PDU" pos="78" show="0" showname="S1AP-PDU: initiatingMessage (0)" size="191" value="00090080ba00000600000005c0740010d0000800048006692d0042000a1805f5e1006002faf080001800670000340062450009040f80c0a80c11000000015327ad0aaa9a010742014a062002f859000100315201c1010909036f616904697076340501c0bc00025e04fefede9e271480802110030000108106c0a86a0c8306c0a80c64500bf602f8598000016c000920172c006b0005100002000000490020d3a2585db3755b592cdd43bd648158eb3d142a9f7295ef2da9003b8f7a7a5929">
-              <field name="s1ap.initiatingMessage" pos="78" show="" showname="initiatingMessage" size="191" value="">
-                <field name="s1ap.procedureCode" pos="79" show="9" showname="procedureCode: id-InitialContextSetup (9)" size="1" value="09"/>
-                <field hide="yes" name="per.enum_index" pos="80" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                <field name="s1ap.criticality" pos="80" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                <field hide="yes" name="per.open_type_length" pos="81" show="186" showname="Open Type Length: 186" size="2" value="80ba"/>
-                <field name="s1ap.value" pos="83" show="" showname="value" size="186" value="">
-                  <field name="s1ap.InitialContextSetupRequest" pos="83" show="" showname="InitialContextSetupRequest" size="186" value="">
-                    <field hide="yes" name="per.extension_bit" pos="83" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-                    <field hide="yes" name="per.sequence_of_length" pos="84" show="6" showname="Sequence-Of Length: 6" size="2" value="0006"/>
-                    <field name="s1ap.protocolIEs" pos="86" show="6" showname="protocolIEs: 6 items" size="183" value="00000005c0740010d0000800048006692d0042000a1805f5e1006002faf080001800670000340062450009040f80c0a80c11000000015327ad0aaa9a010742014a062002f859000100315201c1010909036f616904697076340501c0bc00025e04fefede9e271480802110030000108106c0a86a0c8306c0a80c64500bf602f8598000016c000920172c006b0005100002000000490020d3a2585db3755b592cdd43bd648158eb3d142a9f7295ef2da9003b8f7a7a5929">
-                      <field name="" pos="86" show="Item 0: id-MME-UE-S1AP-ID" size="9" value="00000005c0740010d0">
-                        <field name="s1ap.ProtocolIE_Field" pos="86" show="" showname="ProtocolIE-Field" size="9" value="">
-                          <field name="s1ap.id" pos="86" show="0" showname="id: id-MME-UE-S1AP-ID (0)" size="2" value="0000"/>
-                          <field hide="yes" name="per.enum_index" pos="88" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                          <field name="s1ap.criticality" pos="88" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                          <field hide="yes" name="per.open_type_length" pos="89" show="5" showname="Open Type Length: 5" size="1" value="05"/>
-                          <field name="s1ap.value" pos="90" show="" showname="value" size="5" value="">
-                            <field name="s1ap.MME_UE_S1AP_ID" pos="90" show="1946161360" showname="MME-UE-S1AP-ID: 1946161360" size="5" value="c0740010d0"/>
-                          </field>
-                        </field>
-                      </field>
-                      <field name="" pos="95" show="Item 1: id-eNB-UE-S1AP-ID" size="8" value="000800048006692d">
-                        <field name="s1ap.ProtocolIE_Field" pos="95" show="" showname="ProtocolIE-Field" size="8" value="">
-                          <field name="s1ap.id" pos="95" show="8" showname="id: id-eNB-UE-S1AP-ID (8)" size="2" value="0008"/>
-                          <field hide="yes" name="per.enum_index" pos="97" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                          <field name="s1ap.criticality" pos="97" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                          <field hide="yes" name="per.open_type_length" pos="98" show="4" showname="Open Type Length: 4" size="1" value="04"/>
-                          <field name="s1ap.value" pos="99" show="" showname="value" size="4" value="">
-                            <field name="s1ap.ENB_UE_S1AP_ID" pos="99" show="420141" showname="ENB-UE-S1AP-ID: 420141" size="4" value="8006692d"/>
-                          </field>
-                        </field>
-                      </field>
-                      <field name="" pos="103" show="Item 2: id-uEaggregateMaximumBitrate" size="14" value="0042000a1805f5e1006002faf080">
-                        <field name="s1ap.ProtocolIE_Field" pos="103" show="" showname="ProtocolIE-Field" size="14" value="">
-                          <field name="s1ap.id" pos="103" show="66" showname="id: id-uEaggregateMaximumBitrate (66)" size="2" value="0042"/>
-                          <field hide="yes" name="per.enum_index" pos="105" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                          <field name="s1ap.criticality" pos="105" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                          <field hide="yes" name="per.open_type_length" pos="106" show="10" showname="Open Type Length: 10" size="1" value="0a"/>
-                          <field name="s1ap.value" pos="107" show="" showname="value" size="10" value="">
-                            <field name="s1ap.UEAggregateMaximumBitrate" pos="107" show="" showname="UEAggregateMaximumBitrate" size="10" value="">
-                              <field hide="yes" name="per.extension_bit" pos="107" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="18" value="0"/>
-                              <field hide="yes" name="per.optional_field_bit" pos="107" show="0" showname=".0.. .... Optional Field Bit: False (iE-Extensions is NOT present)" size="1" unmaskedvalue="18" value="0"/>
-                              <field name="s1ap.uEaggregateMaximumBitRateDL" pos="107" show="100000000" showname="uEaggregateMaximumBitRateDL: 100000000" size="5" value="1805f5e100"/>
-                              <field name="s1ap.uEaggregateMaximumBitRateUL" pos="112" show="50000000" showname="uEaggregateMaximumBitRateUL: 50000000" size="5" value="6002faf080"/>
-                            </field>
-                          </field>
-                        </field>
-                      </field>
-                      <field name="" pos="117" show="Item 3: id-E-RABToBeSetupListCtxtSUReq" size="107" value="001800670000340062450009040f80c0a80c11000000015327ad0aaa9a010742014a062002f859000100315201c1010909036f616904697076340501c0bc00025e04fefede9e271480802110030000108106c0a86a0c8306c0a80c64500bf602f8598000016c000920172c">
-                        <field name="s1ap.ProtocolIE_Field" pos="117" show="" showname="ProtocolIE-Field" size="107" value="">
-                          <field name="s1ap.id" pos="117" show="24" showname="id: id-E-RABToBeSetupListCtxtSUReq (24)" size="2" value="0018"/>
-                          <field hide="yes" name="per.enum_index" pos="119" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                          <field name="s1ap.criticality" pos="119" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                          <field hide="yes" name="per.open_type_length" pos="120" show="103" showname="Open Type Length: 103" size="1" value="67"/>
-                          <field name="s1ap.value" pos="121" show="" showname="value" size="103" value="">
-                            <field hide="yes" name="per.sequence_of_length" pos="121" show="1" showname="Sequence-Of Length: 1" size="1" value="00"/>
-                            <field name="s1ap.E_RABToBeSetupListCtxtSUReq" pos="122" show="1" showname="E-RABToBeSetupListCtxtSUReq: 1 item" size="102" value="00340062450009040f80c0a80c11000000015327ad0aaa9a010742014a062002f859000100315201c1010909036f616904697076340501c0bc00025e04fefede9e271480802110030000108106c0a86a0c8306c0a80c64500bf602f8598000016c000920172c">
-                              <field name="" pos="122" show="Item 0: id-E-RABToBeSetupItemCtxtSUReq" size="102" value="00340062450009040f80c0a80c11000000015327ad0aaa9a010742014a062002f859000100315201c1010909036f616904697076340501c0bc00025e04fefede9e271480802110030000108106c0a86a0c8306c0a80c64500bf602f8598000016c000920172c">
-                                <field name="s1ap.ProtocolIE_SingleContainer" pos="122" show="" showname="ProtocolIE-SingleContainer" size="102" value="">
-                                  <field name="s1ap.id" pos="122" show="52" showname="id: id-E-RABToBeSetupItemCtxtSUReq (52)" size="2" value="0034"/>
-                                  <field hide="yes" name="per.enum_index" pos="124" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                                  <field name="s1ap.criticality" pos="124" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                                  <field hide="yes" name="per.open_type_length" pos="125" show="98" showname="Open Type Length: 98" size="1" value="62"/>
-                                  <field name="s1ap.value" pos="126" show="" showname="value" size="98" value="">
-                                    <field name="s1ap.E_RABToBeSetupItemCtxtSUReq" pos="126" show="" showname="E-RABToBeSetupItemCtxtSUReq" size="98" value="">
-                                      <field hide="yes" name="per.extension_bit" pos="126" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="45" value="0"/>
-                                      <field hide="yes" name="per.optional_field_bit" pos="126" show="1" showname=".1.. .... Optional Field Bit: True (nAS-PDU is present)" size="1" unmaskedvalue="45" value="1"/>
-                                      <field hide="yes" name="per.optional_field_bit" pos="126" show="0" showname="..0. .... Optional Field Bit: False (iE-Extensions is NOT present)" size="1" unmaskedvalue="45" value="0"/>
-                                      <field hide="yes" name="per.extension_present_bit" pos="126" show="0" showname="...0 .... Extension Present Bit: False" size="1" unmaskedvalue="45" value="0"/>
-                                      <field name="s1ap.e_RAB_ID" pos="126" show="5" showname="e-RAB-ID: 5" size="1" value="45"/>
-                                      <field name="s1ap.e_RABlevelQoSParameters" pos="127" show="" showname="e-RABlevelQoSParameters" size="3" value="">
-                                        <field hide="yes" name="per.extension_bit" pos="127" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-                                        <field hide="yes" name="per.optional_field_bit" pos="127" show="0" showname=".0.. .... Optional Field Bit: False (gbrQosInformation is NOT present)" size="1" unmaskedvalue="00" value="0"/>
-                                        <field hide="yes" name="per.optional_field_bit" pos="127" show="0" showname="..0. .... Optional Field Bit: False (iE-Extensions is NOT present)" size="1" unmaskedvalue="00" value="0"/>
-                                        <field name="s1ap.qCI" pos="128" show="9" showname="qCI: 9" size="1" value="09"/>
-                                        <field name="s1ap.allocationRetentionPriority" pos="129" show="" showname="allocationRetentionPriority" size="1" value="">
-                                          <field hide="yes" name="per.extension_bit" pos="129" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="04" value="0"/>
-                                          <field hide="yes" name="per.optional_field_bit" pos="129" show="0" showname=".0.. .... Optional Field Bit: False (iE-Extensions is NOT present)" size="1" unmaskedvalue="04" value="0"/>
-                                          <field name="s1ap.priorityLevel" pos="129" show="1" showname="priorityLevel: highest (1)" size="1" value="04"/>
-                                          <field hide="yes" name="per.enum_index" pos="129" show="0" showname="Enumerated Index: 0" size="1" value="04"/>
-                                          <field name="s1ap.pre_emptionCapability" pos="129" show="0" showname="pre-emptionCapability: shall-not-trigger-pre-emption (0)" size="1" value="04"/>
-                                          <field hide="yes" name="per.enum_index" pos="129" show="0" showname="Enumerated Index: 0" size="1" value="04"/>
-                                          <field name="s1ap.pre_emptionVulnerability" pos="129" show="0" showname="pre-emptionVulnerability: not-pre-emptable (0)" size="1" value="04"/>
-                                        </field>
-                                      </field>
-                                      <field name="per.extension_present_bit" pos="130" show="0" showname="0... .... Extension Present Bit: False" size="1" unmaskedvalue="0f" value="0"/>
-                                      <field hide="yes" name="per.bit_string_length" pos="130" show="32" showname="Bit String Length: 32" size="1" value="0f"/>
-                                      <field name="s1ap.transportLayerAddress" pos="132" show="c0:a8:0c:11" showname="transportLayerAddress: c0a80c11 [bit length 32, 1100 0000  1010 1000  0000 1100  0001 0001 decimal value 3232238609]" size="4" value="c0a80c11">
-                                        <field name="s1ap.transportLayerAddressIPv4" pos="132" show="192.168.12.17" showname="transportLayerAddress(IPv4): 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-                                      </field>
-                                      <field name="s1ap.gTP_TEID" pos="136" show="00:00:00:01" showname="gTP-TEID: 00000001" size="4" value="00000001"/>
-                                      <field hide="yes" name="per.octet_string_length" pos="140" show="83" showname="Octet String Length: 83" size="1" value="53"/>
-                                      <field name="s1ap.nAS_PDU" pos="141" show="27:ad:0a:aa:9a:01:07:42:01:4a:06:20:02:f8:59:00:01:00:31:52:01:c1:01:09:09:03:6f:61:69:04:69:70:76:34:05:01:c0:bc:00:02:5e:04:fe:fe:de:9e:27:14:80:80:21:10:03:00:00:10:81:06:c0:a8:6a:0c:83:06:c0:a8:0c:64:50:0b:f6:02:f8:59:80:00:01:6c:00:09:20:17:2c" showname="nAS-PDU: 27ad0aaa9a010742014a062002f859000100315201c10109..." size="83" value="27ad0aaa9a010742014a062002f859000100315201c1010909036f616904697076340501c0bc00025e04fefede9e271480802110030000108106c0a86a0c8306c0a80c64500bf602f8598000016c000920172c"/>
-                                      <proto name="nas-eps" pos="141" showname="Non-Access-Stratum (NAS)PDU" size="83">
-                                        <field name="nas_eps.security_header_type" pos="141" show="2" showname="0010 .... = Security header type: Integrity protected and ciphered (2)" size="1" unmaskedvalue="27" value="2"/>
-                                        <field name="gsm_a.L3_protocol_discriminator" pos="141" show="0x07" showname=".... 0111 = Protocol discriminator: EPS mobility management messages (0x07)" size="1" unmaskedvalue="27" value="7"/>
-                                        <field name="nas_eps.msg_auth_code" pos="142" show="0xad0aaa9a" showname="Message authentication code: 0xad0aaa9a" size="4" value="ad0aaa9a"/>
-                                        <field name="nas_eps.seq_no" pos="146" show="1" showname="Sequence number: 1" size="1" value="01"/>
-                                        <field name="nas_eps.security_header_type" pos="147" show="0" showname="0000 .... = Security header type: Plain NAS message, not security protected (0)" size="1" unmaskedvalue="07" value="0"/>
-                                        <field name="gsm_a.L3_protocol_discriminator" pos="147" show="0x07" showname=".... 0111 = Protocol discriminator: EPS mobility management messages (0x07)" size="1" unmaskedvalue="07" value="7"/>
-                                        <field name="nas_eps.nas_msg_emm_type" pos="148" show="0x42" showname="NAS EPS Mobility Management Message Type: Attach accept (0x42)" size="1" value="42"/>
-                                        <field name="nas_eps.emm.spare_half_octet" pos="149" show="0" showname="0000 .... = Spare half octet: 0" size="1" value="01"/>
-                                        <field name="nas_eps.spare_bits" pos="149" show="0x00" showname=".... 0... = Spare bit(s): 0x00" size="1" value="01"/>
-                                        <field name="nas_eps.emm.EPS_attach_result" pos="149" show="1" showname=".... .001 = Attach result: EPS only (1)" size="1" value="01"/>
-                                        <field name="" pos="150" show="GPRS Timer - T3412 value" size="1" value="4a">
-                                          <field name="" pos="150" show="GPRS Timer: 60 min" size="1" value="4a">
-                                            <field name="gsm_a.gm.gmm.gprs_timer_unit" pos="150" show="2" showname="010. .... = Unit: value is incremented in multiples of decihours (2)" size="1" unmaskedvalue="4a" value="2"/>
-                                            <field name="gsm_a.gm.gmm.gprs_timer_value" pos="150" show="10" showname="...0 1010 = Timer value: 10" size="1" unmaskedvalue="4a" value="A"/>
-                                          </field>
-                                        </field>
-                                        <field name="" pos="151" show="Tracking area identity list - TAI list" size="7" value="062002f8590001">
-                                          <field name="gsm_a.len" pos="151" show="6" showname="Length: 6" size="1" value="06"/>
-                                          <field name="nas_eps.spare_bits" pos="152" show="0x00" showname="0... .... = Spare bit(s): 0x00" size="1" value="20"/>
-                                          <field name="nas_eps.emm.tai_tol" pos="152" show="1" showname=".01. .... = Type of list: list of TACs belonging to one PLMN, with consecutive TAC values (1)" size="1" unmaskedvalue="20" value="1"/>
-                                          <field name="nas_eps.emm.tai_n_elem" pos="152" show="0" showname="...0 0000 = Number of elements: 0 [+1 = 1 element(s)]" size="1" unmaskedvalue="20" value="0"/>
-                                          <field name="e212.mcc" pos="153" show="208" showname="Mobile Country Code (MCC): France (208)" size="2" value="02f8"/>
-                                          <field name="e212.mnc" pos="154" show="95" showname="Mobile Network Code (MNC): Unknown (95)" size="2" value="f859"/>
-                                          <field name="nas_eps.emm.tai_tac" pos="156" show="0x0001" showname="Tracking area code(TAC): 0x0001" size="2" value="0001"/>
-                                        </field>
-                                        <field name="" pos="158" show="ESM message container" size="51" value="00315201c1010909036f616904697076340501c0bc00025e04fefede9e271480802110030000108106c0a86a0c8306c0a80c64">
-                                          <field name="gsm_a.len" pos="158" show="49" showname="Length: 49" size="2" value="0031"/>
-                                          <field name="nas_eps.emm.esm_msg_cont" pos="160" show="52:01:c1:01:09:09:03:6f:61:69:04:69:70:76:34:05:01:c0:bc:00:02:5e:04:fe:fe:de:9e:27:14:80:80:21:10:03:00:00:10:81:06:c0:a8:6a:0c:83:06:c0:a8:0c:64" showname="ESM message container contents: 5201c1010909036f616904697076340501c0bc00025e04fe..." size="49" value="5201c1010909036f616904697076340501c0bc00025e04fefede9e271480802110030000108106c0a86a0c8306c0a80c64">
-                                            <field name="nas_eps.bearer_id" pos="160" show="5" showname="0101 .... = EPS bearer identity: EPS bearer identity value 5 (5)" size="1" unmaskedvalue="52" value="5"/>
-                                            <field name="gsm_a.L3_protocol_discriminator" pos="160" show="0x02" showname=".... 0010 = Protocol discriminator: EPS session management messages (0x02)" size="1" unmaskedvalue="52" value="2"/>
-                                            <field name="nas_eps.esm.proc_trans_id" pos="161" show="1" showname="Procedure transaction identity: 1" size="1" value="01"/>
-                                            <field name="nas_eps.nas_msg_esm_type" pos="162" show="0xc1" showname="NAS EPS session management messages: Activate default EPS bearer context request (0xc1)" size="1" value="c1"/>
-                                            <field name="" pos="163" show="EPS quality of service" size="2" value="0109">
-                                              <field name="gsm_a.len" pos="163" show="1" showname="Length: 1" size="1" value="01"/>
-                                              <field name="nas_eps.emm.qci" pos="164" show="9" showname="Quality of Service Class Identifier (QCI): QCI 9 (9)" size="1" value="09"/>
-                                            </field>
-                                            <field name="" pos="165" show="Access Point Name" size="10" value="09036f61690469707634">
-                                              <field name="gsm_a.len" pos="165" show="9" showname="Length: 9" size="1" value="09"/>
-                                              <field name="gsm_a.gm.sm.apn" pos="166" show="oai.ipv4" showname="APN: oai.ipv4" size="9" value="036f61690469707634"/>
-                                            </field>
-                                            <field name="" pos="175" show="PDN address" size="6" value="0501c0bc0002">
-                                              <field name="gsm_a.len" pos="175" show="5" showname="Length: 5" size="1" value="05"/>
-                                              <field name="nas_eps.spare_bits" pos="176" show="0x00" showname="0000 0... = Spare bit(s): 0x00" size="1" value="01"/>
-                                              <field name="nas_eps.esm_pdn_type" pos="176" show="1" showname="PDN type: IPv4 (1)" size="1" value="01"/>
-                                              <field name="nas_eps.esm.pdn_ipv4" pos="177" show="192.188.0.2" showname="PDN IPv4: 192.188.0.2 (192.188.0.2)" size="4" value="c0bc0002"/>
-                                            </field>
-                                            <field name="" pos="181" show="APN aggregate maximum bit rate" size="6" value="5e04fefede9e">
-                                              <field name="nas_eps.esm.elem_id" pos="181" show="0x5e" showname="Element ID: 0x5e" size="1" value="5e"/>
-                                              <field name="gsm_a.len" pos="182" show="4" showname="Length: 4" size="1" value="04"/>
-                                              <field name="nas_eps.emm.apn_ambr_dl" pos="183" show="254" showname="APN-AMBR for downlink : 8640 kbps" size="1" value="fe"/>
-                                              <field name="nas_eps.emm.apn_ambr_ul" pos="184" show="254" showname="APN-AMBR for uplink : 8640 kbps" size="1" value="fe"/>
-                                              <field name="nas_eps.emm.apn_ambr_dl_ext" pos="185" show="222" showname="APN-AMBR for downlink (extended) : 200 Mbps" size="1" value="de"/>
-                                              <field name="" pos="185" show="Total APN-AMBR for downlink : 200,000 Mbps" size="1" value="de"/>
-                                              <field name="nas_eps.emm.apn_ambr_ul_ext" pos="186" show="158" showname="APN-AMBR for uplink (extended) : 100 Mbps" size="1" value="9e"/>
-                                              <field name="" pos="186" show="Total APN-AMBR for uplink : 100,000 Mbps" size="1" value="9e"/>
-                                            </field>
-                                            <field name="" pos="187" show="Protocol Configuration Options" size="22" value="271480802110030000108106c0a86a0c8306c0a80c64">
-                                              <field name="gsm_a.gm.elem_id" pos="187" show="0x27" showname="Element ID: 0x27" size="1" value="27"/>
-                                              <field name="gsm_a.len" pos="188" show="20" showname="Length: 20" size="1" value="14"/>
-                                              <field name="gsm_a.gm.sm.link_dir" pos="189" show="1" showname="Link direction: Network to MS (1)" size="0"/>
-                                              <field name="gsm_a.gm.sm.ext" pos="189" show="1" showname="1... .... = Extension: True" size="1" unmaskedvalue="80" value="1"/>
-                                              <field name="" pos="189" show="Configuration Protocol: PPP for use with IP PDP type or IP PDN type (0)" size="1" value="80"/>
-                                              <field name="gsm_a.gm.sm.pco_pid" pos="190" show="32801" showname="Protocol or Container ID: Internet Protocol Control Protocol (0x8021)" size="2" value="8021">
-                                                <field name="" pos="192" show="Length: 0x10 (16)" size="1" value="10"/>
-                                                <proto name="ipcp" pos="193" showname="PPP IP Control Protocol" size="16">
-                                                  <field name="ppp.code" pos="193" show="3" showname="Code: Configuration Nak (3)" size="1" value="03"/>
-                                                  <field name="ppp.identifier" pos="194" show="0" showname="Identifier: 0 (0x00)" size="1" value="00"/>
-                                                  <field name="ppp.length" pos="195" show="16" showname="Length: 16" size="2" value="0010"/>
-                                                  <field name="" pos="197" show="Options: (12 bytes), Primary DNS Server IP Address, Secondary DNS Server IP Address" size="12" value="8106c0a86a0c8306c0a80c64">
-                                                    <field name="" pos="197" show="Primary DNS Server IP Address: 192.168.106.12" size="6" value="8106c0a86a0c">
-                                                      <field name="ipcp.opt.type" pos="197" show="129" showname="Type: Primary DNS Server IP Address (129)" size="1" value="81"/>
-                                                      <field name="ipcp.opt.length" pos="198" show="6" showname="Length: 6" size="1" value="06"/>
-                                                      <field name="ipcp.opt.pri_dns_address" pos="199" show="192.168.106.12" showname="Primary DNS Address: 192.168.106.12 (192.168.106.12)" size="4" value="c0a86a0c"/>
-                                                    </field>
-                                                    <field name="" pos="203" show="Secondary DNS Server IP Address: 192.168.12.100" size="6" value="8306c0a80c64">
-                                                      <field name="ipcp.opt.type" pos="203" show="131" showname="Type: Secondary DNS Server IP Address (131)" size="1" value="83"/>
-                                                      <field name="ipcp.opt.length" pos="204" show="6" showname="Length: 6" size="1" value="06"/>
-                                                      <field name="ipcp.opt.sec_dns_address" pos="205" show="192.168.12.100" showname="Secondary DNS Address: 192.168.12.100 (192.168.12.100)" size="4" value="c0a80c64"/>
-                                                    </field>
-                                                  </field>
-                                                </proto>
-                                              </field>
-                                            </field>
-                                          </field>
-                                        </field>
-                                        <field name="" pos="209" show="EPS mobile identity - GUTI" size="13" value="500bf602f8598000016c000920">
-                                          <field name="nas_eps.emm.elem_id" pos="209" show="0x50" showname="Element ID: 0x50" size="1" value="50"/>
-                                          <field name="gsm_a.len" pos="210" show="11" showname="Length: 11" size="1" value="0b"/>
-                                          <field name="nas_eps.emm.odd_even" pos="211" show="0" showname=".... 0... = odd/even indic: 0" size="1" unmaskedvalue="f6" value="0"/>
-                                          <field name="nas_eps.emm.type_of_id" pos="211" show="6" showname=".... .110 = Type of identity: GUTI (6)" size="1" unmaskedvalue="f6" value="6"/>
-                                          <field name="e212.mcc" pos="212" show="208" showname="Mobile Country Code (MCC): France (208)" size="2" value="02f8"/>
-                                          <field name="e212.mnc" pos="213" show="95" showname="Mobile Network Code (MNC): Unknown (95)" size="2" value="f859"/>
-                                          <field name="nas_eps.emm.mme_grp_id" pos="215" show="32768" showname="MME Group ID: 32768" size="2" value="8000"/>
-                                          <field name="nas_eps.emm.mme_code" pos="217" show="1" showname="MME Code: 1" size="1" value="01"/>
-                                          <field name="nas_eps.emm.m_tmsi" pos="218" show="0x6c000920" showname="M-TMSI: 0x6c000920" size="4" value="6c000920"/>
-                                        </field>
-                                        <field name="" pos="222" show="GPRS Timer - T3402 value" size="2" value="172c">
-                                          <field name="gsm_a.gm.elem_id" pos="222" show="0x17" showname="Element ID: 0x17" size="1" value="17"/>
-                                          <field name="" pos="223" show="GPRS Timer: 12 min" size="1" value="2c">
-                                            <field name="gsm_a.gm.gmm.gprs_timer_unit" pos="223" show="1" showname="001. .... = Unit: value is incremented in multiples of 1 minute (1)" size="1" unmaskedvalue="2c" value="1"/>
-                                            <field name="gsm_a.gm.gmm.gprs_timer_value" pos="223" show="12" showname="...0 1100 = Timer value: 12" size="1" unmaskedvalue="2c" value="C"/>
-                                          </field>
-                                        </field>
-                                      </proto>
-                                    </field>
-                                  </field>
-                                </field>
-                              </field>
-                            </field>
-                          </field>
-                        </field>
-                      </field>
-                      <field name="" pos="224" show="Item 4: id-UESecurityCapabilities" size="9" value="006b00051000020000">
-                        <field name="s1ap.ProtocolIE_Field" pos="224" show="" showname="ProtocolIE-Field" size="9" value="">
-                          <field name="s1ap.id" pos="224" show="107" showname="id: id-UESecurityCapabilities (107)" size="2" value="006b"/>
-                          <field hide="yes" name="per.enum_index" pos="226" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                          <field name="s1ap.criticality" pos="226" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                          <field hide="yes" name="per.open_type_length" pos="227" show="5" showname="Open Type Length: 5" size="1" value="05"/>
-                          <field name="s1ap.value" pos="228" show="" showname="value" size="5" value="">
-                            <field name="s1ap.UESecurityCapabilities" pos="228" show="" showname="UESecurityCapabilities" size="4" value="">
-                              <field hide="yes" name="per.extension_bit" pos="228" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="10" value="0"/>
-                              <field hide="yes" name="per.optional_field_bit" pos="228" show="0" showname=".0.. .... Optional Field Bit: False (iE-Extensions is NOT present)" size="1" unmaskedvalue="10" value="0"/>
-                              <field name="per.extension_present_bit" pos="228" show="0" showname="..0. .... Extension Present Bit: False" size="1" unmaskedvalue="10" value="0"/>
-                              <field name="s1ap.encryptionAlgorithms" pos="228" show="80:00" showname="encryptionAlgorithms: 8000 [bit length 16, 1000 0000  0000 0000 decimal value 32768]" size="2" value="8000"/>
-                              <field name="per.extension_present_bit" pos="230" show="0" showname="...0 .... Extension Present Bit: False" size="1" unmaskedvalue="02" value="0"/>
-                              <field name="s1ap.integrityProtectionAlgorithms" pos="228" show="20:00" showname="integrityProtectionAlgorithms: 2000 [bit length 16, 0010 0000  0000 0000 decimal value 8192]" size="2" value="2000"/>
-                            </field>
-                          </field>
-                        </field>
-                      </field>
-                      <field name="" pos="233" show="Item 5: id-SecurityKey" size="36" value="00490020d3a2585db3755b592cdd43bd648158eb3d142a9f7295ef2da9003b8f7a7a5929">
-                        <field name="s1ap.ProtocolIE_Field" pos="233" show="" showname="ProtocolIE-Field" size="36" value="">
-                          <field name="s1ap.id" pos="233" show="73" showname="id: id-SecurityKey (73)" size="2" value="0049"/>
-                          <field hide="yes" name="per.enum_index" pos="235" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                          <field name="s1ap.criticality" pos="235" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                          <field hide="yes" name="per.open_type_length" pos="236" show="32" showname="Open Type Length: 32" size="1" value="20"/>
-                          <field name="s1ap.value" pos="237" show="" showname="value" size="32" value="">
-                            <field name="s1ap.SecurityKey" pos="237" show="d3:a2:58:5d:b3:75:5b:59:2c:dd:43:bd:64:81:58:eb:3d:14:2a:9f:72:95:ef:2d:a9:00:3b:8f:7a:7a:59:29" showname="SecurityKey: d3a2585db3755b592cdd43bd648158eb3d142a9f7295ef2d... [bit length 256]" size="32" value="d3a2585db3755b592cdd43bd648158eb3d142a9f7295ef2da9003b8f7a7a5929"/>
-                          </field>
-                        </field>
-                      </field>
-                    </field>
-                  </field>
-                </field>
-              </field>
-            </field>
-          </proto>
-        </proto>
-      </proto>
-    </proto>
-  </packet>
-  <packet>
-    <proto name="frame" pos="0" showname="Frame 86: 126 bytes on wire (1008 bits), 126 bytes captured (1008 bits) on interface 0" size="126">
-      <field name="frame.interface_id" pos="0" show="0" showname="Interface id: 0" size="0"/>
-      <field name="frame.encap_type" pos="0" show="1" showname="Encapsulation type: Ethernet (1)" size="0"/>
-      <field name="frame.time" pos="0" show="Sep 25, 2015 16:34:54.029328000" showname="Arrival Time: Sep 25, 2015 16:34:54.029328000 CEST" size="0"/>
-      <field name="frame.offset_shift" pos="0" show="0.000000000" showname="Time shift for this packet: 0.000000000 seconds" size="0"/>
-      <field name="frame.time_epoch" pos="0" show="1443191694.029328000" showname="Epoch Time: 1443191694.029328000 seconds" size="0"/>
-      <field name="frame.time_delta" pos="0" show="0.006335000" showname="Time delta from previous captured frame: 0.006335000 seconds" size="0"/>
-      <field name="frame.time_delta_displayed" pos="0" show="0.006335000" showname="Time delta from previous displayed frame: 0.006335000 seconds" size="0"/>
-      <field name="frame.time_relative" pos="0" show="47.563697000" showname="Time since reference or first frame: 47.563697000 seconds" size="0"/>
-      <field name="frame.number" pos="0" show="86" showname="Frame Number: 86" size="0"/>
-      <field name="frame.len" pos="0" show="126" showname="Frame Length: 126 bytes (1008 bits)" size="0"/>
-      <field name="frame.cap_len" pos="0" show="126" showname="Capture Length: 126 bytes (1008 bits)" size="0"/>
-      <field name="frame.marked" pos="0" show="0" showname="Frame is marked: False" size="0"/>
-      <field name="frame.ignored" pos="0" show="0" showname="Frame is ignored: False" size="0"/>
-      <field name="frame.protocols" pos="0" show="eth:ip:sctp:s1ap:s1ap:s1ap:s1ap:s1ap" showname="Protocols in frame: eth:ip:sctp:s1ap:s1ap:s1ap:s1ap:s1ap" size="0"/>
-      <proto name="ip" pos="14" showname="Internet Protocol Version 4, Src: 192.168.12.213 (192.168.12.213), Dst: 192.168.12.17 (192.168.12.17)" size="20">
-        <field name="ip.version" pos="14" show="4" showname="Version: 4" size="1" value="45"/>
-        <field name="ip.hdr_len" pos="14" show="20" showname="Header length: 20 bytes" size="1" value="45"/>
-        <field name="ip.dsfield" pos="15" show="2" showname="Differentiated Services Field: 0x02 (DSCP 0x00: Default; ECN: 0x02: ECT(0) (ECN-Capable Transport))" size="1" value="02">
-          <field name="ip.dsfield.dscp" pos="15" show="0x00" showname="0000 00.. = Differentiated Services Codepoint: Default (0x00)" size="1" unmaskedvalue="02" value="0"/>
-          <field name="ip.dsfield.ecn" pos="15" show="0x02" showname=".... ..10 = Explicit Congestion Notification: ECT(0) (ECN-Capable Transport) (0x02)" size="1" unmaskedvalue="02" value="2"/>
-        </field>
-        <field name="ip.len" pos="16" show="112" showname="Total Length: 112" size="2" value="0070"/>
-        <field name="ip.id" pos="18" show="0x000a" showname="Identification: 0x000a (10)" size="2" value="000a"/>
-        <field name="ip.flags" pos="20" show="0x02" showname="Flags: 0x02 (Don't Fragment)" size="1" value="40">
-          <field name="ip.flags.rb" pos="20" show="0" showname="0... .... = Reserved bit: Not set" size="1" value="40"/>
-          <field name="ip.flags.df" pos="20" show="1" showname=".1.. .... = Don't fragment: Set" size="1" value="40"/>
-          <field name="ip.flags.mf" pos="20" show="0" showname="..0. .... = More fragments: Not set" size="1" value="40"/>
-        </field>
-        <field name="ip.frag_offset" pos="20" show="0" showname="Fragment offset: 0" size="2" value="4000"/>
-        <field name="ip.ttl" pos="22" show="64" showname="Time to live: 64" size="1" value="40"/>
-        <field name="ip.proto" pos="23" show="132" showname="Protocol: SCTP (132)" size="1" value="84"/>
-        <field name="ip.checksum" pos="24" show="0x9fc7" showname="Header checksum: 0x9fc7 [validation disabled]" size="2" value="9fc7">
-          <field name="ip.checksum_good" pos="24" show="0" showname="Good: False" size="2" value="9fc7"/>
-          <field name="ip.checksum_bad" pos="24" show="0" showname="Bad: False" size="2" value="9fc7"/>
-        </field>
-        <field name="ip.src" pos="26" show="192.168.12.213" showname="Source: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.addr" pos="26" show="192.168.12.213" showname="Source or Destination Address: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.src_host" pos="26" show="192.168.12.213" showname="Source Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.host" pos="26" show="192.168.12.213" showname="Source or Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-        <field name="ip.dst" pos="30" show="192.168.12.17" showname="Destination: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.addr" pos="30" show="192.168.12.17" showname="Source or Destination Address: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.dst_host" pos="30" show="192.168.12.17" showname="Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.host" pos="30" show="192.168.12.17" showname="Source or Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-        <field name="" pos="26" show="Source GeoIP: Unknown" size="4" value="c0a80cd5"/>
-        <field name="" pos="30" show="Destination GeoIP: Unknown" size="4" value="c0a80c11"/>
-        <proto name="sctp" pos="34" showname="Stream Control Transmission Protocol, Src Port: s1-control (36412), Dst Port: s1-control (36412)" size="44">
-          <field name="sctp.srcport" pos="34" show="36412" showname="Source port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.dstport" pos="36" show="36412" showname="Destination port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.verification_tag" pos="38" show="0x4cd1eca0" showname="Verification tag: 0x4cd1eca0" size="4" value="4cd1eca0"/>
-          <field hide="yes" name="sctp.port" pos="34" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-          <field hide="yes" name="sctp.port" pos="36" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.checksum" pos="42" show="0x936ee321" showname="Checksum: 0x936ee321 (not verified)" size="4" value="936ee321"/>
-          <field name="" pos="46" show="SACK chunk (Cumulative TSN: 2008295179, a_rwnd: 106496, gaps: 0, duplicate TSNs: 0)" size="16" value="0300001077b4270b0001a00000000000">
-            <field name="sctp.chunk_type" pos="46" show="3" showname="Chunk type: SACK (3)" size="1" value="03">
-              <field name="sctp.chunk_bit_1" pos="46" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="03" value="0"/>
-              <field name="sctp.chunk_bit_2" pos="46" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="03" value="0"/>
-            </field>
-            <field name="sctp.chunk_flags" pos="47" show="0x00" showname="Chunk flags: 0x00" size="1" value="00">
-              <field name="sctp.sack_nounce_sum" pos="47" show="0" showname=".... ...0 = Nounce sum: 0" size="1" unmaskedvalue="00" value="0"/>
-            </field>
-            <field name="sctp.chunk_length" pos="48" show="16" showname="Chunk length: 16" size="2" value="0010"/>
-            <field name="sctp.sack_cumulative_tsn_ack" pos="50" show="2008295179" showname="Cumulative TSN ACK: 2008295179" size="4" value="77b4270b"/>
-            <field name="sctp.sack_a_rwnd" pos="54" show="106496" showname="Advertised receiver window credit (a_rwnd): 106496" size="4" value="0001a000"/>
-            <field name="sctp.sack_number_of_gap_blocks" pos="58" show="0" showname="Number of gap acknowledgement blocks: 0" size="2" value="0000"/>
-            <field name="sctp.sack_number_of_duplicated_tsns" pos="60" show="0" showname="Number of duplicated TSNs: 0" size="2" value="0000"/>
-          </field>
-          <field name="" pos="62" show="DATA chunk(ordered, complete segment, TSN: 3304831196, SID: 1, SSN: 4, PPID: 18, payload length: 48 bytes)" size="16" value="00030040c4fbb8dc0001000400000012">
-            <field name="sctp.chunk_type" pos="62" show="0" showname="Chunk type: DATA (0)" size="1" value="00">
-              <field name="sctp.chunk_bit_1" pos="62" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="00" value="0"/>
-              <field name="sctp.chunk_bit_2" pos="62" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="00" value="0"/>
-            </field>
-            <field name="sctp.chunk_flags" pos="63" show="0x03" showname="Chunk flags: 0x03" size="1" value="03">
-              <field name="sctp.data_e_bit" pos="63" show="1" showname=".... ...1 = E-Bit: Last segment" size="1" unmaskedvalue="03" value="1"/>
-              <field name="sctp.data_b_bit" pos="63" show="1" showname=".... ..1. = B-Bit: First segment" size="1" unmaskedvalue="03" value="1"/>
-              <field name="sctp.data_u_bit" pos="63" show="0" showname=".... .0.. = U-Bit: Ordered delivery" size="1" unmaskedvalue="03" value="0"/>
-              <field name="sctp.data_i_bit" pos="63" show="0" showname=".... 0... = I-Bit: Possibly delay SACK" size="1" unmaskedvalue="03" value="0"/>
-            </field>
-            <field name="sctp.chunk_length" pos="64" show="64" showname="Chunk length: 64" size="2" value="0040"/>
-            <field name="sctp.data_tsn" pos="66" show="3304831196" showname="TSN: 3304831196" size="4" value="c4fbb8dc"/>
-            <field name="sctp.data_sid" pos="70" show="0x0001" showname="Stream Identifier: 0x0001" size="2" value="0001"/>
-            <field name="sctp.data_ssn" pos="72" show="4" showname="Stream sequence number: 4" size="2" value="0004"/>
-            <field name="sctp.data_payload_proto_id" pos="74" show="18" showname="Payload protocol identifier: S1 Application Protocol (S1AP) (18)" size="4" value="00000012"/>
-          </field>
-          <proto name="s1ap" pos="78" showname="S1 Application Protocol" size="48">
-            <field hide="yes" name="per.extension_bit" pos="78" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-            <field hide="yes" name="per.choice_index" pos="78" show="0" showname="Choice Index: 0" size="1" value="00"/>
-            <field name="s1ap.S1AP_PDU" pos="78" show="0" showname="S1AP-PDU: initiatingMessage (0)" size="48" value="0016402c00000300000005c0740010d0000800048006692d004a40141381200003001060e0c1f83f07e0fd7837620000">
-              <field name="s1ap.initiatingMessage" pos="78" show="" showname="initiatingMessage" size="48" value="">
-                <field name="s1ap.procedureCode" pos="79" show="22" showname="procedureCode: id-UECapabilityInfoIndication (22)" size="1" value="16"/>
-                <field hide="yes" name="per.enum_index" pos="80" show="1" showname="Enumerated Index: 1" size="1" value="40"/>
-                <field name="s1ap.criticality" pos="80" show="1" showname="criticality: ignore (1)" size="1" value="40"/>
-                <field hide="yes" name="per.open_type_length" pos="81" show="44" showname="Open Type Length: 44" size="1" value="2c"/>
-                <field name="s1ap.value" pos="82" show="" showname="value" size="44" value="">
-                  <field name="s1ap.UECapabilityInfoIndication" pos="82" show="" showname="UECapabilityInfoIndication" size="44" value="">
-                    <field hide="yes" name="per.extension_bit" pos="82" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-                    <field hide="yes" name="per.sequence_of_length" pos="83" show="3" showname="Sequence-Of Length: 3" size="2" value="0003"/>
-                    <field name="s1ap.protocolIEs" pos="85" show="3" showname="protocolIEs: 3 items" size="41" value="00000005c0740010d0000800048006692d004a40141381200003001060e0c1f83f07e0fd7837620000">
-                      <field name="" pos="85" show="Item 0: id-MME-UE-S1AP-ID" size="9" value="00000005c0740010d0">
-                        <field name="s1ap.ProtocolIE_Field" pos="85" show="" showname="ProtocolIE-Field" size="9" value="">
-                          <field name="s1ap.id" pos="85" show="0" showname="id: id-MME-UE-S1AP-ID (0)" size="2" value="0000"/>
-                          <field hide="yes" name="per.enum_index" pos="87" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                          <field name="s1ap.criticality" pos="87" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                          <field hide="yes" name="per.open_type_length" pos="88" show="5" showname="Open Type Length: 5" size="1" value="05"/>
-                          <field name="s1ap.value" pos="89" show="" showname="value" size="5" value="">
-                            <field name="s1ap.MME_UE_S1AP_ID" pos="89" show="1946161360" showname="MME-UE-S1AP-ID: 1946161360" size="5" value="c0740010d0"/>
-                          </field>
-                        </field>
-                      </field>
-                      <field name="" pos="94" show="Item 1: id-eNB-UE-S1AP-ID" size="8" value="000800048006692d">
-                        <field name="s1ap.ProtocolIE_Field" pos="94" show="" showname="ProtocolIE-Field" size="8" value="">
-                          <field name="s1ap.id" pos="94" show="8" showname="id: id-eNB-UE-S1AP-ID (8)" size="2" value="0008"/>
-                          <field hide="yes" name="per.enum_index" pos="96" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                          <field name="s1ap.criticality" pos="96" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                          <field hide="yes" name="per.open_type_length" pos="97" show="4" showname="Open Type Length: 4" size="1" value="04"/>
-                          <field name="s1ap.value" pos="98" show="" showname="value" size="4" value="">
-                            <field name="s1ap.ENB_UE_S1AP_ID" pos="98" show="420141" showname="ENB-UE-S1AP-ID: 420141" size="4" value="8006692d"/>
-                          </field>
-                        </field>
-                      </field>
-                      <field name="" pos="102" show="Item 2: id-UERadioCapability" size="24" value="004a40141381200003001060e0c1f83f07e0fd7837620000">
-                        <field name="s1ap.ProtocolIE_Field" pos="102" show="" showname="ProtocolIE-Field" size="24" value="">
-                          <field name="s1ap.id" pos="102" show="74" showname="id: id-UERadioCapability (74)" size="2" value="004a"/>
-                          <field hide="yes" name="per.enum_index" pos="104" show="1" showname="Enumerated Index: 1" size="1" value="40"/>
-                          <field name="s1ap.criticality" pos="104" show="1" showname="criticality: ignore (1)" size="1" value="40"/>
-                          <field hide="yes" name="per.open_type_length" pos="105" show="20" showname="Open Type Length: 20" size="1" value="14"/>
-                          <field name="s1ap.value" pos="106" show="" showname="value" size="20" value="">
-                            <field hide="yes" name="per.octet_string_length" pos="106" show="19" showname="Octet String Length: 19" size="1" value="13"/>
-                            <field name="s1ap.UERadioCapability" pos="107" show="81:20:00:03:00:10:60:e0:c1:f8:3f:07:e0:fd:78:37:62:00:00" showname="UERadioCapability: 81200003001060e0c1f83f07e0fd7837620000" size="19" value="81200003001060e0c1f83f07e0fd7837620000">
-                              <field name="lte-rrc.UERadioAccessCapabilityInformation" pos="107" show="" showname="UERadioAccessCapabilityInformation" size="1" value="">
-                                <field hide="yes" name="per.choice_index" pos="107" show="1" showname="Choice Index: 1" size="1" value="81"/>
-                                <field name="lte-rrc.criticalExtensions" pos="107" show="1" showname="criticalExtensions: criticalExtensionsFuture (1)" size="1" value="81">
-                                  <field name="lte-rrc.criticalExtensionsFuture" pos="107" show="" showname="criticalExtensionsFuture" size="1" value=""/>
-                                </field>
-                              </field>
-                            </field>
-                          </field>
-                        </field>
-                      </field>
-                    </field>
-                  </field>
-                </field>
-              </field>
-            </field>
-          </proto>
-        </proto>
-      </proto>
-    </proto>
-  </packet>
-  <packet>
-    <proto name="frame" pos="0" showname="Frame 87: 62 bytes on wire (496 bits), 62 bytes captured (496 bits) on interface 0" size="62">
-      <field name="frame.interface_id" pos="0" show="0" showname="Interface id: 0" size="0"/>
-      <field name="frame.encap_type" pos="0" show="1" showname="Encapsulation type: Ethernet (1)" size="0"/>
-      <field name="frame.time" pos="0" show="Sep 25, 2015 16:34:54.226130000" showname="Arrival Time: Sep 25, 2015 16:34:54.226130000 CEST" size="0"/>
-      <field name="frame.offset_shift" pos="0" show="0.000000000" showname="Time shift for this packet: 0.000000000 seconds" size="0"/>
-      <field name="frame.time_epoch" pos="0" show="1443191694.226130000" showname="Epoch Time: 1443191694.226130000 seconds" size="0"/>
-      <field name="frame.time_delta" pos="0" show="0.196802000" showname="Time delta from previous captured frame: 0.196802000 seconds" size="0"/>
-      <field name="frame.time_delta_displayed" pos="0" show="0.196802000" showname="Time delta from previous displayed frame: 0.196802000 seconds" size="0"/>
-      <field name="frame.time_relative" pos="0" show="47.760499000" showname="Time since reference or first frame: 47.760499000 seconds" size="0"/>
-      <field name="frame.number" pos="0" show="87" showname="Frame Number: 87" size="0"/>
-      <field name="frame.len" pos="0" show="62" showname="Frame Length: 62 bytes (496 bits)" size="0"/>
-      <field name="frame.cap_len" pos="0" show="62" showname="Capture Length: 62 bytes (496 bits)" size="0"/>
-      <field name="frame.marked" pos="0" show="0" showname="Frame is marked: False" size="0"/>
-      <field name="frame.ignored" pos="0" show="0" showname="Frame is ignored: False" size="0"/>
-      <field name="frame.protocols" pos="0" show="eth:ip:sctp" showname="Protocols in frame: eth:ip:sctp" size="0"/>
-      <proto name="ip" pos="14" showname="Internet Protocol Version 4, Src: 192.168.12.17 (192.168.12.17), Dst: 192.168.12.213 (192.168.12.213)" size="20">
-        <field name="ip.version" pos="14" show="4" showname="Version: 4" size="1" value="45"/>
-        <field name="ip.hdr_len" pos="14" show="20" showname="Header length: 20 bytes" size="1" value="45"/>
-        <field name="ip.dsfield" pos="15" show="2" showname="Differentiated Services Field: 0x02 (DSCP 0x00: Default; ECN: 0x02: ECT(0) (ECN-Capable Transport))" size="1" value="02">
-          <field name="ip.dsfield.dscp" pos="15" show="0x00" showname="0000 00.. = Differentiated Services Codepoint: Default (0x00)" size="1" unmaskedvalue="02" value="0"/>
-          <field name="ip.dsfield.ecn" pos="15" show="0x02" showname=".... ..10 = Explicit Congestion Notification: ECT(0) (ECN-Capable Transport) (0x02)" size="1" unmaskedvalue="02" value="2"/>
-        </field>
-        <field name="ip.len" pos="16" show="48" showname="Total Length: 48" size="2" value="0030"/>
-        <field name="ip.id" pos="18" show="0x0000" showname="Identification: 0x0000 (0)" size="2" value="0000"/>
-        <field name="ip.flags" pos="20" show="0x02" showname="Flags: 0x02 (Don't Fragment)" size="1" value="40">
-          <field name="ip.flags.rb" pos="20" show="0" showname="0... .... = Reserved bit: Not set" size="1" value="40"/>
-          <field name="ip.flags.df" pos="20" show="1" showname=".1.. .... = Don't fragment: Set" size="1" value="40"/>
-          <field name="ip.flags.mf" pos="20" show="0" showname="..0. .... = More fragments: Not set" size="1" value="40"/>
-        </field>
-        <field name="ip.frag_offset" pos="20" show="0" showname="Fragment offset: 0" size="2" value="4000"/>
-        <field name="ip.ttl" pos="22" show="64" showname="Time to live: 64" size="1" value="40"/>
-        <field name="ip.proto" pos="23" show="132" showname="Protocol: SCTP (132)" size="1" value="84"/>
-        <field name="ip.checksum" pos="24" show="0xa011" showname="Header checksum: 0xa011 [validation disabled]" size="2" value="a011">
-          <field name="ip.checksum_good" pos="24" show="0" showname="Good: False" size="2" value="a011"/>
-          <field name="ip.checksum_bad" pos="24" show="0" showname="Bad: False" size="2" value="a011"/>
-        </field>
-        <field name="ip.src" pos="26" show="192.168.12.17" showname="Source: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.addr" pos="26" show="192.168.12.17" showname="Source or Destination Address: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.src_host" pos="26" show="192.168.12.17" showname="Source Host: 192.168.12.17" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.host" pos="26" show="192.168.12.17" showname="Source or Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-        <field name="ip.dst" pos="30" show="192.168.12.213" showname="Destination: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.addr" pos="30" show="192.168.12.213" showname="Source or Destination Address: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.dst_host" pos="30" show="192.168.12.213" showname="Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.host" pos="30" show="192.168.12.213" showname="Source or Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-        <field name="" pos="26" show="Source GeoIP: Unknown" size="4" value="c0a80c11"/>
-        <field name="" pos="30" show="Destination GeoIP: Unknown" size="4" value="c0a80cd5"/>
-        <proto name="sctp" pos="34" showname="Stream Control Transmission Protocol, Src Port: s1-control (36412), Dst Port: s1-control (36412)" size="28">
-          <field name="sctp.srcport" pos="34" show="36412" showname="Source port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.dstport" pos="36" show="36412" showname="Destination port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.verification_tag" pos="38" show="0x54f837ab" showname="Verification tag: 0x54f837ab" size="4" value="54f837ab"/>
-          <field hide="yes" name="sctp.port" pos="34" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-          <field hide="yes" name="sctp.port" pos="36" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.checksum" pos="42" show="0x4bc96ec5" showname="Checksum: 0x4bc96ec5 (not verified)" size="4" value="4bc96ec5"/>
-          <field name="" pos="46" show="SACK chunk (Cumulative TSN: 3304831196, a_rwnd: 106496, gaps: 0, duplicate TSNs: 0)" size="16" value="03000010c4fbb8dc0001a00000000000">
-            <field name="sctp.chunk_type" pos="46" show="3" showname="Chunk type: SACK (3)" size="1" value="03">
-              <field name="sctp.chunk_bit_1" pos="46" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="03" value="0"/>
-              <field name="sctp.chunk_bit_2" pos="46" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="03" value="0"/>
-            </field>
-            <field name="sctp.chunk_flags" pos="47" show="0x00" showname="Chunk flags: 0x00" size="1" value="00">
-              <field name="sctp.sack_nounce_sum" pos="47" show="0" showname=".... ...0 = Nounce sum: 0" size="1" unmaskedvalue="00" value="0"/>
-            </field>
-            <field name="sctp.chunk_length" pos="48" show="16" showname="Chunk length: 16" size="2" value="0010"/>
-            <field name="sctp.sack_cumulative_tsn_ack" pos="50" show="3304831196" showname="Cumulative TSN ACK: 3304831196" size="4" value="c4fbb8dc"/>
-            <field name="sctp.sack_a_rwnd" pos="54" show="106496" showname="Advertised receiver window credit (a_rwnd): 106496" size="4" value="0001a000"/>
-            <field name="sctp.sack_number_of_gap_blocks" pos="58" show="0" showname="Number of gap acknowledgement blocks: 0" size="2" value="0000"/>
-            <field name="sctp.sack_number_of_duplicated_tsns" pos="60" show="0" showname="Number of duplicated TSNs: 0" size="2" value="0000"/>
-          </field>
-        </proto>
-      </proto>
-    </proto>
-  </packet>
-  <packet>
-    <proto name="frame" pos="0" showname="Frame 88: 186 bytes on wire (1488 bits), 186 bytes captured (1488 bits) on interface 0" size="186">
-      <field name="frame.interface_id" pos="0" show="0" showname="Interface id: 0" size="0"/>
-      <field name="frame.encap_type" pos="0" show="1" showname="Encapsulation type: Ethernet (1)" size="0"/>
-      <field name="frame.time" pos="0" show="Sep 25, 2015 16:34:54.226402000" showname="Arrival Time: Sep 25, 2015 16:34:54.226402000 CEST" size="0"/>
-      <field name="frame.offset_shift" pos="0" show="0.000000000" showname="Time shift for this packet: 0.000000000 seconds" size="0"/>
-      <field name="frame.time_epoch" pos="0" show="1443191694.226402000" showname="Epoch Time: 1443191694.226402000 seconds" size="0"/>
-      <field name="frame.time_delta" pos="0" show="0.000272000" showname="Time delta from previous captured frame: 0.000272000 seconds" size="0"/>
-      <field name="frame.time_delta_displayed" pos="0" show="0.000272000" showname="Time delta from previous displayed frame: 0.000272000 seconds" size="0"/>
-      <field name="frame.time_relative" pos="0" show="47.760771000" showname="Time since reference or first frame: 47.760771000 seconds" size="0"/>
-      <field name="frame.number" pos="0" show="88" showname="Frame Number: 88" size="0"/>
-      <field name="frame.len" pos="0" show="186" showname="Frame Length: 186 bytes (1488 bits)" size="0"/>
-      <field name="frame.cap_len" pos="0" show="186" showname="Capture Length: 186 bytes (1488 bits)" size="0"/>
-      <field name="frame.marked" pos="0" show="0" showname="Frame is marked: False" size="0"/>
-      <field name="frame.ignored" pos="0" show="0" showname="Frame is ignored: False" size="0"/>
-      <field name="frame.protocols" pos="0" show="eth:ip:sctp:s1ap:s1ap:s1ap:s1ap:s1ap:s1ap:s1ap:s1ap:s1ap:s1ap:s1ap:nas-eps:s1ap:s1ap" showname="Protocols in frame: eth:ip:sctp:s1ap:s1ap:s1ap:s1ap:s1ap:s1ap:s1ap:s1ap:s1ap:s1ap:s1ap:nas-eps:s1ap:s1ap" size="0"/>
-      <proto name="ip" pos="14" showname="Internet Protocol Version 4, Src: 192.168.12.213 (192.168.12.213), Dst: 192.168.12.17 (192.168.12.17)" size="20">
-        <field name="ip.version" pos="14" show="4" showname="Version: 4" size="1" value="45"/>
-        <field name="ip.hdr_len" pos="14" show="20" showname="Header length: 20 bytes" size="1" value="45"/>
-        <field name="ip.dsfield" pos="15" show="2" showname="Differentiated Services Field: 0x02 (DSCP 0x00: Default; ECN: 0x02: ECT(0) (ECN-Capable Transport))" size="1" value="02">
-          <field name="ip.dsfield.dscp" pos="15" show="0x00" showname="0000 00.. = Differentiated Services Codepoint: Default (0x00)" size="1" unmaskedvalue="02" value="0"/>
-          <field name="ip.dsfield.ecn" pos="15" show="0x02" showname=".... ..10 = Explicit Congestion Notification: ECT(0) (ECN-Capable Transport) (0x02)" size="1" unmaskedvalue="02" value="2"/>
-        </field>
-        <field name="ip.len" pos="16" show="172" showname="Total Length: 172" size="2" value="00ac"/>
-        <field name="ip.id" pos="18" show="0x000b" showname="Identification: 0x000b (11)" size="2" value="000b"/>
-        <field name="ip.flags" pos="20" show="0x02" showname="Flags: 0x02 (Don't Fragment)" size="1" value="40">
-          <field name="ip.flags.rb" pos="20" show="0" showname="0... .... = Reserved bit: Not set" size="1" value="40"/>
-          <field name="ip.flags.df" pos="20" show="1" showname=".1.. .... = Don't fragment: Set" size="1" value="40"/>
-          <field name="ip.flags.mf" pos="20" show="0" showname="..0. .... = More fragments: Not set" size="1" value="40"/>
-        </field>
-        <field name="ip.frag_offset" pos="20" show="0" showname="Fragment offset: 0" size="2" value="4000"/>
-        <field name="ip.ttl" pos="22" show="64" showname="Time to live: 64" size="1" value="40"/>
-        <field name="ip.proto" pos="23" show="132" showname="Protocol: SCTP (132)" size="1" value="84"/>
-        <field name="ip.checksum" pos="24" show="0x9f8a" showname="Header checksum: 0x9f8a [validation disabled]" size="2" value="9f8a">
-          <field name="ip.checksum_good" pos="24" show="0" showname="Good: False" size="2" value="9f8a"/>
-          <field name="ip.checksum_bad" pos="24" show="0" showname="Bad: False" size="2" value="9f8a"/>
-        </field>
-        <field name="ip.src" pos="26" show="192.168.12.213" showname="Source: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.addr" pos="26" show="192.168.12.213" showname="Source or Destination Address: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.src_host" pos="26" show="192.168.12.213" showname="Source Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.host" pos="26" show="192.168.12.213" showname="Source or Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-        <field name="ip.dst" pos="30" show="192.168.12.17" showname="Destination: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.addr" pos="30" show="192.168.12.17" showname="Source or Destination Address: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.dst_host" pos="30" show="192.168.12.17" showname="Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.host" pos="30" show="192.168.12.17" showname="Source or Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-        <field name="" pos="26" show="Source GeoIP: Unknown" size="4" value="c0a80cd5"/>
-        <field name="" pos="30" show="Destination GeoIP: Unknown" size="4" value="c0a80c11"/>
-        <proto name="sctp" pos="34" showname="Stream Control Transmission Protocol, Src Port: s1-control (36412), Dst Port: s1-control (36412)" size="28">
-          <field name="sctp.srcport" pos="34" show="36412" showname="Source port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.dstport" pos="36" show="36412" showname="Destination port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.verification_tag" pos="38" show="0x4cd1eca0" showname="Verification tag: 0x4cd1eca0" size="4" value="4cd1eca0"/>
-          <field hide="yes" name="sctp.port" pos="34" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-          <field hide="yes" name="sctp.port" pos="36" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.checksum" pos="42" show="0xb000a908" showname="Checksum: 0xb000a908 (not verified)" size="4" value="b000a908"/>
-          <field name="" pos="46" show="DATA chunk(ordered, complete segment, TSN: 3304831197, SID: 1, SSN: 5, PPID: 18, payload length: 43 bytes)" size="16" value="0003003bc4fbb8dd0001000500000012">
-            <field name="sctp.chunk_type" pos="46" show="0" showname="Chunk type: DATA (0)" size="1" value="00">
-              <field name="sctp.chunk_bit_1" pos="46" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="00" value="0"/>
-              <field name="sctp.chunk_bit_2" pos="46" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="00" value="0"/>
-            </field>
-            <field name="sctp.chunk_flags" pos="47" show="0x03" showname="Chunk flags: 0x03" size="1" value="03">
-              <field name="sctp.data_e_bit" pos="47" show="1" showname=".... ...1 = E-Bit: Last segment" size="1" unmaskedvalue="03" value="1"/>
-              <field name="sctp.data_b_bit" pos="47" show="1" showname=".... ..1. = B-Bit: First segment" size="1" unmaskedvalue="03" value="1"/>
-              <field name="sctp.data_u_bit" pos="47" show="0" showname=".... .0.. = U-Bit: Ordered delivery" size="1" unmaskedvalue="03" value="0"/>
-              <field name="sctp.data_i_bit" pos="47" show="0" showname=".... 0... = I-Bit: Possibly delay SACK" size="1" unmaskedvalue="03" value="0"/>
-            </field>
-            <field name="sctp.chunk_length" pos="48" show="59" showname="Chunk length: 59" size="2" value="003b"/>
-            <field name="sctp.data_tsn" pos="50" show="3304831197" showname="TSN: 3304831197" size="4" value="c4fbb8dd"/>
-            <field name="sctp.data_sid" pos="54" show="0x0001" showname="Stream Identifier: 0x0001" size="2" value="0001"/>
-            <field name="sctp.data_ssn" pos="56" show="5" showname="Stream sequence number: 5" size="2" value="0005"/>
-            <field name="sctp.data_payload_proto_id" pos="58" show="18" showname="Payload protocol identifier: S1 Application Protocol (S1AP) (18)" size="4" value="00000012"/>
-            <field name="sctp.chunk_padding" pos="105" show="00" showname="Chunk padding: 00" size="1" value="00"/>
-          </field>
-          <proto name="s1ap" pos="62" showname="S1 Application Protocol" size="43">
-            <field hide="yes" name="per.extension_bit" pos="62" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="20" value="0"/>
-            <field hide="yes" name="per.choice_index" pos="62" show="1" showname="Choice Index: 1" size="1" value="20"/>
-            <field name="s1ap.S1AP_PDU" pos="62" show="1" showname="S1AP-PDU: successfulOutcome (1)" size="43" value="2009002700000300004005c0740010d0000840048006692d0033400f000032400a0a1fc0a80cd5ca6fe0dd">
-              <field name="s1ap.successfulOutcome" pos="62" show="" showname="successfulOutcome" size="43" value="">
-                <field name="s1ap.procedureCode" pos="63" show="9" showname="procedureCode: id-InitialContextSetup (9)" size="1" value="09"/>
-                <field hide="yes" name="per.enum_index" pos="64" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                <field name="s1ap.criticality" pos="64" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                <field hide="yes" name="per.open_type_length" pos="65" show="39" showname="Open Type Length: 39" size="1" value="27"/>
-                <field name="s1ap.value" pos="66" show="" showname="value" size="39" value="">
-                  <field name="s1ap.InitialContextSetupResponse" pos="66" show="" showname="InitialContextSetupResponse" size="39" value="">
-                    <field hide="yes" name="per.extension_bit" pos="66" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-                    <field hide="yes" name="per.sequence_of_length" pos="67" show="3" showname="Sequence-Of Length: 3" size="2" value="0003"/>
-                    <field name="s1ap.protocolIEs" pos="69" show="3" showname="protocolIEs: 3 items" size="36" value="00004005c0740010d0000840048006692d0033400f000032400a0a1fc0a80cd5ca6fe0dd">
-                      <field name="" pos="69" show="Item 0: id-MME-UE-S1AP-ID" size="9" value="00004005c0740010d0">
-                        <field name="s1ap.ProtocolIE_Field" pos="69" show="" showname="ProtocolIE-Field" size="9" value="">
-                          <field name="s1ap.id" pos="69" show="0" showname="id: id-MME-UE-S1AP-ID (0)" size="2" value="0000"/>
-                          <field hide="yes" name="per.enum_index" pos="71" show="1" showname="Enumerated Index: 1" size="1" value="40"/>
-                          <field name="s1ap.criticality" pos="71" show="1" showname="criticality: ignore (1)" size="1" value="40"/>
-                          <field hide="yes" name="per.open_type_length" pos="72" show="5" showname="Open Type Length: 5" size="1" value="05"/>
-                          <field name="s1ap.value" pos="73" show="" showname="value" size="5" value="">
-                            <field name="s1ap.MME_UE_S1AP_ID" pos="73" show="1946161360" showname="MME-UE-S1AP-ID: 1946161360" size="5" value="c0740010d0"/>
-                          </field>
-                        </field>
-                      </field>
-                      <field name="" pos="78" show="Item 1: id-eNB-UE-S1AP-ID" size="8" value="000840048006692d">
-                        <field name="s1ap.ProtocolIE_Field" pos="78" show="" showname="ProtocolIE-Field" size="8" value="">
-                          <field name="s1ap.id" pos="78" show="8" showname="id: id-eNB-UE-S1AP-ID (8)" size="2" value="0008"/>
-                          <field hide="yes" name="per.enum_index" pos="80" show="1" showname="Enumerated Index: 1" size="1" value="40"/>
-                          <field name="s1ap.criticality" pos="80" show="1" showname="criticality: ignore (1)" size="1" value="40"/>
-                          <field hide="yes" name="per.open_type_length" pos="81" show="4" showname="Open Type Length: 4" size="1" value="04"/>
-                          <field name="s1ap.value" pos="82" show="" showname="value" size="4" value="">
-                            <field name="s1ap.ENB_UE_S1AP_ID" pos="82" show="420141" showname="ENB-UE-S1AP-ID: 420141" size="4" value="8006692d"/>
-                          </field>
-                        </field>
-                      </field>
-                      <field name="" pos="86" show="Item 2: id-E-RABSetupListCtxtSURes" size="19" value="0033400f000032400a0a1fc0a80cd5ca6fe0dd">
-                        <field name="s1ap.ProtocolIE_Field" pos="86" show="" showname="ProtocolIE-Field" size="19" value="">
-                          <field name="s1ap.id" pos="86" show="51" showname="id: id-E-RABSetupListCtxtSURes (51)" size="2" value="0033"/>
-                          <field hide="yes" name="per.enum_index" pos="88" show="1" showname="Enumerated Index: 1" size="1" value="40"/>
-                          <field name="s1ap.criticality" pos="88" show="1" showname="criticality: ignore (1)" size="1" value="40"/>
-                          <field hide="yes" name="per.open_type_length" pos="89" show="15" showname="Open Type Length: 15" size="1" value="0f"/>
-                          <field name="s1ap.value" pos="90" show="" showname="value" size="15" value="">
-                            <field hide="yes" name="per.sequence_of_length" pos="90" show="1" showname="Sequence-Of Length: 1" size="1" value="00"/>
-                            <field name="s1ap.E_RABSetupListCtxtSURes" pos="91" show="1" showname="E-RABSetupListCtxtSURes: 1 item" size="14" value="0032400a0a1fc0a80cd5ca6fe0dd">
-                              <field name="" pos="91" show="Item 0: id-E-RABSetupItemCtxtSURes" size="14" value="0032400a0a1fc0a80cd5ca6fe0dd">
-                                <field name="s1ap.ProtocolIE_SingleContainer" pos="91" show="" showname="ProtocolIE-SingleContainer" size="14" value="">
-                                  <field name="s1ap.id" pos="91" show="50" showname="id: id-E-RABSetupItemCtxtSURes (50)" size="2" value="0032"/>
-                                  <field hide="yes" name="per.enum_index" pos="93" show="1" showname="Enumerated Index: 1" size="1" value="40"/>
-                                  <field name="s1ap.criticality" pos="93" show="1" showname="criticality: ignore (1)" size="1" value="40"/>
-                                  <field hide="yes" name="per.open_type_length" pos="94" show="10" showname="Open Type Length: 10" size="1" value="0a"/>
-                                  <field name="s1ap.value" pos="95" show="" showname="value" size="10" value="">
-                                    <field name="s1ap.E_RABSetupItemCtxtSURes" pos="95" show="" showname="E-RABSetupItemCtxtSURes" size="10" value="">
-                                      <field hide="yes" name="per.extension_bit" pos="95" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="0a" value="0"/>
-                                      <field hide="yes" name="per.optional_field_bit" pos="95" show="0" showname=".0.. .... Optional Field Bit: False (iE-Extensions is NOT present)" size="1" unmaskedvalue="0a" value="0"/>
-                                      <field hide="yes" name="per.extension_present_bit" pos="95" show="0" showname="..0. .... Extension Present Bit: False" size="1" unmaskedvalue="0a" value="0"/>
-                                      <field name="s1ap.e_RAB_ID" pos="95" show="5" showname="e-RAB-ID: 5" size="1" value="0a"/>
-                                      <field name="per.extension_present_bit" pos="95" show="0" showname=".... ...0 Extension Present Bit: False" size="1" unmaskedvalue="0a" value="0"/>
-                                      <field hide="yes" name="per.bit_string_length" pos="96" show="32" showname="Bit String Length: 32" size="1" value="1f"/>
-                                      <field name="s1ap.transportLayerAddress" pos="97" show="c0:a8:0c:d5" showname="transportLayerAddress: c0a80cd5 [bit length 32, 1100 0000  1010 1000  0000 1100  1101 0101 decimal value 3232238805]" size="4" value="c0a80cd5">
-                                        <field name="s1ap.transportLayerAddressIPv4" pos="97" show="192.168.12.213" showname="transportLayerAddress(IPv4): 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-                                      </field>
-                                      <field name="s1ap.gTP_TEID" pos="101" show="ca:6f:e0:dd" showname="gTP-TEID: ca6fe0dd" size="4" value="ca6fe0dd"/>
-                                    </field>
-                                  </field>
-                                </field>
-                              </field>
-                            </field>
-                          </field>
-                        </field>
-                      </field>
-                    </field>
-                  </field>
-                </field>
-              </field>
-            </field>
-          </proto>
-        </proto>
-        <proto name="sctp" pos="106" showname="Stream Control Transmission Protocol" size="16">
-          <field name="" pos="106" show="DATA chunk(ordered, complete segment, TSN: 3304831198, SID: 1, SSN: 6, PPID: 18, payload length: 64 bytes)" size="16" value="00030050c4fbb8de0001000600000012">
-            <field name="sctp.chunk_type" pos="106" show="0" showname="Chunk type: DATA (0)" size="1" value="00">
-              <field name="sctp.chunk_bit_1" pos="106" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="00" value="0"/>
-              <field name="sctp.chunk_bit_2" pos="106" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="00" value="0"/>
-            </field>
-            <field name="sctp.chunk_flags" pos="107" show="0x03" showname="Chunk flags: 0x03" size="1" value="03">
-              <field name="sctp.data_e_bit" pos="107" show="1" showname=".... ...1 = E-Bit: Last segment" size="1" unmaskedvalue="03" value="1"/>
-              <field name="sctp.data_b_bit" pos="107" show="1" showname=".... ..1. = B-Bit: First segment" size="1" unmaskedvalue="03" value="1"/>
-              <field name="sctp.data_u_bit" pos="107" show="0" showname=".... .0.. = U-Bit: Ordered delivery" size="1" unmaskedvalue="03" value="0"/>
-              <field name="sctp.data_i_bit" pos="107" show="0" showname=".... 0... = I-Bit: Possibly delay SACK" size="1" unmaskedvalue="03" value="0"/>
-            </field>
-            <field name="sctp.chunk_length" pos="108" show="80" showname="Chunk length: 80" size="2" value="0050"/>
-            <field name="sctp.data_tsn" pos="110" show="3304831198" showname="TSN: 3304831198" size="4" value="c4fbb8de"/>
-            <field name="sctp.data_sid" pos="114" show="0x0001" showname="Stream Identifier: 0x0001" size="2" value="0001"/>
-            <field name="sctp.data_ssn" pos="116" show="6" showname="Stream sequence number: 6" size="2" value="0006"/>
-            <field name="sctp.data_payload_proto_id" pos="118" show="18" showname="Payload protocol identifier: S1 Application Protocol (S1AP) (18)" size="4" value="00000012"/>
-          </field>
-          <proto name="s1ap" pos="122" showname="S1 Application Protocol" size="64">
-            <field hide="yes" name="per.extension_bit" pos="122" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-            <field hide="yes" name="per.choice_index" pos="122" show="0" showname="Choice Index: 0" size="1" value="00"/>
-            <field name="s1ap.S1AP_PDU" pos="122" show="0" showname="S1AP-PDU: initiatingMessage (0)" size="64" value="000d403c00000500000005c0740010d0000800048006692d001a000e0d275cf0408901074300035200c2006440080002f85900e00000004340060002f8590001">
-              <field name="s1ap.initiatingMessage" pos="122" show="" showname="initiatingMessage" size="64" value="">
-                <field name="s1ap.procedureCode" pos="123" show="13" showname="procedureCode: id-uplinkNASTransport (13)" size="1" value="0d"/>
-                <field hide="yes" name="per.enum_index" pos="124" show="1" showname="Enumerated Index: 1" size="1" value="40"/>
-                <field name="s1ap.criticality" pos="124" show="1" showname="criticality: ignore (1)" size="1" value="40"/>
-                <field hide="yes" name="per.open_type_length" pos="125" show="60" showname="Open Type Length: 60" size="1" value="3c"/>
-                <field name="s1ap.value" pos="126" show="" showname="value" size="60" value="">
-                  <field name="s1ap.UplinkNASTransport" pos="126" show="" showname="UplinkNASTransport" size="60" value="">
-                    <field hide="yes" name="per.extension_bit" pos="126" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-                    <field hide="yes" name="per.sequence_of_length" pos="127" show="5" showname="Sequence-Of Length: 5" size="2" value="0005"/>
-                    <field name="s1ap.protocolIEs" pos="129" show="5" showname="protocolIEs: 5 items" size="57" value="00000005c0740010d0000800048006692d001a000e0d275cf0408901074300035200c2006440080002f85900e00000004340060002f8590001">
-                      <field name="" pos="129" show="Item 0: id-MME-UE-S1AP-ID" size="9" value="00000005c0740010d0">
-                        <field name="s1ap.ProtocolIE_Field" pos="129" show="" showname="ProtocolIE-Field" size="9" value="">
-                          <field name="s1ap.id" pos="129" show="0" showname="id: id-MME-UE-S1AP-ID (0)" size="2" value="0000"/>
-                          <field hide="yes" name="per.enum_index" pos="131" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                          <field name="s1ap.criticality" pos="131" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                          <field hide="yes" name="per.open_type_length" pos="132" show="5" showname="Open Type Length: 5" size="1" value="05"/>
-                          <field name="s1ap.value" pos="133" show="" showname="value" size="5" value="">
-                            <field name="s1ap.MME_UE_S1AP_ID" pos="133" show="1946161360" showname="MME-UE-S1AP-ID: 1946161360" size="5" value="c0740010d0"/>
-                          </field>
-                        </field>
-                      </field>
-                      <field name="" pos="138" show="Item 1: id-eNB-UE-S1AP-ID" size="8" value="000800048006692d">
-                        <field name="s1ap.ProtocolIE_Field" pos="138" show="" showname="ProtocolIE-Field" size="8" value="">
-                          <field name="s1ap.id" pos="138" show="8" showname="id: id-eNB-UE-S1AP-ID (8)" size="2" value="0008"/>
-                          <field hide="yes" name="per.enum_index" pos="140" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                          <field name="s1ap.criticality" pos="140" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                          <field hide="yes" name="per.open_type_length" pos="141" show="4" showname="Open Type Length: 4" size="1" value="04"/>
-                          <field name="s1ap.value" pos="142" show="" showname="value" size="4" value="">
-                            <field name="s1ap.ENB_UE_S1AP_ID" pos="142" show="420141" showname="ENB-UE-S1AP-ID: 420141" size="4" value="8006692d"/>
-                          </field>
-                        </field>
-                      </field>
-                      <field name="" pos="146" show="Item 2: id-NAS-PDU" size="18" value="001a000e0d275cf0408901074300035200c2">
-                        <field name="s1ap.ProtocolIE_Field" pos="146" show="" showname="ProtocolIE-Field" size="18" value="">
-                          <field name="s1ap.id" pos="146" show="26" showname="id: id-NAS-PDU (26)" size="2" value="001a"/>
-                          <field hide="yes" name="per.enum_index" pos="148" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                          <field name="s1ap.criticality" pos="148" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                          <field hide="yes" name="per.open_type_length" pos="149" show="14" showname="Open Type Length: 14" size="1" value="0e"/>
-                          <field name="s1ap.value" pos="150" show="" showname="value" size="14" value="">
-                            <field hide="yes" name="per.octet_string_length" pos="150" show="13" showname="Octet String Length: 13" size="1" value="0d"/>
-                            <field name="s1ap.NAS_PDU" pos="151" show="27:5c:f0:40:89:01:07:43:00:03:52:00:c2" showname="NAS-PDU: 275cf0408901074300035200c2" size="13" value="275cf0408901074300035200c2"/>
-                            <proto name="nas-eps" pos="151" showname="Non-Access-Stratum (NAS)PDU" size="13">
-                              <field name="nas_eps.security_header_type" pos="151" show="2" showname="0010 .... = Security header type: Integrity protected and ciphered (2)" size="1" unmaskedvalue="27" value="2"/>
-                              <field name="gsm_a.L3_protocol_discriminator" pos="151" show="0x07" showname=".... 0111 = Protocol discriminator: EPS mobility management messages (0x07)" size="1" unmaskedvalue="27" value="7"/>
-                              <field name="nas_eps.msg_auth_code" pos="152" show="0x5cf04089" showname="Message authentication code: 0x5cf04089" size="4" value="5cf04089"/>
-                              <field name="nas_eps.seq_no" pos="156" show="1" showname="Sequence number: 1" size="1" value="01"/>
-                              <field name="nas_eps.security_header_type" pos="157" show="0" showname="0000 .... = Security header type: Plain NAS message, not security protected (0)" size="1" unmaskedvalue="07" value="0"/>
-                              <field name="gsm_a.L3_protocol_discriminator" pos="157" show="0x07" showname=".... 0111 = Protocol discriminator: EPS mobility management messages (0x07)" size="1" unmaskedvalue="07" value="7"/>
-                              <field name="nas_eps.nas_msg_emm_type" pos="158" show="0x43" showname="NAS EPS Mobility Management Message Type: Attach complete (0x43)" size="1" value="43"/>
-                              <field name="" pos="159" show="ESM message container" size="5" value="00035200c2">
-                                <field name="gsm_a.len" pos="159" show="3" showname="Length: 3" size="2" value="0003"/>
-                                <field name="nas_eps.emm.esm_msg_cont" pos="161" show="52:00:c2" showname="ESM message container contents: 5200c2" size="3" value="5200c2">
-                                  <field name="nas_eps.bearer_id" pos="161" show="5" showname="0101 .... = EPS bearer identity: EPS bearer identity value 5 (5)" size="1" unmaskedvalue="52" value="5"/>
-                                  <field name="gsm_a.L3_protocol_discriminator" pos="161" show="0x02" showname=".... 0010 = Protocol discriminator: EPS session management messages (0x02)" size="1" unmaskedvalue="52" value="2"/>
-                                  <field name="nas_eps.esm.proc_trans_id" pos="162" show="0" showname="Procedure transaction identity: 0" size="1" value="00"/>
-                                  <field name="nas_eps.nas_msg_esm_type" pos="163" show="0xc2" showname="NAS EPS session management messages: Activate default EPS bearer context accept (0xc2)" size="1" value="c2"/>
-                                </field>
-                              </field>
-                            </proto>
-                          </field>
-                        </field>
-                      </field>
-                      <field name="" pos="164" show="Item 3: id-EUTRAN-CGI" size="12" value="006440080002f85900e00000">
-                        <field name="s1ap.ProtocolIE_Field" pos="164" show="" showname="ProtocolIE-Field" size="12" value="">
-                          <field name="s1ap.id" pos="164" show="100" showname="id: id-EUTRAN-CGI (100)" size="2" value="0064"/>
-                          <field hide="yes" name="per.enum_index" pos="166" show="1" showname="Enumerated Index: 1" size="1" value="40"/>
-                          <field name="s1ap.criticality" pos="166" show="1" showname="criticality: ignore (1)" size="1" value="40"/>
-                          <field hide="yes" name="per.open_type_length" pos="167" show="8" showname="Open Type Length: 8" size="1" value="08"/>
-                          <field name="s1ap.value" pos="168" show="" showname="value" size="8" value="">
-                            <field name="s1ap.EUTRAN_CGI" pos="168" show="" showname="EUTRAN-CGI" size="7" value="">
-                              <field hide="yes" name="per.extension_bit" pos="168" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-                              <field hide="yes" name="per.optional_field_bit" pos="168" show="0" showname=".0.. .... Optional Field Bit: False (iE-Extensions is NOT present)" size="1" unmaskedvalue="00" value="0"/>
-                              <field name="s1ap.pLMNidentity" pos="169" show="02:f8:59" showname="pLMNidentity: 02f859" size="3" value="02f859"/>
-                              <field name="e212.mcc" pos="169" show="208" showname="Mobile Country Code (MCC): France (208)" size="2" value="02f8"/>
-                              <field name="e212.mnc" pos="170" show="95" showname="Mobile Network Code (MNC): Unknown (95)" size="2" value="f859"/>
-                              <field name="s1ap.cell_ID" pos="168" show="00:e0:00:00" showname="cell-ID: 00e00000 [bit length 28, 4 LSB pad bits, 0000 0000  1110 0000  0000 0000  0000 .... decimal value 917504]" size="4" value="00e00000"/>
-                            </field>
-                          </field>
-                        </field>
-                      </field>
-                      <field name="" pos="176" show="Item 4: id-TAI" size="10" value="004340060002f8590001">
-                        <field name="s1ap.ProtocolIE_Field" pos="176" show="" showname="ProtocolIE-Field" size="10" value="">
-                          <field name="s1ap.id" pos="176" show="67" showname="id: id-TAI (67)" size="2" value="0043"/>
-                          <field hide="yes" name="per.enum_index" pos="178" show="1" showname="Enumerated Index: 1" size="1" value="40"/>
-                          <field name="s1ap.criticality" pos="178" show="1" showname="criticality: ignore (1)" size="1" value="40"/>
-                          <field hide="yes" name="per.open_type_length" pos="179" show="6" showname="Open Type Length: 6" size="1" value="06"/>
-                          <field name="s1ap.value" pos="180" show="" showname="value" size="6" value="">
-                            <field name="s1ap.TAI" pos="180" show="" showname="TAI" size="6" value="">
-                              <field hide="yes" name="per.extension_bit" pos="180" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-                              <field hide="yes" name="per.optional_field_bit" pos="180" show="0" showname=".0.. .... Optional Field Bit: False (iE-Extensions is NOT present)" size="1" unmaskedvalue="00" value="0"/>
-                              <field name="s1ap.pLMNidentity" pos="181" show="02:f8:59" showname="pLMNidentity: 02f859" size="3" value="02f859"/>
-                              <field name="e212.mcc" pos="181" show="208" showname="Mobile Country Code (MCC): France (208)" size="2" value="02f8"/>
-                              <field name="e212.mnc" pos="182" show="95" showname="Mobile Network Code (MNC): Unknown (95)" size="2" value="f859"/>
-                              <field name="s1ap.tAC" pos="184" show="00:01" showname="tAC: 0001" size="2" value="0001"/>
-                            </field>
-                          </field>
-                        </field>
-                      </field>
-                    </field>
-                  </field>
-                </field>
-              </field>
-            </field>
-          </proto>
-        </proto>
-      </proto>
-    </proto>
-  </packet>
-  <packet>
-    <proto name="frame" pos="0" showname="Frame 89: 62 bytes on wire (496 bits), 62 bytes captured (496 bits) on interface 0" size="62">
-      <field name="frame.interface_id" pos="0" show="0" showname="Interface id: 0" size="0"/>
-      <field name="frame.encap_type" pos="0" show="1" showname="Encapsulation type: Ethernet (1)" size="0"/>
-      <field name="frame.time" pos="0" show="Sep 25, 2015 16:34:54.426135000" showname="Arrival Time: Sep 25, 2015 16:34:54.426135000 CEST" size="0"/>
-      <field name="frame.offset_shift" pos="0" show="0.000000000" showname="Time shift for this packet: 0.000000000 seconds" size="0"/>
-      <field name="frame.time_epoch" pos="0" show="1443191694.426135000" showname="Epoch Time: 1443191694.426135000 seconds" size="0"/>
-      <field name="frame.time_delta" pos="0" show="0.199733000" showname="Time delta from previous captured frame: 0.199733000 seconds" size="0"/>
-      <field name="frame.time_delta_displayed" pos="0" show="0.199733000" showname="Time delta from previous displayed frame: 0.199733000 seconds" size="0"/>
-      <field name="frame.time_relative" pos="0" show="47.960504000" showname="Time since reference or first frame: 47.960504000 seconds" size="0"/>
-      <field name="frame.number" pos="0" show="89" showname="Frame Number: 89" size="0"/>
-      <field name="frame.len" pos="0" show="62" showname="Frame Length: 62 bytes (496 bits)" size="0"/>
-      <field name="frame.cap_len" pos="0" show="62" showname="Capture Length: 62 bytes (496 bits)" size="0"/>
-      <field name="frame.marked" pos="0" show="0" showname="Frame is marked: False" size="0"/>
-      <field name="frame.ignored" pos="0" show="0" showname="Frame is ignored: False" size="0"/>
-      <field name="frame.protocols" pos="0" show="eth:ip:sctp" showname="Protocols in frame: eth:ip:sctp" size="0"/>
-      <proto name="ip" pos="14" showname="Internet Protocol Version 4, Src: 192.168.12.17 (192.168.12.17), Dst: 192.168.12.213 (192.168.12.213)" size="20">
-        <field name="ip.version" pos="14" show="4" showname="Version: 4" size="1" value="45"/>
-        <field name="ip.hdr_len" pos="14" show="20" showname="Header length: 20 bytes" size="1" value="45"/>
-        <field name="ip.dsfield" pos="15" show="2" showname="Differentiated Services Field: 0x02 (DSCP 0x00: Default; ECN: 0x02: ECT(0) (ECN-Capable Transport))" size="1" value="02">
-          <field name="ip.dsfield.dscp" pos="15" show="0x00" showname="0000 00.. = Differentiated Services Codepoint: Default (0x00)" size="1" unmaskedvalue="02" value="0"/>
-          <field name="ip.dsfield.ecn" pos="15" show="0x02" showname=".... ..10 = Explicit Congestion Notification: ECT(0) (ECN-Capable Transport) (0x02)" size="1" unmaskedvalue="02" value="2"/>
-        </field>
-        <field name="ip.len" pos="16" show="48" showname="Total Length: 48" size="2" value="0030"/>
-        <field name="ip.id" pos="18" show="0x0000" showname="Identification: 0x0000 (0)" size="2" value="0000"/>
-        <field name="ip.flags" pos="20" show="0x02" showname="Flags: 0x02 (Don't Fragment)" size="1" value="40">
-          <field name="ip.flags.rb" pos="20" show="0" showname="0... .... = Reserved bit: Not set" size="1" value="40"/>
-          <field name="ip.flags.df" pos="20" show="1" showname=".1.. .... = Don't fragment: Set" size="1" value="40"/>
-          <field name="ip.flags.mf" pos="20" show="0" showname="..0. .... = More fragments: Not set" size="1" value="40"/>
-        </field>
-        <field name="ip.frag_offset" pos="20" show="0" showname="Fragment offset: 0" size="2" value="4000"/>
-        <field name="ip.ttl" pos="22" show="64" showname="Time to live: 64" size="1" value="40"/>
-        <field name="ip.proto" pos="23" show="132" showname="Protocol: SCTP (132)" size="1" value="84"/>
-        <field name="ip.checksum" pos="24" show="0xa011" showname="Header checksum: 0xa011 [validation disabled]" size="2" value="a011">
-          <field name="ip.checksum_good" pos="24" show="0" showname="Good: False" size="2" value="a011"/>
-          <field name="ip.checksum_bad" pos="24" show="0" showname="Bad: False" size="2" value="a011"/>
-        </field>
-        <field name="ip.src" pos="26" show="192.168.12.17" showname="Source: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.addr" pos="26" show="192.168.12.17" showname="Source or Destination Address: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.src_host" pos="26" show="192.168.12.17" showname="Source Host: 192.168.12.17" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.host" pos="26" show="192.168.12.17" showname="Source or Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-        <field name="ip.dst" pos="30" show="192.168.12.213" showname="Destination: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.addr" pos="30" show="192.168.12.213" showname="Source or Destination Address: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.dst_host" pos="30" show="192.168.12.213" showname="Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.host" pos="30" show="192.168.12.213" showname="Source or Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-        <field name="" pos="26" show="Source GeoIP: Unknown" size="4" value="c0a80c11"/>
-        <field name="" pos="30" show="Destination GeoIP: Unknown" size="4" value="c0a80cd5"/>
-        <proto name="sctp" pos="34" showname="Stream Control Transmission Protocol, Src Port: s1-control (36412), Dst Port: s1-control (36412)" size="28">
-          <field name="sctp.srcport" pos="34" show="36412" showname="Source port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.dstport" pos="36" show="36412" showname="Destination port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.verification_tag" pos="38" show="0x54f837ab" showname="Verification tag: 0x54f837ab" size="4" value="54f837ab"/>
-          <field hide="yes" name="sctp.port" pos="34" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-          <field hide="yes" name="sctp.port" pos="36" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.checksum" pos="42" show="0x2a13ff28" showname="Checksum: 0x2a13ff28 (not verified)" size="4" value="2a13ff28"/>
-          <field name="" pos="46" show="SACK chunk (Cumulative TSN: 3304831198, a_rwnd: 106496, gaps: 0, duplicate TSNs: 0)" size="16" value="03000010c4fbb8de0001a00000000000">
-            <field name="sctp.chunk_type" pos="46" show="3" showname="Chunk type: SACK (3)" size="1" value="03">
-              <field name="sctp.chunk_bit_1" pos="46" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="03" value="0"/>
-              <field name="sctp.chunk_bit_2" pos="46" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="03" value="0"/>
-            </field>
-            <field name="sctp.chunk_flags" pos="47" show="0x00" showname="Chunk flags: 0x00" size="1" value="00">
-              <field name="sctp.sack_nounce_sum" pos="47" show="0" showname=".... ...0 = Nounce sum: 0" size="1" unmaskedvalue="00" value="0"/>
-            </field>
-            <field name="sctp.chunk_length" pos="48" show="16" showname="Chunk length: 16" size="2" value="0010"/>
-            <field name="sctp.sack_cumulative_tsn_ack" pos="50" show="3304831198" showname="Cumulative TSN ACK: 3304831198" size="4" value="c4fbb8de"/>
-            <field name="sctp.sack_a_rwnd" pos="54" show="106496" showname="Advertised receiver window credit (a_rwnd): 106496" size="4" value="0001a000"/>
-            <field name="sctp.sack_number_of_gap_blocks" pos="58" show="0" showname="Number of gap acknowledgement blocks: 0" size="2" value="0000"/>
-            <field name="sctp.sack_number_of_duplicated_tsns" pos="60" show="0" showname="Number of duplicated TSNs: 0" size="2" value="0000"/>
-          </field>
-        </proto>
-      </proto>
-    </proto>
-  </packet>
-  <packet>
-    <proto name="frame" pos="0" showname="Frame 176: 98 bytes on wire (784 bits), 98 bytes captured (784 bits) on interface 0" size="98">
-      <field name="frame.interface_id" pos="0" show="0" showname="Interface id: 0" size="0"/>
-      <field name="frame.encap_type" pos="0" show="1" showname="Encapsulation type: Ethernet (1)" size="0"/>
-      <field name="frame.time" pos="0" show="Sep 25, 2015 16:35:24.530270000" showname="Arrival Time: Sep 25, 2015 16:35:24.530270000 CEST" size="0"/>
-      <field name="frame.offset_shift" pos="0" show="0.000000000" showname="Time shift for this packet: 0.000000000 seconds" size="0"/>
-      <field name="frame.time_epoch" pos="0" show="1443191724.530270000" showname="Epoch Time: 1443191724.530270000 seconds" size="0"/>
-      <field name="frame.time_delta" pos="0" show="0.030375000" showname="Time delta from previous captured frame: 0.030375000 seconds" size="0"/>
-      <field name="frame.time_delta_displayed" pos="0" show="0.030375000" showname="Time delta from previous displayed frame: 0.030375000 seconds" size="0"/>
-      <field name="frame.time_relative" pos="0" show="78.064639000" showname="Time since reference or first frame: 78.064639000 seconds" size="0"/>
-      <field name="frame.number" pos="0" show="176" showname="Frame Number: 176" size="0"/>
-      <field name="frame.len" pos="0" show="98" showname="Frame Length: 98 bytes (784 bits)" size="0"/>
-      <field name="frame.cap_len" pos="0" show="98" showname="Capture Length: 98 bytes (784 bits)" size="0"/>
-      <field name="frame.marked" pos="0" show="0" showname="Frame is marked: False" size="0"/>
-      <field name="frame.ignored" pos="0" show="0" showname="Frame is ignored: False" size="0"/>
-      <field name="frame.protocols" pos="0" show="eth:ip:sctp" showname="Protocols in frame: eth:ip:sctp" size="0"/>
-      <proto name="ip" pos="14" showname="Internet Protocol Version 4, Src: 192.168.12.17 (192.168.12.17), Dst: 192.168.12.213 (192.168.12.213)" size="20">
-        <field name="ip.version" pos="14" show="4" showname="Version: 4" size="1" value="45"/>
-        <field name="ip.hdr_len" pos="14" show="20" showname="Header length: 20 bytes" size="1" value="45"/>
-        <field name="ip.dsfield" pos="15" show="2" showname="Differentiated Services Field: 0x02 (DSCP 0x00: Default; ECN: 0x02: ECT(0) (ECN-Capable Transport))" size="1" value="02">
-          <field name="ip.dsfield.dscp" pos="15" show="0x00" showname="0000 00.. = Differentiated Services Codepoint: Default (0x00)" size="1" unmaskedvalue="02" value="0"/>
-          <field name="ip.dsfield.ecn" pos="15" show="0x02" showname=".... ..10 = Explicit Congestion Notification: ECT(0) (ECN-Capable Transport) (0x02)" size="1" unmaskedvalue="02" value="2"/>
-        </field>
-        <field name="ip.len" pos="16" show="84" showname="Total Length: 84" size="2" value="0054"/>
-        <field name="ip.id" pos="18" show="0x0000" showname="Identification: 0x0000 (0)" size="2" value="0000"/>
-        <field name="ip.flags" pos="20" show="0x02" showname="Flags: 0x02 (Don't Fragment)" size="1" value="40">
-          <field name="ip.flags.rb" pos="20" show="0" showname="0... .... = Reserved bit: Not set" size="1" value="40"/>
-          <field name="ip.flags.df" pos="20" show="1" showname=".1.. .... = Don't fragment: Set" size="1" value="40"/>
-          <field name="ip.flags.mf" pos="20" show="0" showname="..0. .... = More fragments: Not set" size="1" value="40"/>
-        </field>
-        <field name="ip.frag_offset" pos="20" show="0" showname="Fragment offset: 0" size="2" value="4000"/>
-        <field name="ip.ttl" pos="22" show="64" showname="Time to live: 64" size="1" value="40"/>
-        <field name="ip.proto" pos="23" show="132" showname="Protocol: SCTP (132)" size="1" value="84"/>
-        <field name="ip.checksum" pos="24" show="0x9fed" showname="Header checksum: 0x9fed [validation disabled]" size="2" value="9fed">
-          <field name="ip.checksum_good" pos="24" show="0" showname="Good: False" size="2" value="9fed"/>
-          <field name="ip.checksum_bad" pos="24" show="0" showname="Bad: False" size="2" value="9fed"/>
-        </field>
-        <field name="ip.src" pos="26" show="192.168.12.17" showname="Source: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.addr" pos="26" show="192.168.12.17" showname="Source or Destination Address: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.src_host" pos="26" show="192.168.12.17" showname="Source Host: 192.168.12.17" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.host" pos="26" show="192.168.12.17" showname="Source or Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-        <field name="ip.dst" pos="30" show="192.168.12.213" showname="Destination: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.addr" pos="30" show="192.168.12.213" showname="Source or Destination Address: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.dst_host" pos="30" show="192.168.12.213" showname="Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.host" pos="30" show="192.168.12.213" showname="Source or Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-        <field name="" pos="26" show="Source GeoIP: Unknown" size="4" value="c0a80c11"/>
-        <field name="" pos="30" show="Destination GeoIP: Unknown" size="4" value="c0a80cd5"/>
-        <proto name="sctp" pos="34" showname="Stream Control Transmission Protocol, Src Port: s1-control (36412), Dst Port: s1-control (36412)" size="64">
-          <field name="sctp.srcport" pos="34" show="36412" showname="Source port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.dstport" pos="36" show="36412" showname="Destination port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.verification_tag" pos="38" show="0x54f837ab" showname="Verification tag: 0x54f837ab" size="4" value="54f837ab"/>
-          <field hide="yes" name="sctp.port" pos="34" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-          <field hide="yes" name="sctp.port" pos="36" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.checksum" pos="42" show="0x73ac7bca" showname="Checksum: 0x73ac7bca (not verified)" size="4" value="73ac7bca"/>
-          <field name="" pos="46" show="HEARTBEAT chunk (Information: 48 bytes)" size="52" value="040000340001003002008e3cc0a80cd5000000000000000000000000000000000000000060313300010000008db53fb930a0b65f">
-            <field name="sctp.chunk_type" pos="46" show="4" showname="Chunk type: HEARTBEAT (4)" size="1" value="04">
-              <field name="sctp.chunk_bit_1" pos="46" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="04" value="0"/>
-              <field name="sctp.chunk_bit_2" pos="46" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="04" value="0"/>
-            </field>
-            <field name="sctp.chunk_flags" pos="47" show="0x00" showname="Chunk flags: 0x00" size="1" value="00"/>
-            <field name="sctp.chunk_length" pos="48" show="52" showname="Chunk length: 52" size="2" value="0034"/>
-            <field name="" pos="50" show="Heartbeat info parameter (Information: 44 bytes)" size="48" value="0001003002008e3cc0a80cd5000000000000000000000000000000000000000060313300010000008db53fb930a0b65f">
-              <field name="sctp.parameter_type" pos="50" show="0x0001" showname="Parameter type: Heartbeat info (0x0001)" size="2" value="0001">
-                <field name="sctp.parameter_bit_1" pos="50" show="0" showname="0... .... .... .... = Bit: Stop processing of chunk" size="2" unmaskedvalue="0001" value="0"/>
-                <field name="sctp.parameter_bit_2" pos="50" show="0" showname=".0.. .... .... .... = Bit: Do not report" size="2" unmaskedvalue="0001" value="0"/>
-              </field>
-              <field name="sctp.parameter_length" pos="52" show="48" showname="Parameter length: 48" size="2" value="0030"/>
-              <field name="sctp.parameter_heartbeat_information" pos="54" show="02:00:8e:3c:c0:a8:0c:d5:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:60:31:33:00:01:00:00:00:8d:b5:3f:b9:30:a0:b6:5f" showname="Heartbeat information: 02008e3cc0a80cd500000000000000000000000000000000..." size="44" value="02008e3cc0a80cd5000000000000000000000000000000000000000060313300010000008db53fb930a0b65f"/>
-            </field>
-          </field>
-        </proto>
-      </proto>
-    </proto>
-  </packet>
-  <packet>
-    <proto name="frame" pos="0" showname="Frame 177: 98 bytes on wire (784 bits), 98 bytes captured (784 bits) on interface 0" size="98">
-      <field name="frame.interface_id" pos="0" show="0" showname="Interface id: 0" size="0"/>
-      <field name="frame.encap_type" pos="0" show="1" showname="Encapsulation type: Ethernet (1)" size="0"/>
-      <field name="frame.time" pos="0" show="Sep 25, 2015 16:35:24.530415000" showname="Arrival Time: Sep 25, 2015 16:35:24.530415000 CEST" size="0"/>
-      <field name="frame.offset_shift" pos="0" show="0.000000000" showname="Time shift for this packet: 0.000000000 seconds" size="0"/>
-      <field name="frame.time_epoch" pos="0" show="1443191724.530415000" showname="Epoch Time: 1443191724.530415000 seconds" size="0"/>
-      <field name="frame.time_delta" pos="0" show="0.000145000" showname="Time delta from previous captured frame: 0.000145000 seconds" size="0"/>
-      <field name="frame.time_delta_displayed" pos="0" show="0.000145000" showname="Time delta from previous displayed frame: 0.000145000 seconds" size="0"/>
-      <field name="frame.time_relative" pos="0" show="78.064784000" showname="Time since reference or first frame: 78.064784000 seconds" size="0"/>
-      <field name="frame.number" pos="0" show="177" showname="Frame Number: 177" size="0"/>
-      <field name="frame.len" pos="0" show="98" showname="Frame Length: 98 bytes (784 bits)" size="0"/>
-      <field name="frame.cap_len" pos="0" show="98" showname="Capture Length: 98 bytes (784 bits)" size="0"/>
-      <field name="frame.marked" pos="0" show="0" showname="Frame is marked: False" size="0"/>
-      <field name="frame.ignored" pos="0" show="0" showname="Frame is ignored: False" size="0"/>
-      <field name="frame.protocols" pos="0" show="eth:ip:sctp" showname="Protocols in frame: eth:ip:sctp" size="0"/>
-      <proto name="ip" pos="14" showname="Internet Protocol Version 4, Src: 192.168.12.213 (192.168.12.213), Dst: 192.168.12.17 (192.168.12.17)" size="20">
-        <field name="ip.version" pos="14" show="4" showname="Version: 4" size="1" value="45"/>
-        <field name="ip.hdr_len" pos="14" show="20" showname="Header length: 20 bytes" size="1" value="45"/>
-        <field name="ip.dsfield" pos="15" show="2" showname="Differentiated Services Field: 0x02 (DSCP 0x00: Default; ECN: 0x02: ECT(0) (ECN-Capable Transport))" size="1" value="02">
-          <field name="ip.dsfield.dscp" pos="15" show="0x00" showname="0000 00.. = Differentiated Services Codepoint: Default (0x00)" size="1" unmaskedvalue="02" value="0"/>
-          <field name="ip.dsfield.ecn" pos="15" show="0x02" showname=".... ..10 = Explicit Congestion Notification: ECT(0) (ECN-Capable Transport) (0x02)" size="1" unmaskedvalue="02" value="2"/>
-        </field>
-        <field name="ip.len" pos="16" show="84" showname="Total Length: 84" size="2" value="0054"/>
-        <field name="ip.id" pos="18" show="0x000c" showname="Identification: 0x000c (12)" size="2" value="000c"/>
-        <field name="ip.flags" pos="20" show="0x02" showname="Flags: 0x02 (Don't Fragment)" size="1" value="40">
-          <field name="ip.flags.rb" pos="20" show="0" showname="0... .... = Reserved bit: Not set" size="1" value="40"/>
-          <field name="ip.flags.df" pos="20" show="1" showname=".1.. .... = Don't fragment: Set" size="1" value="40"/>
-          <field name="ip.flags.mf" pos="20" show="0" showname="..0. .... = More fragments: Not set" size="1" value="40"/>
-        </field>
-        <field name="ip.frag_offset" pos="20" show="0" showname="Fragment offset: 0" size="2" value="4000"/>
-        <field name="ip.ttl" pos="22" show="64" showname="Time to live: 64" size="1" value="40"/>
-        <field name="ip.proto" pos="23" show="132" showname="Protocol: SCTP (132)" size="1" value="84"/>
-        <field name="ip.checksum" pos="24" show="0x9fe1" showname="Header checksum: 0x9fe1 [validation disabled]" size="2" value="9fe1">
-          <field name="ip.checksum_good" pos="24" show="0" showname="Good: False" size="2" value="9fe1"/>
-          <field name="ip.checksum_bad" pos="24" show="0" showname="Bad: False" size="2" value="9fe1"/>
-        </field>
-        <field name="ip.src" pos="26" show="192.168.12.213" showname="Source: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.addr" pos="26" show="192.168.12.213" showname="Source or Destination Address: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.src_host" pos="26" show="192.168.12.213" showname="Source Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.host" pos="26" show="192.168.12.213" showname="Source or Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-        <field name="ip.dst" pos="30" show="192.168.12.17" showname="Destination: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.addr" pos="30" show="192.168.12.17" showname="Source or Destination Address: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.dst_host" pos="30" show="192.168.12.17" showname="Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.host" pos="30" show="192.168.12.17" showname="Source or Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-        <field name="" pos="26" show="Source GeoIP: Unknown" size="4" value="c0a80cd5"/>
-        <field name="" pos="30" show="Destination GeoIP: Unknown" size="4" value="c0a80c11"/>
-        <proto name="sctp" pos="34" showname="Stream Control Transmission Protocol, Src Port: s1-control (36412), Dst Port: s1-control (36412)" size="64">
-          <field name="sctp.srcport" pos="34" show="36412" showname="Source port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.dstport" pos="36" show="36412" showname="Destination port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.verification_tag" pos="38" show="0x4cd1eca0" showname="Verification tag: 0x4cd1eca0" size="4" value="4cd1eca0"/>
-          <field hide="yes" name="sctp.port" pos="34" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-          <field hide="yes" name="sctp.port" pos="36" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.checksum" pos="42" show="0x417510b2" showname="Checksum: 0x417510b2 (not verified)" size="4" value="417510b2"/>
-          <field name="" pos="46" show="HEARTBEAT_ACK chunk (Information: 48 bytes)" size="52" value="050000340001003002008e3cc0a80cd5000000000000000000000000000000000000000060313300010000008db53fb930a0b65f">
-            <field name="sctp.chunk_type" pos="46" show="5" showname="Chunk type: HEARTBEAT_ACK (5)" size="1" value="05">
-              <field name="sctp.chunk_bit_1" pos="46" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="05" value="0"/>
-              <field name="sctp.chunk_bit_2" pos="46" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="05" value="0"/>
-            </field>
-            <field name="sctp.chunk_flags" pos="47" show="0x00" showname="Chunk flags: 0x00" size="1" value="00"/>
-            <field name="sctp.chunk_length" pos="48" show="52" showname="Chunk length: 52" size="2" value="0034"/>
-            <field name="" pos="50" show="Heartbeat info parameter (Information: 44 bytes)" size="48" value="0001003002008e3cc0a80cd5000000000000000000000000000000000000000060313300010000008db53fb930a0b65f">
-              <field name="sctp.parameter_type" pos="50" show="0x0001" showname="Parameter type: Heartbeat info (0x0001)" size="2" value="0001">
-                <field name="sctp.parameter_bit_1" pos="50" show="0" showname="0... .... .... .... = Bit: Stop processing of chunk" size="2" unmaskedvalue="0001" value="0"/>
-                <field name="sctp.parameter_bit_2" pos="50" show="0" showname=".0.. .... .... .... = Bit: Do not report" size="2" unmaskedvalue="0001" value="0"/>
-              </field>
-              <field name="sctp.parameter_length" pos="52" show="48" showname="Parameter length: 48" size="2" value="0030"/>
-              <field name="sctp.parameter_heartbeat_information" pos="54" show="02:00:8e:3c:c0:a8:0c:d5:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:60:31:33:00:01:00:00:00:8d:b5:3f:b9:30:a0:b6:5f" showname="Heartbeat information: 02008e3cc0a80cd500000000000000000000000000000000..." size="44" value="02008e3cc0a80cd5000000000000000000000000000000000000000060313300010000008db53fb930a0b65f"/>
-            </field>
-          </field>
-        </proto>
-      </proto>
-    </proto>
-  </packet>
-  <packet>
-    <proto name="frame" pos="0" showname="Frame 185: 98 bytes on wire (784 bits), 98 bytes captured (784 bits) on interface 0" size="98">
-      <field name="frame.interface_id" pos="0" show="0" showname="Interface id: 0" size="0"/>
-      <field name="frame.encap_type" pos="0" show="1" showname="Encapsulation type: Ethernet (1)" size="0"/>
-      <field name="frame.time" pos="0" show="Sep 25, 2015 16:35:25.005065000" showname="Arrival Time: Sep 25, 2015 16:35:25.005065000 CEST" size="0"/>
-      <field name="frame.offset_shift" pos="0" show="0.000000000" showname="Time shift for this packet: 0.000000000 seconds" size="0"/>
-      <field name="frame.time_epoch" pos="0" show="1443191725.005065000" showname="Epoch Time: 1443191725.005065000 seconds" size="0"/>
-      <field name="frame.time_delta" pos="0" show="0.087558000" showname="Time delta from previous captured frame: 0.087558000 seconds" size="0"/>
-      <field name="frame.time_delta_displayed" pos="0" show="0.087558000" showname="Time delta from previous displayed frame: 0.087558000 seconds" size="0"/>
-      <field name="frame.time_relative" pos="0" show="78.539434000" showname="Time since reference or first frame: 78.539434000 seconds" size="0"/>
-      <field name="frame.number" pos="0" show="185" showname="Frame Number: 185" size="0"/>
-      <field name="frame.len" pos="0" show="98" showname="Frame Length: 98 bytes (784 bits)" size="0"/>
-      <field name="frame.cap_len" pos="0" show="98" showname="Capture Length: 98 bytes (784 bits)" size="0"/>
-      <field name="frame.marked" pos="0" show="0" showname="Frame is marked: False" size="0"/>
-      <field name="frame.ignored" pos="0" show="0" showname="Frame is ignored: False" size="0"/>
-      <field name="frame.protocols" pos="0" show="eth:ip:sctp" showname="Protocols in frame: eth:ip:sctp" size="0"/>
-      <proto name="ip" pos="14" showname="Internet Protocol Version 4, Src: 192.168.12.213 (192.168.12.213), Dst: 192.168.12.17 (192.168.12.17)" size="20">
-        <field name="ip.version" pos="14" show="4" showname="Version: 4" size="1" value="45"/>
-        <field name="ip.hdr_len" pos="14" show="20" showname="Header length: 20 bytes" size="1" value="45"/>
-        <field name="ip.dsfield" pos="15" show="2" showname="Differentiated Services Field: 0x02 (DSCP 0x00: Default; ECN: 0x02: ECT(0) (ECN-Capable Transport))" size="1" value="02">
-          <field name="ip.dsfield.dscp" pos="15" show="0x00" showname="0000 00.. = Differentiated Services Codepoint: Default (0x00)" size="1" unmaskedvalue="02" value="0"/>
-          <field name="ip.dsfield.ecn" pos="15" show="0x02" showname=".... ..10 = Explicit Congestion Notification: ECT(0) (ECN-Capable Transport) (0x02)" size="1" unmaskedvalue="02" value="2"/>
-        </field>
-        <field name="ip.len" pos="16" show="84" showname="Total Length: 84" size="2" value="0054"/>
-        <field name="ip.id" pos="18" show="0x000d" showname="Identification: 0x000d (13)" size="2" value="000d"/>
-        <field name="ip.flags" pos="20" show="0x02" showname="Flags: 0x02 (Don't Fragment)" size="1" value="40">
-          <field name="ip.flags.rb" pos="20" show="0" showname="0... .... = Reserved bit: Not set" size="1" value="40"/>
-          <field name="ip.flags.df" pos="20" show="1" showname=".1.. .... = Don't fragment: Set" size="1" value="40"/>
-          <field name="ip.flags.mf" pos="20" show="0" showname="..0. .... = More fragments: Not set" size="1" value="40"/>
-        </field>
-        <field name="ip.frag_offset" pos="20" show="0" showname="Fragment offset: 0" size="2" value="4000"/>
-        <field name="ip.ttl" pos="22" show="64" showname="Time to live: 64" size="1" value="40"/>
-        <field name="ip.proto" pos="23" show="132" showname="Protocol: SCTP (132)" size="1" value="84"/>
-        <field name="ip.checksum" pos="24" show="0x9fe0" showname="Header checksum: 0x9fe0 [validation disabled]" size="2" value="9fe0">
-          <field name="ip.checksum_good" pos="24" show="0" showname="Good: False" size="2" value="9fe0"/>
-          <field name="ip.checksum_bad" pos="24" show="0" showname="Bad: False" size="2" value="9fe0"/>
-        </field>
-        <field name="ip.src" pos="26" show="192.168.12.213" showname="Source: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.addr" pos="26" show="192.168.12.213" showname="Source or Destination Address: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.src_host" pos="26" show="192.168.12.213" showname="Source Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.host" pos="26" show="192.168.12.213" showname="Source or Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-        <field name="ip.dst" pos="30" show="192.168.12.17" showname="Destination: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.addr" pos="30" show="192.168.12.17" showname="Source or Destination Address: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.dst_host" pos="30" show="192.168.12.17" showname="Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.host" pos="30" show="192.168.12.17" showname="Source or Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-        <field name="" pos="26" show="Source GeoIP: Unknown" size="4" value="c0a80cd5"/>
-        <field name="" pos="30" show="Destination GeoIP: Unknown" size="4" value="c0a80c11"/>
-        <proto name="sctp" pos="34" showname="Stream Control Transmission Protocol, Src Port: s1-control (36412), Dst Port: s1-control (36412)" size="64">
-          <field name="sctp.srcport" pos="34" show="36412" showname="Source port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.dstport" pos="36" show="36412" showname="Destination port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.verification_tag" pos="38" show="0x4cd1eca0" showname="Verification tag: 0x4cd1eca0" size="4" value="4cd1eca0"/>
-          <field hide="yes" name="sctp.port" pos="34" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-          <field hide="yes" name="sctp.port" pos="36" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.checksum" pos="42" show="0xac07ffbc" showname="Checksum: 0xac07ffbc (not verified)" size="4" value="ac07ffbc"/>
-          <field name="" pos="46" show="HEARTBEAT chunk (Information: 48 bytes)" size="52" value="040000340001003002008e3cc0a80c110000000000000000007459d10088ffff1e201d8180292314010000007730e920aa62f65b">
-            <field name="sctp.chunk_type" pos="46" show="4" showname="Chunk type: HEARTBEAT (4)" size="1" value="04">
-              <field name="sctp.chunk_bit_1" pos="46" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="04" value="0"/>
-              <field name="sctp.chunk_bit_2" pos="46" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="04" value="0"/>
-            </field>
-            <field name="sctp.chunk_flags" pos="47" show="0x00" showname="Chunk flags: 0x00" size="1" value="00"/>
-            <field name="sctp.chunk_length" pos="48" show="52" showname="Chunk length: 52" size="2" value="0034"/>
-            <field name="" pos="50" show="Heartbeat info parameter (Information: 44 bytes)" size="48" value="0001003002008e3cc0a80c110000000000000000007459d10088ffff1e201d8180292314010000007730e920aa62f65b">
-              <field name="sctp.parameter_type" pos="50" show="0x0001" showname="Parameter type: Heartbeat info (0x0001)" size="2" value="0001">
-                <field name="sctp.parameter_bit_1" pos="50" show="0" showname="0... .... .... .... = Bit: Stop processing of chunk" size="2" unmaskedvalue="0001" value="0"/>
-                <field name="sctp.parameter_bit_2" pos="50" show="0" showname=".0.. .... .... .... = Bit: Do not report" size="2" unmaskedvalue="0001" value="0"/>
-              </field>
-              <field name="sctp.parameter_length" pos="52" show="48" showname="Parameter length: 48" size="2" value="0030"/>
-              <field name="sctp.parameter_heartbeat_information" pos="54" show="02:00:8e:3c:c0:a8:0c:11:00:00:00:00:00:00:00:00:00:74:59:d1:00:88:ff:ff:1e:20:1d:81:80:29:23:14:01:00:00:00:77:30:e9:20:aa:62:f6:5b" showname="Heartbeat information: 02008e3cc0a80c110000000000000000007459d10088ffff..." size="44" value="02008e3cc0a80c110000000000000000007459d10088ffff1e201d8180292314010000007730e920aa62f65b"/>
-            </field>
-          </field>
-        </proto>
-      </proto>
-    </proto>
-  </packet>
-  <packet>
-    <proto name="frame" pos="0" showname="Frame 186: 98 bytes on wire (784 bits), 98 bytes captured (784 bits) on interface 0" size="98">
-      <field name="frame.interface_id" pos="0" show="0" showname="Interface id: 0" size="0"/>
-      <field name="frame.encap_type" pos="0" show="1" showname="Encapsulation type: Ethernet (1)" size="0"/>
-      <field name="frame.time" pos="0" show="Sep 25, 2015 16:35:25.005098000" showname="Arrival Time: Sep 25, 2015 16:35:25.005098000 CEST" size="0"/>
-      <field name="frame.offset_shift" pos="0" show="0.000000000" showname="Time shift for this packet: 0.000000000 seconds" size="0"/>
-      <field name="frame.time_epoch" pos="0" show="1443191725.005098000" showname="Epoch Time: 1443191725.005098000 seconds" size="0"/>
-      <field name="frame.time_delta" pos="0" show="0.000033000" showname="Time delta from previous captured frame: 0.000033000 seconds" size="0"/>
-      <field name="frame.time_delta_displayed" pos="0" show="0.000033000" showname="Time delta from previous displayed frame: 0.000033000 seconds" size="0"/>
-      <field name="frame.time_relative" pos="0" show="78.539467000" showname="Time since reference or first frame: 78.539467000 seconds" size="0"/>
-      <field name="frame.number" pos="0" show="186" showname="Frame Number: 186" size="0"/>
-      <field name="frame.len" pos="0" show="98" showname="Frame Length: 98 bytes (784 bits)" size="0"/>
-      <field name="frame.cap_len" pos="0" show="98" showname="Capture Length: 98 bytes (784 bits)" size="0"/>
-      <field name="frame.marked" pos="0" show="0" showname="Frame is marked: False" size="0"/>
-      <field name="frame.ignored" pos="0" show="0" showname="Frame is ignored: False" size="0"/>
-      <field name="frame.protocols" pos="0" show="eth:ip:sctp" showname="Protocols in frame: eth:ip:sctp" size="0"/>
-      <proto name="ip" pos="14" showname="Internet Protocol Version 4, Src: 192.168.12.17 (192.168.12.17), Dst: 192.168.12.213 (192.168.12.213)" size="20">
-        <field name="ip.version" pos="14" show="4" showname="Version: 4" size="1" value="45"/>
-        <field name="ip.hdr_len" pos="14" show="20" showname="Header length: 20 bytes" size="1" value="45"/>
-        <field name="ip.dsfield" pos="15" show="2" showname="Differentiated Services Field: 0x02 (DSCP 0x00: Default; ECN: 0x02: ECT(0) (ECN-Capable Transport))" size="1" value="02">
-          <field name="ip.dsfield.dscp" pos="15" show="0x00" showname="0000 00.. = Differentiated Services Codepoint: Default (0x00)" size="1" unmaskedvalue="02" value="0"/>
-          <field name="ip.dsfield.ecn" pos="15" show="0x02" showname=".... ..10 = Explicit Congestion Notification: ECT(0) (ECN-Capable Transport) (0x02)" size="1" unmaskedvalue="02" value="2"/>
-        </field>
-        <field name="ip.len" pos="16" show="84" showname="Total Length: 84" size="2" value="0054"/>
-        <field name="ip.id" pos="18" show="0x0000" showname="Identification: 0x0000 (0)" size="2" value="0000"/>
-        <field name="ip.flags" pos="20" show="0x02" showname="Flags: 0x02 (Don't Fragment)" size="1" value="40">
-          <field name="ip.flags.rb" pos="20" show="0" showname="0... .... = Reserved bit: Not set" size="1" value="40"/>
-          <field name="ip.flags.df" pos="20" show="1" showname=".1.. .... = Don't fragment: Set" size="1" value="40"/>
-          <field name="ip.flags.mf" pos="20" show="0" showname="..0. .... = More fragments: Not set" size="1" value="40"/>
-        </field>
-        <field name="ip.frag_offset" pos="20" show="0" showname="Fragment offset: 0" size="2" value="4000"/>
-        <field name="ip.ttl" pos="22" show="64" showname="Time to live: 64" size="1" value="40"/>
-        <field name="ip.proto" pos="23" show="132" showname="Protocol: SCTP (132)" size="1" value="84"/>
-        <field name="ip.checksum" pos="24" show="0x9fed" showname="Header checksum: 0x9fed [validation disabled]" size="2" value="9fed">
-          <field name="ip.checksum_good" pos="24" show="0" showname="Good: False" size="2" value="9fed"/>
-          <field name="ip.checksum_bad" pos="24" show="0" showname="Bad: False" size="2" value="9fed"/>
-        </field>
-        <field name="ip.src" pos="26" show="192.168.12.17" showname="Source: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.addr" pos="26" show="192.168.12.17" showname="Source or Destination Address: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.src_host" pos="26" show="192.168.12.17" showname="Source Host: 192.168.12.17" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.host" pos="26" show="192.168.12.17" showname="Source or Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-        <field name="ip.dst" pos="30" show="192.168.12.213" showname="Destination: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.addr" pos="30" show="192.168.12.213" showname="Source or Destination Address: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.dst_host" pos="30" show="192.168.12.213" showname="Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.host" pos="30" show="192.168.12.213" showname="Source or Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-        <field name="" pos="26" show="Source GeoIP: Unknown" size="4" value="c0a80c11"/>
-        <field name="" pos="30" show="Destination GeoIP: Unknown" size="4" value="c0a80cd5"/>
-        <proto name="sctp" pos="34" showname="Stream Control Transmission Protocol, Src Port: s1-control (36412), Dst Port: s1-control (36412)" size="64">
-          <field name="sctp.srcport" pos="34" show="36412" showname="Source port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.dstport" pos="36" show="36412" showname="Destination port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.verification_tag" pos="38" show="0x54f837ab" showname="Verification tag: 0x54f837ab" size="4" value="54f837ab"/>
-          <field hide="yes" name="sctp.port" pos="34" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-          <field hide="yes" name="sctp.port" pos="36" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.checksum" pos="42" show="0x9ede94c4" showname="Checksum: 0x9ede94c4 (not verified)" size="4" value="9ede94c4"/>
-          <field name="" pos="46" show="HEARTBEAT_ACK chunk (Information: 48 bytes)" size="52" value="050000340001003002008e3cc0a80c110000000000000000007459d10088ffff1e201d8180292314010000007730e920aa62f65b">
-            <field name="sctp.chunk_type" pos="46" show="5" showname="Chunk type: HEARTBEAT_ACK (5)" size="1" value="05">
-              <field name="sctp.chunk_bit_1" pos="46" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="05" value="0"/>
-              <field name="sctp.chunk_bit_2" pos="46" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="05" value="0"/>
-            </field>
-            <field name="sctp.chunk_flags" pos="47" show="0x00" showname="Chunk flags: 0x00" size="1" value="00"/>
-            <field name="sctp.chunk_length" pos="48" show="52" showname="Chunk length: 52" size="2" value="0034"/>
-            <field name="" pos="50" show="Heartbeat info parameter (Information: 44 bytes)" size="48" value="0001003002008e3cc0a80c110000000000000000007459d10088ffff1e201d8180292314010000007730e920aa62f65b">
-              <field name="sctp.parameter_type" pos="50" show="0x0001" showname="Parameter type: Heartbeat info (0x0001)" size="2" value="0001">
-                <field name="sctp.parameter_bit_1" pos="50" show="0" showname="0... .... .... .... = Bit: Stop processing of chunk" size="2" unmaskedvalue="0001" value="0"/>
-                <field name="sctp.parameter_bit_2" pos="50" show="0" showname=".0.. .... .... .... = Bit: Do not report" size="2" unmaskedvalue="0001" value="0"/>
-              </field>
-              <field name="sctp.parameter_length" pos="52" show="48" showname="Parameter length: 48" size="2" value="0030"/>
-              <field name="sctp.parameter_heartbeat_information" pos="54" show="02:00:8e:3c:c0:a8:0c:11:00:00:00:00:00:00:00:00:00:74:59:d1:00:88:ff:ff:1e:20:1d:81:80:29:23:14:01:00:00:00:77:30:e9:20:aa:62:f6:5b" showname="Heartbeat information: 02008e3cc0a80c110000000000000000007459d10088ffff..." size="44" value="02008e3cc0a80c110000000000000000007459d10088ffff1e201d8180292314010000007730e920aa62f65b"/>
-            </field>
-          </field>
-        </proto>
-      </proto>
-    </proto>
-  </packet>
-  <packet>
-    <proto name="frame" pos="0" showname="Frame 421: 98 bytes on wire (784 bits), 98 bytes captured (784 bits) on interface 0" size="98">
-      <field name="frame.interface_id" pos="0" show="0" showname="Interface id: 0" size="0"/>
-      <field name="frame.encap_type" pos="0" show="1" showname="Encapsulation type: Ethernet (1)" size="0"/>
-      <field name="frame.time" pos="0" show="Sep 25, 2015 16:35:55.122133000" showname="Arrival Time: Sep 25, 2015 16:35:55.122133000 CEST" size="0"/>
-      <field name="frame.offset_shift" pos="0" show="0.000000000" showname="Time shift for this packet: 0.000000000 seconds" size="0"/>
-      <field name="frame.time_epoch" pos="0" show="1443191755.122133000" showname="Epoch Time: 1443191755.122133000 seconds" size="0"/>
-      <field name="frame.time_delta" pos="0" show="0.163967000" showname="Time delta from previous captured frame: 0.163967000 seconds" size="0"/>
-      <field name="frame.time_delta_displayed" pos="0" show="0.163967000" showname="Time delta from previous displayed frame: 0.163967000 seconds" size="0"/>
-      <field name="frame.time_relative" pos="0" show="108.656502000" showname="Time since reference or first frame: 108.656502000 seconds" size="0"/>
-      <field name="frame.number" pos="0" show="421" showname="Frame Number: 421" size="0"/>
-      <field name="frame.len" pos="0" show="98" showname="Frame Length: 98 bytes (784 bits)" size="0"/>
-      <field name="frame.cap_len" pos="0" show="98" showname="Capture Length: 98 bytes (784 bits)" size="0"/>
-      <field name="frame.marked" pos="0" show="0" showname="Frame is marked: False" size="0"/>
-      <field name="frame.ignored" pos="0" show="0" showname="Frame is ignored: False" size="0"/>
-      <field name="frame.protocols" pos="0" show="eth:ip:sctp" showname="Protocols in frame: eth:ip:sctp" size="0"/>
-      <proto name="ip" pos="14" showname="Internet Protocol Version 4, Src: 192.168.12.17 (192.168.12.17), Dst: 192.168.12.213 (192.168.12.213)" size="20">
-        <field name="ip.version" pos="14" show="4" showname="Version: 4" size="1" value="45"/>
-        <field name="ip.hdr_len" pos="14" show="20" showname="Header length: 20 bytes" size="1" value="45"/>
-        <field name="ip.dsfield" pos="15" show="2" showname="Differentiated Services Field: 0x02 (DSCP 0x00: Default; ECN: 0x02: ECT(0) (ECN-Capable Transport))" size="1" value="02">
-          <field name="ip.dsfield.dscp" pos="15" show="0x00" showname="0000 00.. = Differentiated Services Codepoint: Default (0x00)" size="1" unmaskedvalue="02" value="0"/>
-          <field name="ip.dsfield.ecn" pos="15" show="0x02" showname=".... ..10 = Explicit Congestion Notification: ECT(0) (ECN-Capable Transport) (0x02)" size="1" unmaskedvalue="02" value="2"/>
-        </field>
-        <field name="ip.len" pos="16" show="84" showname="Total Length: 84" size="2" value="0054"/>
-        <field name="ip.id" pos="18" show="0x0000" showname="Identification: 0x0000 (0)" size="2" value="0000"/>
-        <field name="ip.flags" pos="20" show="0x02" showname="Flags: 0x02 (Don't Fragment)" size="1" value="40">
-          <field name="ip.flags.rb" pos="20" show="0" showname="0... .... = Reserved bit: Not set" size="1" value="40"/>
-          <field name="ip.flags.df" pos="20" show="1" showname=".1.. .... = Don't fragment: Set" size="1" value="40"/>
-          <field name="ip.flags.mf" pos="20" show="0" showname="..0. .... = More fragments: Not set" size="1" value="40"/>
-        </field>
-        <field name="ip.frag_offset" pos="20" show="0" showname="Fragment offset: 0" size="2" value="4000"/>
-        <field name="ip.ttl" pos="22" show="64" showname="Time to live: 64" size="1" value="40"/>
-        <field name="ip.proto" pos="23" show="132" showname="Protocol: SCTP (132)" size="1" value="84"/>
-        <field name="ip.checksum" pos="24" show="0x9fed" showname="Header checksum: 0x9fed [validation disabled]" size="2" value="9fed">
-          <field name="ip.checksum_good" pos="24" show="0" showname="Good: False" size="2" value="9fed"/>
-          <field name="ip.checksum_bad" pos="24" show="0" showname="Bad: False" size="2" value="9fed"/>
-        </field>
-        <field name="ip.src" pos="26" show="192.168.12.17" showname="Source: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.addr" pos="26" show="192.168.12.17" showname="Source or Destination Address: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.src_host" pos="26" show="192.168.12.17" showname="Source Host: 192.168.12.17" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.host" pos="26" show="192.168.12.17" showname="Source or Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-        <field name="ip.dst" pos="30" show="192.168.12.213" showname="Destination: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.addr" pos="30" show="192.168.12.213" showname="Source or Destination Address: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.dst_host" pos="30" show="192.168.12.213" showname="Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.host" pos="30" show="192.168.12.213" showname="Source or Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-        <field name="" pos="26" show="Source GeoIP: Unknown" size="4" value="c0a80c11"/>
-        <field name="" pos="30" show="Destination GeoIP: Unknown" size="4" value="c0a80cd5"/>
-        <proto name="sctp" pos="34" showname="Stream Control Transmission Protocol, Src Port: s1-control (36412), Dst Port: s1-control (36412)" size="64">
-          <field name="sctp.srcport" pos="34" show="36412" showname="Source port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.dstport" pos="36" show="36412" showname="Destination port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.verification_tag" pos="38" show="0x54f837ab" showname="Verification tag: 0x54f837ab" size="4" value="54f837ab"/>
-          <field hide="yes" name="sctp.port" pos="34" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-          <field hide="yes" name="sctp.port" pos="36" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.checksum" pos="42" show="0x9232c2ba" showname="Checksum: 0x9232c2ba (not verified)" size="4" value="9232c2ba"/>
-          <field name="" pos="46" show="HEARTBEAT chunk (Information: 48 bytes)" size="52" value="040000340001003002008e3cc0a80cd50000000000000000000000000000000000000000404f3300010000008db53fb930a0b65f">
-            <field name="sctp.chunk_type" pos="46" show="4" showname="Chunk type: HEARTBEAT (4)" size="1" value="04">
-              <field name="sctp.chunk_bit_1" pos="46" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="04" value="0"/>
-              <field name="sctp.chunk_bit_2" pos="46" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="04" value="0"/>
-            </field>
-            <field name="sctp.chunk_flags" pos="47" show="0x00" showname="Chunk flags: 0x00" size="1" value="00"/>
-            <field name="sctp.chunk_length" pos="48" show="52" showname="Chunk length: 52" size="2" value="0034"/>
-            <field name="" pos="50" show="Heartbeat info parameter (Information: 44 bytes)" size="48" value="0001003002008e3cc0a80cd50000000000000000000000000000000000000000404f3300010000008db53fb930a0b65f">
-              <field name="sctp.parameter_type" pos="50" show="0x0001" showname="Parameter type: Heartbeat info (0x0001)" size="2" value="0001">
-                <field name="sctp.parameter_bit_1" pos="50" show="0" showname="0... .... .... .... = Bit: Stop processing of chunk" size="2" unmaskedvalue="0001" value="0"/>
-                <field name="sctp.parameter_bit_2" pos="50" show="0" showname=".0.. .... .... .... = Bit: Do not report" size="2" unmaskedvalue="0001" value="0"/>
-              </field>
-              <field name="sctp.parameter_length" pos="52" show="48" showname="Parameter length: 48" size="2" value="0030"/>
-              <field name="sctp.parameter_heartbeat_information" pos="54" show="02:00:8e:3c:c0:a8:0c:d5:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:40:4f:33:00:01:00:00:00:8d:b5:3f:b9:30:a0:b6:5f" showname="Heartbeat information: 02008e3cc0a80cd500000000000000000000000000000000..." size="44" value="02008e3cc0a80cd50000000000000000000000000000000000000000404f3300010000008db53fb930a0b65f"/>
-            </field>
-          </field>
-        </proto>
-      </proto>
-    </proto>
-  </packet>
-  <packet>
-    <proto name="frame" pos="0" showname="Frame 422: 98 bytes on wire (784 bits), 98 bytes captured (784 bits) on interface 0" size="98">
-      <field name="frame.interface_id" pos="0" show="0" showname="Interface id: 0" size="0"/>
-      <field name="frame.encap_type" pos="0" show="1" showname="Encapsulation type: Ethernet (1)" size="0"/>
-      <field name="frame.time" pos="0" show="Sep 25, 2015 16:35:55.122270000" showname="Arrival Time: Sep 25, 2015 16:35:55.122270000 CEST" size="0"/>
-      <field name="frame.offset_shift" pos="0" show="0.000000000" showname="Time shift for this packet: 0.000000000 seconds" size="0"/>
-      <field name="frame.time_epoch" pos="0" show="1443191755.122270000" showname="Epoch Time: 1443191755.122270000 seconds" size="0"/>
-      <field name="frame.time_delta" pos="0" show="0.000137000" showname="Time delta from previous captured frame: 0.000137000 seconds" size="0"/>
-      <field name="frame.time_delta_displayed" pos="0" show="0.000137000" showname="Time delta from previous displayed frame: 0.000137000 seconds" size="0"/>
-      <field name="frame.time_relative" pos="0" show="108.656639000" showname="Time since reference or first frame: 108.656639000 seconds" size="0"/>
-      <field name="frame.number" pos="0" show="422" showname="Frame Number: 422" size="0"/>
-      <field name="frame.len" pos="0" show="98" showname="Frame Length: 98 bytes (784 bits)" size="0"/>
-      <field name="frame.cap_len" pos="0" show="98" showname="Capture Length: 98 bytes (784 bits)" size="0"/>
-      <field name="frame.marked" pos="0" show="0" showname="Frame is marked: False" size="0"/>
-      <field name="frame.ignored" pos="0" show="0" showname="Frame is ignored: False" size="0"/>
-      <field name="frame.protocols" pos="0" show="eth:ip:sctp" showname="Protocols in frame: eth:ip:sctp" size="0"/>
-      <proto name="ip" pos="14" showname="Internet Protocol Version 4, Src: 192.168.12.213 (192.168.12.213), Dst: 192.168.12.17 (192.168.12.17)" size="20">
-        <field name="ip.version" pos="14" show="4" showname="Version: 4" size="1" value="45"/>
-        <field name="ip.hdr_len" pos="14" show="20" showname="Header length: 20 bytes" size="1" value="45"/>
-        <field name="ip.dsfield" pos="15" show="2" showname="Differentiated Services Field: 0x02 (DSCP 0x00: Default; ECN: 0x02: ECT(0) (ECN-Capable Transport))" size="1" value="02">
-          <field name="ip.dsfield.dscp" pos="15" show="0x00" showname="0000 00.. = Differentiated Services Codepoint: Default (0x00)" size="1" unmaskedvalue="02" value="0"/>
-          <field name="ip.dsfield.ecn" pos="15" show="0x02" showname=".... ..10 = Explicit Congestion Notification: ECT(0) (ECN-Capable Transport) (0x02)" size="1" unmaskedvalue="02" value="2"/>
-        </field>
-        <field name="ip.len" pos="16" show="84" showname="Total Length: 84" size="2" value="0054"/>
-        <field name="ip.id" pos="18" show="0x000e" showname="Identification: 0x000e (14)" size="2" value="000e"/>
-        <field name="ip.flags" pos="20" show="0x02" showname="Flags: 0x02 (Don't Fragment)" size="1" value="40">
-          <field name="ip.flags.rb" pos="20" show="0" showname="0... .... = Reserved bit: Not set" size="1" value="40"/>
-          <field name="ip.flags.df" pos="20" show="1" showname=".1.. .... = Don't fragment: Set" size="1" value="40"/>
-          <field name="ip.flags.mf" pos="20" show="0" showname="..0. .... = More fragments: Not set" size="1" value="40"/>
-        </field>
-        <field name="ip.frag_offset" pos="20" show="0" showname="Fragment offset: 0" size="2" value="4000"/>
-        <field name="ip.ttl" pos="22" show="64" showname="Time to live: 64" size="1" value="40"/>
-        <field name="ip.proto" pos="23" show="132" showname="Protocol: SCTP (132)" size="1" value="84"/>
-        <field name="ip.checksum" pos="24" show="0x9fdf" showname="Header checksum: 0x9fdf [validation disabled]" size="2" value="9fdf">
-          <field name="ip.checksum_good" pos="24" show="0" showname="Good: False" size="2" value="9fdf"/>
-          <field name="ip.checksum_bad" pos="24" show="0" showname="Bad: False" size="2" value="9fdf"/>
-        </field>
-        <field name="ip.src" pos="26" show="192.168.12.213" showname="Source: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.addr" pos="26" show="192.168.12.213" showname="Source or Destination Address: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.src_host" pos="26" show="192.168.12.213" showname="Source Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.host" pos="26" show="192.168.12.213" showname="Source or Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-        <field name="ip.dst" pos="30" show="192.168.12.17" showname="Destination: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.addr" pos="30" show="192.168.12.17" showname="Source or Destination Address: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.dst_host" pos="30" show="192.168.12.17" showname="Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.host" pos="30" show="192.168.12.17" showname="Source or Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-        <field name="" pos="26" show="Source GeoIP: Unknown" size="4" value="c0a80cd5"/>
-        <field name="" pos="30" show="Destination GeoIP: Unknown" size="4" value="c0a80c11"/>
-        <proto name="sctp" pos="34" showname="Stream Control Transmission Protocol, Src Port: s1-control (36412), Dst Port: s1-control (36412)" size="64">
-          <field name="sctp.srcport" pos="34" show="36412" showname="Source port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.dstport" pos="36" show="36412" showname="Destination port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.verification_tag" pos="38" show="0x4cd1eca0" showname="Verification tag: 0x4cd1eca0" size="4" value="4cd1eca0"/>
-          <field hide="yes" name="sctp.port" pos="34" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-          <field hide="yes" name="sctp.port" pos="36" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.checksum" pos="42" show="0xa0eba9c2" showname="Checksum: 0xa0eba9c2 (not verified)" size="4" value="a0eba9c2"/>
-          <field name="" pos="46" show="HEARTBEAT_ACK chunk (Information: 48 bytes)" size="52" value="050000340001003002008e3cc0a80cd50000000000000000000000000000000000000000404f3300010000008db53fb930a0b65f">
-            <field name="sctp.chunk_type" pos="46" show="5" showname="Chunk type: HEARTBEAT_ACK (5)" size="1" value="05">
-              <field name="sctp.chunk_bit_1" pos="46" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="05" value="0"/>
-              <field name="sctp.chunk_bit_2" pos="46" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="05" value="0"/>
-            </field>
-            <field name="sctp.chunk_flags" pos="47" show="0x00" showname="Chunk flags: 0x00" size="1" value="00"/>
-            <field name="sctp.chunk_length" pos="48" show="52" showname="Chunk length: 52" size="2" value="0034"/>
-            <field name="" pos="50" show="Heartbeat info parameter (Information: 44 bytes)" size="48" value="0001003002008e3cc0a80cd50000000000000000000000000000000000000000404f3300010000008db53fb930a0b65f">
-              <field name="sctp.parameter_type" pos="50" show="0x0001" showname="Parameter type: Heartbeat info (0x0001)" size="2" value="0001">
-                <field name="sctp.parameter_bit_1" pos="50" show="0" showname="0... .... .... .... = Bit: Stop processing of chunk" size="2" unmaskedvalue="0001" value="0"/>
-                <field name="sctp.parameter_bit_2" pos="50" show="0" showname=".0.. .... .... .... = Bit: Do not report" size="2" unmaskedvalue="0001" value="0"/>
-              </field>
-              <field name="sctp.parameter_length" pos="52" show="48" showname="Parameter length: 48" size="2" value="0030"/>
-              <field name="sctp.parameter_heartbeat_information" pos="54" show="02:00:8e:3c:c0:a8:0c:d5:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:40:4f:33:00:01:00:00:00:8d:b5:3f:b9:30:a0:b6:5f" showname="Heartbeat information: 02008e3cc0a80cd500000000000000000000000000000000..." size="44" value="02008e3cc0a80cd50000000000000000000000000000000000000000404f3300010000008db53fb930a0b65f"/>
-            </field>
-          </field>
-        </proto>
-      </proto>
-    </proto>
-  </packet>
-  <packet>
-    <proto name="frame" pos="0" showname="Frame 426: 98 bytes on wire (784 bits), 98 bytes captured (784 bits) on interface 0" size="98">
-      <field name="frame.interface_id" pos="0" show="0" showname="Interface id: 0" size="0"/>
-      <field name="frame.encap_type" pos="0" show="1" showname="Encapsulation type: Ethernet (1)" size="0"/>
-      <field name="frame.time" pos="0" show="Sep 25, 2015 16:35:56.493553000" showname="Arrival Time: Sep 25, 2015 16:35:56.493553000 CEST" size="0"/>
-      <field name="frame.offset_shift" pos="0" show="0.000000000" showname="Time shift for this packet: 0.000000000 seconds" size="0"/>
-      <field name="frame.time_epoch" pos="0" show="1443191756.493553000" showname="Epoch Time: 1443191756.493553000 seconds" size="0"/>
-      <field name="frame.time_delta" pos="0" show="0.655441000" showname="Time delta from previous captured frame: 0.655441000 seconds" size="0"/>
-      <field name="frame.time_delta_displayed" pos="0" show="0.655441000" showname="Time delta from previous displayed frame: 0.655441000 seconds" size="0"/>
-      <field name="frame.time_relative" pos="0" show="110.027922000" showname="Time since reference or first frame: 110.027922000 seconds" size="0"/>
-      <field name="frame.number" pos="0" show="426" showname="Frame Number: 426" size="0"/>
-      <field name="frame.len" pos="0" show="98" showname="Frame Length: 98 bytes (784 bits)" size="0"/>
-      <field name="frame.cap_len" pos="0" show="98" showname="Capture Length: 98 bytes (784 bits)" size="0"/>
-      <field name="frame.marked" pos="0" show="0" showname="Frame is marked: False" size="0"/>
-      <field name="frame.ignored" pos="0" show="0" showname="Frame is ignored: False" size="0"/>
-      <field name="frame.protocols" pos="0" show="eth:ip:sctp" showname="Protocols in frame: eth:ip:sctp" size="0"/>
-      <proto name="ip" pos="14" showname="Internet Protocol Version 4, Src: 192.168.12.213 (192.168.12.213), Dst: 192.168.12.17 (192.168.12.17)" size="20">
-        <field name="ip.version" pos="14" show="4" showname="Version: 4" size="1" value="45"/>
-        <field name="ip.hdr_len" pos="14" show="20" showname="Header length: 20 bytes" size="1" value="45"/>
-        <field name="ip.dsfield" pos="15" show="2" showname="Differentiated Services Field: 0x02 (DSCP 0x00: Default; ECN: 0x02: ECT(0) (ECN-Capable Transport))" size="1" value="02">
-          <field name="ip.dsfield.dscp" pos="15" show="0x00" showname="0000 00.. = Differentiated Services Codepoint: Default (0x00)" size="1" unmaskedvalue="02" value="0"/>
-          <field name="ip.dsfield.ecn" pos="15" show="0x02" showname=".... ..10 = Explicit Congestion Notification: ECT(0) (ECN-Capable Transport) (0x02)" size="1" unmaskedvalue="02" value="2"/>
-        </field>
-        <field name="ip.len" pos="16" show="84" showname="Total Length: 84" size="2" value="0054"/>
-        <field name="ip.id" pos="18" show="0x000f" showname="Identification: 0x000f (15)" size="2" value="000f"/>
-        <field name="ip.flags" pos="20" show="0x02" showname="Flags: 0x02 (Don't Fragment)" size="1" value="40">
-          <field name="ip.flags.rb" pos="20" show="0" showname="0... .... = Reserved bit: Not set" size="1" value="40"/>
-          <field name="ip.flags.df" pos="20" show="1" showname=".1.. .... = Don't fragment: Set" size="1" value="40"/>
-          <field name="ip.flags.mf" pos="20" show="0" showname="..0. .... = More fragments: Not set" size="1" value="40"/>
-        </field>
-        <field name="ip.frag_offset" pos="20" show="0" showname="Fragment offset: 0" size="2" value="4000"/>
-        <field name="ip.ttl" pos="22" show="64" showname="Time to live: 64" size="1" value="40"/>
-        <field name="ip.proto" pos="23" show="132" showname="Protocol: SCTP (132)" size="1" value="84"/>
-        <field name="ip.checksum" pos="24" show="0x9fde" showname="Header checksum: 0x9fde [validation disabled]" size="2" value="9fde">
-          <field name="ip.checksum_good" pos="24" show="0" showname="Good: False" size="2" value="9fde"/>
-          <field name="ip.checksum_bad" pos="24" show="0" showname="Bad: False" size="2" value="9fde"/>
-        </field>
-        <field name="ip.src" pos="26" show="192.168.12.213" showname="Source: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.addr" pos="26" show="192.168.12.213" showname="Source or Destination Address: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.src_host" pos="26" show="192.168.12.213" showname="Source Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.host" pos="26" show="192.168.12.213" showname="Source or Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-        <field name="ip.dst" pos="30" show="192.168.12.17" showname="Destination: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.addr" pos="30" show="192.168.12.17" showname="Source or Destination Address: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.dst_host" pos="30" show="192.168.12.17" showname="Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.host" pos="30" show="192.168.12.17" showname="Source or Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-        <field name="" pos="26" show="Source GeoIP: Unknown" size="4" value="c0a80cd5"/>
-        <field name="" pos="30" show="Destination GeoIP: Unknown" size="4" value="c0a80c11"/>
-        <proto name="sctp" pos="34" showname="Stream Control Transmission Protocol, Src Port: s1-control (36412), Dst Port: s1-control (36412)" size="64">
-          <field name="sctp.srcport" pos="34" show="36412" showname="Source port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.dstport" pos="36" show="36412" showname="Destination port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.verification_tag" pos="38" show="0x4cd1eca0" showname="Verification tag: 0x4cd1eca0" size="4" value="4cd1eca0"/>
-          <field hide="yes" name="sctp.port" pos="34" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-          <field hide="yes" name="sctp.port" pos="36" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.checksum" pos="42" show="0xe0a1e658" showname="Checksum: 0xe0a1e658 (not verified)" size="4" value="e0a1e658"/>
-          <field name="" pos="46" show="HEARTBEAT chunk (Information: 48 bytes)" size="52" value="040000340001003002008e3cc0a80c110000000000000000007459d10088ffff1e201d8180a42314010000007730e920aa62f65b">
-            <field name="sctp.chunk_type" pos="46" show="4" showname="Chunk type: HEARTBEAT (4)" size="1" value="04">
-              <field name="sctp.chunk_bit_1" pos="46" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="04" value="0"/>
-              <field name="sctp.chunk_bit_2" pos="46" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="04" value="0"/>
-            </field>
-            <field name="sctp.chunk_flags" pos="47" show="0x00" showname="Chunk flags: 0x00" size="1" value="00"/>
-            <field name="sctp.chunk_length" pos="48" show="52" showname="Chunk length: 52" size="2" value="0034"/>
-            <field name="" pos="50" show="Heartbeat info parameter (Information: 44 bytes)" size="48" value="0001003002008e3cc0a80c110000000000000000007459d10088ffff1e201d8180a42314010000007730e920aa62f65b">
-              <field name="sctp.parameter_type" pos="50" show="0x0001" showname="Parameter type: Heartbeat info (0x0001)" size="2" value="0001">
-                <field name="sctp.parameter_bit_1" pos="50" show="0" showname="0... .... .... .... = Bit: Stop processing of chunk" size="2" unmaskedvalue="0001" value="0"/>
-                <field name="sctp.parameter_bit_2" pos="50" show="0" showname=".0.. .... .... .... = Bit: Do not report" size="2" unmaskedvalue="0001" value="0"/>
-              </field>
-              <field name="sctp.parameter_length" pos="52" show="48" showname="Parameter length: 48" size="2" value="0030"/>
-              <field name="sctp.parameter_heartbeat_information" pos="54" show="02:00:8e:3c:c0:a8:0c:11:00:00:00:00:00:00:00:00:00:74:59:d1:00:88:ff:ff:1e:20:1d:81:80:a4:23:14:01:00:00:00:77:30:e9:20:aa:62:f6:5b" showname="Heartbeat information: 02008e3cc0a80c110000000000000000007459d10088ffff..." size="44" value="02008e3cc0a80c110000000000000000007459d10088ffff1e201d8180a42314010000007730e920aa62f65b"/>
-            </field>
-          </field>
-        </proto>
-      </proto>
-    </proto>
-  </packet>
-  <packet>
-    <proto name="frame" pos="0" showname="Frame 427: 98 bytes on wire (784 bits), 98 bytes captured (784 bits) on interface 0" size="98">
-      <field name="frame.interface_id" pos="0" show="0" showname="Interface id: 0" size="0"/>
-      <field name="frame.encap_type" pos="0" show="1" showname="Encapsulation type: Ethernet (1)" size="0"/>
-      <field name="frame.time" pos="0" show="Sep 25, 2015 16:35:56.493586000" showname="Arrival Time: Sep 25, 2015 16:35:56.493586000 CEST" size="0"/>
-      <field name="frame.offset_shift" pos="0" show="0.000000000" showname="Time shift for this packet: 0.000000000 seconds" size="0"/>
-      <field name="frame.time_epoch" pos="0" show="1443191756.493586000" showname="Epoch Time: 1443191756.493586000 seconds" size="0"/>
-      <field name="frame.time_delta" pos="0" show="0.000033000" showname="Time delta from previous captured frame: 0.000033000 seconds" size="0"/>
-      <field name="frame.time_delta_displayed" pos="0" show="0.000033000" showname="Time delta from previous displayed frame: 0.000033000 seconds" size="0"/>
-      <field name="frame.time_relative" pos="0" show="110.027955000" showname="Time since reference or first frame: 110.027955000 seconds" size="0"/>
-      <field name="frame.number" pos="0" show="427" showname="Frame Number: 427" size="0"/>
-      <field name="frame.len" pos="0" show="98" showname="Frame Length: 98 bytes (784 bits)" size="0"/>
-      <field name="frame.cap_len" pos="0" show="98" showname="Capture Length: 98 bytes (784 bits)" size="0"/>
-      <field name="frame.marked" pos="0" show="0" showname="Frame is marked: False" size="0"/>
-      <field name="frame.ignored" pos="0" show="0" showname="Frame is ignored: False" size="0"/>
-      <field name="frame.protocols" pos="0" show="eth:ip:sctp" showname="Protocols in frame: eth:ip:sctp" size="0"/>
-      <proto name="ip" pos="14" showname="Internet Protocol Version 4, Src: 192.168.12.17 (192.168.12.17), Dst: 192.168.12.213 (192.168.12.213)" size="20">
-        <field name="ip.version" pos="14" show="4" showname="Version: 4" size="1" value="45"/>
-        <field name="ip.hdr_len" pos="14" show="20" showname="Header length: 20 bytes" size="1" value="45"/>
-        <field name="ip.dsfield" pos="15" show="2" showname="Differentiated Services Field: 0x02 (DSCP 0x00: Default; ECN: 0x02: ECT(0) (ECN-Capable Transport))" size="1" value="02">
-          <field name="ip.dsfield.dscp" pos="15" show="0x00" showname="0000 00.. = Differentiated Services Codepoint: Default (0x00)" size="1" unmaskedvalue="02" value="0"/>
-          <field name="ip.dsfield.ecn" pos="15" show="0x02" showname=".... ..10 = Explicit Congestion Notification: ECT(0) (ECN-Capable Transport) (0x02)" size="1" unmaskedvalue="02" value="2"/>
-        </field>
-        <field name="ip.len" pos="16" show="84" showname="Total Length: 84" size="2" value="0054"/>
-        <field name="ip.id" pos="18" show="0x0000" showname="Identification: 0x0000 (0)" size="2" value="0000"/>
-        <field name="ip.flags" pos="20" show="0x02" showname="Flags: 0x02 (Don't Fragment)" size="1" value="40">
-          <field name="ip.flags.rb" pos="20" show="0" showname="0... .... = Reserved bit: Not set" size="1" value="40"/>
-          <field name="ip.flags.df" pos="20" show="1" showname=".1.. .... = Don't fragment: Set" size="1" value="40"/>
-          <field name="ip.flags.mf" pos="20" show="0" showname="..0. .... = More fragments: Not set" size="1" value="40"/>
-        </field>
-        <field name="ip.frag_offset" pos="20" show="0" showname="Fragment offset: 0" size="2" value="4000"/>
-        <field name="ip.ttl" pos="22" show="64" showname="Time to live: 64" size="1" value="40"/>
-        <field name="ip.proto" pos="23" show="132" showname="Protocol: SCTP (132)" size="1" value="84"/>
-        <field name="ip.checksum" pos="24" show="0x9fed" showname="Header checksum: 0x9fed [validation disabled]" size="2" value="9fed">
-          <field name="ip.checksum_good" pos="24" show="0" showname="Good: False" size="2" value="9fed"/>
-          <field name="ip.checksum_bad" pos="24" show="0" showname="Bad: False" size="2" value="9fed"/>
-        </field>
-        <field name="ip.src" pos="26" show="192.168.12.17" showname="Source: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.addr" pos="26" show="192.168.12.17" showname="Source or Destination Address: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.src_host" pos="26" show="192.168.12.17" showname="Source Host: 192.168.12.17" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.host" pos="26" show="192.168.12.17" showname="Source or Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-        <field name="ip.dst" pos="30" show="192.168.12.213" showname="Destination: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.addr" pos="30" show="192.168.12.213" showname="Source or Destination Address: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.dst_host" pos="30" show="192.168.12.213" showname="Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.host" pos="30" show="192.168.12.213" showname="Source or Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-        <field name="" pos="26" show="Source GeoIP: Unknown" size="4" value="c0a80c11"/>
-        <field name="" pos="30" show="Destination GeoIP: Unknown" size="4" value="c0a80cd5"/>
-        <proto name="sctp" pos="34" showname="Stream Control Transmission Protocol, Src Port: s1-control (36412), Dst Port: s1-control (36412)" size="64">
-          <field name="sctp.srcport" pos="34" show="36412" showname="Source port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.dstport" pos="36" show="36412" showname="Destination port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.verification_tag" pos="38" show="0x54f837ab" showname="Verification tag: 0x54f837ab" size="4" value="54f837ab"/>
-          <field hide="yes" name="sctp.port" pos="34" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-          <field hide="yes" name="sctp.port" pos="36" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.checksum" pos="42" show="0xd2788d20" showname="Checksum: 0xd2788d20 (not verified)" size="4" value="d2788d20"/>
-          <field name="" pos="46" show="HEARTBEAT_ACK chunk (Information: 48 bytes)" size="52" value="050000340001003002008e3cc0a80c110000000000000000007459d10088ffff1e201d8180a42314010000007730e920aa62f65b">
-            <field name="sctp.chunk_type" pos="46" show="5" showname="Chunk type: HEARTBEAT_ACK (5)" size="1" value="05">
-              <field name="sctp.chunk_bit_1" pos="46" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="05" value="0"/>
-              <field name="sctp.chunk_bit_2" pos="46" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="05" value="0"/>
-            </field>
-            <field name="sctp.chunk_flags" pos="47" show="0x00" showname="Chunk flags: 0x00" size="1" value="00"/>
-            <field name="sctp.chunk_length" pos="48" show="52" showname="Chunk length: 52" size="2" value="0034"/>
-            <field name="" pos="50" show="Heartbeat info parameter (Information: 44 bytes)" size="48" value="0001003002008e3cc0a80c110000000000000000007459d10088ffff1e201d8180a42314010000007730e920aa62f65b">
-              <field name="sctp.parameter_type" pos="50" show="0x0001" showname="Parameter type: Heartbeat info (0x0001)" size="2" value="0001">
-                <field name="sctp.parameter_bit_1" pos="50" show="0" showname="0... .... .... .... = Bit: Stop processing of chunk" size="2" unmaskedvalue="0001" value="0"/>
-                <field name="sctp.parameter_bit_2" pos="50" show="0" showname=".0.. .... .... .... = Bit: Do not report" size="2" unmaskedvalue="0001" value="0"/>
-              </field>
-              <field name="sctp.parameter_length" pos="52" show="48" showname="Parameter length: 48" size="2" value="0030"/>
-              <field name="sctp.parameter_heartbeat_information" pos="54" show="02:00:8e:3c:c0:a8:0c:11:00:00:00:00:00:00:00:00:00:74:59:d1:00:88:ff:ff:1e:20:1d:81:80:a4:23:14:01:00:00:00:77:30:e9:20:aa:62:f6:5b" showname="Heartbeat information: 02008e3cc0a80c110000000000000000007459d10088ffff..." size="44" value="02008e3cc0a80c110000000000000000007459d10088ffff1e201d8180a42314010000007730e920aa62f65b"/>
-            </field>
-          </field>
-        </proto>
-      </proto>
-    </proto>
-  </packet>
-  <packet>
-    <proto name="frame" pos="0" showname="Frame 491: 54 bytes on wire (432 bits), 54 bytes captured (432 bits) on interface 0" size="54">
-      <field name="frame.interface_id" pos="0" show="0" showname="Interface id: 0" size="0"/>
-      <field name="frame.encap_type" pos="0" show="1" showname="Encapsulation type: Ethernet (1)" size="0"/>
-      <field name="frame.time" pos="0" show="Sep 25, 2015 16:36:14.355024000" showname="Arrival Time: Sep 25, 2015 16:36:14.355024000 CEST" size="0"/>
-      <field name="frame.offset_shift" pos="0" show="0.000000000" showname="Time shift for this packet: 0.000000000 seconds" size="0"/>
-      <field name="frame.time_epoch" pos="0" show="1443191774.355024000" showname="Epoch Time: 1443191774.355024000 seconds" size="0"/>
-      <field name="frame.time_delta" pos="0" show="0.484347000" showname="Time delta from previous captured frame: 0.484347000 seconds" size="0"/>
-      <field name="frame.time_delta_displayed" pos="0" show="0.484347000" showname="Time delta from previous displayed frame: 0.484347000 seconds" size="0"/>
-      <field name="frame.time_relative" pos="0" show="127.889393000" showname="Time since reference or first frame: 127.889393000 seconds" size="0"/>
-      <field name="frame.number" pos="0" show="491" showname="Frame Number: 491" size="0"/>
-      <field name="frame.len" pos="0" show="54" showname="Frame Length: 54 bytes (432 bits)" size="0"/>
-      <field name="frame.cap_len" pos="0" show="54" showname="Capture Length: 54 bytes (432 bits)" size="0"/>
-      <field name="frame.marked" pos="0" show="0" showname="Frame is marked: False" size="0"/>
-      <field name="frame.ignored" pos="0" show="0" showname="Frame is ignored: False" size="0"/>
-      <field name="frame.protocols" pos="0" show="eth:ip:sctp" showname="Protocols in frame: eth:ip:sctp" size="0"/>
-      <proto name="ip" pos="14" showname="Internet Protocol Version 4, Src: 192.168.12.17 (192.168.12.17), Dst: 192.168.12.213 (192.168.12.213)" size="20">
-        <field name="ip.version" pos="14" show="4" showname="Version: 4" size="1" value="45"/>
-        <field name="ip.hdr_len" pos="14" show="20" showname="Header length: 20 bytes" size="1" value="45"/>
-        <field name="ip.dsfield" pos="15" show="2" showname="Differentiated Services Field: 0x02 (DSCP 0x00: Default; ECN: 0x02: ECT(0) (ECN-Capable Transport))" size="1" value="02">
-          <field name="ip.dsfield.dscp" pos="15" show="0x00" showname="0000 00.. = Differentiated Services Codepoint: Default (0x00)" size="1" unmaskedvalue="02" value="0"/>
-          <field name="ip.dsfield.ecn" pos="15" show="0x02" showname=".... ..10 = Explicit Congestion Notification: ECT(0) (ECN-Capable Transport) (0x02)" size="1" unmaskedvalue="02" value="2"/>
-        </field>
-        <field name="ip.len" pos="16" show="40" showname="Total Length: 40" size="2" value="0028"/>
-        <field name="ip.id" pos="18" show="0x0000" showname="Identification: 0x0000 (0)" size="2" value="0000"/>
-        <field name="ip.flags" pos="20" show="0x02" showname="Flags: 0x02 (Don't Fragment)" size="1" value="40">
-          <field name="ip.flags.rb" pos="20" show="0" showname="0... .... = Reserved bit: Not set" size="1" value="40"/>
-          <field name="ip.flags.df" pos="20" show="1" showname=".1.. .... = Don't fragment: Set" size="1" value="40"/>
-          <field name="ip.flags.mf" pos="20" show="0" showname="..0. .... = More fragments: Not set" size="1" value="40"/>
-        </field>
-        <field name="ip.frag_offset" pos="20" show="0" showname="Fragment offset: 0" size="2" value="4000"/>
-        <field name="ip.ttl" pos="22" show="64" showname="Time to live: 64" size="1" value="40"/>
-        <field name="ip.proto" pos="23" show="132" showname="Protocol: SCTP (132)" size="1" value="84"/>
-        <field name="ip.checksum" pos="24" show="0xa019" showname="Header checksum: 0xa019 [validation disabled]" size="2" value="a019">
-          <field name="ip.checksum_good" pos="24" show="0" showname="Good: False" size="2" value="a019"/>
-          <field name="ip.checksum_bad" pos="24" show="0" showname="Bad: False" size="2" value="a019"/>
-        </field>
-        <field name="ip.src" pos="26" show="192.168.12.17" showname="Source: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.addr" pos="26" show="192.168.12.17" showname="Source or Destination Address: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.src_host" pos="26" show="192.168.12.17" showname="Source Host: 192.168.12.17" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.host" pos="26" show="192.168.12.17" showname="Source or Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-        <field name="ip.dst" pos="30" show="192.168.12.213" showname="Destination: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.addr" pos="30" show="192.168.12.213" showname="Source or Destination Address: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.dst_host" pos="30" show="192.168.12.213" showname="Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.host" pos="30" show="192.168.12.213" showname="Source or Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-        <field name="" pos="26" show="Source GeoIP: Unknown" size="4" value="c0a80c11"/>
-        <field name="" pos="30" show="Destination GeoIP: Unknown" size="4" value="c0a80cd5"/>
-        <proto name="sctp" pos="34" showname="Stream Control Transmission Protocol, Src Port: s1-control (36412), Dst Port: s1-control (36412)" size="20">
-          <field name="sctp.srcport" pos="34" show="36412" showname="Source port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.dstport" pos="36" show="36412" showname="Destination port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.verification_tag" pos="38" show="0x54f837ab" showname="Verification tag: 0x54f837ab" size="4" value="54f837ab"/>
-          <field hide="yes" name="sctp.port" pos="34" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-          <field hide="yes" name="sctp.port" pos="36" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.checksum" pos="42" show="0xd469a110" showname="Checksum: 0xd469a110 (not verified)" size="4" value="d469a110"/>
-          <field name="" pos="46" show="SHUTDOWN chunk (Cumulative TSN ack: 3304831198)" size="8" value="07000008c4fbb8de">
-            <field name="sctp.chunk_type" pos="46" show="7" showname="Chunk type: SHUTDOWN (7)" size="1" value="07">
-              <field name="sctp.chunk_bit_1" pos="46" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="07" value="0"/>
-              <field name="sctp.chunk_bit_2" pos="46" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="07" value="0"/>
-            </field>
-            <field name="sctp.chunk_flags" pos="47" show="0x00" showname="Chunk flags: 0x00" size="1" value="00"/>
-            <field name="sctp.chunk_length" pos="48" show="8" showname="Chunk length: 8" size="2" value="0008"/>
-            <field name="sctp.shutdown_cumulative_tsn_ack" pos="50" show="3304831198" showname="Cumulative TSN Ack: 3304831198" size="4" value="c4fbb8de"/>
-          </field>
-        </proto>
-      </proto>
-    </proto>
-  </packet>
-  <packet>
-    <proto name="frame" pos="0" showname="Frame 492: 60 bytes on wire (480 bits), 60 bytes captured (480 bits) on interface 0" size="60">
-      <field name="frame.interface_id" pos="0" show="0" showname="Interface id: 0" size="0"/>
-      <field name="frame.encap_type" pos="0" show="1" showname="Encapsulation type: Ethernet (1)" size="0"/>
-      <field name="frame.time" pos="0" show="Sep 25, 2015 16:36:14.355162000" showname="Arrival Time: Sep 25, 2015 16:36:14.355162000 CEST" size="0"/>
-      <field name="frame.offset_shift" pos="0" show="0.000000000" showname="Time shift for this packet: 0.000000000 seconds" size="0"/>
-      <field name="frame.time_epoch" pos="0" show="1443191774.355162000" showname="Epoch Time: 1443191774.355162000 seconds" size="0"/>
-      <field name="frame.time_delta" pos="0" show="0.000138000" showname="Time delta from previous captured frame: 0.000138000 seconds" size="0"/>
-      <field name="frame.time_delta_displayed" pos="0" show="0.000138000" showname="Time delta from previous displayed frame: 0.000138000 seconds" size="0"/>
-      <field name="frame.time_relative" pos="0" show="127.889531000" showname="Time since reference or first frame: 127.889531000 seconds" size="0"/>
-      <field name="frame.number" pos="0" show="492" showname="Frame Number: 492" size="0"/>
-      <field name="frame.len" pos="0" show="60" showname="Frame Length: 60 bytes (480 bits)" size="0"/>
-      <field name="frame.cap_len" pos="0" show="60" showname="Capture Length: 60 bytes (480 bits)" size="0"/>
-      <field name="frame.marked" pos="0" show="0" showname="Frame is marked: False" size="0"/>
-      <field name="frame.ignored" pos="0" show="0" showname="Frame is ignored: False" size="0"/>
-      <field name="frame.protocols" pos="0" show="eth:ip:sctp" showname="Protocols in frame: eth:ip:sctp" size="0"/>
-      <proto name="ip" pos="14" showname="Internet Protocol Version 4, Src: 192.168.12.213 (192.168.12.213), Dst: 192.168.12.17 (192.168.12.17)" size="20">
-        <field name="ip.version" pos="14" show="4" showname="Version: 4" size="1" value="45"/>
-        <field name="ip.hdr_len" pos="14" show="20" showname="Header length: 20 bytes" size="1" value="45"/>
-        <field name="ip.dsfield" pos="15" show="2" showname="Differentiated Services Field: 0x02 (DSCP 0x00: Default; ECN: 0x02: ECT(0) (ECN-Capable Transport))" size="1" value="02">
-          <field name="ip.dsfield.dscp" pos="15" show="0x00" showname="0000 00.. = Differentiated Services Codepoint: Default (0x00)" size="1" unmaskedvalue="02" value="0"/>
-          <field name="ip.dsfield.ecn" pos="15" show="0x02" showname=".... ..10 = Explicit Congestion Notification: ECT(0) (ECN-Capable Transport) (0x02)" size="1" unmaskedvalue="02" value="2"/>
-        </field>
-        <field name="ip.len" pos="16" show="36" showname="Total Length: 36" size="2" value="0024"/>
-        <field name="ip.id" pos="18" show="0x0010" showname="Identification: 0x0010 (16)" size="2" value="0010"/>
-        <field name="ip.flags" pos="20" show="0x02" showname="Flags: 0x02 (Don't Fragment)" size="1" value="40">
-          <field name="ip.flags.rb" pos="20" show="0" showname="0... .... = Reserved bit: Not set" size="1" value="40"/>
-          <field name="ip.flags.df" pos="20" show="1" showname=".1.. .... = Don't fragment: Set" size="1" value="40"/>
-          <field name="ip.flags.mf" pos="20" show="0" showname="..0. .... = More fragments: Not set" size="1" value="40"/>
-        </field>
-        <field name="ip.frag_offset" pos="20" show="0" showname="Fragment offset: 0" size="2" value="4000"/>
-        <field name="ip.ttl" pos="22" show="64" showname="Time to live: 64" size="1" value="40"/>
-        <field name="ip.proto" pos="23" show="132" showname="Protocol: SCTP (132)" size="1" value="84"/>
-        <field name="ip.checksum" pos="24" show="0xa00d" showname="Header checksum: 0xa00d [validation disabled]" size="2" value="a00d">
-          <field name="ip.checksum_good" pos="24" show="0" showname="Good: False" size="2" value="a00d"/>
-          <field name="ip.checksum_bad" pos="24" show="0" showname="Bad: False" size="2" value="a00d"/>
-        </field>
-        <field name="ip.src" pos="26" show="192.168.12.213" showname="Source: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.addr" pos="26" show="192.168.12.213" showname="Source or Destination Address: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.src_host" pos="26" show="192.168.12.213" showname="Source Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.host" pos="26" show="192.168.12.213" showname="Source or Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-        <field name="ip.dst" pos="30" show="192.168.12.17" showname="Destination: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.addr" pos="30" show="192.168.12.17" showname="Source or Destination Address: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.dst_host" pos="30" show="192.168.12.17" showname="Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.host" pos="30" show="192.168.12.17" showname="Source or Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-        <field name="" pos="26" show="Source GeoIP: Unknown" size="4" value="c0a80cd5"/>
-        <field name="" pos="30" show="Destination GeoIP: Unknown" size="4" value="c0a80c11"/>
-        <proto name="sctp" pos="34" showname="Stream Control Transmission Protocol, Src Port: s1-control (36412), Dst Port: s1-control (36412)" size="16">
-          <field name="sctp.srcport" pos="34" show="36412" showname="Source port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.dstport" pos="36" show="36412" showname="Destination port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.verification_tag" pos="38" show="0x4cd1eca0" showname="Verification tag: 0x4cd1eca0" size="4" value="4cd1eca0"/>
-          <field hide="yes" name="sctp.port" pos="34" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-          <field hide="yes" name="sctp.port" pos="36" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.checksum" pos="42" show="0xe21454e0" showname="Checksum: 0xe21454e0 (not verified)" size="4" value="e21454e0"/>
-          <field name="" pos="46" show="SHUTDOWN_ACK chunk" size="4" value="08000004">
-            <field name="sctp.chunk_type" pos="46" show="8" showname="Chunk type: SHUTDOWN_ACK (8)" size="1" value="08">
-              <field name="sctp.chunk_bit_1" pos="46" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="08" value="0"/>
-              <field name="sctp.chunk_bit_2" pos="46" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="08" value="0"/>
-            </field>
-            <field name="sctp.chunk_flags" pos="47" show="0x00" showname="Chunk flags: 0x00" size="1" value="00"/>
-            <field name="sctp.chunk_length" pos="48" show="4" showname="Chunk length: 4" size="2" value="0004"/>
-          </field>
-        </proto>
-      </proto>
-    </proto>
-  </packet>
-  <packet>
-    <proto name="frame" pos="0" showname="Frame 493: 50 bytes on wire (400 bits), 50 bytes captured (400 bits) on interface 0" size="50">
-      <field name="frame.interface_id" pos="0" show="0" showname="Interface id: 0" size="0"/>
-      <field name="frame.encap_type" pos="0" show="1" showname="Encapsulation type: Ethernet (1)" size="0"/>
-      <field name="frame.time" pos="0" show="Sep 25, 2015 16:36:14.355191000" showname="Arrival Time: Sep 25, 2015 16:36:14.355191000 CEST" size="0"/>
-      <field name="frame.offset_shift" pos="0" show="0.000000000" showname="Time shift for this packet: 0.000000000 seconds" size="0"/>
-      <field name="frame.time_epoch" pos="0" show="1443191774.355191000" showname="Epoch Time: 1443191774.355191000 seconds" size="0"/>
-      <field name="frame.time_delta" pos="0" show="0.000029000" showname="Time delta from previous captured frame: 0.000029000 seconds" size="0"/>
-      <field name="frame.time_delta_displayed" pos="0" show="0.000029000" showname="Time delta from previous displayed frame: 0.000029000 seconds" size="0"/>
-      <field name="frame.time_relative" pos="0" show="127.889560000" showname="Time since reference or first frame: 127.889560000 seconds" size="0"/>
-      <field name="frame.number" pos="0" show="493" showname="Frame Number: 493" size="0"/>
-      <field name="frame.len" pos="0" show="50" showname="Frame Length: 50 bytes (400 bits)" size="0"/>
-      <field name="frame.cap_len" pos="0" show="50" showname="Capture Length: 50 bytes (400 bits)" size="0"/>
-      <field name="frame.marked" pos="0" show="0" showname="Frame is marked: False" size="0"/>
-      <field name="frame.ignored" pos="0" show="0" showname="Frame is ignored: False" size="0"/>
-      <field name="frame.protocols" pos="0" show="eth:ip:sctp" showname="Protocols in frame: eth:ip:sctp" size="0"/>
-      <proto name="ip" pos="14" showname="Internet Protocol Version 4, Src: 192.168.12.17 (192.168.12.17), Dst: 192.168.12.213 (192.168.12.213)" size="20">
-        <field name="ip.version" pos="14" show="4" showname="Version: 4" size="1" value="45"/>
-        <field name="ip.hdr_len" pos="14" show="20" showname="Header length: 20 bytes" size="1" value="45"/>
-        <field name="ip.dsfield" pos="15" show="2" showname="Differentiated Services Field: 0x02 (DSCP 0x00: Default; ECN: 0x02: ECT(0) (ECN-Capable Transport))" size="1" value="02">
-          <field name="ip.dsfield.dscp" pos="15" show="0x00" showname="0000 00.. = Differentiated Services Codepoint: Default (0x00)" size="1" unmaskedvalue="02" value="0"/>
-          <field name="ip.dsfield.ecn" pos="15" show="0x02" showname=".... ..10 = Explicit Congestion Notification: ECT(0) (ECN-Capable Transport) (0x02)" size="1" unmaskedvalue="02" value="2"/>
-        </field>
-        <field name="ip.len" pos="16" show="36" showname="Total Length: 36" size="2" value="0024"/>
-        <field name="ip.id" pos="18" show="0x0000" showname="Identification: 0x0000 (0)" size="2" value="0000"/>
-        <field name="ip.flags" pos="20" show="0x02" showname="Flags: 0x02 (Don't Fragment)" size="1" value="40">
-          <field name="ip.flags.rb" pos="20" show="0" showname="0... .... = Reserved bit: Not set" size="1" value="40"/>
-          <field name="ip.flags.df" pos="20" show="1" showname=".1.. .... = Don't fragment: Set" size="1" value="40"/>
-          <field name="ip.flags.mf" pos="20" show="0" showname="..0. .... = More fragments: Not set" size="1" value="40"/>
-        </field>
-        <field name="ip.frag_offset" pos="20" show="0" showname="Fragment offset: 0" size="2" value="4000"/>
-        <field name="ip.ttl" pos="22" show="64" showname="Time to live: 64" size="1" value="40"/>
-        <field name="ip.proto" pos="23" show="132" showname="Protocol: SCTP (132)" size="1" value="84"/>
-        <field name="ip.checksum" pos="24" show="0xa01d" showname="Header checksum: 0xa01d [validation disabled]" size="2" value="a01d">
-          <field name="ip.checksum_good" pos="24" show="0" showname="Good: False" size="2" value="a01d"/>
-          <field name="ip.checksum_bad" pos="24" show="0" showname="Bad: False" size="2" value="a01d"/>
-        </field>
-        <field name="ip.src" pos="26" show="192.168.12.17" showname="Source: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.addr" pos="26" show="192.168.12.17" showname="Source or Destination Address: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.src_host" pos="26" show="192.168.12.17" showname="Source Host: 192.168.12.17" size="4" value="c0a80c11"/>
-        <field hide="yes" name="ip.host" pos="26" show="192.168.12.17" showname="Source or Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-        <field name="ip.dst" pos="30" show="192.168.12.213" showname="Destination: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.addr" pos="30" show="192.168.12.213" showname="Source or Destination Address: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.dst_host" pos="30" show="192.168.12.213" showname="Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-        <field hide="yes" name="ip.host" pos="30" show="192.168.12.213" showname="Source or Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-        <field name="" pos="26" show="Source GeoIP: Unknown" size="4" value="c0a80c11"/>
-        <field name="" pos="30" show="Destination GeoIP: Unknown" size="4" value="c0a80cd5"/>
-        <proto name="sctp" pos="34" showname="Stream Control Transmission Protocol, Src Port: s1-control (36412), Dst Port: s1-control (36412)" size="16">
-          <field name="sctp.srcport" pos="34" show="36412" showname="Source port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.dstport" pos="36" show="36412" showname="Destination port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.verification_tag" pos="38" show="0x54f837ab" showname="Verification tag: 0x54f837ab" size="4" value="54f837ab"/>
-          <field hide="yes" name="sctp.port" pos="34" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-          <field hide="yes" name="sctp.port" pos="36" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-          <field name="sctp.checksum" pos="42" show="0x29068146" showname="Checksum: 0x29068146 (not verified)" size="4" value="29068146"/>
-          <field name="" pos="46" show="SHUTDOWN_COMPLETE chunk" size="4" value="0e000004">
-            <field name="sctp.chunk_type" pos="46" show="14" showname="Chunk type: SHUTDOWN_COMPLETE (14)" size="1" value="0e">
-              <field name="sctp.chunk_bit_1" pos="46" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="0e" value="0"/>
-              <field name="sctp.chunk_bit_2" pos="46" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="0e" value="0"/>
-            </field>
-            <field name="sctp.chunk_flags" pos="47" show="0x00" showname="Chunk flags: 0x00" size="1" value="00">
-              <field name="sctp.shutdown_complete_t_bit" pos="47" show="0" showname=".... ...0 = T-Bit: Tag not reflected" size="1" unmaskedvalue="00" value="0"/>
-            </field>
-            <field name="sctp.chunk_length" pos="48" show="4" showname="Chunk length: 4" size="2" value="0004"/>
-          </field>
-        </proto>
-      </proto>
-    </proto>
-  </packet>
-</pdml>
diff --git a/openair3/TEST/EPC_TEST/TEST_1MME_1ENB_1UE_ATTACH_GUTI/enb.band7.tm1.usrpb210.epc.local.conf b/openair3/TEST/EPC_TEST/TEST_1MME_1ENB_1UE_ATTACH_GUTI/enb.band7.tm1.usrpb210.epc.local.conf
deleted file mode 100644
index ad6c81f56b4ce972f78f31b0bd0f7e8a52701f6e..0000000000000000000000000000000000000000
--- a/openair3/TEST/EPC_TEST/TEST_1MME_1ENB_1UE_ATTACH_GUTI/enb.band7.tm1.usrpb210.epc.local.conf
+++ /dev/null
@@ -1,162 +0,0 @@
-Active_eNBs = ( "eNB_Eurecom_LTEBox");
-# Asn1_verbosity, choice in: none, info, annoying
-Asn1_verbosity = "none";
-
-eNBs =
-(
- {
-    ////////// Identification parameters:
-    eNB_ID    =  0xe00;
-
-    cell_type =  "CELL_MACRO_ENB";
-
-    eNB_name  =  "eNB_Eurecom_LTEBox";
-
-    // Tracking area code, 0x0000 and 0xfffe are reserved values
-    tracking_area_code = 1;
-    plmn_list = ( { mcc = 208; mnc = 95; mnc_length = 2; } );
-
-       ////////// Physical parameters:
-
-    component_carriers = (
-      {
-        frame_type					          = "FDD";
-        tdd_config 					          = 3;
-        tdd_config_s            			      = 0;
-        prefix_type             			      = "NORMAL";
-        eutra_band              			      = 7;
-        downlink_frequency      			      = 2660000000L;
-        uplink_frequency_offset 			      = -120000000;
-        Nid_cell					              = 0;
-        N_RB_DL                 			      = 25;
-        Nid_cell_mbsfn          			      = 0;
-        nb_antennas_tx          			      = 1;
-        nb_antennas_rx          			      = 1;
-        tx_gain                                = 90;
-        rx_gain                                = 120;
-        prach_root              			      = 0;
-        prach_config_index      			      = 0;
-        prach_high_speed        			      = "DISABLE";
-        prach_zero_correlation  			      = 1;
-        prach_freq_offset       			      = 2;
-        pucch_delta_shift       			      = 1;
-        pucch_nRB_CQI           			      = 1;
-        pucch_nCS_AN            			      = 0;
-        pucch_n1_AN             			      = 0;
-        pdsch_referenceSignalPower             = -26;
-        pdsch_p_b                              = 0;
-        pusch_n_SB                             = 1;
-        pusch_enable64QAM                      = "DISABLE";
-        pusch_hoppingMode                      = "interSubFrame";
-        pusch_hoppingOffset                    = 0;
-        pusch_groupHoppingEnabled              = "ENABLE";
-        pusch_groupAssignment      			  = 0;
-        pusch_sequenceHoppingEnabled		   	  = "DISABLE";
-        pusch_nDMRS1                           = 1;
-        phich_duration                         = "NORMAL";
-        phich_resource                         = "ONESIXTH";
-        srs_enable                                         = "DISABLE";
-        /*  srs_BandwidthConfig                                =;
-        srs_SubframeConfig                                 =;
-        srs_ackNackST                                      =;
-        srs_MaxUpPts                                       =;*/
-
-        pusch_p0_Nominal                                   = -90;
-        pusch_alpha                                        = "AL1";
-        pucch_p0_Nominal                                   = -108;
-        msg3_delta_Preamble                                = 6;
-        pucch_deltaF_Format1                               = "deltaF2";
-        pucch_deltaF_Format1b                              = "deltaF3";
-        pucch_deltaF_Format2                               = "deltaF0";
-        pucch_deltaF_Format2a                              = "deltaF0";
-        pucch_deltaF_Format2b		    	      = "deltaF0";
-
-        rach_numberOfRA_Preambles                          = 64;
-        rach_preamblesGroupAConfig                         = "DISABLE";
-        /*
-        rach_sizeOfRA_PreamblesGroupA                      = ;
-        rach_messageSizeGroupA                             = ;
-        rach_messagePowerOffsetGroupB                      = ;
-        */
-        rach_powerRampingStep                              = 4;
-        rach_preambleInitialReceivedTargetPower            = -108;
-        rach_preambleTransMax                              = 10;
-        rach_raResponseWindowSize                          = 10;
-        rach_macContentionResolutionTimer                  = 48;
-        rach_maxHARQ_Msg3Tx                                = 4;
-
-        pcch_default_PagingCycle                           = 128;
-        pcch_nB                                            = "oneT";
-        bcch_modificationPeriodCoeff			      = 2;
-        ue_TimersAndConstants_t300			      = 1000;
-        ue_TimersAndConstants_t301			      = 1000;
-        ue_TimersAndConstants_t310			      = 1000;
-        ue_TimersAndConstants_t311			      = 10000;
-        ue_TimersAndConstants_n310			      = 20;
-        ue_TimersAndConstants_n311			      = 1;
-      }
-    );
-
-    srb1_parameters :
-    {
-        # timer_poll_retransmit = (ms) [5, 10, 15, 20,... 250, 300, 350, ... 500]
-        timer_poll_retransmit    = 80;
-
-        # timer_reordering = (ms) [0,5, ... 100, 110, 120, ... ,200]
-        timer_reordering         = 35;
-
-        # timer_reordering = (ms) [0,5, ... 250, 300, 350, ... ,500]
-        timer_status_prohibit    = 0;
-
-        # poll_pdu = [4, 8, 16, 32 , 64, 128, 256, infinity(>10000)]
-        poll_pdu                 =  4;
-
-        # poll_byte = (kB) [25,50,75,100,125,250,375,500,750,1000,1250,1500,2000,3000,infinity(>10000)]
-        poll_byte                =  99999;
-
-        # max_retx_threshold = [1, 2, 3, 4 , 6, 8, 16, 32]
-        max_retx_threshold       =  4;
-    }
-
-    # ------- SCTP definitions
-    SCTP :
-    {
-        # Number of streams to use in input/output
-        SCTP_INSTREAMS  = 2;
-        SCTP_OUTSTREAMS = 2;
-    };
-
-
-    ////////// MME parameters:
-    mme_ip_address      = ( { ipv4       = "192.188.2.2";
-                              ipv6       = "192:168:30::17";
-                              active     = "yes";
-                              preference = "ipv4";
-                            }
-                          );
-
-    NETWORK_INTERFACES :
-    {
-        ENB_INTERFACE_NAME_FOR_S1_MME            = "tun2";
-        ENB_IPV4_ADDRESS_FOR_S1_MME              = "192.188.2.2/24";
-
-        ENB_INTERFACE_NAME_FOR_S1U               = "lo";
-        ENB_IPV4_ADDRESS_FOR_S1U                 = "127.0.0.1/24";
-        ENB_PORT_FOR_S1U                         = 2153; # Spec 2152
-    };
-
-    log_config :
-    {
-      global_log_level                      ="info";
-      hw_log_level                          ="info";
-      phy_log_level                         ="info";
-      mac_log_level                         ="info";
-      rlc_log_level                         ="info";
-      pdcp_log_level                        ="info";
-      rrc_log_level                         ="info";
-      gtpu_log_level                        ="info";
-      udp_log_level                         ="info";
-   };
-
-  }
-);
diff --git a/openair3/TEST/EPC_TEST/TEST_1MME_1ENB_1UE_ATTACH_GUTI/enb1.conf b/openair3/TEST/EPC_TEST/TEST_1MME_1ENB_1UE_ATTACH_GUTI/enb1.conf
deleted file mode 100644
index 9ffed9c5fec0acf3224dbe38b7616bc0abfda54a..0000000000000000000000000000000000000000
--- a/openair3/TEST/EPC_TEST/TEST_1MME_1ENB_1UE_ATTACH_GUTI/enb1.conf
+++ /dev/null
@@ -1,159 +0,0 @@
-Active_eNBs = ( "eNB_Eurecom_LTEBox");
-# Asn1_verbosity, choice in: none, info, annoying
-Asn1_verbosity = "none";
-
-eNBs =
-(
- {
-    ////////// Identification parameters:
-    eNB_ID    =  0xe00;
-
-    cell_type =  "CELL_MACRO_ENB";
-
-    eNB_name  =  "eNB_Eurecom_LTEBox";
-
-    // Tracking area code, 0x0000 and 0xfffe are reserved values
-    tracking_area_code = 1;
-    plmn_list = ( { mcc = 208; mnc = 95; mnc_length = 2; } );
-
-       ////////// Physical parameters:
-
-    component_carriers = (
-      {
-        frame_type					      = "FDD";
-        tdd_config 					      = 3;
-        tdd_config_s            			      = 0;
-        prefix_type             			      = "NORMAL";
-        eutra_band              			      = 7;
-        downlink_frequency      			      = 2660000000L;
-        uplink_frequency_offset 			      = -120000000;
-        Nid_cell					      = 0;
-        N_RB_DL                 			      = 25;
-        Nid_cell_mbsfn          			      = 0;
-        nb_antennas_tx          			      = 1;
-        nb_antennas_rx          			      = 1;
-        tx_gain                                            = 90;
-        rx_gain                                            = 120;
-        prach_root              			      = 0;
-        prach_config_index      			      = 0;
-        prach_high_speed        			      = "DISABLE";
-        prach_zero_correlation  			      = 1;
-        prach_freq_offset       			      = 2;
-        pucch_delta_shift       			      = 1;
-        pucch_nRB_CQI           			      = 1;
-        pucch_nCS_AN            			      = 0;
-        pucch_n1_AN             			      = 0;
-        pdsch_referenceSignalPower 			      = -26;
-        pdsch_p_b                  			      = 0;
-        pusch_n_SB                 			      = 1;
-        pusch_enable64QAM          			      = "DISABLE";
-        pusch_hoppingMode                                  = "interSubFrame";
-        pusch_hoppingOffset                                = 0;
-        pusch_groupHoppingEnabled  			      = "ENABLE";
-        pusch_groupAssignment      			      = 0;
-        pusch_sequenceHoppingEnabled		   	      = "DISABLE";
-        pusch_nDMRS1                                       = 1;
-        phich_duration                                     = "NORMAL";
-        phich_resource                                     = "ONESIXTH";
-        srs_enable                                         = "DISABLE";
-      /*  srs_BandwidthConfig                                =;
-        srs_SubframeConfig                                 =;
-        srs_ackNackST                                      =;
-        srs_MaxUpPts                                       =;*/
-
-        pusch_p0_Nominal                                   = -90;
-        pusch_alpha                                        = "AL1";
-        pucch_p0_Nominal                                   = -108;
-        msg3_delta_Preamble                                = 6;
-        pucch_deltaF_Format1                               = "deltaF2";
-        pucch_deltaF_Format1b                              = "deltaF3";
-        pucch_deltaF_Format2                               = "deltaF0";
-        pucch_deltaF_Format2a                              = "deltaF0";
-        pucch_deltaF_Format2b		    	      = "deltaF0";
-
-        rach_numberOfRA_Preambles                          = 64;
-        rach_preamblesGroupAConfig                         = "DISABLE";
-      /*
-        rach_sizeOfRA_PreamblesGroupA                      = ;
-        rach_messageSizeGroupA                             = ;
-        rach_messagePowerOffsetGroupB                      = ;
-      */
-        rach_powerRampingStep                              = 4;
-        rach_preambleInitialReceivedTargetPower            = -108;
-        rach_preambleTransMax                              = 10;
-        rach_raResponseWindowSize                          = 10;
-        rach_macContentionResolutionTimer                  = 48;
-        rach_maxHARQ_Msg3Tx                                = 4;
-
-        pcch_default_PagingCycle                           = 128;
-        pcch_nB                                            = "oneT";
-        bcch_modificationPeriodCoeff			      = 2;
-        ue_TimersAndConstants_t300			      = 1000;
-        ue_TimersAndConstants_t301			      = 1000;
-        ue_TimersAndConstants_t310			      = 1000;
-        ue_TimersAndConstants_t311			      = 10000;
-        ue_TimersAndConstants_n310			      = 20;
-        ue_TimersAndConstants_n311			      = 1;
-      }
-    );
-
-
-    srb1_parameters :
-    {
-        # timer_poll_retransmit = (ms) [5, 10, 15, 20,... 250, 300, 350, ... 500]
-        timer_poll_retransmit    = 80;
-
-        # timer_reordering = (ms) [0,5, ... 100, 110, 120, ... ,200]
-        timer_reordering         = 35;
-
-        # timer_reordering = (ms) [0,5, ... 250, 300, 350, ... ,500]
-        timer_status_prohibit    = 0;
-
-        # poll_pdu = [4, 8, 16, 32 , 64, 128, 256, infinity(>10000)]
-        poll_pdu                 =  4;
-
-        # poll_byte = (kB) [25,50,75,100,125,250,375,500,750,1000,1250,1500,2000,3000,infinity(>10000)]
-        poll_byte                =  99999;
-
-        # max_retx_threshold = [1, 2, 3, 4 , 6, 8, 16, 32]
-        max_retx_threshold       =  4;
-    }
-
-    # ------- SCTP definitions
-    SCTP :
-    {
-        # Number of streams to use in input/output
-        SCTP_INSTREAMS  = 2;
-        SCTP_OUTSTREAMS = 2;
-    };
-
-    ////////// MME parameters:
-    mme_ip_address      = ( { ipv4       = "192.168.12.17";
-                              ipv6       = "192:168:30::17";
-                              active     = "yes";
-                              preference = "ipv4";
-                            }
-                          );
-
-    NETWORK_INTERFACES :
-    {
-        ENB_INTERFACE_NAME_FOR_S1_MME            = "eth0";
-        ENB_IPV4_ADDRESS_FOR_S1_MME              = "192.168.12.213/24";
-
-        ENB_INTERFACE_NAME_FOR_S1U               = "eth0";
-        ENB_IPV4_ADDRESS_FOR_S1U                 = "192.168.12.213/24";
-        ENB_PORT_FOR_S1U                         = 2152; # Spec 2152
-    };
-
-    log_config :
-    {
-      global_log_level                      ="debug";
-      hw_log_level                          ="info";
-      phy_log_level                         ="info";
-      rlc_log_level                         ="info";
-      pdcp_log_level                        ="info";
-      rrc_log_level                         ="info";
-   };
-
-  }
-);
diff --git a/openair3/TEST/EPC_TEST/TEST_1MME_1ENB_1UE_ATTACH_GUTI/trace.pdml b/openair3/TEST/EPC_TEST/TEST_1MME_1ENB_1UE_ATTACH_GUTI/trace.pdml
deleted file mode 100644
index d2d2598de67d48d8aec88dc023b133c9a14dc969..0000000000000000000000000000000000000000
--- a/openair3/TEST/EPC_TEST/TEST_1MME_1ENB_1UE_ATTACH_GUTI/trace.pdml
+++ /dev/null
@@ -1,4411 +0,0 @@
-<?xml version="1.0" ?><?xml-stylesheet type="text/xsl" href="pdml2html.xsl"?><!-- You can find pdml2html.xsl in /usr/share/wireshark or at http://anonsvn.wireshark.org/trunk/wireshark/pdml2html.xsl. --><pdml capture_file="attach_complete.pcapng" creator="wireshark/1.12.1" time="Wed Sep 30 15:24:03 2015" version="0">
-<packet>
-  
-  <proto name="frame" pos="0" showname="Frame 9: 82 bytes on wire (656 bits), 82 bytes captured (656 bits) on interface 0" size="82">
-    <field name="frame.interface_id" pos="0" show="0" showname="Interface id: 0 (eth0)" size="0"/>
-    <field name="frame.encap_type" pos="0" show="1" showname="Encapsulation type: Ethernet (1)" size="0"/>
-    <field name="frame.time" pos="0" show="Sep 25, 2015 16:34:14.289149000 CEST" showname="Arrival Time: Sep 25, 2015 16:34:14.289149000 CEST" size="0"/>
-    <field name="frame.offset_shift" pos="0" show="0.000000000" showname="Time shift for this packet: 0.000000000 seconds" size="0"/>
-    <field name="frame.time_epoch" pos="0" show="1443191654.289149000" showname="Epoch Time: 1443191654.289149000 seconds" size="0"/>
-    <field name="frame.time_delta" pos="0" show="1.707367000" showname="Time delta from previous captured frame: 1.707367000 seconds" size="0"/>
-    <field name="frame.time_delta_displayed" pos="0" show="1.707367000" showname="Time delta from previous displayed frame: 1.707367000 seconds" size="0"/>
-    <field name="frame.time_relative" pos="0" show="7.823518000" showname="Time since reference or first frame: 7.823518000 seconds" size="0"/>
-    <field name="frame.number" pos="0" show="9" showname="Frame Number: 9" size="0"/>
-    <field name="frame.len" pos="0" show="82" showname="Frame Length: 82 bytes (656 bits)" size="0"/>
-    <field name="frame.cap_len" pos="0" show="82" showname="Capture Length: 82 bytes (656 bits)" size="0"/>
-    <field name="frame.marked" pos="0" show="0" showname="Frame is marked: False" size="0"/>
-    <field name="frame.ignored" pos="0" show="0" showname="Frame is ignored: False" size="0"/>
-    <field name="frame.protocols" pos="0" show="eth:ethertype:ip:sctp" showname="Protocols in frame: eth:ethertype:ip:sctp" size="0"/>
-  </proto>
-  
-  <proto name="ip" pos="14" showname="Internet Protocol Version 4, Src: 192.168.12.213 (192.168.12.213), Dst: 192.168.12.17 (192.168.12.17)" size="20">
-    <field name="ip.version" pos="14" show="4" showname="Version: 4" size="1" value="45"/>
-    <field name="ip.hdr_len" pos="14" show="20" showname="Header Length: 20 bytes" size="1" value="45"/>
-    <field name="ip.dsfield" pos="15" show="2" showname="Differentiated Services Field: 0x02 (DSCP 0x00: Default; ECN: 0x02: ECT(0) (ECN-Capable Transport))" size="1" value="02">
-      <field name="ip.dsfield.dscp" pos="15" show="0" showname="0000 00.. = Differentiated Services Codepoint: Default (0x00)" size="1" unmaskedvalue="02" value="0"/>
-      <field name="ip.dsfield.ecn" pos="15" show="2" showname=".... ..10 = Explicit Congestion Notification: ECT(0) (ECN-Capable Transport) (0x02)" size="1" unmaskedvalue="02" value="2"/>
-    </field>
-    <field name="ip.len" pos="16" show="68" showname="Total Length: 68" size="2" value="0044"/>
-    <field name="ip.id" pos="18" show="0" showname="Identification: 0x0000 (0)" size="2" value="0000"/>
-    <field name="ip.flags" pos="20" show="2" showname="Flags: 0x02 (Don't Fragment)" size="1" value="40">
-      <field name="ip.flags.rb" pos="20" show="0" showname="0... .... = Reserved bit: Not set" size="1" value="40"/>
-      <field name="ip.flags.df" pos="20" show="1" showname=".1.. .... = Don't fragment: Set" size="1" value="40"/>
-      <field name="ip.flags.mf" pos="20" show="0" showname="..0. .... = More fragments: Not set" size="1" value="40"/>
-    </field>
-    <field name="ip.frag_offset" pos="20" show="0" showname="Fragment offset: 0" size="2" value="4000"/>
-    <field name="ip.ttl" pos="22" show="64" showname="Time to live: 64" size="1" value="40"/>
-    <field name="ip.proto" pos="23" show="132" showname="Protocol: SCTP (132)" size="1" value="84"/>
-    <field name="ip.checksum" pos="24" show="40957" showname="Header checksum: 0x9ffd [validation disabled]" size="2" value="9ffd">
-      <field name="ip.checksum_good" pos="24" show="0" showname="Good: False" size="2" value="9ffd"/>
-      <field name="ip.checksum_bad" pos="24" show="0" showname="Bad: False" size="2" value="9ffd"/>
-    </field>
-    <field name="ip.src" pos="26" show="192.168.12.213" showname="Source: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.addr" pos="26" show="192.168.12.213" showname="Source or Destination Address: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.src_host" pos="26" show="192.168.12.213" showname="Source Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.host" pos="26" show="192.168.12.213" showname="Source or Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-    <field name="ip.dst" pos="30" show="192.168.12.17" showname="Destination: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.addr" pos="30" show="192.168.12.17" showname="Source or Destination Address: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.dst_host" pos="30" show="192.168.12.17" showname="Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.host" pos="30" show="192.168.12.17" showname="Source or Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-    <field name="" pos="26" show="Source GeoIP: Unknown" size="4" value="c0a80cd5"/>
-    <field name="" pos="30" show="Destination GeoIP: Unknown" size="4" value="c0a80c11"/>
-  </proto>
-  <proto name="sctp" pos="34" showname="Stream Control Transmission Protocol, Src Port: 36412 (36412), Dst Port: 36412 (36412)" size="48">
-    <field name="sctp.srcport" pos="34" show="36412" showname="Source port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.dstport" pos="36" show="36412" showname="Destination port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.verification_tag" pos="38" show="0" showname="Verification tag: 0x00000000" size="4" value="00000000"/>
-    <field name="sctp.assoc_index" pos="34" show="0" showname="Assocation index: 0" size="0"/>
-    <field hide="yes" name="sctp.port" pos="34" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-    <field hide="yes" name="sctp.port" pos="36" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.checksum" pos="42" show="3154010248" showname="Checksum: 0xbbfe6088 (not verified)" size="4" value="bbfe6088"/>
-    <field name="" pos="46" show="INIT chunk (Outbound streams: 2, inbound streams: 2)" size="36" value="0100002454f837ab0001a00000020002c4fbb8d7000c00060005000080000004c0000004">
-      <field name="sctp.chunk_type" pos="46" show="1" showname="Chunk type: INIT (1)" size="1" value="01">
-        <field name="sctp.chunk_bit_1" pos="46" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="01" value="0"/>
-        <field name="sctp.chunk_bit_2" pos="46" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="01" value="0"/>
-      </field>
-      <field name="sctp.chunk_flags" pos="47" show="0" showname="Chunk flags: 0x00" size="1" value="00"/>
-      <field name="sctp.chunk_length" pos="48" show="36" showname="Chunk length: 36" size="2" value="0024"/>
-      <field name="sctp.init_initiate_tag" pos="50" show="1425553323" showname="Initiate tag: 0x54f837ab" size="4" value="54f837ab"/>
-      <field hide="yes" name="sctp.initiate_tag" pos="50" show="1425553323" showname="Initiate tag: 0x54f837ab" size="4" value="54f837ab"/>
-      <field name="sctp.init_credit" pos="54" show="106496" showname="Advertised receiver window credit (a_rwnd): 106496" size="4" value="0001a000"/>
-      <field name="sctp.init_nr_out_streams" pos="58" show="2" showname="Number of outbound streams: 2" size="2" value="0002"/>
-      <field name="sctp.init_nr_in_streams" pos="60" show="2" showname="Number of inbound streams: 2" size="2" value="0002"/>
-      <field name="sctp.init_initial_tsn" pos="62" show="3304831191" showname="Initial TSN: 3304831191" size="4" value="c4fbb8d7"/>
-      <field name="" pos="66" show="Supported address types parameter (Supported types: IPv4)" size="8" value="000c000600050000">
-        <field name="sctp.parameter_type" pos="66" show="12" showname="Parameter type: Supported address types (0x000c)" size="2" value="000c">
-          <field name="sctp.parameter_bit_1" pos="66" show="0" showname="0... .... .... .... = Bit: Stop processing of chunk" size="2" unmaskedvalue="000c" value="0"/>
-          <field name="sctp.parameter_bit_2" pos="66" show="0" showname=".0.. .... .... .... = Bit: Do not report" size="2" unmaskedvalue="000c" value="0"/>
-        </field>
-        <field name="sctp.parameter_length" pos="68" show="6" showname="Parameter length: 6" size="2" value="0006"/>
-        <field name="sctp.parameter_supported_addres_type" pos="70" show="5" showname="Supported address type: IPv4 address (5)" size="2" value="0005"/>
-        <field name="sctp.parameter_padding" pos="72" show="00:00" showname="Parameter padding: 0000" size="2" value="0000"/>
-      </field>
-      <field name="" pos="74" show="ECN parameter" size="4" value="80000004">
-        <field name="sctp.parameter_type" pos="74" show="32768" showname="Parameter type: ECN (0x8000)" size="2" value="8000">
-          <field name="sctp.parameter_bit_1" pos="74" show="1" showname="1... .... .... .... = Bit: Skip parameter and continue processing of the chunk" size="2" unmaskedvalue="8000" value="1"/>
-          <field name="sctp.parameter_bit_2" pos="74" show="0" showname=".0.. .... .... .... = Bit: Do not report" size="2" unmaskedvalue="8000" value="0"/>
-        </field>
-        <field name="sctp.parameter_length" pos="76" show="4" showname="Parameter length: 4" size="2" value="0004"/>
-      </field>
-      <field name="" pos="78" show="Forward TSN supported parameter" size="4" value="c0000004">
-        <field name="sctp.parameter_type" pos="78" show="49152" showname="Parameter type: Forward TSN supported (0xc000)" size="2" value="c000">
-          <field name="sctp.parameter_bit_1" pos="78" show="1" showname="1... .... .... .... = Bit: Skip parameter and continue processing of the chunk" size="2" unmaskedvalue="c000" value="1"/>
-          <field name="sctp.parameter_bit_2" pos="78" show="1" showname=".1.. .... .... .... = Bit: Do report" size="2" unmaskedvalue="c000" value="1"/>
-        </field>
-        <field name="sctp.parameter_length" pos="80" show="4" showname="Parameter length: 4" size="2" value="0004"/>
-      </field>
-    </field>
-  </proto>
-</packet>
-<packet>
-  
-  <proto name="frame" pos="0" showname="Frame 10: 306 bytes on wire (2448 bits), 306 bytes captured (2448 bits) on interface 0" size="306">
-    <field name="frame.interface_id" pos="0" show="0" showname="Interface id: 0 (eth0)" size="0"/>
-    <field name="frame.encap_type" pos="0" show="1" showname="Encapsulation type: Ethernet (1)" size="0"/>
-    <field name="frame.time" pos="0" show="Sep 25, 2015 16:34:14.289229000 CEST" showname="Arrival Time: Sep 25, 2015 16:34:14.289229000 CEST" size="0"/>
-    <field name="frame.offset_shift" pos="0" show="0.000000000" showname="Time shift for this packet: 0.000000000 seconds" size="0"/>
-    <field name="frame.time_epoch" pos="0" show="1443191654.289229000" showname="Epoch Time: 1443191654.289229000 seconds" size="0"/>
-    <field name="frame.time_delta" pos="0" show="0.000080000" showname="Time delta from previous captured frame: 0.000080000 seconds" size="0"/>
-    <field name="frame.time_delta_displayed" pos="0" show="0.000080000" showname="Time delta from previous displayed frame: 0.000080000 seconds" size="0"/>
-    <field name="frame.time_relative" pos="0" show="7.823598000" showname="Time since reference or first frame: 7.823598000 seconds" size="0"/>
-    <field name="frame.number" pos="0" show="10" showname="Frame Number: 10" size="0"/>
-    <field name="frame.len" pos="0" show="306" showname="Frame Length: 306 bytes (2448 bits)" size="0"/>
-    <field name="frame.cap_len" pos="0" show="306" showname="Capture Length: 306 bytes (2448 bits)" size="0"/>
-    <field name="frame.marked" pos="0" show="0" showname="Frame is marked: False" size="0"/>
-    <field name="frame.ignored" pos="0" show="0" showname="Frame is ignored: False" size="0"/>
-    <field name="frame.protocols" pos="0" show="eth:ethertype:ip:sctp" showname="Protocols in frame: eth:ethertype:ip:sctp" size="0"/>
-  </proto>
-  
-  <proto name="ip" pos="14" showname="Internet Protocol Version 4, Src: 192.168.12.17 (192.168.12.17), Dst: 192.168.12.213 (192.168.12.213)" size="20">
-    <field name="ip.version" pos="14" show="4" showname="Version: 4" size="1" value="45"/>
-    <field name="ip.hdr_len" pos="14" show="20" showname="Header Length: 20 bytes" size="1" value="45"/>
-    <field name="ip.dsfield" pos="15" show="2" showname="Differentiated Services Field: 0x02 (DSCP 0x00: Default; ECN: 0x02: ECT(0) (ECN-Capable Transport))" size="1" value="02">
-      <field name="ip.dsfield.dscp" pos="15" show="0" showname="0000 00.. = Differentiated Services Codepoint: Default (0x00)" size="1" unmaskedvalue="02" value="0"/>
-      <field name="ip.dsfield.ecn" pos="15" show="2" showname=".... ..10 = Explicit Congestion Notification: ECT(0) (ECN-Capable Transport) (0x02)" size="1" unmaskedvalue="02" value="2"/>
-    </field>
-    <field name="ip.len" pos="16" show="292" showname="Total Length: 292" size="2" value="0124"/>
-    <field name="ip.id" pos="18" show="0" showname="Identification: 0x0000 (0)" size="2" value="0000"/>
-    <field name="ip.flags" pos="20" show="2" showname="Flags: 0x02 (Don't Fragment)" size="1" value="40">
-      <field name="ip.flags.rb" pos="20" show="0" showname="0... .... = Reserved bit: Not set" size="1" value="40"/>
-      <field name="ip.flags.df" pos="20" show="1" showname=".1.. .... = Don't fragment: Set" size="1" value="40"/>
-      <field name="ip.flags.mf" pos="20" show="0" showname="..0. .... = More fragments: Not set" size="1" value="40"/>
-    </field>
-    <field name="ip.frag_offset" pos="20" show="0" showname="Fragment offset: 0" size="2" value="4000"/>
-    <field name="ip.ttl" pos="22" show="64" showname="Time to live: 64" size="1" value="40"/>
-    <field name="ip.proto" pos="23" show="132" showname="Protocol: SCTP (132)" size="1" value="84"/>
-    <field name="ip.checksum" pos="24" show="40733" showname="Header checksum: 0x9f1d [validation disabled]" size="2" value="9f1d">
-      <field name="ip.checksum_good" pos="24" show="0" showname="Good: False" size="2" value="9f1d"/>
-      <field name="ip.checksum_bad" pos="24" show="0" showname="Bad: False" size="2" value="9f1d"/>
-    </field>
-    <field name="ip.src" pos="26" show="192.168.12.17" showname="Source: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.addr" pos="26" show="192.168.12.17" showname="Source or Destination Address: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.src_host" pos="26" show="192.168.12.17" showname="Source Host: 192.168.12.17" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.host" pos="26" show="192.168.12.17" showname="Source or Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-    <field name="ip.dst" pos="30" show="192.168.12.213" showname="Destination: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.addr" pos="30" show="192.168.12.213" showname="Source or Destination Address: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.dst_host" pos="30" show="192.168.12.213" showname="Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.host" pos="30" show="192.168.12.213" showname="Source or Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-    <field name="" pos="26" show="Source GeoIP: Unknown" size="4" value="c0a80c11"/>
-    <field name="" pos="30" show="Destination GeoIP: Unknown" size="4" value="c0a80cd5"/>
-  </proto>
-  <proto name="sctp" pos="34" showname="Stream Control Transmission Protocol, Src Port: 36412 (36412), Dst Port: 36412 (36412)" size="272">
-    <field name="sctp.srcport" pos="34" show="36412" showname="Source port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.dstport" pos="36" show="36412" showname="Destination port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.verification_tag" pos="38" show="1425553323" showname="Verification tag: 0x54f837ab" size="4" value="54f837ab"/>
-    <field name="sctp.assoc_index" pos="34" show="0" showname="Assocation index: 0" size="0"/>
-    <field hide="yes" name="sctp.port" pos="34" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-    <field hide="yes" name="sctp.port" pos="36" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.checksum" pos="42" show="3479653338" showname="Checksum: 0xcf674bda (not verified)" size="4" value="cf674bda"/>
-    <field name="" pos="46" show="INIT_ACK chunk (Outbound streams: 2, inbound streams: 2)" size="260" value="020001044cd1eca00001a0000002000277b42707000700e8d2e400842319c2ee3bf2eb94dff99192604ab35900000000000000000000000000000000a0ecd14cab37f85400000000000000000d425e07780c0000020002000727b47702008e3cc0a80cd500000000000000000000000000000000000000003c8e01000000000080020024efa851c90c104714b66409dff40a9f2d30a6e0b1be975e2eb1ee7d28f5b61aa90000000000000000000000000000000000000000000000000000000000000000000000000100002454f837ab0001a00000020002c4fbb8d7000c00060005000080000004c00000040000000000000000000000000000000080000004c0000004">
-      <field name="sctp.chunk_type" pos="46" show="2" showname="Chunk type: INIT_ACK (2)" size="1" value="02">
-        <field name="sctp.chunk_bit_1" pos="46" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="02" value="0"/>
-        <field name="sctp.chunk_bit_2" pos="46" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="02" value="0"/>
-      </field>
-      <field name="sctp.chunk_flags" pos="47" show="0" showname="Chunk flags: 0x00" size="1" value="00"/>
-      <field name="sctp.chunk_length" pos="48" show="260" showname="Chunk length: 260" size="2" value="0104"/>
-      <field name="sctp.initack_initiate_tag" pos="50" show="1288826016" showname="Initiate tag: 0x4cd1eca0" size="4" value="4cd1eca0"/>
-      <field hide="yes" name="sctp.initiate_tag" pos="50" show="1288826016" showname="Initiate tag: 0x4cd1eca0" size="4" value="4cd1eca0"/>
-      <field name="sctp.initack_credit" pos="54" show="106496" showname="Advertised receiver window credit (a_rwnd): 106496" size="4" value="0001a000"/>
-      <field name="sctp.initack_nr_out_streams" pos="58" show="2" showname="Number of outbound streams: 2" size="2" value="0002"/>
-      <field name="sctp.initack_nr_in_streams" pos="60" show="2" showname="Number of inbound streams: 2" size="2" value="0002"/>
-      <field name="sctp.initack_initial_tsn" pos="62" show="2008295175" showname="Initial TSN: 2008295175" size="4" value="77b42707"/>
-      <field name="" pos="66" show="State cookie parameter (Cookie length: 228 bytes)" size="232" value="000700e8d2e400842319c2ee3bf2eb94dff99192604ab35900000000000000000000000000000000a0ecd14cab37f85400000000000000000d425e07780c0000020002000727b47702008e3cc0a80cd500000000000000000000000000000000000000003c8e01000000000080020024efa851c90c104714b66409dff40a9f2d30a6e0b1be975e2eb1ee7d28f5b61aa90000000000000000000000000000000000000000000000000000000000000000000000000100002454f837ab0001a00000020002c4fbb8d7000c00060005000080000004c000000400000000000000000000000000000000">
-        <field name="sctp.parameter_type" pos="66" show="7" showname="Parameter type: State cookie (0x0007)" size="2" value="0007">
-          <field name="sctp.parameter_bit_1" pos="66" show="0" showname="0... .... .... .... = Bit: Stop processing of chunk" size="2" unmaskedvalue="0007" value="0"/>
-          <field name="sctp.parameter_bit_2" pos="66" show="0" showname=".0.. .... .... .... = Bit: Do not report" size="2" unmaskedvalue="0007" value="0"/>
-        </field>
-        <field name="sctp.parameter_length" pos="68" show="232" showname="Parameter length: 232" size="2" value="00e8"/>
-        <field name="sctp.parameter_state_cookie" pos="70" show="d2:e4:00:84:23:19:c2:ee:3b:f2:eb:94:df:f9:91:92:60:4a:b3:59:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:a0:ec:d1:4c:ab:37:f8:54:00:00:00:00:00:00:00:00:0d:42:5e:07:78:0c:00:00:02:00:02:00:07:27:b4:77:02:00:8e:3c:c0:a8:0c:d5:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:3c:8e:01:00:00:00:00:00:80:02:00:24:ef:a8:51:c9:0c:10:47:14:b6:64:09:df:f4:0a:9f:2d:30:a6:e0:b1:be:97:5e:2e:b1:ee:7d:28:f5:b6:1a:a9:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:01:00:00:24:54:f8:37:ab:00:01:a0:00:00:02:00:02:c4:fb:b8:d7:00:0c:00:06:00:05:00:00:80:00:00:04:c0:00:00:04:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00" showname="State cookie: d2e400842319c2ee3bf2eb94dff99192604ab35900000000..." size="228" value="d2e400842319c2ee3bf2eb94dff99192604ab35900000000000000000000000000000000a0ecd14cab37f85400000000000000000d425e07780c0000020002000727b47702008e3cc0a80cd500000000000000000000000000000000000000003c8e01000000000080020024efa851c90c104714b66409dff40a9f2d30a6e0b1be975e2eb1ee7d28f5b61aa90000000000000000000000000000000000000000000000000000000000000000000000000100002454f837ab0001a00000020002c4fbb8d7000c00060005000080000004c000000400000000000000000000000000000000"/>
-      </field>
-      <field name="" pos="298" show="ECN parameter" size="4" value="80000004">
-        <field name="sctp.parameter_type" pos="298" show="32768" showname="Parameter type: ECN (0x8000)" size="2" value="8000">
-          <field name="sctp.parameter_bit_1" pos="298" show="1" showname="1... .... .... .... = Bit: Skip parameter and continue processing of the chunk" size="2" unmaskedvalue="8000" value="1"/>
-          <field name="sctp.parameter_bit_2" pos="298" show="0" showname=".0.. .... .... .... = Bit: Do not report" size="2" unmaskedvalue="8000" value="0"/>
-        </field>
-        <field name="sctp.parameter_length" pos="300" show="4" showname="Parameter length: 4" size="2" value="0004"/>
-      </field>
-      <field name="" pos="302" show="Forward TSN supported parameter" size="4" value="c0000004">
-        <field name="sctp.parameter_type" pos="302" show="49152" showname="Parameter type: Forward TSN supported (0xc000)" size="2" value="c000">
-          <field name="sctp.parameter_bit_1" pos="302" show="1" showname="1... .... .... .... = Bit: Skip parameter and continue processing of the chunk" size="2" unmaskedvalue="c000" value="1"/>
-          <field name="sctp.parameter_bit_2" pos="302" show="1" showname=".1.. .... .... .... = Bit: Do report" size="2" unmaskedvalue="c000" value="1"/>
-        </field>
-        <field name="sctp.parameter_length" pos="304" show="4" showname="Parameter length: 4" size="2" value="0004"/>
-      </field>
-    </field>
-  </proto>
-</packet>
-<packet>
-  
-  <proto name="frame" pos="0" showname="Frame 11: 278 bytes on wire (2224 bits), 278 bytes captured (2224 bits) on interface 0" size="278">
-    <field name="frame.interface_id" pos="0" show="0" showname="Interface id: 0 (eth0)" size="0"/>
-    <field name="frame.encap_type" pos="0" show="1" showname="Encapsulation type: Ethernet (1)" size="0"/>
-    <field name="frame.time" pos="0" show="Sep 25, 2015 16:34:14.289649000 CEST" showname="Arrival Time: Sep 25, 2015 16:34:14.289649000 CEST" size="0"/>
-    <field name="frame.offset_shift" pos="0" show="0.000000000" showname="Time shift for this packet: 0.000000000 seconds" size="0"/>
-    <field name="frame.time_epoch" pos="0" show="1443191654.289649000" showname="Epoch Time: 1443191654.289649000 seconds" size="0"/>
-    <field name="frame.time_delta" pos="0" show="0.000420000" showname="Time delta from previous captured frame: 0.000420000 seconds" size="0"/>
-    <field name="frame.time_delta_displayed" pos="0" show="0.000420000" showname="Time delta from previous displayed frame: 0.000420000 seconds" size="0"/>
-    <field name="frame.time_relative" pos="0" show="7.824018000" showname="Time since reference or first frame: 7.824018000 seconds" size="0"/>
-    <field name="frame.number" pos="0" show="11" showname="Frame Number: 11" size="0"/>
-    <field name="frame.len" pos="0" show="278" showname="Frame Length: 278 bytes (2224 bits)" size="0"/>
-    <field name="frame.cap_len" pos="0" show="278" showname="Capture Length: 278 bytes (2224 bits)" size="0"/>
-    <field name="frame.marked" pos="0" show="0" showname="Frame is marked: False" size="0"/>
-    <field name="frame.ignored" pos="0" show="0" showname="Frame is ignored: False" size="0"/>
-    <field name="frame.protocols" pos="0" show="eth:ethertype:ip:sctp" showname="Protocols in frame: eth:ethertype:ip:sctp" size="0"/>
-  </proto>
-  
-  <proto name="ip" pos="14" showname="Internet Protocol Version 4, Src: 192.168.12.213 (192.168.12.213), Dst: 192.168.12.17 (192.168.12.17)" size="20">
-    <field name="ip.version" pos="14" show="4" showname="Version: 4" size="1" value="45"/>
-    <field name="ip.hdr_len" pos="14" show="20" showname="Header Length: 20 bytes" size="1" value="45"/>
-    <field name="ip.dsfield" pos="15" show="2" showname="Differentiated Services Field: 0x02 (DSCP 0x00: Default; ECN: 0x02: ECT(0) (ECN-Capable Transport))" size="1" value="02">
-      <field name="ip.dsfield.dscp" pos="15" show="0" showname="0000 00.. = Differentiated Services Codepoint: Default (0x00)" size="1" unmaskedvalue="02" value="0"/>
-      <field name="ip.dsfield.ecn" pos="15" show="2" showname=".... ..10 = Explicit Congestion Notification: ECT(0) (ECN-Capable Transport) (0x02)" size="1" unmaskedvalue="02" value="2"/>
-    </field>
-    <field name="ip.len" pos="16" show="264" showname="Total Length: 264" size="2" value="0108"/>
-    <field name="ip.id" pos="18" show="0" showname="Identification: 0x0000 (0)" size="2" value="0000"/>
-    <field name="ip.flags" pos="20" show="2" showname="Flags: 0x02 (Don't Fragment)" size="1" value="40">
-      <field name="ip.flags.rb" pos="20" show="0" showname="0... .... = Reserved bit: Not set" size="1" value="40"/>
-      <field name="ip.flags.df" pos="20" show="1" showname=".1.. .... = Don't fragment: Set" size="1" value="40"/>
-      <field name="ip.flags.mf" pos="20" show="0" showname="..0. .... = More fragments: Not set" size="1" value="40"/>
-    </field>
-    <field name="ip.frag_offset" pos="20" show="0" showname="Fragment offset: 0" size="2" value="4000"/>
-    <field name="ip.ttl" pos="22" show="64" showname="Time to live: 64" size="1" value="40"/>
-    <field name="ip.proto" pos="23" show="132" showname="Protocol: SCTP (132)" size="1" value="84"/>
-    <field name="ip.checksum" pos="24" show="40761" showname="Header checksum: 0x9f39 [validation disabled]" size="2" value="9f39">
-      <field name="ip.checksum_good" pos="24" show="0" showname="Good: False" size="2" value="9f39"/>
-      <field name="ip.checksum_bad" pos="24" show="0" showname="Bad: False" size="2" value="9f39"/>
-    </field>
-    <field name="ip.src" pos="26" show="192.168.12.213" showname="Source: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.addr" pos="26" show="192.168.12.213" showname="Source or Destination Address: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.src_host" pos="26" show="192.168.12.213" showname="Source Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.host" pos="26" show="192.168.12.213" showname="Source or Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-    <field name="ip.dst" pos="30" show="192.168.12.17" showname="Destination: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.addr" pos="30" show="192.168.12.17" showname="Source or Destination Address: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.dst_host" pos="30" show="192.168.12.17" showname="Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.host" pos="30" show="192.168.12.17" showname="Source or Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-    <field name="" pos="26" show="Source GeoIP: Unknown" size="4" value="c0a80cd5"/>
-    <field name="" pos="30" show="Destination GeoIP: Unknown" size="4" value="c0a80c11"/>
-  </proto>
-  <proto name="sctp" pos="34" showname="Stream Control Transmission Protocol, Src Port: 36412 (36412), Dst Port: 36412 (36412)" size="244">
-    <field name="sctp.srcport" pos="34" show="36412" showname="Source port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.dstport" pos="36" show="36412" showname="Destination port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.verification_tag" pos="38" show="1288826016" showname="Verification tag: 0x4cd1eca0" size="4" value="4cd1eca0"/>
-    <field name="sctp.assoc_index" pos="34" show="0" showname="Assocation index: 0" size="0"/>
-    <field hide="yes" name="sctp.port" pos="34" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-    <field hide="yes" name="sctp.port" pos="36" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.checksum" pos="42" show="1079422221" showname="Checksum: 0x4056ad0d (not verified)" size="4" value="4056ad0d"/>
-    <field name="" pos="46" show="COOKIE_ECHO chunk (Cookie length: 228 bytes)" size="232" value="0a0000e8d2e400842319c2ee3bf2eb94dff99192604ab35900000000000000000000000000000000a0ecd14cab37f85400000000000000000d425e07780c0000020002000727b47702008e3cc0a80cd500000000000000000000000000000000000000003c8e01000000000080020024efa851c90c104714b66409dff40a9f2d30a6e0b1be975e2eb1ee7d28f5b61aa90000000000000000000000000000000000000000000000000000000000000000000000000100002454f837ab0001a00000020002c4fbb8d7000c00060005000080000004c000000400000000000000000000000000000000">
-      <field name="sctp.chunk_type" pos="46" show="10" showname="Chunk type: COOKIE_ECHO (10)" size="1" value="0a">
-        <field name="sctp.chunk_bit_1" pos="46" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="0a" value="0"/>
-        <field name="sctp.chunk_bit_2" pos="46" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="0a" value="0"/>
-      </field>
-      <field name="sctp.chunk_flags" pos="47" show="0" showname="Chunk flags: 0x00" size="1" value="00"/>
-      <field name="sctp.chunk_length" pos="48" show="232" showname="Chunk length: 232" size="2" value="00e8"/>
-      <field name="sctp.cookie" pos="50" show="d2:e4:00:84:23:19:c2:ee:3b:f2:eb:94:df:f9:91:92:60:4a:b3:59:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:a0:ec:d1:4c:ab:37:f8:54:00:00:00:00:00:00:00:00:0d:42:5e:07:78:0c:00:00:02:00:02:00:07:27:b4:77:02:00:8e:3c:c0:a8:0c:d5:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:3c:8e:01:00:00:00:00:00:80:02:00:24:ef:a8:51:c9:0c:10:47:14:b6:64:09:df:f4:0a:9f:2d:30:a6:e0:b1:be:97:5e:2e:b1:ee:7d:28:f5:b6:1a:a9:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:01:00:00:24:54:f8:37:ab:00:01:a0:00:00:02:00:02:c4:fb:b8:d7:00:0c:00:06:00:05:00:00:80:00:00:04:c0:00:00:04:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00" showname="Cookie: d2e400842319c2ee3bf2eb94dff99192604ab35900000000..." size="228" value="d2e400842319c2ee3bf2eb94dff99192604ab35900000000000000000000000000000000a0ecd14cab37f85400000000000000000d425e07780c0000020002000727b47702008e3cc0a80cd500000000000000000000000000000000000000003c8e01000000000080020024efa851c90c104714b66409dff40a9f2d30a6e0b1be975e2eb1ee7d28f5b61aa90000000000000000000000000000000000000000000000000000000000000000000000000100002454f837ab0001a00000020002c4fbb8d7000c00060005000080000004c000000400000000000000000000000000000000"/>
-    </field>
-  </proto>
-</packet>
-<packet>
-  
-  <proto name="frame" pos="0" showname="Frame 12: 50 bytes on wire (400 bits), 50 bytes captured (400 bits) on interface 0" size="50">
-    <field name="frame.interface_id" pos="0" show="0" showname="Interface id: 0 (eth0)" size="0"/>
-    <field name="frame.encap_type" pos="0" show="1" showname="Encapsulation type: Ethernet (1)" size="0"/>
-    <field name="frame.time" pos="0" show="Sep 25, 2015 16:34:14.289704000 CEST" showname="Arrival Time: Sep 25, 2015 16:34:14.289704000 CEST" size="0"/>
-    <field name="frame.offset_shift" pos="0" show="0.000000000" showname="Time shift for this packet: 0.000000000 seconds" size="0"/>
-    <field name="frame.time_epoch" pos="0" show="1443191654.289704000" showname="Epoch Time: 1443191654.289704000 seconds" size="0"/>
-    <field name="frame.time_delta" pos="0" show="0.000055000" showname="Time delta from previous captured frame: 0.000055000 seconds" size="0"/>
-    <field name="frame.time_delta_displayed" pos="0" show="0.000055000" showname="Time delta from previous displayed frame: 0.000055000 seconds" size="0"/>
-    <field name="frame.time_relative" pos="0" show="7.824073000" showname="Time since reference or first frame: 7.824073000 seconds" size="0"/>
-    <field name="frame.number" pos="0" show="12" showname="Frame Number: 12" size="0"/>
-    <field name="frame.len" pos="0" show="50" showname="Frame Length: 50 bytes (400 bits)" size="0"/>
-    <field name="frame.cap_len" pos="0" show="50" showname="Capture Length: 50 bytes (400 bits)" size="0"/>
-    <field name="frame.marked" pos="0" show="0" showname="Frame is marked: False" size="0"/>
-    <field name="frame.ignored" pos="0" show="0" showname="Frame is ignored: False" size="0"/>
-    <field name="frame.protocols" pos="0" show="eth:ethertype:ip:sctp" showname="Protocols in frame: eth:ethertype:ip:sctp" size="0"/>
-  </proto>
-  
-  <proto name="ip" pos="14" showname="Internet Protocol Version 4, Src: 192.168.12.17 (192.168.12.17), Dst: 192.168.12.213 (192.168.12.213)" size="20">
-    <field name="ip.version" pos="14" show="4" showname="Version: 4" size="1" value="45"/>
-    <field name="ip.hdr_len" pos="14" show="20" showname="Header Length: 20 bytes" size="1" value="45"/>
-    <field name="ip.dsfield" pos="15" show="2" showname="Differentiated Services Field: 0x02 (DSCP 0x00: Default; ECN: 0x02: ECT(0) (ECN-Capable Transport))" size="1" value="02">
-      <field name="ip.dsfield.dscp" pos="15" show="0" showname="0000 00.. = Differentiated Services Codepoint: Default (0x00)" size="1" unmaskedvalue="02" value="0"/>
-      <field name="ip.dsfield.ecn" pos="15" show="2" showname=".... ..10 = Explicit Congestion Notification: ECT(0) (ECN-Capable Transport) (0x02)" size="1" unmaskedvalue="02" value="2"/>
-    </field>
-    <field name="ip.len" pos="16" show="36" showname="Total Length: 36" size="2" value="0024"/>
-    <field name="ip.id" pos="18" show="0" showname="Identification: 0x0000 (0)" size="2" value="0000"/>
-    <field name="ip.flags" pos="20" show="2" showname="Flags: 0x02 (Don't Fragment)" size="1" value="40">
-      <field name="ip.flags.rb" pos="20" show="0" showname="0... .... = Reserved bit: Not set" size="1" value="40"/>
-      <field name="ip.flags.df" pos="20" show="1" showname=".1.. .... = Don't fragment: Set" size="1" value="40"/>
-      <field name="ip.flags.mf" pos="20" show="0" showname="..0. .... = More fragments: Not set" size="1" value="40"/>
-    </field>
-    <field name="ip.frag_offset" pos="20" show="0" showname="Fragment offset: 0" size="2" value="4000"/>
-    <field name="ip.ttl" pos="22" show="64" showname="Time to live: 64" size="1" value="40"/>
-    <field name="ip.proto" pos="23" show="132" showname="Protocol: SCTP (132)" size="1" value="84"/>
-    <field name="ip.checksum" pos="24" show="40989" showname="Header checksum: 0xa01d [validation disabled]" size="2" value="a01d">
-      <field name="ip.checksum_good" pos="24" show="0" showname="Good: False" size="2" value="a01d"/>
-      <field name="ip.checksum_bad" pos="24" show="0" showname="Bad: False" size="2" value="a01d"/>
-    </field>
-    <field name="ip.src" pos="26" show="192.168.12.17" showname="Source: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.addr" pos="26" show="192.168.12.17" showname="Source or Destination Address: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.src_host" pos="26" show="192.168.12.17" showname="Source Host: 192.168.12.17" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.host" pos="26" show="192.168.12.17" showname="Source or Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-    <field name="ip.dst" pos="30" show="192.168.12.213" showname="Destination: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.addr" pos="30" show="192.168.12.213" showname="Source or Destination Address: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.dst_host" pos="30" show="192.168.12.213" showname="Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.host" pos="30" show="192.168.12.213" showname="Source or Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-    <field name="" pos="26" show="Source GeoIP: Unknown" size="4" value="c0a80c11"/>
-    <field name="" pos="30" show="Destination GeoIP: Unknown" size="4" value="c0a80cd5"/>
-  </proto>
-  <proto name="sctp" pos="34" showname="Stream Control Transmission Protocol, Src Port: 36412 (36412), Dst Port: 36412 (36412)" size="16">
-    <field name="sctp.srcport" pos="34" show="36412" showname="Source port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.dstport" pos="36" show="36412" showname="Destination port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.verification_tag" pos="38" show="1425553323" showname="Verification tag: 0x54f837ab" size="4" value="54f837ab"/>
-    <field name="sctp.assoc_index" pos="34" show="0" showname="Assocation index: 0" size="0"/>
-    <field hide="yes" name="sctp.port" pos="34" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-    <field hide="yes" name="sctp.port" pos="36" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.checksum" pos="42" show="1654515424" showname="Checksum: 0x629de6e0 (not verified)" size="4" value="629de6e0"/>
-    <field name="" pos="46" show="COOKIE_ACK chunk" size="4" value="0b000004">
-      <field name="sctp.chunk_type" pos="46" show="11" showname="Chunk type: COOKIE_ACK (11)" size="1" value="0b">
-        <field name="sctp.chunk_bit_1" pos="46" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="0b" value="0"/>
-        <field name="sctp.chunk_bit_2" pos="46" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="0b" value="0"/>
-      </field>
-      <field name="sctp.chunk_flags" pos="47" show="0" showname="Chunk flags: 0x00" size="1" value="00"/>
-      <field name="sctp.chunk_length" pos="48" show="4" showname="Chunk length: 4" size="2" value="0004"/>
-    </field>
-  </proto>
-</packet>
-<packet>
-  
-  <proto name="frame" pos="0" showname="Frame 13: 122 bytes on wire (976 bits), 122 bytes captured (976 bits) on interface 0" size="122">
-    <field name="frame.interface_id" pos="0" show="0" showname="Interface id: 0 (eth0)" size="0"/>
-    <field name="frame.encap_type" pos="0" show="1" showname="Encapsulation type: Ethernet (1)" size="0"/>
-    <field name="frame.time" pos="0" show="Sep 25, 2015 16:34:14.290056000 CEST" showname="Arrival Time: Sep 25, 2015 16:34:14.290056000 CEST" size="0"/>
-    <field name="frame.offset_shift" pos="0" show="0.000000000" showname="Time shift for this packet: 0.000000000 seconds" size="0"/>
-    <field name="frame.time_epoch" pos="0" show="1443191654.290056000" showname="Epoch Time: 1443191654.290056000 seconds" size="0"/>
-    <field name="frame.time_delta" pos="0" show="0.000352000" showname="Time delta from previous captured frame: 0.000352000 seconds" size="0"/>
-    <field name="frame.time_delta_displayed" pos="0" show="0.000352000" showname="Time delta from previous displayed frame: 0.000352000 seconds" size="0"/>
-    <field name="frame.time_relative" pos="0" show="7.824425000" showname="Time since reference or first frame: 7.824425000 seconds" size="0"/>
-    <field name="frame.number" pos="0" show="13" showname="Frame Number: 13" size="0"/>
-    <field name="frame.len" pos="0" show="122" showname="Frame Length: 122 bytes (976 bits)" size="0"/>
-    <field name="frame.cap_len" pos="0" show="122" showname="Capture Length: 122 bytes (976 bits)" size="0"/>
-    <field name="frame.marked" pos="0" show="0" showname="Frame is marked: False" size="0"/>
-    <field name="frame.ignored" pos="0" show="0" showname="Frame is ignored: False" size="0"/>
-    <field name="frame.protocols" pos="0" show="eth:ethertype:ip:sctp:s1ap:s1ap:s1ap:s1ap:s1ap:s1ap" showname="Protocols in frame: eth:ethertype:ip:sctp:s1ap:s1ap:s1ap:s1ap:s1ap:s1ap" size="0"/>
-  </proto>
-  
-  <proto name="ip" pos="14" showname="Internet Protocol Version 4, Src: 192.168.12.213 (192.168.12.213), Dst: 192.168.12.17 (192.168.12.17)" size="20">
-    <field name="ip.version" pos="14" show="4" showname="Version: 4" size="1" value="45"/>
-    <field name="ip.hdr_len" pos="14" show="20" showname="Header Length: 20 bytes" size="1" value="45"/>
-    <field name="ip.dsfield" pos="15" show="2" showname="Differentiated Services Field: 0x02 (DSCP 0x00: Default; ECN: 0x02: ECT(0) (ECN-Capable Transport))" size="1" value="02">
-      <field name="ip.dsfield.dscp" pos="15" show="0" showname="0000 00.. = Differentiated Services Codepoint: Default (0x00)" size="1" unmaskedvalue="02" value="0"/>
-      <field name="ip.dsfield.ecn" pos="15" show="2" showname=".... ..10 = Explicit Congestion Notification: ECT(0) (ECN-Capable Transport) (0x02)" size="1" unmaskedvalue="02" value="2"/>
-    </field>
-    <field name="ip.len" pos="16" show="108" showname="Total Length: 108" size="2" value="006c"/>
-    <field name="ip.id" pos="18" show="1" showname="Identification: 0x0001 (1)" size="2" value="0001"/>
-    <field name="ip.flags" pos="20" show="2" showname="Flags: 0x02 (Don't Fragment)" size="1" value="40">
-      <field name="ip.flags.rb" pos="20" show="0" showname="0... .... = Reserved bit: Not set" size="1" value="40"/>
-      <field name="ip.flags.df" pos="20" show="1" showname=".1.. .... = Don't fragment: Set" size="1" value="40"/>
-      <field name="ip.flags.mf" pos="20" show="0" showname="..0. .... = More fragments: Not set" size="1" value="40"/>
-    </field>
-    <field name="ip.frag_offset" pos="20" show="0" showname="Fragment offset: 0" size="2" value="4000"/>
-    <field name="ip.ttl" pos="22" show="64" showname="Time to live: 64" size="1" value="40"/>
-    <field name="ip.proto" pos="23" show="132" showname="Protocol: SCTP (132)" size="1" value="84"/>
-    <field name="ip.checksum" pos="24" show="40916" showname="Header checksum: 0x9fd4 [validation disabled]" size="2" value="9fd4">
-      <field name="ip.checksum_good" pos="24" show="0" showname="Good: False" size="2" value="9fd4"/>
-      <field name="ip.checksum_bad" pos="24" show="0" showname="Bad: False" size="2" value="9fd4"/>
-    </field>
-    <field name="ip.src" pos="26" show="192.168.12.213" showname="Source: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.addr" pos="26" show="192.168.12.213" showname="Source or Destination Address: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.src_host" pos="26" show="192.168.12.213" showname="Source Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.host" pos="26" show="192.168.12.213" showname="Source or Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-    <field name="ip.dst" pos="30" show="192.168.12.17" showname="Destination: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.addr" pos="30" show="192.168.12.17" showname="Source or Destination Address: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.dst_host" pos="30" show="192.168.12.17" showname="Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.host" pos="30" show="192.168.12.17" showname="Source or Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-    <field name="" pos="26" show="Source GeoIP: Unknown" size="4" value="c0a80cd5"/>
-    <field name="" pos="30" show="Destination GeoIP: Unknown" size="4" value="c0a80c11"/>
-  </proto>
-  <proto name="sctp" pos="34" showname="Stream Control Transmission Protocol, Src Port: 36412 (36412), Dst Port: 36412 (36412)" size="28">
-    <field name="sctp.srcport" pos="34" show="36412" showname="Source port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.dstport" pos="36" show="36412" showname="Destination port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.verification_tag" pos="38" show="1288826016" showname="Verification tag: 0x4cd1eca0" size="4" value="4cd1eca0"/>
-    <field name="sctp.assoc_index" pos="34" show="0" showname="Assocation index: 0" size="0"/>
-    <field hide="yes" name="sctp.port" pos="34" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-    <field hide="yes" name="sctp.port" pos="36" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.checksum" pos="42" show="2575421627" showname="Checksum: 0x9981d0bb (not verified)" size="4" value="9981d0bb"/>
-    <field name="" pos="46" show="DATA chunk(ordered, complete segment, TSN: 3304831191, SID: 0, SSN: 0, PPID: 18, payload length: 59 bytes)" size="16" value="0003004bc4fbb8d70000000000000012">
-      <field name="sctp.chunk_type" pos="46" show="0" showname="Chunk type: DATA (0)" size="1" value="00">
-        <field name="sctp.chunk_bit_1" pos="46" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="00" value="0"/>
-        <field name="sctp.chunk_bit_2" pos="46" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="00" value="0"/>
-      </field>
-      <field name="sctp.chunk_flags" pos="47" show="3" showname="Chunk flags: 0x03" size="1" value="03">
-        <field name="sctp.data_e_bit" pos="47" show="1" showname=".... ...1 = E-Bit: Last segment" size="1" unmaskedvalue="03" value="1"/>
-        <field name="sctp.data_b_bit" pos="47" show="1" showname=".... ..1. = B-Bit: First segment" size="1" unmaskedvalue="03" value="1"/>
-        <field name="sctp.data_u_bit" pos="47" show="0" showname=".... .0.. = U-Bit: Ordered delivery" size="1" unmaskedvalue="03" value="0"/>
-        <field name="sctp.data_i_bit" pos="47" show="0" showname=".... 0... = I-Bit: Possibly delay SACK" size="1" unmaskedvalue="03" value="0"/>
-      </field>
-      <field name="sctp.chunk_length" pos="48" show="75" showname="Chunk length: 75" size="2" value="004b"/>
-      <field name="sctp.data_tsn" pos="50" show="3304831191" showname="TSN: 3304831191" size="4" value="c4fbb8d7"/>
-      <field name="sctp.data_sid" pos="54" show="0" showname="Stream Identifier: 0x0000" size="2" value="0000"/>
-      <field name="sctp.data_ssn" pos="56" show="0" showname="Stream sequence number: 0" size="2" value="0000"/>
-      <field name="sctp.data_payload_proto_id" pos="58" show="18" showname="Payload protocol identifier: S1 Application Protocol (S1AP) (18)" size="4" value="00000012"/>
-      <field name="sctp.chunk_padding" pos="121" show="00" showname="Chunk padding: 00" size="1" value="00"/>
-    </field>
-  </proto>
-  <proto name="s1ap" pos="62" showname="S1 Application Protocol" size="59">
-    <field hide="yes" name="per.extension_bit" pos="62" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-    <field hide="yes" name="per.choice_index" pos="62" show="0" showname="Choice Index: 0" size="1" value="00"/>
-    <field name="s1ap.S1AP_PDU" pos="62" show="0" showname="S1AP-PDU: initiatingMessage (0)" size="59" value="00110037000004003b00080002f8590000e000003c40140880654e425f45757265636f6d5f4c5445426f78004000070000004002f8590089400140">
-      <field name="s1ap.initiatingMessage_element" pos="62" show="" showname="initiatingMessage" size="59" value="">
-        <field name="s1ap.procedureCode" pos="63" show="17" showname="procedureCode: id-S1Setup (17)" size="1" value="11"/>
-        <field hide="yes" name="per.enum_index" pos="64" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-        <field name="s1ap.criticality" pos="64" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-        <field hide="yes" name="per.open_type_length" pos="65" show="55" showname="Open Type Length: 55" size="1" value="37"/>
-        <field name="s1ap.value_element" pos="66" show="" showname="value" size="55" value="">
-          <field name="s1ap.S1SetupRequest_element" pos="66" show="" showname="S1SetupRequest" size="55" value="">
-            <field hide="yes" name="per.extension_bit" pos="66" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-            <field hide="yes" name="per.sequence_of_length" pos="67" show="4" showname="Sequence-Of Length: 4" size="2" value="0004"/>
-            <field name="s1ap.protocolIEs" pos="69" show="4" showname="protocolIEs: 4 items" size="52" value="003b00080002f8590000e000003c40140880654e425f45757265636f6d5f4c5445426f78004000070000004002f8590089400140">
-              <field name="" pos="69" show="Item 0: id-Global-ENB-ID" size="12" value="003b00080002f8590000e000">
-                <field name="s1ap.ProtocolIE_Field_element" pos="69" show="" showname="ProtocolIE-Field" size="12" value="">
-                  <field name="s1ap.id" pos="69" show="59" showname="id: id-Global-ENB-ID (59)" size="2" value="003b"/>
-                  <field hide="yes" name="per.enum_index" pos="71" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                  <field name="s1ap.criticality" pos="71" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                  <field hide="yes" name="per.open_type_length" pos="72" show="8" showname="Open Type Length: 8" size="1" value="08"/>
-                  <field name="s1ap.value_element" pos="73" show="" showname="value" size="8" value="">
-                    <field name="s1ap.Global_ENB_ID_element" pos="73" show="" showname="Global-ENB-ID" size="7" value="">
-                      <field hide="yes" name="per.extension_bit" pos="73" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-                      <field hide="yes" name="per.optional_field_bit" pos="73" show="0" showname=".0.. .... Optional Field Bit: False (iE-Extensions is NOT present)" size="1" unmaskedvalue="00" value="0"/>
-                      <field name="s1ap.pLMNidentity" pos="74" show="02:f8:59" showname="pLMNidentity: 02f859" size="3" value="02f859"/>
-                      <field name="e212.mcc" pos="74" show="208" showname="Mobile Country Code (MCC): France (208)" size="2" value="02f8"/>
-                      <field name="e212.mnc" pos="75" show="95" showname="Mobile Network Code (MNC): Unknown (95)" size="2" value="f859"/>
-                      <field hide="yes" name="per.extension_bit" pos="77" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-                      <field hide="yes" name="per.choice_index" pos="77" show="0" showname="Choice Index: 0" size="1" value="00"/>
-                      <field name="s1ap.eNB_ID" pos="77" show="0" showname="eNB-ID: macroENB-ID (0)" size="3" value="0000e0">
-                        <field name="s1ap.macroENB_ID" pos="77" show="00:e0:00" showname="macroENB-ID: 00e000 [bit length 20, 4 LSB pad bits, 0000 0000  1110 0000  0000 .... decimal value 3584]" size="3" value="00e000"/>
-                      </field>
-                    </field>
-                  </field>
-                </field>
-              </field>
-              <field name="" pos="81" show="Item 1: id-eNBname" size="24" value="003c40140880654e425f45757265636f6d5f4c5445426f78">
-                <field name="s1ap.ProtocolIE_Field_element" pos="81" show="" showname="ProtocolIE-Field" size="24" value="">
-                  <field name="s1ap.id" pos="81" show="60" showname="id: id-eNBname (60)" size="2" value="003c"/>
-                  <field hide="yes" name="per.enum_index" pos="83" show="1" showname="Enumerated Index: 1" size="1" value="40"/>
-                  <field name="s1ap.criticality" pos="83" show="1" showname="criticality: ignore (1)" size="1" value="40"/>
-                  <field hide="yes" name="per.open_type_length" pos="84" show="20" showname="Open Type Length: 20" size="1" value="14"/>
-                  <field name="s1ap.value_element" pos="85" show="" showname="value" size="20" value="">
-                    <field name="per.extension_present_bit" pos="85" show="0" showname="0... .... Extension Present Bit: False" size="1" unmaskedvalue="08" value="0"/>
-                    <field hide="yes" name="per.octet_string_length" pos="85" show="18" showname="Octet String Length: 18" size="1" value="08"/>
-                    <field name="s1ap.ENBname" pos="87" show="eNB_Eurecom_LTEBox" showname="ENBname: eNB_Eurecom_LTEBox" size="18" value="654e425f45757265636f6d5f4c5445426f78"/>
-                  </field>
-                </field>
-              </field>
-              <field name="" pos="105" show="Item 2: id-SupportedTAs" size="11" value="004000070000004002f859">
-                <field name="s1ap.ProtocolIE_Field_element" pos="105" show="" showname="ProtocolIE-Field" size="11" value="">
-                  <field name="s1ap.id" pos="105" show="64" showname="id: id-SupportedTAs (64)" size="2" value="0040"/>
-                  <field hide="yes" name="per.enum_index" pos="107" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                  <field name="s1ap.criticality" pos="107" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                  <field hide="yes" name="per.open_type_length" pos="108" show="7" showname="Open Type Length: 7" size="1" value="07"/>
-                  <field name="s1ap.value_element" pos="109" show="" showname="value" size="7" value="">
-                    <field hide="yes" name="per.sequence_of_length" pos="109" show="1" showname="Sequence-Of Length: 1" size="1" value="00"/>
-                    <field name="s1ap.SupportedTAs" pos="110" show="1" showname="SupportedTAs: 1 item" size="6" value="00004002f859">
-                      <field name="" pos="110" show="Item 0" size="6" value="00004002f859">
-                        <field name="s1ap.SupportedTAs_Item_element" pos="110" show="" showname="SupportedTAs-Item" size="6" value="">
-                          <field hide="yes" name="per.extension_bit" pos="110" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-                          <field hide="yes" name="per.optional_field_bit" pos="110" show="0" showname=".0.. .... Optional Field Bit: False (iE-Extensions is NOT present)" size="1" unmaskedvalue="00" value="0"/>
-                          <field name="s1ap.tAC" pos="110" show="00:01" showname="tAC: 0001" size="2" value="0001"/>
-                          <field hide="yes" name="per.sequence_of_length" pos="112" show="1" showname="Sequence-Of Length: 1" size="1" value="40"/>
-                          <field name="s1ap.broadcastPLMNs" pos="112" show="1" showname="broadcastPLMNs: 1 item" size="4" value="4002f859">
-                            <field name="" pos="112" show="Item 0" size="4" value="4002f859">
-                              <field name="s1ap.PLMNidentity" pos="113" show="02:f8:59" showname="PLMNidentity: 02f859" size="3" value="02f859"/>
-                              <field name="e212.mcc" pos="113" show="208" showname="Mobile Country Code (MCC): France (208)" size="2" value="02f8"/>
-                              <field name="e212.mnc" pos="114" show="95" showname="Mobile Network Code (MNC): Unknown (95)" size="2" value="f859"/>
-                            </field>
-                          </field>
-                        </field>
-                      </field>
-                    </field>
-                  </field>
-                </field>
-              </field>
-              <field name="" pos="116" show="Item 3: id-DefaultPagingDRX" size="5" value="0089400140">
-                <field name="s1ap.ProtocolIE_Field_element" pos="116" show="" showname="ProtocolIE-Field" size="5" value="">
-                  <field name="s1ap.id" pos="116" show="137" showname="id: id-DefaultPagingDRX (137)" size="2" value="0089"/>
-                  <field hide="yes" name="per.enum_index" pos="118" show="1" showname="Enumerated Index: 1" size="1" value="40"/>
-                  <field name="s1ap.criticality" pos="118" show="1" showname="criticality: ignore (1)" size="1" value="40"/>
-                  <field hide="yes" name="per.open_type_length" pos="119" show="1" showname="Open Type Length: 1" size="1" value="01"/>
-                  <field name="s1ap.value_element" pos="120" show="" showname="value" size="1" value="">
-                    <field hide="yes" name="per.extension_present_bit" pos="120" show="0" showname="0... .... Extension Present Bit: False" size="1" unmaskedvalue="40" value="0"/>
-                    <field hide="yes" name="per.enum_index" pos="120" show="2" showname="Enumerated Index: 2" size="1" value="40"/>
-                    <field name="s1ap.PagingDRX" pos="120" show="2" showname="PagingDRX: v128 (2)" size="1" value="40"/>
-                  </field>
-                </field>
-              </field>
-            </field>
-          </field>
-        </field>
-      </field>
-    </field>
-  </proto>
-</packet>
-<packet>
-  
-  <proto name="frame" pos="0" showname="Frame 14: 62 bytes on wire (496 bits), 62 bytes captured (496 bits) on interface 0" size="62">
-    <field name="frame.interface_id" pos="0" show="0" showname="Interface id: 0 (eth0)" size="0"/>
-    <field name="frame.encap_type" pos="0" show="1" showname="Encapsulation type: Ethernet (1)" size="0"/>
-    <field name="frame.time" pos="0" show="Sep 25, 2015 16:34:14.290087000 CEST" showname="Arrival Time: Sep 25, 2015 16:34:14.290087000 CEST" size="0"/>
-    <field name="frame.offset_shift" pos="0" show="0.000000000" showname="Time shift for this packet: 0.000000000 seconds" size="0"/>
-    <field name="frame.time_epoch" pos="0" show="1443191654.290087000" showname="Epoch Time: 1443191654.290087000 seconds" size="0"/>
-    <field name="frame.time_delta" pos="0" show="0.000031000" showname="Time delta from previous captured frame: 0.000031000 seconds" size="0"/>
-    <field name="frame.time_delta_displayed" pos="0" show="0.000031000" showname="Time delta from previous displayed frame: 0.000031000 seconds" size="0"/>
-    <field name="frame.time_relative" pos="0" show="7.824456000" showname="Time since reference or first frame: 7.824456000 seconds" size="0"/>
-    <field name="frame.number" pos="0" show="14" showname="Frame Number: 14" size="0"/>
-    <field name="frame.len" pos="0" show="62" showname="Frame Length: 62 bytes (496 bits)" size="0"/>
-    <field name="frame.cap_len" pos="0" show="62" showname="Capture Length: 62 bytes (496 bits)" size="0"/>
-    <field name="frame.marked" pos="0" show="0" showname="Frame is marked: False" size="0"/>
-    <field name="frame.ignored" pos="0" show="0" showname="Frame is ignored: False" size="0"/>
-    <field name="frame.protocols" pos="0" show="eth:ethertype:ip:sctp" showname="Protocols in frame: eth:ethertype:ip:sctp" size="0"/>
-  </proto>
-  
-  <proto name="ip" pos="14" showname="Internet Protocol Version 4, Src: 192.168.12.17 (192.168.12.17), Dst: 192.168.12.213 (192.168.12.213)" size="20">
-    <field name="ip.version" pos="14" show="4" showname="Version: 4" size="1" value="45"/>
-    <field name="ip.hdr_len" pos="14" show="20" showname="Header Length: 20 bytes" size="1" value="45"/>
-    <field name="ip.dsfield" pos="15" show="2" showname="Differentiated Services Field: 0x02 (DSCP 0x00: Default; ECN: 0x02: ECT(0) (ECN-Capable Transport))" size="1" value="02">
-      <field name="ip.dsfield.dscp" pos="15" show="0" showname="0000 00.. = Differentiated Services Codepoint: Default (0x00)" size="1" unmaskedvalue="02" value="0"/>
-      <field name="ip.dsfield.ecn" pos="15" show="2" showname=".... ..10 = Explicit Congestion Notification: ECT(0) (ECN-Capable Transport) (0x02)" size="1" unmaskedvalue="02" value="2"/>
-    </field>
-    <field name="ip.len" pos="16" show="48" showname="Total Length: 48" size="2" value="0030"/>
-    <field name="ip.id" pos="18" show="0" showname="Identification: 0x0000 (0)" size="2" value="0000"/>
-    <field name="ip.flags" pos="20" show="2" showname="Flags: 0x02 (Don't Fragment)" size="1" value="40">
-      <field name="ip.flags.rb" pos="20" show="0" showname="0... .... = Reserved bit: Not set" size="1" value="40"/>
-      <field name="ip.flags.df" pos="20" show="1" showname=".1.. .... = Don't fragment: Set" size="1" value="40"/>
-      <field name="ip.flags.mf" pos="20" show="0" showname="..0. .... = More fragments: Not set" size="1" value="40"/>
-    </field>
-    <field name="ip.frag_offset" pos="20" show="0" showname="Fragment offset: 0" size="2" value="4000"/>
-    <field name="ip.ttl" pos="22" show="64" showname="Time to live: 64" size="1" value="40"/>
-    <field name="ip.proto" pos="23" show="132" showname="Protocol: SCTP (132)" size="1" value="84"/>
-    <field name="ip.checksum" pos="24" show="40977" showname="Header checksum: 0xa011 [validation disabled]" size="2" value="a011">
-      <field name="ip.checksum_good" pos="24" show="0" showname="Good: False" size="2" value="a011"/>
-      <field name="ip.checksum_bad" pos="24" show="0" showname="Bad: False" size="2" value="a011"/>
-    </field>
-    <field name="ip.src" pos="26" show="192.168.12.17" showname="Source: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.addr" pos="26" show="192.168.12.17" showname="Source or Destination Address: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.src_host" pos="26" show="192.168.12.17" showname="Source Host: 192.168.12.17" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.host" pos="26" show="192.168.12.17" showname="Source or Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-    <field name="ip.dst" pos="30" show="192.168.12.213" showname="Destination: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.addr" pos="30" show="192.168.12.213" showname="Source or Destination Address: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.dst_host" pos="30" show="192.168.12.213" showname="Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.host" pos="30" show="192.168.12.213" showname="Source or Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-    <field name="" pos="26" show="Source GeoIP: Unknown" size="4" value="c0a80c11"/>
-    <field name="" pos="30" show="Destination GeoIP: Unknown" size="4" value="c0a80cd5"/>
-  </proto>
-  <proto name="sctp" pos="34" showname="Stream Control Transmission Protocol, Src Port: 36412 (36412), Dst Port: 36412 (36412)" size="28">
-    <field name="sctp.srcport" pos="34" show="36412" showname="Source port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.dstport" pos="36" show="36412" showname="Destination port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.verification_tag" pos="38" show="1425553323" showname="Verification tag: 0x54f837ab" size="4" value="54f837ab"/>
-    <field name="sctp.assoc_index" pos="34" show="0" showname="Assocation index: 0" size="0"/>
-    <field hide="yes" name="sctp.port" pos="34" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-    <field hide="yes" name="sctp.port" pos="36" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.checksum" pos="42" show="446407238" showname="Checksum: 0x1a9ba246 (not verified)" size="4" value="1a9ba246"/>
-    <field name="" pos="46" show="SACK chunk (Cumulative TSN: 3304831191, a_rwnd: 106437, gaps: 0, duplicate TSNs: 0)" size="16" value="03000010c4fbb8d700019fc500000000">
-      <field name="sctp.chunk_type" pos="46" show="3" showname="Chunk type: SACK (3)" size="1" value="03">
-        <field name="sctp.chunk_bit_1" pos="46" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="03" value="0"/>
-        <field name="sctp.chunk_bit_2" pos="46" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="03" value="0"/>
-      </field>
-      <field name="sctp.chunk_flags" pos="47" show="0" showname="Chunk flags: 0x00" size="1" value="00">
-        <field name="sctp.sack_nounce_sum" pos="47" show="0" showname=".... ...0 = Nounce sum: 0" size="1" unmaskedvalue="00" value="0"/>
-      </field>
-      <field name="sctp.chunk_length" pos="48" show="16" showname="Chunk length: 16" size="2" value="0010"/>
-      <field name="sctp.sack_cumulative_tsn_ack" pos="50" show="3304831191" showname="Cumulative TSN ACK: 3304831191" size="4" value="c4fbb8d7">
-        <field name="sctp.ack" pos="96" show="3304831191" showname="Acknowledges TSN: 3304831191" size="0">
-          <field name="sctp.ack_frame" pos="46" show="13" showname="Chunk acknowledged in frame: 13" size="0"/>
-          <field name="sctp.sack_rtt" pos="46" show="0.000031000" showname="The RTT since DATA was: 0.000031000 seconds" size="0"/>
-        </field>
-      </field>
-      <field name="sctp.sack_a_rwnd" pos="54" show="106437" showname="Advertised receiver window credit (a_rwnd): 106437" size="4" value="00019fc5"/>
-      <field name="sctp.sack_number_of_gap_blocks" pos="58" show="0" showname="Number of gap acknowledgement blocks: 0" size="2" value="0000"/>
-      <field name="sctp.sack_number_of_duplicated_tsns" pos="60" show="0" showname="Number of duplicated TSNs: 0" size="2" value="0000"/>
-    </field>
-  </proto>
-</packet>
-<packet>
-  
-  <proto name="frame" pos="0" showname="Frame 15: 114 bytes on wire (912 bits), 114 bytes captured (912 bits) on interface 0" size="114">
-    <field name="frame.interface_id" pos="0" show="0" showname="Interface id: 0 (eth0)" size="0"/>
-    <field name="frame.encap_type" pos="0" show="1" showname="Encapsulation type: Ethernet (1)" size="0"/>
-    <field name="frame.time" pos="0" show="Sep 25, 2015 16:34:14.290488000 CEST" showname="Arrival Time: Sep 25, 2015 16:34:14.290488000 CEST" size="0"/>
-    <field name="frame.offset_shift" pos="0" show="0.000000000" showname="Time shift for this packet: 0.000000000 seconds" size="0"/>
-    <field name="frame.time_epoch" pos="0" show="1443191654.290488000" showname="Epoch Time: 1443191654.290488000 seconds" size="0"/>
-    <field name="frame.time_delta" pos="0" show="0.000401000" showname="Time delta from previous captured frame: 0.000401000 seconds" size="0"/>
-    <field name="frame.time_delta_displayed" pos="0" show="0.000401000" showname="Time delta from previous displayed frame: 0.000401000 seconds" size="0"/>
-    <field name="frame.time_relative" pos="0" show="7.824857000" showname="Time since reference or first frame: 7.824857000 seconds" size="0"/>
-    <field name="frame.number" pos="0" show="15" showname="Frame Number: 15" size="0"/>
-    <field name="frame.len" pos="0" show="114" showname="Frame Length: 114 bytes (912 bits)" size="0"/>
-    <field name="frame.cap_len" pos="0" show="114" showname="Capture Length: 114 bytes (912 bits)" size="0"/>
-    <field name="frame.marked" pos="0" show="0" showname="Frame is marked: False" size="0"/>
-    <field name="frame.ignored" pos="0" show="0" showname="Frame is ignored: False" size="0"/>
-    <field name="frame.protocols" pos="0" show="eth:ethertype:ip:sctp:s1ap:s1ap:s1ap:s1ap" showname="Protocols in frame: eth:ethertype:ip:sctp:s1ap:s1ap:s1ap:s1ap" size="0"/>
-  </proto>
-  
-  <proto name="ip" pos="14" showname="Internet Protocol Version 4, Src: 192.168.12.17 (192.168.12.17), Dst: 192.168.12.213 (192.168.12.213)" size="20">
-    <field name="ip.version" pos="14" show="4" showname="Version: 4" size="1" value="45"/>
-    <field name="ip.hdr_len" pos="14" show="20" showname="Header Length: 20 bytes" size="1" value="45"/>
-    <field name="ip.dsfield" pos="15" show="2" showname="Differentiated Services Field: 0x02 (DSCP 0x00: Default; ECN: 0x02: ECT(0) (ECN-Capable Transport))" size="1" value="02">
-      <field name="ip.dsfield.dscp" pos="15" show="0" showname="0000 00.. = Differentiated Services Codepoint: Default (0x00)" size="1" unmaskedvalue="02" value="0"/>
-      <field name="ip.dsfield.ecn" pos="15" show="2" showname=".... ..10 = Explicit Congestion Notification: ECT(0) (ECN-Capable Transport) (0x02)" size="1" unmaskedvalue="02" value="2"/>
-    </field>
-    <field name="ip.len" pos="16" show="100" showname="Total Length: 100" size="2" value="0064"/>
-    <field name="ip.id" pos="18" show="0" showname="Identification: 0x0000 (0)" size="2" value="0000"/>
-    <field name="ip.flags" pos="20" show="2" showname="Flags: 0x02 (Don't Fragment)" size="1" value="40">
-      <field name="ip.flags.rb" pos="20" show="0" showname="0... .... = Reserved bit: Not set" size="1" value="40"/>
-      <field name="ip.flags.df" pos="20" show="1" showname=".1.. .... = Don't fragment: Set" size="1" value="40"/>
-      <field name="ip.flags.mf" pos="20" show="0" showname="..0. .... = More fragments: Not set" size="1" value="40"/>
-    </field>
-    <field name="ip.frag_offset" pos="20" show="0" showname="Fragment offset: 0" size="2" value="4000"/>
-    <field name="ip.ttl" pos="22" show="64" showname="Time to live: 64" size="1" value="40"/>
-    <field name="ip.proto" pos="23" show="132" showname="Protocol: SCTP (132)" size="1" value="84"/>
-    <field name="ip.checksum" pos="24" show="40925" showname="Header checksum: 0x9fdd [validation disabled]" size="2" value="9fdd">
-      <field name="ip.checksum_good" pos="24" show="0" showname="Good: False" size="2" value="9fdd"/>
-      <field name="ip.checksum_bad" pos="24" show="0" showname="Bad: False" size="2" value="9fdd"/>
-    </field>
-    <field name="ip.src" pos="26" show="192.168.12.17" showname="Source: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.addr" pos="26" show="192.168.12.17" showname="Source or Destination Address: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.src_host" pos="26" show="192.168.12.17" showname="Source Host: 192.168.12.17" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.host" pos="26" show="192.168.12.17" showname="Source or Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-    <field name="ip.dst" pos="30" show="192.168.12.213" showname="Destination: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.addr" pos="30" show="192.168.12.213" showname="Source or Destination Address: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.dst_host" pos="30" show="192.168.12.213" showname="Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.host" pos="30" show="192.168.12.213" showname="Source or Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-    <field name="" pos="26" show="Source GeoIP: Unknown" size="4" value="c0a80c11"/>
-    <field name="" pos="30" show="Destination GeoIP: Unknown" size="4" value="c0a80cd5"/>
-  </proto>
-  <proto name="sctp" pos="34" showname="Stream Control Transmission Protocol, Src Port: 36412 (36412), Dst Port: 36412 (36412)" size="28">
-    <field name="sctp.srcport" pos="34" show="36412" showname="Source port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.dstport" pos="36" show="36412" showname="Destination port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.verification_tag" pos="38" show="1425553323" showname="Verification tag: 0x54f837ab" size="4" value="54f837ab"/>
-    <field name="sctp.assoc_index" pos="34" show="0" showname="Assocation index: 0" size="0"/>
-    <field hide="yes" name="sctp.port" pos="34" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-    <field hide="yes" name="sctp.port" pos="36" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.checksum" pos="42" show="2477264025" showname="Checksum: 0x93a80c99 (not verified)" size="4" value="93a80c99"/>
-    <field name="" pos="46" show="DATA chunk(ordered, complete segment, TSN: 2008295175, SID: 0, SSN: 0, PPID: 301989888, payload length: 49 bytes)" size="16" value="0003004177b427070000000012000000">
-      <field name="sctp.chunk_type" pos="46" show="0" showname="Chunk type: DATA (0)" size="1" value="00">
-        <field name="sctp.chunk_bit_1" pos="46" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="00" value="0"/>
-        <field name="sctp.chunk_bit_2" pos="46" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="00" value="0"/>
-      </field>
-      <field name="sctp.chunk_flags" pos="47" show="3" showname="Chunk flags: 0x03" size="1" value="03">
-        <field name="sctp.data_e_bit" pos="47" show="1" showname=".... ...1 = E-Bit: Last segment" size="1" unmaskedvalue="03" value="1"/>
-        <field name="sctp.data_b_bit" pos="47" show="1" showname=".... ..1. = B-Bit: First segment" size="1" unmaskedvalue="03" value="1"/>
-        <field name="sctp.data_u_bit" pos="47" show="0" showname=".... .0.. = U-Bit: Ordered delivery" size="1" unmaskedvalue="03" value="0"/>
-        <field name="sctp.data_i_bit" pos="47" show="0" showname=".... 0... = I-Bit: Possibly delay SACK" size="1" unmaskedvalue="03" value="0"/>
-      </field>
-      <field name="sctp.chunk_length" pos="48" show="65" showname="Chunk length: 65" size="2" value="0041"/>
-      <field name="sctp.data_tsn" pos="50" show="2008295175" showname="TSN: 2008295175" size="4" value="77b42707"/>
-      <field name="sctp.data_sid" pos="54" show="0" showname="Stream Identifier: 0x0000" size="2" value="0000"/>
-      <field name="sctp.data_ssn" pos="56" show="0" showname="Stream sequence number: 0" size="2" value="0000"/>
-      <field name="sctp.data_payload_proto_id" pos="58" show="301989888" showname="Payload protocol identifier: Unknown (301989888)" size="4" value="12000000"/>
-      <field name="sctp.chunk_padding" pos="111" show="00:00:00" showname="Chunk padding: 000000" size="3" value="000000"/>
-    </field>
-  </proto>
-  <proto name="s1ap" pos="62" showname="S1 Application Protocol" size="49">
-    <field hide="yes" name="per.extension_bit" pos="62" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="20" value="0"/>
-    <field hide="yes" name="per.choice_index" pos="62" show="1" showname="Choice Index: 1" size="1" value="20"/>
-    <field name="s1ap.S1AP_PDU" pos="62" show="1" showname="S1AP-PDU: successfulOutcome (1)" size="49" value="2011002d00000200690021000002f8590006800000040005001e00080009c3650a011e1f2021222324381d08005740010a">
-      <field name="s1ap.successfulOutcome_element" pos="62" show="" showname="successfulOutcome" size="49" value="">
-        <field name="s1ap.procedureCode" pos="63" show="17" showname="procedureCode: id-S1Setup (17)" size="1" value="11"/>
-        <field hide="yes" name="per.enum_index" pos="64" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-        <field name="s1ap.criticality" pos="64" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-        <field hide="yes" name="per.open_type_length" pos="65" show="45" showname="Open Type Length: 45" size="1" value="2d"/>
-        <field name="s1ap.value_element" pos="66" show="" showname="value" size="45" value="">
-          <field name="s1ap.S1SetupResponse_element" pos="66" show="" showname="S1SetupResponse" size="45" value="">
-            <field hide="yes" name="per.extension_bit" pos="66" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-            <field hide="yes" name="per.sequence_of_length" pos="67" show="2" showname="Sequence-Of Length: 2" size="2" value="0002"/>
-            <field name="s1ap.protocolIEs" pos="69" show="2" showname="protocolIEs: 2 items" size="42" value="00690021000002f8590006800000040005001e00080009c3650a011e1f2021222324381d08005740010a">
-              <field name="" pos="69" show="Item 0: id-ServedGUMMEIs" size="37" value="00690021000002f8590006800000040005001e00080009c3650a011e1f2021222324381d08">
-                <field name="s1ap.ProtocolIE_Field_element" pos="69" show="" showname="ProtocolIE-Field" size="37" value="">
-                  <field name="s1ap.id" pos="69" show="105" showname="id: id-ServedGUMMEIs (105)" size="2" value="0069"/>
-                  <field hide="yes" name="per.enum_index" pos="71" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                  <field name="s1ap.criticality" pos="71" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                  <field hide="yes" name="per.open_type_length" pos="72" show="33" showname="Open Type Length: 33" size="1" value="21"/>
-                  <field name="s1ap.value_element" pos="73" show="" showname="value" size="33" value="">
-                    <field hide="yes" name="per.sequence_of_length" pos="73" show="1" showname="Sequence-Of Length: 1" size="1" value="00"/>
-                    <field name="s1ap.ServedGUMMEIs" pos="73" show="1" showname="ServedGUMMEIs: 1 item" size="33" value="000002f8590006800000040005001e00080009c3650a011e1f2021222324381d08">
-                      <field name="" pos="73" show="Item 0" size="33" value="000002f8590006800000040005001e00080009c3650a011e1f2021222324381d08">
-                        <field name="s1ap.ServedGUMMEIsItem_element" pos="73" show="" showname="ServedGUMMEIsItem" size="33" value="">
-                          <field hide="yes" name="per.extension_bit" pos="73" show="0" showname="...0 .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-                          <field hide="yes" name="per.optional_field_bit" pos="73" show="0" showname=".... 0... Optional Field Bit: False (iE-Extensions is NOT present)" size="1" unmaskedvalue="00" value="0"/>
-                          <field hide="yes" name="per.sequence_of_length" pos="73" show="1" showname="Sequence-Of Length: 1" size="1" value="00"/>
-                          <field name="s1ap.servedPLMNs" pos="74" show="1" showname="servedPLMNs: 1 item" size="4" value="0002f859">
-                            <field name="" pos="74" show="Item 0" size="4" value="0002f859">
-                              <field name="s1ap.PLMNidentity" pos="75" show="02:f8:59" showname="PLMNidentity: 02f859" size="3" value="02f859"/>
-                              <field name="e212.mcc" pos="75" show="208" showname="Mobile Country Code (MCC): France (208)" size="2" value="02f8"/>
-                              <field name="e212.mnc" pos="76" show="95" showname="Mobile Network Code (MNC): Unknown (95)" size="2" value="f859"/>
-                            </field>
-                          </field>
-                          <field hide="yes" name="per.sequence_of_length" pos="78" show="7" showname="Sequence-Of Length: 7" size="2" value="0006"/>
-                          <field name="s1ap.servedGroupIDs" pos="80" show="7" showname="servedGroupIDs: 7 items" size="14" value="800000040005001e00080009c365">
-                            <field name="" pos="80" show="Item 0" size="2" value="8000">
-                              <field name="s1ap.MME_Group_ID" pos="80" show="80:00" showname="MME-Group-ID: 8000" size="2" value="8000"/>
-                            </field>
-                            <field name="" pos="82" show="Item 1" size="2" value="0004">
-                              <field name="s1ap.MME_Group_ID" pos="82" show="00:04" showname="MME-Group-ID: 0004" size="2" value="0004"/>
-                            </field>
-                            <field name="" pos="84" show="Item 2" size="2" value="0005">
-                              <field name="s1ap.MME_Group_ID" pos="84" show="00:05" showname="MME-Group-ID: 0005" size="2" value="0005"/>
-                            </field>
-                            <field name="" pos="86" show="Item 3" size="2" value="001e">
-                              <field name="s1ap.MME_Group_ID" pos="86" show="00:1e" showname="MME-Group-ID: 001e" size="2" value="001e"/>
-                            </field>
-                            <field name="" pos="88" show="Item 4" size="2" value="0008">
-                              <field name="s1ap.MME_Group_ID" pos="88" show="00:08" showname="MME-Group-ID: 0008" size="2" value="0008"/>
-                            </field>
-                            <field name="" pos="90" show="Item 5" size="2" value="0009">
-                              <field name="s1ap.MME_Group_ID" pos="90" show="00:09" showname="MME-Group-ID: 0009" size="2" value="0009"/>
-                            </field>
-                            <field name="" pos="92" show="Item 6" size="2" value="c365">
-                              <field name="s1ap.MME_Group_ID" pos="92" show="c3:65" showname="MME-Group-ID: c365" size="2" value="c365"/>
-                            </field>
-                          </field>
-                          <field hide="yes" name="per.sequence_of_length" pos="94" show="11" showname="Sequence-Of Length: 11" size="1" value="0a"/>
-                          <field name="s1ap.servedMMECs" pos="95" show="11" showname="servedMMECs: 11 items" size="11" value="011e1f2021222324381d08">
-                            <field name="" pos="95" show="Item 0" size="1" value="01">
-                              <field name="s1ap.MME_Code" pos="95" show="01" showname="MME-Code: 01" size="1" value="01"/>
-                            </field>
-                            <field name="" pos="96" show="Item 1" size="1" value="1e">
-                              <field name="s1ap.MME_Code" pos="96" show="1e" showname="MME-Code: 1e" size="1" value="1e"/>
-                            </field>
-                            <field name="" pos="97" show="Item 2" size="1" value="1f">
-                              <field name="s1ap.MME_Code" pos="97" show="1f" showname="MME-Code: 1f" size="1" value="1f"/>
-                            </field>
-                            <field name="" pos="98" show="Item 3" size="1" value="20">
-                              <field name="s1ap.MME_Code" pos="98" show="20" showname="MME-Code: 20" size="1" value="20"/>
-                            </field>
-                            <field name="" pos="99" show="Item 4" size="1" value="21">
-                              <field name="s1ap.MME_Code" pos="99" show="21" showname="MME-Code: 21" size="1" value="21"/>
-                            </field>
-                            <field name="" pos="100" show="Item 5" size="1" value="22">
-                              <field name="s1ap.MME_Code" pos="100" show="22" showname="MME-Code: 22" size="1" value="22"/>
-                            </field>
-                            <field name="" pos="101" show="Item 6" size="1" value="23">
-                              <field name="s1ap.MME_Code" pos="101" show="23" showname="MME-Code: 23" size="1" value="23"/>
-                            </field>
-                            <field name="" pos="102" show="Item 7" size="1" value="24">
-                              <field name="s1ap.MME_Code" pos="102" show="24" showname="MME-Code: 24" size="1" value="24"/>
-                            </field>
-                            <field name="" pos="103" show="Item 8" size="1" value="38">
-                              <field name="s1ap.MME_Code" pos="103" show="38" showname="MME-Code: 38" size="1" value="38"/>
-                            </field>
-                            <field name="" pos="104" show="Item 9" size="1" value="1d">
-                              <field name="s1ap.MME_Code" pos="104" show="1d" showname="MME-Code: 1d" size="1" value="1d"/>
-                            </field>
-                            <field name="" pos="105" show="Item 10" size="1" value="08">
-                              <field name="s1ap.MME_Code" pos="105" show="08" showname="MME-Code: 08" size="1" value="08"/>
-                            </field>
-                          </field>
-                        </field>
-                      </field>
-                    </field>
-                  </field>
-                </field>
-              </field>
-              <field name="" pos="106" show="Item 1: id-RelativeMMECapacity" size="5" value="005740010a">
-                <field name="s1ap.ProtocolIE_Field_element" pos="106" show="" showname="ProtocolIE-Field" size="5" value="">
-                  <field name="s1ap.id" pos="106" show="87" showname="id: id-RelativeMMECapacity (87)" size="2" value="0057"/>
-                  <field hide="yes" name="per.enum_index" pos="108" show="1" showname="Enumerated Index: 1" size="1" value="40"/>
-                  <field name="s1ap.criticality" pos="108" show="1" showname="criticality: ignore (1)" size="1" value="40"/>
-                  <field hide="yes" name="per.open_type_length" pos="109" show="1" showname="Open Type Length: 1" size="1" value="01"/>
-                  <field name="s1ap.value_element" pos="110" show="" showname="value" size="1" value="">
-                    <field name="s1ap.RelativeMMECapacity" pos="110" show="10" showname="RelativeMMECapacity: 10" size="1" value="0a"/>
-                  </field>
-                </field>
-              </field>
-            </field>
-          </field>
-        </field>
-      </field>
-    </field>
-  </proto>
-</packet>
-<packet>
-  
-  <proto name="frame" pos="0" showname="Frame 16: 62 bytes on wire (496 bits), 62 bytes captured (496 bits) on interface 0" size="62">
-    <field name="frame.interface_id" pos="0" show="0" showname="Interface id: 0 (eth0)" size="0"/>
-    <field name="frame.encap_type" pos="0" show="1" showname="Encapsulation type: Ethernet (1)" size="0"/>
-    <field name="frame.time" pos="0" show="Sep 25, 2015 16:34:14.290617000 CEST" showname="Arrival Time: Sep 25, 2015 16:34:14.290617000 CEST" size="0"/>
-    <field name="frame.offset_shift" pos="0" show="0.000000000" showname="Time shift for this packet: 0.000000000 seconds" size="0"/>
-    <field name="frame.time_epoch" pos="0" show="1443191654.290617000" showname="Epoch Time: 1443191654.290617000 seconds" size="0"/>
-    <field name="frame.time_delta" pos="0" show="0.000129000" showname="Time delta from previous captured frame: 0.000129000 seconds" size="0"/>
-    <field name="frame.time_delta_displayed" pos="0" show="0.000129000" showname="Time delta from previous displayed frame: 0.000129000 seconds" size="0"/>
-    <field name="frame.time_relative" pos="0" show="7.824986000" showname="Time since reference or first frame: 7.824986000 seconds" size="0"/>
-    <field name="frame.number" pos="0" show="16" showname="Frame Number: 16" size="0"/>
-    <field name="frame.len" pos="0" show="62" showname="Frame Length: 62 bytes (496 bits)" size="0"/>
-    <field name="frame.cap_len" pos="0" show="62" showname="Capture Length: 62 bytes (496 bits)" size="0"/>
-    <field name="frame.marked" pos="0" show="0" showname="Frame is marked: False" size="0"/>
-    <field name="frame.ignored" pos="0" show="0" showname="Frame is ignored: False" size="0"/>
-    <field name="frame.protocols" pos="0" show="eth:ethertype:ip:sctp" showname="Protocols in frame: eth:ethertype:ip:sctp" size="0"/>
-  </proto>
-  
-  <proto name="ip" pos="14" showname="Internet Protocol Version 4, Src: 192.168.12.213 (192.168.12.213), Dst: 192.168.12.17 (192.168.12.17)" size="20">
-    <field name="ip.version" pos="14" show="4" showname="Version: 4" size="1" value="45"/>
-    <field name="ip.hdr_len" pos="14" show="20" showname="Header Length: 20 bytes" size="1" value="45"/>
-    <field name="ip.dsfield" pos="15" show="2" showname="Differentiated Services Field: 0x02 (DSCP 0x00: Default; ECN: 0x02: ECT(0) (ECN-Capable Transport))" size="1" value="02">
-      <field name="ip.dsfield.dscp" pos="15" show="0" showname="0000 00.. = Differentiated Services Codepoint: Default (0x00)" size="1" unmaskedvalue="02" value="0"/>
-      <field name="ip.dsfield.ecn" pos="15" show="2" showname=".... ..10 = Explicit Congestion Notification: ECT(0) (ECN-Capable Transport) (0x02)" size="1" unmaskedvalue="02" value="2"/>
-    </field>
-    <field name="ip.len" pos="16" show="48" showname="Total Length: 48" size="2" value="0030"/>
-    <field name="ip.id" pos="18" show="2" showname="Identification: 0x0002 (2)" size="2" value="0002"/>
-    <field name="ip.flags" pos="20" show="2" showname="Flags: 0x02 (Don't Fragment)" size="1" value="40">
-      <field name="ip.flags.rb" pos="20" show="0" showname="0... .... = Reserved bit: Not set" size="1" value="40"/>
-      <field name="ip.flags.df" pos="20" show="1" showname=".1.. .... = Don't fragment: Set" size="1" value="40"/>
-      <field name="ip.flags.mf" pos="20" show="0" showname="..0. .... = More fragments: Not set" size="1" value="40"/>
-    </field>
-    <field name="ip.frag_offset" pos="20" show="0" showname="Fragment offset: 0" size="2" value="4000"/>
-    <field name="ip.ttl" pos="22" show="64" showname="Time to live: 64" size="1" value="40"/>
-    <field name="ip.proto" pos="23" show="132" showname="Protocol: SCTP (132)" size="1" value="84"/>
-    <field name="ip.checksum" pos="24" show="40975" showname="Header checksum: 0xa00f [validation disabled]" size="2" value="a00f">
-      <field name="ip.checksum_good" pos="24" show="0" showname="Good: False" size="2" value="a00f"/>
-      <field name="ip.checksum_bad" pos="24" show="0" showname="Bad: False" size="2" value="a00f"/>
-    </field>
-    <field name="ip.src" pos="26" show="192.168.12.213" showname="Source: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.addr" pos="26" show="192.168.12.213" showname="Source or Destination Address: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.src_host" pos="26" show="192.168.12.213" showname="Source Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.host" pos="26" show="192.168.12.213" showname="Source or Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-    <field name="ip.dst" pos="30" show="192.168.12.17" showname="Destination: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.addr" pos="30" show="192.168.12.17" showname="Source or Destination Address: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.dst_host" pos="30" show="192.168.12.17" showname="Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.host" pos="30" show="192.168.12.17" showname="Source or Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-    <field name="" pos="26" show="Source GeoIP: Unknown" size="4" value="c0a80cd5"/>
-    <field name="" pos="30" show="Destination GeoIP: Unknown" size="4" value="c0a80c11"/>
-  </proto>
-  <proto name="sctp" pos="34" showname="Stream Control Transmission Protocol, Src Port: 36412 (36412), Dst Port: 36412 (36412)" size="28">
-    <field name="sctp.srcport" pos="34" show="36412" showname="Source port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.dstport" pos="36" show="36412" showname="Destination port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.verification_tag" pos="38" show="1288826016" showname="Verification tag: 0x4cd1eca0" size="4" value="4cd1eca0"/>
-    <field name="sctp.assoc_index" pos="34" show="0" showname="Assocation index: 0" size="0"/>
-    <field hide="yes" name="sctp.port" pos="34" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-    <field hide="yes" name="sctp.port" pos="36" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.checksum" pos="42" show="1938150339" showname="Checksum: 0x7385d3c3 (not verified)" size="4" value="7385d3c3"/>
-    <field name="" pos="46" show="SACK chunk (Cumulative TSN: 2008295175, a_rwnd: 106447, gaps: 0, duplicate TSNs: 0)" size="16" value="0300001077b4270700019fcf00000000">
-      <field name="sctp.chunk_type" pos="46" show="3" showname="Chunk type: SACK (3)" size="1" value="03">
-        <field name="sctp.chunk_bit_1" pos="46" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="03" value="0"/>
-        <field name="sctp.chunk_bit_2" pos="46" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="03" value="0"/>
-      </field>
-      <field name="sctp.chunk_flags" pos="47" show="0" showname="Chunk flags: 0x00" size="1" value="00">
-        <field name="sctp.sack_nounce_sum" pos="47" show="0" showname=".... ...0 = Nounce sum: 0" size="1" unmaskedvalue="00" value="0"/>
-      </field>
-      <field name="sctp.chunk_length" pos="48" show="16" showname="Chunk length: 16" size="2" value="0010"/>
-      <field name="sctp.sack_cumulative_tsn_ack" pos="50" show="2008295175" showname="Cumulative TSN ACK: 2008295175" size="4" value="77b42707">
-        <field name="sctp.ack" pos="96" show="2008295175" showname="Acknowledges TSN: 2008295175" size="0">
-          <field name="sctp.ack_frame" pos="46" show="15" showname="Chunk acknowledged in frame: 15" size="0"/>
-          <field name="sctp.sack_rtt" pos="46" show="0.000129000" showname="The RTT since DATA was: 0.000129000 seconds" size="0"/>
-        </field>
-      </field>
-      <field name="sctp.sack_a_rwnd" pos="54" show="106447" showname="Advertised receiver window credit (a_rwnd): 106447" size="4" value="00019fcf"/>
-      <field name="sctp.sack_number_of_gap_blocks" pos="58" show="0" showname="Number of gap acknowledgement blocks: 0" size="2" value="0000"/>
-      <field name="sctp.sack_number_of_duplicated_tsns" pos="60" show="0" showname="Number of duplicated TSNs: 0" size="2" value="0000"/>
-    </field>
-  </proto>
-</packet>
-<packet>
-  
-  <proto name="frame" pos="0" showname="Frame 56: 98 bytes on wire (784 bits), 98 bytes captured (784 bits) on interface 0" size="98">
-    <field name="frame.interface_id" pos="0" show="0" showname="Interface id: 0 (eth0)" size="0"/>
-    <field name="frame.encap_type" pos="0" show="1" showname="Encapsulation type: Ethernet (1)" size="0"/>
-    <field name="frame.time" pos="0" show="Sep 25, 2015 16:34:46.604468000 CEST" showname="Arrival Time: Sep 25, 2015 16:34:46.604468000 CEST" size="0"/>
-    <field name="frame.offset_shift" pos="0" show="0.000000000" showname="Time shift for this packet: 0.000000000 seconds" size="0"/>
-    <field name="frame.time_epoch" pos="0" show="1443191686.604468000" showname="Epoch Time: 1443191686.604468000 seconds" size="0"/>
-    <field name="frame.time_delta" pos="0" show="0.112851000" showname="Time delta from previous captured frame: 0.112851000 seconds" size="0"/>
-    <field name="frame.time_delta_displayed" pos="0" show="0.112851000" showname="Time delta from previous displayed frame: 0.112851000 seconds" size="0"/>
-    <field name="frame.time_relative" pos="0" show="40.138837000" showname="Time since reference or first frame: 40.138837000 seconds" size="0"/>
-    <field name="frame.number" pos="0" show="56" showname="Frame Number: 56" size="0"/>
-    <field name="frame.len" pos="0" show="98" showname="Frame Length: 98 bytes (784 bits)" size="0"/>
-    <field name="frame.cap_len" pos="0" show="98" showname="Capture Length: 98 bytes (784 bits)" size="0"/>
-    <field name="frame.marked" pos="0" show="0" showname="Frame is marked: False" size="0"/>
-    <field name="frame.ignored" pos="0" show="0" showname="Frame is ignored: False" size="0"/>
-    <field name="frame.protocols" pos="0" show="eth:ethertype:ip:sctp" showname="Protocols in frame: eth:ethertype:ip:sctp" size="0"/>
-  </proto>
-  
-  <proto name="ip" pos="14" showname="Internet Protocol Version 4, Src: 192.168.12.213 (192.168.12.213), Dst: 192.168.12.17 (192.168.12.17)" size="20">
-    <field name="ip.version" pos="14" show="4" showname="Version: 4" size="1" value="45"/>
-    <field name="ip.hdr_len" pos="14" show="20" showname="Header Length: 20 bytes" size="1" value="45"/>
-    <field name="ip.dsfield" pos="15" show="2" showname="Differentiated Services Field: 0x02 (DSCP 0x00: Default; ECN: 0x02: ECT(0) (ECN-Capable Transport))" size="1" value="02">
-      <field name="ip.dsfield.dscp" pos="15" show="0" showname="0000 00.. = Differentiated Services Codepoint: Default (0x00)" size="1" unmaskedvalue="02" value="0"/>
-      <field name="ip.dsfield.ecn" pos="15" show="2" showname=".... ..10 = Explicit Congestion Notification: ECT(0) (ECN-Capable Transport) (0x02)" size="1" unmaskedvalue="02" value="2"/>
-    </field>
-    <field name="ip.len" pos="16" show="84" showname="Total Length: 84" size="2" value="0054"/>
-    <field name="ip.id" pos="18" show="3" showname="Identification: 0x0003 (3)" size="2" value="0003"/>
-    <field name="ip.flags" pos="20" show="2" showname="Flags: 0x02 (Don't Fragment)" size="1" value="40">
-      <field name="ip.flags.rb" pos="20" show="0" showname="0... .... = Reserved bit: Not set" size="1" value="40"/>
-      <field name="ip.flags.df" pos="20" show="1" showname=".1.. .... = Don't fragment: Set" size="1" value="40"/>
-      <field name="ip.flags.mf" pos="20" show="0" showname="..0. .... = More fragments: Not set" size="1" value="40"/>
-    </field>
-    <field name="ip.frag_offset" pos="20" show="0" showname="Fragment offset: 0" size="2" value="4000"/>
-    <field name="ip.ttl" pos="22" show="64" showname="Time to live: 64" size="1" value="40"/>
-    <field name="ip.proto" pos="23" show="132" showname="Protocol: SCTP (132)" size="1" value="84"/>
-    <field name="ip.checksum" pos="24" show="40938" showname="Header checksum: 0x9fea [validation disabled]" size="2" value="9fea">
-      <field name="ip.checksum_good" pos="24" show="0" showname="Good: False" size="2" value="9fea"/>
-      <field name="ip.checksum_bad" pos="24" show="0" showname="Bad: False" size="2" value="9fea"/>
-    </field>
-    <field name="ip.src" pos="26" show="192.168.12.213" showname="Source: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.addr" pos="26" show="192.168.12.213" showname="Source or Destination Address: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.src_host" pos="26" show="192.168.12.213" showname="Source Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.host" pos="26" show="192.168.12.213" showname="Source or Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-    <field name="ip.dst" pos="30" show="192.168.12.17" showname="Destination: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.addr" pos="30" show="192.168.12.17" showname="Source or Destination Address: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.dst_host" pos="30" show="192.168.12.17" showname="Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.host" pos="30" show="192.168.12.17" showname="Source or Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-    <field name="" pos="26" show="Source GeoIP: Unknown" size="4" value="c0a80cd5"/>
-    <field name="" pos="30" show="Destination GeoIP: Unknown" size="4" value="c0a80c11"/>
-  </proto>
-  <proto name="sctp" pos="34" showname="Stream Control Transmission Protocol, Src Port: 36412 (36412), Dst Port: 36412 (36412)" size="64">
-    <field name="sctp.srcport" pos="34" show="36412" showname="Source port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.dstport" pos="36" show="36412" showname="Destination port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.verification_tag" pos="38" show="1288826016" showname="Verification tag: 0x4cd1eca0" size="4" value="4cd1eca0"/>
-    <field name="sctp.assoc_index" pos="34" show="0" showname="Assocation index: 0" size="0"/>
-    <field hide="yes" name="sctp.port" pos="34" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-    <field hide="yes" name="sctp.port" pos="36" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.checksum" pos="42" show="173747858" showname="Checksum: 0x0a5b2e92 (not verified)" size="4" value="0a5b2e92"/>
-    <field name="" pos="46" show="HEARTBEAT chunk (Information: 48 bytes)" size="52" value="040000340001003002008e3cc0a80c110000000000000000007459d10088ffff1e201d8180932214010000007730e920aa62f65b">
-      <field name="sctp.chunk_type" pos="46" show="4" showname="Chunk type: HEARTBEAT (4)" size="1" value="04">
-        <field name="sctp.chunk_bit_1" pos="46" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="04" value="0"/>
-        <field name="sctp.chunk_bit_2" pos="46" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="04" value="0"/>
-      </field>
-      <field name="sctp.chunk_flags" pos="47" show="0" showname="Chunk flags: 0x00" size="1" value="00"/>
-      <field name="sctp.chunk_length" pos="48" show="52" showname="Chunk length: 52" size="2" value="0034"/>
-      <field name="" pos="50" show="Heartbeat info parameter (Information: 44 bytes)" size="48" value="0001003002008e3cc0a80c110000000000000000007459d10088ffff1e201d8180932214010000007730e920aa62f65b">
-        <field name="sctp.parameter_type" pos="50" show="1" showname="Parameter type: Heartbeat info (0x0001)" size="2" value="0001">
-          <field name="sctp.parameter_bit_1" pos="50" show="0" showname="0... .... .... .... = Bit: Stop processing of chunk" size="2" unmaskedvalue="0001" value="0"/>
-          <field name="sctp.parameter_bit_2" pos="50" show="0" showname=".0.. .... .... .... = Bit: Do not report" size="2" unmaskedvalue="0001" value="0"/>
-        </field>
-        <field name="sctp.parameter_length" pos="52" show="48" showname="Parameter length: 48" size="2" value="0030"/>
-        <field name="sctp.parameter_heartbeat_information" pos="54" show="02:00:8e:3c:c0:a8:0c:11:00:00:00:00:00:00:00:00:00:74:59:d1:00:88:ff:ff:1e:20:1d:81:80:93:22:14:01:00:00:00:77:30:e9:20:aa:62:f6:5b" showname="Heartbeat information: 02008e3cc0a80c110000000000000000007459d10088ffff..." size="44" value="02008e3cc0a80c110000000000000000007459d10088ffff1e201d8180932214010000007730e920aa62f65b"/>
-      </field>
-    </field>
-  </proto>
-</packet>
-<packet>
-  
-  <proto name="frame" pos="0" showname="Frame 57: 98 bytes on wire (784 bits), 98 bytes captured (784 bits) on interface 0" size="98">
-    <field name="frame.interface_id" pos="0" show="0" showname="Interface id: 0 (eth0)" size="0"/>
-    <field name="frame.encap_type" pos="0" show="1" showname="Encapsulation type: Ethernet (1)" size="0"/>
-    <field name="frame.time" pos="0" show="Sep 25, 2015 16:34:46.604504000 CEST" showname="Arrival Time: Sep 25, 2015 16:34:46.604504000 CEST" size="0"/>
-    <field name="frame.offset_shift" pos="0" show="0.000000000" showname="Time shift for this packet: 0.000000000 seconds" size="0"/>
-    <field name="frame.time_epoch" pos="0" show="1443191686.604504000" showname="Epoch Time: 1443191686.604504000 seconds" size="0"/>
-    <field name="frame.time_delta" pos="0" show="0.000036000" showname="Time delta from previous captured frame: 0.000036000 seconds" size="0"/>
-    <field name="frame.time_delta_displayed" pos="0" show="0.000036000" showname="Time delta from previous displayed frame: 0.000036000 seconds" size="0"/>
-    <field name="frame.time_relative" pos="0" show="40.138873000" showname="Time since reference or first frame: 40.138873000 seconds" size="0"/>
-    <field name="frame.number" pos="0" show="57" showname="Frame Number: 57" size="0"/>
-    <field name="frame.len" pos="0" show="98" showname="Frame Length: 98 bytes (784 bits)" size="0"/>
-    <field name="frame.cap_len" pos="0" show="98" showname="Capture Length: 98 bytes (784 bits)" size="0"/>
-    <field name="frame.marked" pos="0" show="0" showname="Frame is marked: False" size="0"/>
-    <field name="frame.ignored" pos="0" show="0" showname="Frame is ignored: False" size="0"/>
-    <field name="frame.protocols" pos="0" show="eth:ethertype:ip:sctp" showname="Protocols in frame: eth:ethertype:ip:sctp" size="0"/>
-  </proto>
-  
-  <proto name="ip" pos="14" showname="Internet Protocol Version 4, Src: 192.168.12.17 (192.168.12.17), Dst: 192.168.12.213 (192.168.12.213)" size="20">
-    <field name="ip.version" pos="14" show="4" showname="Version: 4" size="1" value="45"/>
-    <field name="ip.hdr_len" pos="14" show="20" showname="Header Length: 20 bytes" size="1" value="45"/>
-    <field name="ip.dsfield" pos="15" show="2" showname="Differentiated Services Field: 0x02 (DSCP 0x00: Default; ECN: 0x02: ECT(0) (ECN-Capable Transport))" size="1" value="02">
-      <field name="ip.dsfield.dscp" pos="15" show="0" showname="0000 00.. = Differentiated Services Codepoint: Default (0x00)" size="1" unmaskedvalue="02" value="0"/>
-      <field name="ip.dsfield.ecn" pos="15" show="2" showname=".... ..10 = Explicit Congestion Notification: ECT(0) (ECN-Capable Transport) (0x02)" size="1" unmaskedvalue="02" value="2"/>
-    </field>
-    <field name="ip.len" pos="16" show="84" showname="Total Length: 84" size="2" value="0054"/>
-    <field name="ip.id" pos="18" show="0" showname="Identification: 0x0000 (0)" size="2" value="0000"/>
-    <field name="ip.flags" pos="20" show="2" showname="Flags: 0x02 (Don't Fragment)" size="1" value="40">
-      <field name="ip.flags.rb" pos="20" show="0" showname="0... .... = Reserved bit: Not set" size="1" value="40"/>
-      <field name="ip.flags.df" pos="20" show="1" showname=".1.. .... = Don't fragment: Set" size="1" value="40"/>
-      <field name="ip.flags.mf" pos="20" show="0" showname="..0. .... = More fragments: Not set" size="1" value="40"/>
-    </field>
-    <field name="ip.frag_offset" pos="20" show="0" showname="Fragment offset: 0" size="2" value="4000"/>
-    <field name="ip.ttl" pos="22" show="64" showname="Time to live: 64" size="1" value="40"/>
-    <field name="ip.proto" pos="23" show="132" showname="Protocol: SCTP (132)" size="1" value="84"/>
-    <field name="ip.checksum" pos="24" show="40941" showname="Header checksum: 0x9fed [validation disabled]" size="2" value="9fed">
-      <field name="ip.checksum_good" pos="24" show="0" showname="Good: False" size="2" value="9fed"/>
-      <field name="ip.checksum_bad" pos="24" show="0" showname="Bad: False" size="2" value="9fed"/>
-    </field>
-    <field name="ip.src" pos="26" show="192.168.12.17" showname="Source: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.addr" pos="26" show="192.168.12.17" showname="Source or Destination Address: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.src_host" pos="26" show="192.168.12.17" showname="Source Host: 192.168.12.17" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.host" pos="26" show="192.168.12.17" showname="Source or Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-    <field name="ip.dst" pos="30" show="192.168.12.213" showname="Destination: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.addr" pos="30" show="192.168.12.213" showname="Source or Destination Address: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.dst_host" pos="30" show="192.168.12.213" showname="Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.host" pos="30" show="192.168.12.213" showname="Source or Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-    <field name="" pos="26" show="Source GeoIP: Unknown" size="4" value="c0a80c11"/>
-    <field name="" pos="30" show="Destination GeoIP: Unknown" size="4" value="c0a80cd5"/>
-  </proto>
-  <proto name="sctp" pos="34" showname="Stream Control Transmission Protocol, Src Port: 36412 (36412), Dst Port: 36412 (36412)" size="64">
-    <field name="sctp.srcport" pos="34" show="36412" showname="Source port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.dstport" pos="36" show="36412" showname="Destination port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.verification_tag" pos="38" show="1425553323" showname="Verification tag: 0x54f837ab" size="4" value="54f837ab"/>
-    <field name="sctp.assoc_index" pos="34" show="0" showname="Assocation index: 0" size="0"/>
-    <field hide="yes" name="sctp.port" pos="34" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-    <field hide="yes" name="sctp.port" pos="36" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.checksum" pos="42" show="948061674" showname="Checksum: 0x388245ea (not verified)" size="4" value="388245ea"/>
-    <field name="" pos="46" show="HEARTBEAT_ACK chunk (Information: 48 bytes)" size="52" value="050000340001003002008e3cc0a80c110000000000000000007459d10088ffff1e201d8180932214010000007730e920aa62f65b">
-      <field name="sctp.chunk_type" pos="46" show="5" showname="Chunk type: HEARTBEAT_ACK (5)" size="1" value="05">
-        <field name="sctp.chunk_bit_1" pos="46" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="05" value="0"/>
-        <field name="sctp.chunk_bit_2" pos="46" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="05" value="0"/>
-      </field>
-      <field name="sctp.chunk_flags" pos="47" show="0" showname="Chunk flags: 0x00" size="1" value="00"/>
-      <field name="sctp.chunk_length" pos="48" show="52" showname="Chunk length: 52" size="2" value="0034"/>
-      <field name="" pos="50" show="Heartbeat info parameter (Information: 44 bytes)" size="48" value="0001003002008e3cc0a80c110000000000000000007459d10088ffff1e201d8180932214010000007730e920aa62f65b">
-        <field name="sctp.parameter_type" pos="50" show="1" showname="Parameter type: Heartbeat info (0x0001)" size="2" value="0001">
-          <field name="sctp.parameter_bit_1" pos="50" show="0" showname="0... .... .... .... = Bit: Stop processing of chunk" size="2" unmaskedvalue="0001" value="0"/>
-          <field name="sctp.parameter_bit_2" pos="50" show="0" showname=".0.. .... .... .... = Bit: Do not report" size="2" unmaskedvalue="0001" value="0"/>
-        </field>
-        <field name="sctp.parameter_length" pos="52" show="48" showname="Parameter length: 48" size="2" value="0030"/>
-        <field name="sctp.parameter_heartbeat_information" pos="54" show="02:00:8e:3c:c0:a8:0c:11:00:00:00:00:00:00:00:00:00:74:59:d1:00:88:ff:ff:1e:20:1d:81:80:93:22:14:01:00:00:00:77:30:e9:20:aa:62:f6:5b" showname="Heartbeat information: 02008e3cc0a80c110000000000000000007459d10088ffff..." size="44" value="02008e3cc0a80c110000000000000000007459d10088ffff1e201d8180932214010000007730e920aa62f65b"/>
-      </field>
-    </field>
-  </proto>
-</packet>
-<packet>
-  
-  <proto name="frame" pos="0" showname="Frame 60: 98 bytes on wire (784 bits), 98 bytes captured (784 bits) on interface 0" size="98">
-    <field name="frame.interface_id" pos="0" show="0" showname="Interface id: 0 (eth0)" size="0"/>
-    <field name="frame.encap_type" pos="0" show="1" showname="Encapsulation type: Ethernet (1)" size="0"/>
-    <field name="frame.time" pos="0" show="Sep 25, 2015 16:34:47.154133000 CEST" showname="Arrival Time: Sep 25, 2015 16:34:47.154133000 CEST" size="0"/>
-    <field name="frame.offset_shift" pos="0" show="0.000000000" showname="Time shift for this packet: 0.000000000 seconds" size="0"/>
-    <field name="frame.time_epoch" pos="0" show="1443191687.154133000" showname="Epoch Time: 1443191687.154133000 seconds" size="0"/>
-    <field name="frame.time_delta" pos="0" show="0.500903000" showname="Time delta from previous captured frame: 0.500903000 seconds" size="0"/>
-    <field name="frame.time_delta_displayed" pos="0" show="0.500903000" showname="Time delta from previous displayed frame: 0.500903000 seconds" size="0"/>
-    <field name="frame.time_relative" pos="0" show="40.688502000" showname="Time since reference or first frame: 40.688502000 seconds" size="0"/>
-    <field name="frame.number" pos="0" show="60" showname="Frame Number: 60" size="0"/>
-    <field name="frame.len" pos="0" show="98" showname="Frame Length: 98 bytes (784 bits)" size="0"/>
-    <field name="frame.cap_len" pos="0" show="98" showname="Capture Length: 98 bytes (784 bits)" size="0"/>
-    <field name="frame.marked" pos="0" show="0" showname="Frame is marked: False" size="0"/>
-    <field name="frame.ignored" pos="0" show="0" showname="Frame is ignored: False" size="0"/>
-    <field name="frame.protocols" pos="0" show="eth:ethertype:ip:sctp" showname="Protocols in frame: eth:ethertype:ip:sctp" size="0"/>
-  </proto>
-  
-  <proto name="ip" pos="14" showname="Internet Protocol Version 4, Src: 192.168.12.17 (192.168.12.17), Dst: 192.168.12.213 (192.168.12.213)" size="20">
-    <field name="ip.version" pos="14" show="4" showname="Version: 4" size="1" value="45"/>
-    <field name="ip.hdr_len" pos="14" show="20" showname="Header Length: 20 bytes" size="1" value="45"/>
-    <field name="ip.dsfield" pos="15" show="2" showname="Differentiated Services Field: 0x02 (DSCP 0x00: Default; ECN: 0x02: ECT(0) (ECN-Capable Transport))" size="1" value="02">
-      <field name="ip.dsfield.dscp" pos="15" show="0" showname="0000 00.. = Differentiated Services Codepoint: Default (0x00)" size="1" unmaskedvalue="02" value="0"/>
-      <field name="ip.dsfield.ecn" pos="15" show="2" showname=".... ..10 = Explicit Congestion Notification: ECT(0) (ECN-Capable Transport) (0x02)" size="1" unmaskedvalue="02" value="2"/>
-    </field>
-    <field name="ip.len" pos="16" show="84" showname="Total Length: 84" size="2" value="0054"/>
-    <field name="ip.id" pos="18" show="0" showname="Identification: 0x0000 (0)" size="2" value="0000"/>
-    <field name="ip.flags" pos="20" show="2" showname="Flags: 0x02 (Don't Fragment)" size="1" value="40">
-      <field name="ip.flags.rb" pos="20" show="0" showname="0... .... = Reserved bit: Not set" size="1" value="40"/>
-      <field name="ip.flags.df" pos="20" show="1" showname=".1.. .... = Don't fragment: Set" size="1" value="40"/>
-      <field name="ip.flags.mf" pos="20" show="0" showname="..0. .... = More fragments: Not set" size="1" value="40"/>
-    </field>
-    <field name="ip.frag_offset" pos="20" show="0" showname="Fragment offset: 0" size="2" value="4000"/>
-    <field name="ip.ttl" pos="22" show="64" showname="Time to live: 64" size="1" value="40"/>
-    <field name="ip.proto" pos="23" show="132" showname="Protocol: SCTP (132)" size="1" value="84"/>
-    <field name="ip.checksum" pos="24" show="40941" showname="Header checksum: 0x9fed [validation disabled]" size="2" value="9fed">
-      <field name="ip.checksum_good" pos="24" show="0" showname="Good: False" size="2" value="9fed"/>
-      <field name="ip.checksum_bad" pos="24" show="0" showname="Bad: False" size="2" value="9fed"/>
-    </field>
-    <field name="ip.src" pos="26" show="192.168.12.17" showname="Source: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.addr" pos="26" show="192.168.12.17" showname="Source or Destination Address: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.src_host" pos="26" show="192.168.12.17" showname="Source Host: 192.168.12.17" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.host" pos="26" show="192.168.12.17" showname="Source or Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-    <field name="ip.dst" pos="30" show="192.168.12.213" showname="Destination: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.addr" pos="30" show="192.168.12.213" showname="Source or Destination Address: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.dst_host" pos="30" show="192.168.12.213" showname="Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.host" pos="30" show="192.168.12.213" showname="Source or Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-    <field name="" pos="26" show="Source GeoIP: Unknown" size="4" value="c0a80c11"/>
-    <field name="" pos="30" show="Destination GeoIP: Unknown" size="4" value="c0a80cd5"/>
-  </proto>
-  <proto name="sctp" pos="34" showname="Stream Control Transmission Protocol, Src Port: 36412 (36412), Dst Port: 36412 (36412)" size="64">
-    <field name="sctp.srcport" pos="34" show="36412" showname="Source port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.dstport" pos="36" show="36412" showname="Destination port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.verification_tag" pos="38" show="1425553323" showname="Verification tag: 0x54f837ab" size="4" value="54f837ab"/>
-    <field name="sctp.assoc_index" pos="34" show="0" showname="Assocation index: 0" size="0"/>
-    <field hide="yes" name="sctp.port" pos="34" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-    <field hide="yes" name="sctp.port" pos="36" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.checksum" pos="42" show="1053809432" showname="Checksum: 0x3ecfdb18 (not verified)" size="4" value="3ecfdb18"/>
-    <field name="" pos="46" show="HEARTBEAT chunk (Information: 48 bytes)" size="52" value="040000340001003002008e3cc0a80cd50000000000000000000000000000000000000000e00c3300010000008db53fb930a0b65f">
-      <field name="sctp.chunk_type" pos="46" show="4" showname="Chunk type: HEARTBEAT (4)" size="1" value="04">
-        <field name="sctp.chunk_bit_1" pos="46" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="04" value="0"/>
-        <field name="sctp.chunk_bit_2" pos="46" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="04" value="0"/>
-      </field>
-      <field name="sctp.chunk_flags" pos="47" show="0" showname="Chunk flags: 0x00" size="1" value="00"/>
-      <field name="sctp.chunk_length" pos="48" show="52" showname="Chunk length: 52" size="2" value="0034"/>
-      <field name="" pos="50" show="Heartbeat info parameter (Information: 44 bytes)" size="48" value="0001003002008e3cc0a80cd50000000000000000000000000000000000000000e00c3300010000008db53fb930a0b65f">
-        <field name="sctp.parameter_type" pos="50" show="1" showname="Parameter type: Heartbeat info (0x0001)" size="2" value="0001">
-          <field name="sctp.parameter_bit_1" pos="50" show="0" showname="0... .... .... .... = Bit: Stop processing of chunk" size="2" unmaskedvalue="0001" value="0"/>
-          <field name="sctp.parameter_bit_2" pos="50" show="0" showname=".0.. .... .... .... = Bit: Do not report" size="2" unmaskedvalue="0001" value="0"/>
-        </field>
-        <field name="sctp.parameter_length" pos="52" show="48" showname="Parameter length: 48" size="2" value="0030"/>
-        <field name="sctp.parameter_heartbeat_information" pos="54" show="02:00:8e:3c:c0:a8:0c:d5:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:e0:0c:33:00:01:00:00:00:8d:b5:3f:b9:30:a0:b6:5f" showname="Heartbeat information: 02008e3cc0a80cd500000000000000000000000000000000..." size="44" value="02008e3cc0a80cd50000000000000000000000000000000000000000e00c3300010000008db53fb930a0b65f"/>
-      </field>
-    </field>
-  </proto>
-</packet>
-<packet>
-  
-  <proto name="frame" pos="0" showname="Frame 61: 98 bytes on wire (784 bits), 98 bytes captured (784 bits) on interface 0" size="98">
-    <field name="frame.interface_id" pos="0" show="0" showname="Interface id: 0 (eth0)" size="0"/>
-    <field name="frame.encap_type" pos="0" show="1" showname="Encapsulation type: Ethernet (1)" size="0"/>
-    <field name="frame.time" pos="0" show="Sep 25, 2015 16:34:47.154270000 CEST" showname="Arrival Time: Sep 25, 2015 16:34:47.154270000 CEST" size="0"/>
-    <field name="frame.offset_shift" pos="0" show="0.000000000" showname="Time shift for this packet: 0.000000000 seconds" size="0"/>
-    <field name="frame.time_epoch" pos="0" show="1443191687.154270000" showname="Epoch Time: 1443191687.154270000 seconds" size="0"/>
-    <field name="frame.time_delta" pos="0" show="0.000137000" showname="Time delta from previous captured frame: 0.000137000 seconds" size="0"/>
-    <field name="frame.time_delta_displayed" pos="0" show="0.000137000" showname="Time delta from previous displayed frame: 0.000137000 seconds" size="0"/>
-    <field name="frame.time_relative" pos="0" show="40.688639000" showname="Time since reference or first frame: 40.688639000 seconds" size="0"/>
-    <field name="frame.number" pos="0" show="61" showname="Frame Number: 61" size="0"/>
-    <field name="frame.len" pos="0" show="98" showname="Frame Length: 98 bytes (784 bits)" size="0"/>
-    <field name="frame.cap_len" pos="0" show="98" showname="Capture Length: 98 bytes (784 bits)" size="0"/>
-    <field name="frame.marked" pos="0" show="0" showname="Frame is marked: False" size="0"/>
-    <field name="frame.ignored" pos="0" show="0" showname="Frame is ignored: False" size="0"/>
-    <field name="frame.protocols" pos="0" show="eth:ethertype:ip:sctp" showname="Protocols in frame: eth:ethertype:ip:sctp" size="0"/>
-  </proto>
-  
-  <proto name="ip" pos="14" showname="Internet Protocol Version 4, Src: 192.168.12.213 (192.168.12.213), Dst: 192.168.12.17 (192.168.12.17)" size="20">
-    <field name="ip.version" pos="14" show="4" showname="Version: 4" size="1" value="45"/>
-    <field name="ip.hdr_len" pos="14" show="20" showname="Header Length: 20 bytes" size="1" value="45"/>
-    <field name="ip.dsfield" pos="15" show="2" showname="Differentiated Services Field: 0x02 (DSCP 0x00: Default; ECN: 0x02: ECT(0) (ECN-Capable Transport))" size="1" value="02">
-      <field name="ip.dsfield.dscp" pos="15" show="0" showname="0000 00.. = Differentiated Services Codepoint: Default (0x00)" size="1" unmaskedvalue="02" value="0"/>
-      <field name="ip.dsfield.ecn" pos="15" show="2" showname=".... ..10 = Explicit Congestion Notification: ECT(0) (ECN-Capable Transport) (0x02)" size="1" unmaskedvalue="02" value="2"/>
-    </field>
-    <field name="ip.len" pos="16" show="84" showname="Total Length: 84" size="2" value="0054"/>
-    <field name="ip.id" pos="18" show="4" showname="Identification: 0x0004 (4)" size="2" value="0004"/>
-    <field name="ip.flags" pos="20" show="2" showname="Flags: 0x02 (Don't Fragment)" size="1" value="40">
-      <field name="ip.flags.rb" pos="20" show="0" showname="0... .... = Reserved bit: Not set" size="1" value="40"/>
-      <field name="ip.flags.df" pos="20" show="1" showname=".1.. .... = Don't fragment: Set" size="1" value="40"/>
-      <field name="ip.flags.mf" pos="20" show="0" showname="..0. .... = More fragments: Not set" size="1" value="40"/>
-    </field>
-    <field name="ip.frag_offset" pos="20" show="0" showname="Fragment offset: 0" size="2" value="4000"/>
-    <field name="ip.ttl" pos="22" show="64" showname="Time to live: 64" size="1" value="40"/>
-    <field name="ip.proto" pos="23" show="132" showname="Protocol: SCTP (132)" size="1" value="84"/>
-    <field name="ip.checksum" pos="24" show="40937" showname="Header checksum: 0x9fe9 [validation disabled]" size="2" value="9fe9">
-      <field name="ip.checksum_good" pos="24" show="0" showname="Good: False" size="2" value="9fe9"/>
-      <field name="ip.checksum_bad" pos="24" show="0" showname="Bad: False" size="2" value="9fe9"/>
-    </field>
-    <field name="ip.src" pos="26" show="192.168.12.213" showname="Source: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.addr" pos="26" show="192.168.12.213" showname="Source or Destination Address: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.src_host" pos="26" show="192.168.12.213" showname="Source Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.host" pos="26" show="192.168.12.213" showname="Source or Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-    <field name="ip.dst" pos="30" show="192.168.12.17" showname="Destination: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.addr" pos="30" show="192.168.12.17" showname="Source or Destination Address: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.dst_host" pos="30" show="192.168.12.17" showname="Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.host" pos="30" show="192.168.12.17" showname="Source or Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-    <field name="" pos="26" show="Source GeoIP: Unknown" size="4" value="c0a80cd5"/>
-    <field name="" pos="30" show="Destination GeoIP: Unknown" size="4" value="c0a80c11"/>
-  </proto>
-  <proto name="sctp" pos="34" showname="Stream Control Transmission Protocol, Src Port: 36412 (36412), Dst Port: 36412 (36412)" size="64">
-    <field name="sctp.srcport" pos="34" show="36412" showname="Source port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.dstport" pos="36" show="36412" showname="Destination port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.verification_tag" pos="38" show="1288826016" showname="Verification tag: 0x4cd1eca0" size="4" value="4cd1eca0"/>
-    <field name="sctp.assoc_index" pos="34" show="0" showname="Assocation index: 0" size="0"/>
-    <field hide="yes" name="sctp.port" pos="34" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-    <field hide="yes" name="sctp.port" pos="36" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.checksum" pos="42" show="202813536" showname="Checksum: 0x0c16b060 (not verified)" size="4" value="0c16b060"/>
-    <field name="" pos="46" show="HEARTBEAT_ACK chunk (Information: 48 bytes)" size="52" value="050000340001003002008e3cc0a80cd50000000000000000000000000000000000000000e00c3300010000008db53fb930a0b65f">
-      <field name="sctp.chunk_type" pos="46" show="5" showname="Chunk type: HEARTBEAT_ACK (5)" size="1" value="05">
-        <field name="sctp.chunk_bit_1" pos="46" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="05" value="0"/>
-        <field name="sctp.chunk_bit_2" pos="46" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="05" value="0"/>
-      </field>
-      <field name="sctp.chunk_flags" pos="47" show="0" showname="Chunk flags: 0x00" size="1" value="00"/>
-      <field name="sctp.chunk_length" pos="48" show="52" showname="Chunk length: 52" size="2" value="0034"/>
-      <field name="" pos="50" show="Heartbeat info parameter (Information: 44 bytes)" size="48" value="0001003002008e3cc0a80cd50000000000000000000000000000000000000000e00c3300010000008db53fb930a0b65f">
-        <field name="sctp.parameter_type" pos="50" show="1" showname="Parameter type: Heartbeat info (0x0001)" size="2" value="0001">
-          <field name="sctp.parameter_bit_1" pos="50" show="0" showname="0... .... .... .... = Bit: Stop processing of chunk" size="2" unmaskedvalue="0001" value="0"/>
-          <field name="sctp.parameter_bit_2" pos="50" show="0" showname=".0.. .... .... .... = Bit: Do not report" size="2" unmaskedvalue="0001" value="0"/>
-        </field>
-        <field name="sctp.parameter_length" pos="52" show="48" showname="Parameter length: 48" size="2" value="0030"/>
-        <field name="sctp.parameter_heartbeat_information" pos="54" show="02:00:8e:3c:c0:a8:0c:d5:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:e0:0c:33:00:01:00:00:00:8d:b5:3f:b9:30:a0:b6:5f" showname="Heartbeat information: 02008e3cc0a80cd500000000000000000000000000000000..." size="44" value="02008e3cc0a80cd50000000000000000000000000000000000000000e00c3300010000008db53fb930a0b65f"/>
-      </field>
-    </field>
-  </proto>
-</packet>
-<packet>
-  
-  <proto name="frame" pos="0" showname="Frame 76: 186 bytes on wire (1488 bits), 186 bytes captured (1488 bits) on interface 0" size="186">
-    <field name="frame.interface_id" pos="0" show="0" showname="Interface id: 0 (eth0)" size="0"/>
-    <field name="frame.encap_type" pos="0" show="1" showname="Encapsulation type: Ethernet (1)" size="0"/>
-    <field name="frame.time" pos="0" show="Sep 25, 2015 16:34:53.748321000 CEST" showname="Arrival Time: Sep 25, 2015 16:34:53.748321000 CEST" size="0"/>
-    <field name="frame.offset_shift" pos="0" show="0.000000000" showname="Time shift for this packet: 0.000000000 seconds" size="0"/>
-    <field name="frame.time_epoch" pos="0" show="1443191693.748321000" showname="Epoch Time: 1443191693.748321000 seconds" size="0"/>
-    <field name="frame.time_delta" pos="0" show="1.074002000" showname="Time delta from previous captured frame: 1.074002000 seconds" size="0"/>
-    <field name="frame.time_delta_displayed" pos="0" show="1.074002000" showname="Time delta from previous displayed frame: 1.074002000 seconds" size="0"/>
-    <field name="frame.time_relative" pos="0" show="47.282690000" showname="Time since reference or first frame: 47.282690000 seconds" size="0"/>
-    <field name="frame.number" pos="0" show="76" showname="Frame Number: 76" size="0"/>
-    <field name="frame.len" pos="0" show="186" showname="Frame Length: 186 bytes (1488 bits)" size="0"/>
-    <field name="frame.cap_len" pos="0" show="186" showname="Capture Length: 186 bytes (1488 bits)" size="0"/>
-    <field name="frame.marked" pos="0" show="0" showname="Frame is marked: False" size="0"/>
-    <field name="frame.ignored" pos="0" show="0" showname="Frame is ignored: False" size="0"/>
-    <field name="frame.protocols" pos="0" show="eth:ethertype:ip:sctp:s1ap:s1ap:s1ap:s1ap:nas-eps:ipcp:s1ap:s1ap:s1ap:s1ap" showname="Protocols in frame: eth:ethertype:ip:sctp:s1ap:s1ap:s1ap:s1ap:nas-eps:ipcp:s1ap:s1ap:s1ap:s1ap" size="0"/>
-  </proto>
-  
-  <proto name="ip" pos="14" showname="Internet Protocol Version 4, Src: 192.168.12.213 (192.168.12.213), Dst: 192.168.12.17 (192.168.12.17)" size="20">
-    <field name="ip.version" pos="14" show="4" showname="Version: 4" size="1" value="45"/>
-    <field name="ip.hdr_len" pos="14" show="20" showname="Header Length: 20 bytes" size="1" value="45"/>
-    <field name="ip.dsfield" pos="15" show="2" showname="Differentiated Services Field: 0x02 (DSCP 0x00: Default; ECN: 0x02: ECT(0) (ECN-Capable Transport))" size="1" value="02">
-      <field name="ip.dsfield.dscp" pos="15" show="0" showname="0000 00.. = Differentiated Services Codepoint: Default (0x00)" size="1" unmaskedvalue="02" value="0"/>
-      <field name="ip.dsfield.ecn" pos="15" show="2" showname=".... ..10 = Explicit Congestion Notification: ECT(0) (ECN-Capable Transport) (0x02)" size="1" unmaskedvalue="02" value="2"/>
-    </field>
-    <field name="ip.len" pos="16" show="172" showname="Total Length: 172" size="2" value="00ac"/>
-    <field name="ip.id" pos="18" show="5" showname="Identification: 0x0005 (5)" size="2" value="0005"/>
-    <field name="ip.flags" pos="20" show="2" showname="Flags: 0x02 (Don't Fragment)" size="1" value="40">
-      <field name="ip.flags.rb" pos="20" show="0" showname="0... .... = Reserved bit: Not set" size="1" value="40"/>
-      <field name="ip.flags.df" pos="20" show="1" showname=".1.. .... = Don't fragment: Set" size="1" value="40"/>
-      <field name="ip.flags.mf" pos="20" show="0" showname="..0. .... = More fragments: Not set" size="1" value="40"/>
-    </field>
-    <field name="ip.frag_offset" pos="20" show="0" showname="Fragment offset: 0" size="2" value="4000"/>
-    <field name="ip.ttl" pos="22" show="64" showname="Time to live: 64" size="1" value="40"/>
-    <field name="ip.proto" pos="23" show="132" showname="Protocol: SCTP (132)" size="1" value="84"/>
-    <field name="ip.checksum" pos="24" show="40848" showname="Header checksum: 0x9f90 [validation disabled]" size="2" value="9f90">
-      <field name="ip.checksum_good" pos="24" show="0" showname="Good: False" size="2" value="9f90"/>
-      <field name="ip.checksum_bad" pos="24" show="0" showname="Bad: False" size="2" value="9f90"/>
-    </field>
-    <field name="ip.src" pos="26" show="192.168.12.213" showname="Source: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.addr" pos="26" show="192.168.12.213" showname="Source or Destination Address: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.src_host" pos="26" show="192.168.12.213" showname="Source Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.host" pos="26" show="192.168.12.213" showname="Source or Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-    <field name="ip.dst" pos="30" show="192.168.12.17" showname="Destination: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.addr" pos="30" show="192.168.12.17" showname="Source or Destination Address: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.dst_host" pos="30" show="192.168.12.17" showname="Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.host" pos="30" show="192.168.12.17" showname="Source or Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-    <field name="" pos="26" show="Source GeoIP: Unknown" size="4" value="c0a80cd5"/>
-    <field name="" pos="30" show="Destination GeoIP: Unknown" size="4" value="c0a80c11"/>
-  </proto>
-  <proto name="sctp" pos="34" showname="Stream Control Transmission Protocol, Src Port: 36412 (36412), Dst Port: 36412 (36412)" size="28">
-    <field name="sctp.srcport" pos="34" show="36412" showname="Source port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.dstport" pos="36" show="36412" showname="Destination port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.verification_tag" pos="38" show="1288826016" showname="Verification tag: 0x4cd1eca0" size="4" value="4cd1eca0"/>
-    <field name="sctp.assoc_index" pos="34" show="0" showname="Assocation index: 0" size="0"/>
-    <field hide="yes" name="sctp.port" pos="34" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-    <field hide="yes" name="sctp.port" pos="36" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.checksum" pos="42" show="1207174120" showname="Checksum: 0x47f403e8 (not verified)" size="4" value="47f403e8"/>
-    <field name="" pos="46" show="DATA chunk(ordered, complete segment, TSN: 3304831192, SID: 1, SSN: 0, PPID: 18, payload length: 122 bytes)" size="16" value="0003008ac4fbb8d80001000000000012">
-      <field name="sctp.chunk_type" pos="46" show="0" showname="Chunk type: DATA (0)" size="1" value="00">
-        <field name="sctp.chunk_bit_1" pos="46" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="00" value="0"/>
-        <field name="sctp.chunk_bit_2" pos="46" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="00" value="0"/>
-      </field>
-      <field name="sctp.chunk_flags" pos="47" show="3" showname="Chunk flags: 0x03" size="1" value="03">
-        <field name="sctp.data_e_bit" pos="47" show="1" showname=".... ...1 = E-Bit: Last segment" size="1" unmaskedvalue="03" value="1"/>
-        <field name="sctp.data_b_bit" pos="47" show="1" showname=".... ..1. = B-Bit: First segment" size="1" unmaskedvalue="03" value="1"/>
-        <field name="sctp.data_u_bit" pos="47" show="0" showname=".... .0.. = U-Bit: Ordered delivery" size="1" unmaskedvalue="03" value="0"/>
-        <field name="sctp.data_i_bit" pos="47" show="0" showname=".... 0... = I-Bit: Possibly delay SACK" size="1" unmaskedvalue="03" value="0"/>
-      </field>
-      <field name="sctp.chunk_length" pos="48" show="138" showname="Chunk length: 138" size="2" value="008a"/>
-      <field name="sctp.data_tsn" pos="50" show="3304831192" showname="TSN: 3304831192" size="4" value="c4fbb8d8"/>
-      <field name="sctp.data_sid" pos="54" show="1" showname="Stream Identifier: 0x0001" size="2" value="0001"/>
-      <field name="sctp.data_ssn" pos="56" show="0" showname="Stream sequence number: 0" size="2" value="0000"/>
-      <field name="sctp.data_payload_proto_id" pos="58" show="18" showname="Payload protocol identifier: S1 Application Protocol (S1AP) (18)" size="4" value="00000012"/>
-      <field name="sctp.chunk_padding" pos="184" show="00:00" showname="Chunk padding: 0000" size="2" value="0000"/>
-    </field>
-  </proto>
-  <proto name="s1ap" pos="62" showname="S1 Application Protocol" size="122">
-    <field hide="yes" name="per.extension_bit" pos="62" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-    <field hide="yes" name="per.choice_index" pos="62" show="0" showname="Choice Index: 0" size="1" value="00"/>
-    <field name="s1ap.S1AP_PDU" pos="62" show="0" showname="S1AP-PDU: initiatingMessage (0)" size="122" value="000c0076000006000800048006692d001a00414017c4dba6bb020741010bf602f8598000016c00092002e0e000200201d011271a8080211001000010810600000000830600000000000d00000a005202f8590001004300060002f8590001006440080002f85900e000000086400130004b000700000000800001">
-      <field name="s1ap.initiatingMessage_element" pos="62" show="" showname="initiatingMessage" size="122" value="">
-        <field name="s1ap.procedureCode" pos="63" show="12" showname="procedureCode: id-initialUEMessage (12)" size="1" value="0c"/>
-        <field hide="yes" name="per.enum_index" pos="64" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-        <field name="s1ap.criticality" pos="64" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-        <field hide="yes" name="per.open_type_length" pos="65" show="118" showname="Open Type Length: 118" size="1" value="76"/>
-        <field name="s1ap.value_element" pos="66" show="" showname="value" size="118" value="">
-          <field name="s1ap.InitialUEMessage_element" pos="66" show="" showname="InitialUEMessage" size="118" value="">
-            <field hide="yes" name="per.extension_bit" pos="66" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-            <field hide="yes" name="per.sequence_of_length" pos="67" show="6" showname="Sequence-Of Length: 6" size="2" value="0006"/>
-            <field name="s1ap.protocolIEs" pos="69" show="6" showname="protocolIEs: 6 items" size="115" value="000800048006692d001a00414017c4dba6bb020741010bf602f8598000016c00092002e0e000200201d011271a8080211001000010810600000000830600000000000d00000a005202f8590001004300060002f8590001006440080002f85900e000000086400130004b000700000000800001">
-              <field name="" pos="69" show="Item 0: id-eNB-UE-S1AP-ID" size="8" value="000800048006692d">
-                <field name="s1ap.ProtocolIE_Field_element" pos="69" show="" showname="ProtocolIE-Field" size="8" value="">
-                  <field name="s1ap.id" pos="69" show="8" showname="id: id-eNB-UE-S1AP-ID (8)" size="2" value="0008"/>
-                  <field hide="yes" name="per.enum_index" pos="71" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                  <field name="s1ap.criticality" pos="71" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                  <field hide="yes" name="per.open_type_length" pos="72" show="4" showname="Open Type Length: 4" size="1" value="04"/>
-                  <field name="s1ap.value_element" pos="73" show="" showname="value" size="4" value="">
-                    <field name="s1ap.ENB_UE_S1AP_ID" pos="73" show="420141" showname="ENB-UE-S1AP-ID: 420141" size="4" value="8006692d"/>
-                  </field>
-                </field>
-              </field>
-              <field name="" pos="77" show="Item 1: id-NAS-PDU" size="69" value="001a00414017c4dba6bb020741010bf602f8598000016c00092002e0e000200201d011271a8080211001000010810600000000830600000000000d00000a005202f8590001">
-                <field name="s1ap.ProtocolIE_Field_element" pos="77" show="" showname="ProtocolIE-Field" size="69" value="">
-                  <field name="s1ap.id" pos="77" show="26" showname="id: id-NAS-PDU (26)" size="2" value="001a"/>
-                  <field hide="yes" name="per.enum_index" pos="79" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                  <field name="s1ap.criticality" pos="79" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                  <field hide="yes" name="per.open_type_length" pos="80" show="65" showname="Open Type Length: 65" size="1" value="41"/>
-                  <field name="s1ap.value_element" pos="81" show="" showname="value" size="65" value="">
-                    <field hide="yes" name="per.octet_string_length" pos="81" show="64" showname="Octet String Length: 64" size="1" value="40"/>
-                    <field name="s1ap.NAS_PDU" pos="82" show="17:c4:db:a6:bb:02:07:41:01:0b:f6:02:f8:59:80:00:01:6c:00:09:20:02:e0:e0:00:20:02:01:d0:11:27:1a:80:80:21:10:01:00:00:10:81:06:00:00:00:00:83:06:00:00:00:00:00:0d:00:00:0a:00:52:02:f8:59:00:01" showname="NAS-PDU: 17c4dba6bb020741010bf602f8598000016c00092002e0e0..." size="64" value="17c4dba6bb020741010bf602f8598000016c00092002e0e000200201d011271a8080211001000010810600000000830600000000000d00000a005202f8590001"/>
-                    <proto name="nas-eps" pos="82" showname="Non-Access-Stratum (NAS)PDU" size="64">
-                      <field name="nas_eps.security_header_type" pos="82" show="1" showname="0001 .... = Security header type: Integrity protected (1)" size="1" unmaskedvalue="17" value="1"/>
-                      <field name="gsm_a.L3_protocol_discriminator" pos="82" show="7" showname=".... 0111 = Protocol discriminator: EPS mobility management messages (0x07)" size="1" unmaskedvalue="17" value="7"/>
-                      <field name="nas_eps.msg_auth_code" pos="83" show="3302729403" showname="Message authentication code: 0xc4dba6bb" size="4" value="c4dba6bb"/>
-                      <field name="nas_eps.seq_no" pos="87" show="2" showname="Sequence number: 2" size="1" value="02"/>
-                      <field name="nas_eps.security_header_type" pos="88" show="0" showname="0000 .... = Security header type: Plain NAS message, not security protected (0)" size="1" unmaskedvalue="07" value="0"/>
-                      <field name="gsm_a.L3_protocol_discriminator" pos="88" show="7" showname=".... 0111 = Protocol discriminator: EPS mobility management messages (0x07)" size="1" unmaskedvalue="07" value="7"/>
-                      <field name="nas_eps.nas_msg_emm_type" pos="89" show="65" showname="NAS EPS Mobility Management Message Type: Attach request (0x41)" size="1" value="41"/>
-                      <field name="nas_eps.emm.tsc" pos="90" show="0" showname="0... .... = Type of security context flag (TSC): Native security context (for KSIasme)" size="1" value="01"/>
-                      <field name="nas_eps.emm.nas_key_set_id" pos="90" show="0" showname=".000 .... = NAS key set identifier:  (0)" size="1" value="01"/>
-                      <field name="nas_eps.spare_bits" pos="90" show="0" showname=".... 0... = Spare bit(s): 0x00" size="1" value="01"/>
-                      <field name="nas_eps.emm.eps_att_type" pos="90" show="1" showname=".... .001 = EPS attach type: EPS attach (1)" size="1" value="01"/>
-                      <field name="" pos="91" show="EPS mobile identity" size="12" value="0bf602f8598000016c000920">
-                        <field name="gsm_a.len" pos="91" show="11" showname="Length: 11" size="1" value="0b"/>
-                        <field name="nas_eps.emm.odd_even" pos="92" show="0" showname=".... 0... = odd/even indic: 0" size="1" unmaskedvalue="f6" value="0"/>
-                        <field name="nas_eps.emm.type_of_id" pos="92" show="6" showname=".... .110 = Type of identity: GUTI (6)" size="1" unmaskedvalue="f6" value="6"/>
-                        <field name="e212.mcc" pos="93" show="208" showname="Mobile Country Code (MCC): France (208)" size="2" value="02f8"/>
-                        <field name="e212.mnc" pos="94" show="95" showname="Mobile Network Code (MNC): Unknown (95)" size="2" value="f859"/>
-                        <field name="nas_eps.emm.mme_grp_id" pos="96" show="32768" showname="MME Group ID: 32768" size="2" value="8000"/>
-                        <field name="nas_eps.emm.mme_code" pos="98" show="1" showname="MME Code: 1" size="1" value="01"/>
-                        <field name="nas_eps.emm.m_tmsi" pos="99" show="1811941664" showname="M-TMSI: 0x6c000920" size="4" value="6c000920"/>
-                      </field>
-                      <field name="" pos="103" show="UE network capability" size="3" value="02e0e0">
-                        <field name="gsm_a.len" pos="103" show="2" showname="Length: 2" size="1" value="02"/>
-                        <field name="nas_eps.emm.eea0" pos="104" show="1" showname="1... .... = EEA0: Supported" size="1" unmaskedvalue="e0" value="1"/>
-                        <field name="nas_eps.emm.128eea1" pos="104" show="1" showname=".1.. .... = 128-EEA1: Supported" size="1" unmaskedvalue="e0" value="1"/>
-                        <field name="nas_eps.emm.128eea2" pos="104" show="1" showname="..1. .... = 128-EEA2: Supported" size="1" unmaskedvalue="e0" value="1"/>
-                        <field name="nas_eps.emm.eea3" pos="104" show="0" showname="...0 .... = 128-EEA3: Not Supported" size="1" unmaskedvalue="e0" value="0"/>
-                        <field name="nas_eps.emm.eea4" pos="104" show="0" showname=".... 0... = EEA4: Not Supported" size="1" unmaskedvalue="e0" value="0"/>
-                        <field name="nas_eps.emm.eea5" pos="104" show="0" showname=".... .0.. = EEA5: Not Supported" size="1" unmaskedvalue="e0" value="0"/>
-                        <field name="nas_eps.emm.eea6" pos="104" show="0" showname=".... ..0. = EEA6: Not Supported" size="1" unmaskedvalue="e0" value="0"/>
-                        <field name="nas_eps.emm.eea7" pos="104" show="0" showname=".... ...0 = EEA7: Not Supported" size="1" unmaskedvalue="e0" value="0"/>
-                        <field name="nas_eps.emm.eia0" pos="105" show="1" showname="1... .... = EIA0: Supported" size="1" unmaskedvalue="e0" value="1"/>
-                        <field name="nas_eps.emm.128eia1" pos="105" show="1" showname=".1.. .... = 128-EIA1: Supported" size="1" unmaskedvalue="e0" value="1"/>
-                        <field name="nas_eps.emm.128eia2" pos="105" show="1" showname="..1. .... = 128-EIA2: Supported" size="1" unmaskedvalue="e0" value="1"/>
-                        <field name="nas_eps.emm.eia3" pos="105" show="0" showname="...0 .... = 128-EIA3: Not Supported" size="1" unmaskedvalue="e0" value="0"/>
-                        <field name="nas_eps.emm.eia4" pos="105" show="0" showname=".... 0... = EIA4: Not Supported" size="1" unmaskedvalue="e0" value="0"/>
-                        <field name="nas_eps.emm.eia5" pos="105" show="0" showname=".... .0.. = EIA5: Not Supported" size="1" unmaskedvalue="e0" value="0"/>
-                        <field name="nas_eps.emm.eia6" pos="105" show="0" showname=".... ..0. = EIA6: Not Supported" size="1" unmaskedvalue="e0" value="0"/>
-                        <field name="nas_eps.emm.eia7" pos="105" show="0" showname=".... ...0 = EIA7: Not Supported" size="1" unmaskedvalue="e0" value="0"/>
-                      </field>
-                      <field name="" pos="106" show="ESM message container" size="34" value="00200201d011271a8080211001000010810600000000830600000000000d00000a00">
-                        <field name="gsm_a.len" pos="106" show="32" showname="Length: 32" size="2" value="0020"/>
-                        <field name="nas_eps.emm.esm_msg_cont" pos="108" show="02:01:d0:11:27:1a:80:80:21:10:01:00:00:10:81:06:00:00:00:00:83:06:00:00:00:00:00:0d:00:00:0a:00" showname="ESM message container contents: 0201d011271a808021100100001081060000000083060000..." size="32" value="0201d011271a8080211001000010810600000000830600000000000d00000a00">
-                          <field name="nas_eps.bearer_id" pos="108" show="0" showname="0000 .... = EPS bearer identity: No EPS bearer identity assigned (0)" size="1" unmaskedvalue="02" value="0"/>
-                          <field name="gsm_a.L3_protocol_discriminator" pos="108" show="2" showname=".... 0010 = Protocol discriminator: EPS session management messages (0x02)" size="1" unmaskedvalue="02" value="2"/>
-                          <field name="nas_eps.esm.proc_trans_id" pos="109" show="1" showname="Procedure transaction identity: 1" size="1" value="01"/>
-                          <field name="nas_eps.nas_msg_esm_type" pos="110" show="208" showname="NAS EPS session management messages: PDN connectivity request (0xd0)" size="1" value="d0"/>
-                          <field name="nas_eps.esm_pdn_type" pos="111" show="1" showname="0001 .... = PDN type: IPv4 (1)" size="1" value="11"/>
-                          <field name="nas_eps.esm_request_type" pos="111" show="1" showname=".... 0001 = Request type: initial request (1)" size="1" value="11"/>
-                          <field name="" pos="112" show="Protocol Configuration Options" size="28" value="271a8080211001000010810600000000830600000000000d00000a00">
-                            <field name="gsm_a.gm.elem_id" pos="112" show="39" showname="Element ID: 0x27" size="1" value="27"/>
-                            <field name="gsm_a.len" pos="113" show="26" showname="Length: 26" size="1" value="1a"/>
-                            <field name="gsm_a.gm.sm.link_dir" pos="114" show="0" showname="Link direction: MS to network (0)" size="0"/>
-                            <field name="gsm_a.gm.sm.ext" pos="114" show="1" showname="1... .... = Extension: True" size="1" unmaskedvalue="80" value="1"/>
-                            <field name="" pos="114" show="Configuration Protocol: PPP for use with IP PDP type or IP PDN type (0)" size="1" value="80"/>
-                            <field name="gsm_a.gm.sm.pco_pid" pos="115" show="32801" showname="Protocol or Container ID: Internet Protocol Control Protocol (0x8021)" size="2" value="8021">
-                              <field name="" pos="117" show="Length: 0x10 (16)" size="1" value="10"/>
-                              <proto name="ipcp" pos="118" showname="PPP IP Control Protocol" size="16">
-                                <field name="ppp.code" pos="118" show="1" showname="Code: Configuration Request (1)" size="1" value="01"/>
-                                <field name="ppp.identifier" pos="119" show="0" showname="Identifier: 0 (0x00)" size="1" value="00"/>
-                                <field name="ppp.length" pos="120" show="16" showname="Length: 16" size="2" value="0010"/>
-                                <field name="" pos="122" show="Options: (12 bytes), Primary DNS Server IP Address, Secondary DNS Server IP Address" size="12" value="810600000000830600000000">
-                                  <field name="" pos="122" show="Primary DNS Server IP Address: 0.0.0.0" size="6" value="810600000000">
-                                    <field name="ipcp.opt.type" pos="122" show="129" showname="Type: Primary DNS Server IP Address (129)" size="1" value="81"/>
-                                    <field name="ipcp.opt.length" pos="123" show="6" showname="Length: 6" size="1" value="06"/>
-                                    <field name="ipcp.opt.pri_dns_address" pos="124" show="0.0.0.0" showname="Primary DNS Address: 0.0.0.0 (0.0.0.0)" size="4" value="00000000"/>
-                                  </field>
-                                  <field name="" pos="128" show="Secondary DNS Server IP Address: 0.0.0.0" size="6" value="830600000000">
-                                    <field name="ipcp.opt.type" pos="128" show="131" showname="Type: Secondary DNS Server IP Address (131)" size="1" value="83"/>
-                                    <field name="ipcp.opt.length" pos="129" show="6" showname="Length: 6" size="1" value="06"/>
-                                    <field name="ipcp.opt.sec_dns_address" pos="130" show="0.0.0.0" showname="Secondary DNS Address: 0.0.0.0 (0.0.0.0)" size="4" value="00000000"/>
-                                  </field>
-                                </field>
-                              </proto>
-                            </field>
-                            <field name="gsm_a.gm.sm.pco_pid" pos="134" show="13" showname="Protocol or Container ID: DNS Server IPv4 Address Request (0x000d)" size="2" value="000d">
-                              <field name="" pos="136" show="Length: 0x00 (0)" size="1" value="00"/>
-                            </field>
-                            <field name="gsm_a.gm.sm.pco_pid" pos="137" show="10" showname="Protocol or Container ID: IP address allocation via NAS signalling (0x000a)" size="2" value="000a">
-                              <field name="" pos="139" show="Length: 0x00 (0)" size="1" value="00"/>
-                            </field>
-                          </field>
-                        </field>
-                      </field>
-                      <field name="" pos="140" show="Tracking area identity - Last visited registered TAI" size="6" value="5202f8590001">
-                        <field name="nas_eps.emm.elem_id" pos="140" show="82" showname="Element ID: 0x52" size="1" value="52"/>
-                        <field name="e212.mcc" pos="141" show="208" showname="Mobile Country Code (MCC): France (208)" size="2" value="02f8"/>
-                        <field name="e212.mnc" pos="142" show="95" showname="Mobile Network Code (MNC): Unknown (95)" size="2" value="f859"/>
-                        <field name="nas_eps.emm.tai_tac" pos="144" show="1" showname="Tracking area code(TAC): 0x0001" size="2" value="0001"/>
-                      </field>
-                    </proto>
-                  </field>
-                </field>
-              </field>
-              <field name="" pos="146" show="Item 2: id-TAI" size="10" value="004300060002f8590001">
-                <field name="s1ap.ProtocolIE_Field_element" pos="146" show="" showname="ProtocolIE-Field" size="10" value="">
-                  <field name="s1ap.id" pos="146" show="67" showname="id: id-TAI (67)" size="2" value="0043"/>
-                  <field hide="yes" name="per.enum_index" pos="148" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                  <field name="s1ap.criticality" pos="148" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                  <field hide="yes" name="per.open_type_length" pos="149" show="6" showname="Open Type Length: 6" size="1" value="06"/>
-                  <field name="s1ap.value_element" pos="150" show="" showname="value" size="6" value="">
-                    <field name="s1ap.TAI_element" pos="150" show="" showname="TAI" size="6" value="">
-                      <field hide="yes" name="per.extension_bit" pos="150" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-                      <field hide="yes" name="per.optional_field_bit" pos="150" show="0" showname=".0.. .... Optional Field Bit: False (iE-Extensions is NOT present)" size="1" unmaskedvalue="00" value="0"/>
-                      <field name="s1ap.pLMNidentity" pos="151" show="02:f8:59" showname="pLMNidentity: 02f859" size="3" value="02f859"/>
-                      <field name="e212.mcc" pos="151" show="208" showname="Mobile Country Code (MCC): France (208)" size="2" value="02f8"/>
-                      <field name="e212.mnc" pos="152" show="95" showname="Mobile Network Code (MNC): Unknown (95)" size="2" value="f859"/>
-                      <field name="s1ap.tAC" pos="154" show="00:01" showname="tAC: 0001" size="2" value="0001"/>
-                    </field>
-                  </field>
-                </field>
-              </field>
-              <field name="" pos="156" show="Item 3: id-EUTRAN-CGI" size="12" value="006440080002f85900e00000">
-                <field name="s1ap.ProtocolIE_Field_element" pos="156" show="" showname="ProtocolIE-Field" size="12" value="">
-                  <field name="s1ap.id" pos="156" show="100" showname="id: id-EUTRAN-CGI (100)" size="2" value="0064"/>
-                  <field hide="yes" name="per.enum_index" pos="158" show="1" showname="Enumerated Index: 1" size="1" value="40"/>
-                  <field name="s1ap.criticality" pos="158" show="1" showname="criticality: ignore (1)" size="1" value="40"/>
-                  <field hide="yes" name="per.open_type_length" pos="159" show="8" showname="Open Type Length: 8" size="1" value="08"/>
-                  <field name="s1ap.value_element" pos="160" show="" showname="value" size="8" value="">
-                    <field name="s1ap.EUTRAN_CGI_element" pos="160" show="" showname="EUTRAN-CGI" size="7" value="">
-                      <field hide="yes" name="per.extension_bit" pos="160" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-                      <field hide="yes" name="per.optional_field_bit" pos="160" show="0" showname=".0.. .... Optional Field Bit: False (iE-Extensions is NOT present)" size="1" unmaskedvalue="00" value="0"/>
-                      <field name="s1ap.pLMNidentity" pos="161" show="02:f8:59" showname="pLMNidentity: 02f859" size="3" value="02f859"/>
-                      <field name="e212.mcc" pos="161" show="208" showname="Mobile Country Code (MCC): France (208)" size="2" value="02f8"/>
-                      <field name="e212.mnc" pos="162" show="95" showname="Mobile Network Code (MNC): Unknown (95)" size="2" value="f859"/>
-                      <field name="s1ap.cell_ID" pos="160" show="00:e0:00:00" showname="cell-ID: 00e00000 [bit length 28, 4 LSB pad bits, 0000 0000  1110 0000  0000 0000  0000 .... decimal value 917504]" size="4" value="00e00000"/>
-                    </field>
-                  </field>
-                </field>
-              </field>
-              <field name="" pos="168" show="Item 4: id-RRC-Establishment-Cause" size="5" value="0086400130">
-                <field name="s1ap.ProtocolIE_Field_element" pos="168" show="" showname="ProtocolIE-Field" size="5" value="">
-                  <field name="s1ap.id" pos="168" show="134" showname="id: id-RRC-Establishment-Cause (134)" size="2" value="0086"/>
-                  <field hide="yes" name="per.enum_index" pos="170" show="1" showname="Enumerated Index: 1" size="1" value="40"/>
-                  <field name="s1ap.criticality" pos="170" show="1" showname="criticality: ignore (1)" size="1" value="40"/>
-                  <field hide="yes" name="per.open_type_length" pos="171" show="1" showname="Open Type Length: 1" size="1" value="01"/>
-                  <field name="s1ap.value_element" pos="172" show="" showname="value" size="1" value="">
-                    <field hide="yes" name="per.extension_present_bit" pos="172" show="0" showname="0... .... Extension Present Bit: False" size="1" unmaskedvalue="30" value="0"/>
-                    <field hide="yes" name="per.enum_index" pos="172" show="3" showname="Enumerated Index: 3" size="1" value="30"/>
-                    <field name="s1ap.RRC_Establishment_Cause" pos="172" show="3" showname="RRC-Establishment-Cause: mo-Signalling (3)" size="1" value="30"/>
-                  </field>
-                </field>
-              </field>
-              <field name="" pos="173" show="Item 5: id-GUMMEI-ID" size="11" value="004b000700000000800001">
-                <field name="s1ap.ProtocolIE_Field_element" pos="173" show="" showname="ProtocolIE-Field" size="11" value="">
-                  <field name="s1ap.id" pos="173" show="75" showname="id: id-GUMMEI-ID (75)" size="2" value="004b"/>
-                  <field hide="yes" name="per.enum_index" pos="175" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                  <field name="s1ap.criticality" pos="175" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                  <field hide="yes" name="per.open_type_length" pos="176" show="7" showname="Open Type Length: 7" size="1" value="07"/>
-                  <field name="s1ap.value_element" pos="177" show="" showname="value" size="7" value="">
-                    <field name="s1ap.GUMMEI_element" pos="177" show="" showname="GUMMEI" size="7" value="">
-                      <field hide="yes" name="per.extension_bit" pos="177" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-                      <field hide="yes" name="per.optional_field_bit" pos="177" show="0" showname=".0.. .... Optional Field Bit: False (iE-Extensions is NOT present)" size="1" unmaskedvalue="00" value="0"/>
-                      <field name="s1ap.pLMN_Identity" pos="178" show="00:00:00" showname="pLMN-Identity: 000000" size="3" value="000000"/>
-                      <field name="e212.mcc" pos="178" show="0" showname="Mobile Country Code (MCC): Unknown (0)" size="2" value="0000"/>
-                      <field name="e212.mnc" pos="179" show="0" showname="Mobile Network Code (MNC): Unknown (000)" size="2" value="0000"/>
-                      <field name="s1ap.mME_Group_ID" pos="181" show="80:00" showname="mME-Group-ID: 8000" size="2" value="8000"/>
-                      <field name="s1ap.mME_Code" pos="183" show="01" showname="mME-Code: 01" size="1" value="01"/>
-                    </field>
-                  </field>
-                </field>
-              </field>
-            </field>
-          </field>
-        </field>
-      </field>
-    </field>
-  </proto>
-</packet>
-<packet>
-  
-  <proto name="frame" pos="0" showname="Frame 77: 110 bytes on wire (880 bits), 110 bytes captured (880 bits) on interface 0" size="110">
-    <field name="frame.interface_id" pos="0" show="0" showname="Interface id: 0 (eth0)" size="0"/>
-    <field name="frame.encap_type" pos="0" show="1" showname="Encapsulation type: Ethernet (1)" size="0"/>
-    <field name="frame.time" pos="0" show="Sep 25, 2015 16:34:53.749945000 CEST" showname="Arrival Time: Sep 25, 2015 16:34:53.749945000 CEST" size="0"/>
-    <field name="frame.offset_shift" pos="0" show="0.000000000" showname="Time shift for this packet: 0.000000000 seconds" size="0"/>
-    <field name="frame.time_epoch" pos="0" show="1443191693.749945000" showname="Epoch Time: 1443191693.749945000 seconds" size="0"/>
-    <field name="frame.time_delta" pos="0" show="0.001624000" showname="Time delta from previous captured frame: 0.001624000 seconds" size="0"/>
-    <field name="frame.time_delta_displayed" pos="0" show="0.001624000" showname="Time delta from previous displayed frame: 0.001624000 seconds" size="0"/>
-    <field name="frame.time_relative" pos="0" show="47.284314000" showname="Time since reference or first frame: 47.284314000 seconds" size="0"/>
-    <field name="frame.number" pos="0" show="77" showname="Frame Number: 77" size="0"/>
-    <field name="frame.len" pos="0" show="110" showname="Frame Length: 110 bytes (880 bits)" size="0"/>
-    <field name="frame.cap_len" pos="0" show="110" showname="Capture Length: 110 bytes (880 bits)" size="0"/>
-    <field name="frame.marked" pos="0" show="0" showname="Frame is marked: False" size="0"/>
-    <field name="frame.ignored" pos="0" show="0" showname="Frame is ignored: False" size="0"/>
-    <field name="frame.protocols" pos="0" show="eth:ethertype:ip:sctp:s1ap:s1ap:s1ap:s1ap:s1ap:nas-eps" showname="Protocols in frame: eth:ethertype:ip:sctp:s1ap:s1ap:s1ap:s1ap:s1ap:nas-eps" size="0"/>
-  </proto>
-  
-  <proto name="ip" pos="14" showname="Internet Protocol Version 4, Src: 192.168.12.17 (192.168.12.17), Dst: 192.168.12.213 (192.168.12.213)" size="20">
-    <field name="ip.version" pos="14" show="4" showname="Version: 4" size="1" value="45"/>
-    <field name="ip.hdr_len" pos="14" show="20" showname="Header Length: 20 bytes" size="1" value="45"/>
-    <field name="ip.dsfield" pos="15" show="2" showname="Differentiated Services Field: 0x02 (DSCP 0x00: Default; ECN: 0x02: ECT(0) (ECN-Capable Transport))" size="1" value="02">
-      <field name="ip.dsfield.dscp" pos="15" show="0" showname="0000 00.. = Differentiated Services Codepoint: Default (0x00)" size="1" unmaskedvalue="02" value="0"/>
-      <field name="ip.dsfield.ecn" pos="15" show="2" showname=".... ..10 = Explicit Congestion Notification: ECT(0) (ECN-Capable Transport) (0x02)" size="1" unmaskedvalue="02" value="2"/>
-    </field>
-    <field name="ip.len" pos="16" show="96" showname="Total Length: 96" size="2" value="0060"/>
-    <field name="ip.id" pos="18" show="0" showname="Identification: 0x0000 (0)" size="2" value="0000"/>
-    <field name="ip.flags" pos="20" show="2" showname="Flags: 0x02 (Don't Fragment)" size="1" value="40">
-      <field name="ip.flags.rb" pos="20" show="0" showname="0... .... = Reserved bit: Not set" size="1" value="40"/>
-      <field name="ip.flags.df" pos="20" show="1" showname=".1.. .... = Don't fragment: Set" size="1" value="40"/>
-      <field name="ip.flags.mf" pos="20" show="0" showname="..0. .... = More fragments: Not set" size="1" value="40"/>
-    </field>
-    <field name="ip.frag_offset" pos="20" show="0" showname="Fragment offset: 0" size="2" value="4000"/>
-    <field name="ip.ttl" pos="22" show="64" showname="Time to live: 64" size="1" value="40"/>
-    <field name="ip.proto" pos="23" show="132" showname="Protocol: SCTP (132)" size="1" value="84"/>
-    <field name="ip.checksum" pos="24" show="40929" showname="Header checksum: 0x9fe1 [validation disabled]" size="2" value="9fe1">
-      <field name="ip.checksum_good" pos="24" show="0" showname="Good: False" size="2" value="9fe1"/>
-      <field name="ip.checksum_bad" pos="24" show="0" showname="Bad: False" size="2" value="9fe1"/>
-    </field>
-    <field name="ip.src" pos="26" show="192.168.12.17" showname="Source: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.addr" pos="26" show="192.168.12.17" showname="Source or Destination Address: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.src_host" pos="26" show="192.168.12.17" showname="Source Host: 192.168.12.17" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.host" pos="26" show="192.168.12.17" showname="Source or Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-    <field name="ip.dst" pos="30" show="192.168.12.213" showname="Destination: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.addr" pos="30" show="192.168.12.213" showname="Source or Destination Address: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.dst_host" pos="30" show="192.168.12.213" showname="Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.host" pos="30" show="192.168.12.213" showname="Source or Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-    <field name="" pos="26" show="Source GeoIP: Unknown" size="4" value="c0a80c11"/>
-    <field name="" pos="30" show="Destination GeoIP: Unknown" size="4" value="c0a80cd5"/>
-  </proto>
-  <proto name="sctp" pos="34" showname="Stream Control Transmission Protocol, Src Port: 36412 (36412), Dst Port: 36412 (36412)" size="44">
-    <field name="sctp.srcport" pos="34" show="36412" showname="Source port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.dstport" pos="36" show="36412" showname="Destination port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.verification_tag" pos="38" show="1425553323" showname="Verification tag: 0x54f837ab" size="4" value="54f837ab"/>
-    <field name="sctp.assoc_index" pos="34" show="0" showname="Assocation index: 0" size="0"/>
-    <field hide="yes" name="sctp.port" pos="34" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-    <field hide="yes" name="sctp.port" pos="36" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.checksum" pos="42" show="1777986730" showname="Checksum: 0x69f9ecaa (not verified)" size="4" value="69f9ecaa"/>
-    <field name="" pos="46" show="SACK chunk (Cumulative TSN: 3304831192, a_rwnd: 106496, gaps: 0, duplicate TSNs: 0)" size="16" value="03000010c4fbb8d80001a00000000000">
-      <field name="sctp.chunk_type" pos="46" show="3" showname="Chunk type: SACK (3)" size="1" value="03">
-        <field name="sctp.chunk_bit_1" pos="46" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="03" value="0"/>
-        <field name="sctp.chunk_bit_2" pos="46" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="03" value="0"/>
-      </field>
-      <field name="sctp.chunk_flags" pos="47" show="0" showname="Chunk flags: 0x00" size="1" value="00">
-        <field name="sctp.sack_nounce_sum" pos="47" show="0" showname=".... ...0 = Nounce sum: 0" size="1" unmaskedvalue="00" value="0"/>
-      </field>
-      <field name="sctp.chunk_length" pos="48" show="16" showname="Chunk length: 16" size="2" value="0010"/>
-      <field name="sctp.sack_cumulative_tsn_ack" pos="50" show="3304831192" showname="Cumulative TSN ACK: 3304831192" size="4" value="c4fbb8d8">
-        <field name="sctp.ack" pos="96" show="3304831192" showname="Acknowledges TSN: 3304831192" size="0">
-          <field name="sctp.ack_frame" pos="46" show="76" showname="Chunk acknowledged in frame: 76" size="0"/>
-          <field name="sctp.sack_rtt" pos="46" show="0.001624000" showname="The RTT since DATA was: 0.001624000 seconds" size="0"/>
-        </field>
-      </field>
-      <field name="sctp.sack_a_rwnd" pos="54" show="106496" showname="Advertised receiver window credit (a_rwnd): 106496" size="4" value="0001a000"/>
-      <field name="sctp.sack_number_of_gap_blocks" pos="58" show="0" showname="Number of gap acknowledgement blocks: 0" size="2" value="0000"/>
-      <field name="sctp.sack_number_of_duplicated_tsns" pos="60" show="0" showname="Number of duplicated TSNs: 0" size="2" value="0000"/>
-    </field>
-    <field name="" pos="62" show="DATA chunk(ordered, complete segment, TSN: 2008295176, SID: 1, SSN: 0, PPID: 301989888, payload length: 32 bytes)" size="16" value="0003003077b427080001000012000000">
-      <field name="sctp.chunk_type" pos="62" show="0" showname="Chunk type: DATA (0)" size="1" value="00">
-        <field name="sctp.chunk_bit_1" pos="62" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="00" value="0"/>
-        <field name="sctp.chunk_bit_2" pos="62" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="00" value="0"/>
-      </field>
-      <field name="sctp.chunk_flags" pos="63" show="3" showname="Chunk flags: 0x03" size="1" value="03">
-        <field name="sctp.data_e_bit" pos="63" show="1" showname=".... ...1 = E-Bit: Last segment" size="1" unmaskedvalue="03" value="1"/>
-        <field name="sctp.data_b_bit" pos="63" show="1" showname=".... ..1. = B-Bit: First segment" size="1" unmaskedvalue="03" value="1"/>
-        <field name="sctp.data_u_bit" pos="63" show="0" showname=".... .0.. = U-Bit: Ordered delivery" size="1" unmaskedvalue="03" value="0"/>
-        <field name="sctp.data_i_bit" pos="63" show="0" showname=".... 0... = I-Bit: Possibly delay SACK" size="1" unmaskedvalue="03" value="0"/>
-      </field>
-      <field name="sctp.chunk_length" pos="64" show="48" showname="Chunk length: 48" size="2" value="0030"/>
-      <field name="sctp.data_tsn" pos="66" show="2008295176" showname="TSN: 2008295176" size="4" value="77b42708"/>
-      <field name="sctp.data_sid" pos="70" show="1" showname="Stream Identifier: 0x0001" size="2" value="0001"/>
-      <field name="sctp.data_ssn" pos="72" show="0" showname="Stream sequence number: 0" size="2" value="0000"/>
-      <field name="sctp.data_payload_proto_id" pos="74" show="301989888" showname="Payload protocol identifier: Unknown (301989888)" size="4" value="12000000"/>
-    </field>
-  </proto>
-  <proto name="s1ap" pos="78" showname="S1 Application Protocol" size="32">
-    <field hide="yes" name="per.extension_bit" pos="78" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-    <field hide="yes" name="per.choice_index" pos="78" show="0" showname="Choice Index: 0" size="1" value="00"/>
-    <field name="s1ap.S1AP_PDU" pos="78" show="0" showname="S1AP-PDU: initiatingMessage (0)" size="32" value="000b001c00000300000005c0740010d0000800048006692d001a000403075501">
-      <field name="s1ap.initiatingMessage_element" pos="78" show="" showname="initiatingMessage" size="32" value="">
-        <field name="s1ap.procedureCode" pos="79" show="11" showname="procedureCode: id-downlinkNASTransport (11)" size="1" value="0b"/>
-        <field hide="yes" name="per.enum_index" pos="80" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-        <field name="s1ap.criticality" pos="80" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-        <field hide="yes" name="per.open_type_length" pos="81" show="28" showname="Open Type Length: 28" size="1" value="1c"/>
-        <field name="s1ap.value_element" pos="82" show="" showname="value" size="28" value="">
-          <field name="s1ap.DownlinkNASTransport_element" pos="82" show="" showname="DownlinkNASTransport" size="28" value="">
-            <field hide="yes" name="per.extension_bit" pos="82" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-            <field hide="yes" name="per.sequence_of_length" pos="83" show="3" showname="Sequence-Of Length: 3" size="2" value="0003"/>
-            <field name="s1ap.protocolIEs" pos="85" show="3" showname="protocolIEs: 3 items" size="25" value="00000005c0740010d0000800048006692d001a000403075501">
-              <field name="" pos="85" show="Item 0: id-MME-UE-S1AP-ID" size="9" value="00000005c0740010d0">
-                <field name="s1ap.ProtocolIE_Field_element" pos="85" show="" showname="ProtocolIE-Field" size="9" value="">
-                  <field name="s1ap.id" pos="85" show="0" showname="id: id-MME-UE-S1AP-ID (0)" size="2" value="0000"/>
-                  <field hide="yes" name="per.enum_index" pos="87" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                  <field name="s1ap.criticality" pos="87" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                  <field hide="yes" name="per.open_type_length" pos="88" show="5" showname="Open Type Length: 5" size="1" value="05"/>
-                  <field name="s1ap.value_element" pos="89" show="" showname="value" size="5" value="">
-                    <field name="s1ap.MME_UE_S1AP_ID" pos="89" show="1946161360" showname="MME-UE-S1AP-ID: 1946161360" size="5" value="c0740010d0"/>
-                  </field>
-                </field>
-              </field>
-              <field name="" pos="94" show="Item 1: id-eNB-UE-S1AP-ID" size="8" value="000800048006692d">
-                <field name="s1ap.ProtocolIE_Field_element" pos="94" show="" showname="ProtocolIE-Field" size="8" value="">
-                  <field name="s1ap.id" pos="94" show="8" showname="id: id-eNB-UE-S1AP-ID (8)" size="2" value="0008"/>
-                  <field hide="yes" name="per.enum_index" pos="96" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                  <field name="s1ap.criticality" pos="96" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                  <field hide="yes" name="per.open_type_length" pos="97" show="4" showname="Open Type Length: 4" size="1" value="04"/>
-                  <field name="s1ap.value_element" pos="98" show="" showname="value" size="4" value="">
-                    <field name="s1ap.ENB_UE_S1AP_ID" pos="98" show="420141" showname="ENB-UE-S1AP-ID: 420141" size="4" value="8006692d"/>
-                  </field>
-                </field>
-              </field>
-              <field name="" pos="102" show="Item 2: id-NAS-PDU" size="8" value="001a000403075501">
-                <field name="s1ap.ProtocolIE_Field_element" pos="102" show="" showname="ProtocolIE-Field" size="8" value="">
-                  <field name="s1ap.id" pos="102" show="26" showname="id: id-NAS-PDU (26)" size="2" value="001a"/>
-                  <field hide="yes" name="per.enum_index" pos="104" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                  <field name="s1ap.criticality" pos="104" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                  <field hide="yes" name="per.open_type_length" pos="105" show="4" showname="Open Type Length: 4" size="1" value="04"/>
-                  <field name="s1ap.value_element" pos="106" show="" showname="value" size="4" value="">
-                    <field hide="yes" name="per.octet_string_length" pos="106" show="3" showname="Octet String Length: 3" size="1" value="03"/>
-                    <field name="s1ap.NAS_PDU" pos="107" show="07:55:01" showname="NAS-PDU: 075501" size="3" value="075501"/>
-                    <proto name="nas-eps" pos="107" showname="Non-Access-Stratum (NAS)PDU" size="3">
-                      <field name="nas_eps.security_header_type" pos="107" show="0" showname="0000 .... = Security header type: Plain NAS message, not security protected (0)" size="1" unmaskedvalue="07" value="0"/>
-                      <field name="gsm_a.L3_protocol_discriminator" pos="107" show="7" showname=".... 0111 = Protocol discriminator: EPS mobility management messages (0x07)" size="1" unmaskedvalue="07" value="7"/>
-                      <field name="nas_eps.nas_msg_emm_type" pos="108" show="85" showname="NAS EPS Mobility Management Message Type: Identity request (0x55)" size="1" value="55"/>
-                      <field name="nas_eps.emm.spare_half_octet" pos="109" show="0" showname="0000 .... = Spare half octet: 0" size="1" value="01"/>
-                      <field name="nas_eps.emm.id_type2" pos="109" show="1" showname=".... 0001 = Identity type 2: IMSI (1)" size="1" value="01"/>
-                    </proto>
-                  </field>
-                </field>
-              </field>
-            </field>
-          </field>
-        </field>
-      </field>
-    </field>
-  </proto>
-</packet>
-<packet>
-  
-  <proto name="frame" pos="0" showname="Frame 78: 146 bytes on wire (1168 bits), 146 bytes captured (1168 bits) on interface 0" size="146">
-    <field name="frame.interface_id" pos="0" show="0" showname="Interface id: 0 (eth0)" size="0"/>
-    <field name="frame.encap_type" pos="0" show="1" showname="Encapsulation type: Ethernet (1)" size="0"/>
-    <field name="frame.time" pos="0" show="Sep 25, 2015 16:34:53.767126000 CEST" showname="Arrival Time: Sep 25, 2015 16:34:53.767126000 CEST" size="0"/>
-    <field name="frame.offset_shift" pos="0" show="0.000000000" showname="Time shift for this packet: 0.000000000 seconds" size="0"/>
-    <field name="frame.time_epoch" pos="0" show="1443191693.767126000" showname="Epoch Time: 1443191693.767126000 seconds" size="0"/>
-    <field name="frame.time_delta" pos="0" show="0.017181000" showname="Time delta from previous captured frame: 0.017181000 seconds" size="0"/>
-    <field name="frame.time_delta_displayed" pos="0" show="0.017181000" showname="Time delta from previous displayed frame: 0.017181000 seconds" size="0"/>
-    <field name="frame.time_relative" pos="0" show="47.301495000" showname="Time since reference or first frame: 47.301495000 seconds" size="0"/>
-    <field name="frame.number" pos="0" show="78" showname="Frame Number: 78" size="0"/>
-    <field name="frame.len" pos="0" show="146" showname="Frame Length: 146 bytes (1168 bits)" size="0"/>
-    <field name="frame.cap_len" pos="0" show="146" showname="Capture Length: 146 bytes (1168 bits)" size="0"/>
-    <field name="frame.marked" pos="0" show="0" showname="Frame is marked: False" size="0"/>
-    <field name="frame.ignored" pos="0" show="0" showname="Frame is ignored: False" size="0"/>
-    <field name="frame.protocols" pos="0" show="eth:ethertype:ip:sctp:s1ap:s1ap:s1ap:s1ap:s1ap:nas-eps:s1ap:s1ap" showname="Protocols in frame: eth:ethertype:ip:sctp:s1ap:s1ap:s1ap:s1ap:s1ap:nas-eps:s1ap:s1ap" size="0"/>
-  </proto>
-  
-  <proto name="ip" pos="14" showname="Internet Protocol Version 4, Src: 192.168.12.213 (192.168.12.213), Dst: 192.168.12.17 (192.168.12.17)" size="20">
-    <field name="ip.version" pos="14" show="4" showname="Version: 4" size="1" value="45"/>
-    <field name="ip.hdr_len" pos="14" show="20" showname="Header Length: 20 bytes" size="1" value="45"/>
-    <field name="ip.dsfield" pos="15" show="2" showname="Differentiated Services Field: 0x02 (DSCP 0x00: Default; ECN: 0x02: ECT(0) (ECN-Capable Transport))" size="1" value="02">
-      <field name="ip.dsfield.dscp" pos="15" show="0" showname="0000 00.. = Differentiated Services Codepoint: Default (0x00)" size="1" unmaskedvalue="02" value="0"/>
-      <field name="ip.dsfield.ecn" pos="15" show="2" showname=".... ..10 = Explicit Congestion Notification: ECT(0) (ECN-Capable Transport) (0x02)" size="1" unmaskedvalue="02" value="2"/>
-    </field>
-    <field name="ip.len" pos="16" show="132" showname="Total Length: 132" size="2" value="0084"/>
-    <field name="ip.id" pos="18" show="6" showname="Identification: 0x0006 (6)" size="2" value="0006"/>
-    <field name="ip.flags" pos="20" show="2" showname="Flags: 0x02 (Don't Fragment)" size="1" value="40">
-      <field name="ip.flags.rb" pos="20" show="0" showname="0... .... = Reserved bit: Not set" size="1" value="40"/>
-      <field name="ip.flags.df" pos="20" show="1" showname=".1.. .... = Don't fragment: Set" size="1" value="40"/>
-      <field name="ip.flags.mf" pos="20" show="0" showname="..0. .... = More fragments: Not set" size="1" value="40"/>
-    </field>
-    <field name="ip.frag_offset" pos="20" show="0" showname="Fragment offset: 0" size="2" value="4000"/>
-    <field name="ip.ttl" pos="22" show="64" showname="Time to live: 64" size="1" value="40"/>
-    <field name="ip.proto" pos="23" show="132" showname="Protocol: SCTP (132)" size="1" value="84"/>
-    <field name="ip.checksum" pos="24" show="40887" showname="Header checksum: 0x9fb7 [validation disabled]" size="2" value="9fb7">
-      <field name="ip.checksum_good" pos="24" show="0" showname="Good: False" size="2" value="9fb7"/>
-      <field name="ip.checksum_bad" pos="24" show="0" showname="Bad: False" size="2" value="9fb7"/>
-    </field>
-    <field name="ip.src" pos="26" show="192.168.12.213" showname="Source: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.addr" pos="26" show="192.168.12.213" showname="Source or Destination Address: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.src_host" pos="26" show="192.168.12.213" showname="Source Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.host" pos="26" show="192.168.12.213" showname="Source or Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-    <field name="ip.dst" pos="30" show="192.168.12.17" showname="Destination: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.addr" pos="30" show="192.168.12.17" showname="Source or Destination Address: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.dst_host" pos="30" show="192.168.12.17" showname="Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.host" pos="30" show="192.168.12.17" showname="Source or Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-    <field name="" pos="26" show="Source GeoIP: Unknown" size="4" value="c0a80cd5"/>
-    <field name="" pos="30" show="Destination GeoIP: Unknown" size="4" value="c0a80c11"/>
-  </proto>
-  <proto name="sctp" pos="34" showname="Stream Control Transmission Protocol, Src Port: 36412 (36412), Dst Port: 36412 (36412)" size="44">
-    <field name="sctp.srcport" pos="34" show="36412" showname="Source port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.dstport" pos="36" show="36412" showname="Destination port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.verification_tag" pos="38" show="1288826016" showname="Verification tag: 0x4cd1eca0" size="4" value="4cd1eca0"/>
-    <field name="sctp.assoc_index" pos="34" show="0" showname="Assocation index: 0" size="0"/>
-    <field hide="yes" name="sctp.port" pos="34" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-    <field hide="yes" name="sctp.port" pos="36" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.checksum" pos="42" show="1823354789" showname="Checksum: 0x6cae2fa5 (not verified)" size="4" value="6cae2fa5"/>
-    <field name="" pos="46" show="SACK chunk (Cumulative TSN: 2008295176, a_rwnd: 106496, gaps: 0, duplicate TSNs: 0)" size="16" value="0300001077b427080001a00000000000">
-      <field name="sctp.chunk_type" pos="46" show="3" showname="Chunk type: SACK (3)" size="1" value="03">
-        <field name="sctp.chunk_bit_1" pos="46" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="03" value="0"/>
-        <field name="sctp.chunk_bit_2" pos="46" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="03" value="0"/>
-      </field>
-      <field name="sctp.chunk_flags" pos="47" show="0" showname="Chunk flags: 0x00" size="1" value="00">
-        <field name="sctp.sack_nounce_sum" pos="47" show="0" showname=".... ...0 = Nounce sum: 0" size="1" unmaskedvalue="00" value="0"/>
-      </field>
-      <field name="sctp.chunk_length" pos="48" show="16" showname="Chunk length: 16" size="2" value="0010"/>
-      <field name="sctp.sack_cumulative_tsn_ack" pos="50" show="2008295176" showname="Cumulative TSN ACK: 2008295176" size="4" value="77b42708">
-        <field name="sctp.ack" pos="96" show="2008295176" showname="Acknowledges TSN: 2008295176" size="0">
-          <field name="sctp.ack_frame" pos="46" show="77" showname="Chunk acknowledged in frame: 77" size="0"/>
-          <field name="sctp.sack_rtt" pos="46" show="0.017181000" showname="The RTT since DATA was: 0.017181000 seconds" size="0"/>
-        </field>
-      </field>
-      <field name="sctp.sack_a_rwnd" pos="54" show="106496" showname="Advertised receiver window credit (a_rwnd): 106496" size="4" value="0001a000"/>
-      <field name="sctp.sack_number_of_gap_blocks" pos="58" show="0" showname="Number of gap acknowledgement blocks: 0" size="2" value="0000"/>
-      <field name="sctp.sack_number_of_duplicated_tsns" pos="60" show="0" showname="Number of duplicated TSNs: 0" size="2" value="0000"/>
-    </field>
-    <field name="" pos="62" show="DATA chunk(ordered, complete segment, TSN: 3304831193, SID: 1, SSN: 1, PPID: 18, payload length: 68 bytes)" size="16" value="00030054c4fbb8d90001000100000012">
-      <field name="sctp.chunk_type" pos="62" show="0" showname="Chunk type: DATA (0)" size="1" value="00">
-        <field name="sctp.chunk_bit_1" pos="62" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="00" value="0"/>
-        <field name="sctp.chunk_bit_2" pos="62" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="00" value="0"/>
-      </field>
-      <field name="sctp.chunk_flags" pos="63" show="3" showname="Chunk flags: 0x03" size="1" value="03">
-        <field name="sctp.data_e_bit" pos="63" show="1" showname=".... ...1 = E-Bit: Last segment" size="1" unmaskedvalue="03" value="1"/>
-        <field name="sctp.data_b_bit" pos="63" show="1" showname=".... ..1. = B-Bit: First segment" size="1" unmaskedvalue="03" value="1"/>
-        <field name="sctp.data_u_bit" pos="63" show="0" showname=".... .0.. = U-Bit: Ordered delivery" size="1" unmaskedvalue="03" value="0"/>
-        <field name="sctp.data_i_bit" pos="63" show="0" showname=".... 0... = I-Bit: Possibly delay SACK" size="1" unmaskedvalue="03" value="0"/>
-      </field>
-      <field name="sctp.chunk_length" pos="64" show="84" showname="Chunk length: 84" size="2" value="0054"/>
-      <field name="sctp.data_tsn" pos="66" show="3304831193" showname="TSN: 3304831193" size="4" value="c4fbb8d9"/>
-      <field name="sctp.data_sid" pos="70" show="1" showname="Stream Identifier: 0x0001" size="2" value="0001"/>
-      <field name="sctp.data_ssn" pos="72" show="1" showname="Stream sequence number: 1" size="2" value="0001"/>
-      <field name="sctp.data_payload_proto_id" pos="74" show="18" showname="Payload protocol identifier: S1 Application Protocol (S1AP) (18)" size="4" value="00000012"/>
-    </field>
-  </proto>
-  <proto name="s1ap" pos="78" showname="S1 Application Protocol" size="68">
-    <field hide="yes" name="per.extension_bit" pos="78" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-    <field hide="yes" name="per.choice_index" pos="78" show="0" showname="Choice Index: 0" size="1" value="00"/>
-    <field name="s1ap.S1AP_PDU" pos="78" show="0" showname="S1AP-PDU: initiatingMessage (0)" size="68" value="000d404000000500000005c0740010d0000800048006692d001a00121117b3e0e284030756082980590000000020006440080002f85900e00000004340060002f8590001">
-      <field name="s1ap.initiatingMessage_element" pos="78" show="" showname="initiatingMessage" size="68" value="">
-        <field name="s1ap.procedureCode" pos="79" show="13" showname="procedureCode: id-uplinkNASTransport (13)" size="1" value="0d"/>
-        <field hide="yes" name="per.enum_index" pos="80" show="1" showname="Enumerated Index: 1" size="1" value="40"/>
-        <field name="s1ap.criticality" pos="80" show="1" showname="criticality: ignore (1)" size="1" value="40"/>
-        <field hide="yes" name="per.open_type_length" pos="81" show="64" showname="Open Type Length: 64" size="1" value="40"/>
-        <field name="s1ap.value_element" pos="82" show="" showname="value" size="64" value="">
-          <field name="s1ap.UplinkNASTransport_element" pos="82" show="" showname="UplinkNASTransport" size="64" value="">
-            <field hide="yes" name="per.extension_bit" pos="82" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-            <field hide="yes" name="per.sequence_of_length" pos="83" show="5" showname="Sequence-Of Length: 5" size="2" value="0005"/>
-            <field name="s1ap.protocolIEs" pos="85" show="5" showname="protocolIEs: 5 items" size="61" value="00000005c0740010d0000800048006692d001a00121117b3e0e284030756082980590000000020006440080002f85900e00000004340060002f8590001">
-              <field name="" pos="85" show="Item 0: id-MME-UE-S1AP-ID" size="9" value="00000005c0740010d0">
-                <field name="s1ap.ProtocolIE_Field_element" pos="85" show="" showname="ProtocolIE-Field" size="9" value="">
-                  <field name="s1ap.id" pos="85" show="0" showname="id: id-MME-UE-S1AP-ID (0)" size="2" value="0000"/>
-                  <field hide="yes" name="per.enum_index" pos="87" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                  <field name="s1ap.criticality" pos="87" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                  <field hide="yes" name="per.open_type_length" pos="88" show="5" showname="Open Type Length: 5" size="1" value="05"/>
-                  <field name="s1ap.value_element" pos="89" show="" showname="value" size="5" value="">
-                    <field name="s1ap.MME_UE_S1AP_ID" pos="89" show="1946161360" showname="MME-UE-S1AP-ID: 1946161360" size="5" value="c0740010d0"/>
-                  </field>
-                </field>
-              </field>
-              <field name="" pos="94" show="Item 1: id-eNB-UE-S1AP-ID" size="8" value="000800048006692d">
-                <field name="s1ap.ProtocolIE_Field_element" pos="94" show="" showname="ProtocolIE-Field" size="8" value="">
-                  <field name="s1ap.id" pos="94" show="8" showname="id: id-eNB-UE-S1AP-ID (8)" size="2" value="0008"/>
-                  <field hide="yes" name="per.enum_index" pos="96" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                  <field name="s1ap.criticality" pos="96" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                  <field hide="yes" name="per.open_type_length" pos="97" show="4" showname="Open Type Length: 4" size="1" value="04"/>
-                  <field name="s1ap.value_element" pos="98" show="" showname="value" size="4" value="">
-                    <field name="s1ap.ENB_UE_S1AP_ID" pos="98" show="420141" showname="ENB-UE-S1AP-ID: 420141" size="4" value="8006692d"/>
-                  </field>
-                </field>
-              </field>
-              <field name="" pos="102" show="Item 2: id-NAS-PDU" size="22" value="001a00121117b3e0e284030756082980590000000020">
-                <field name="s1ap.ProtocolIE_Field_element" pos="102" show="" showname="ProtocolIE-Field" size="22" value="">
-                  <field name="s1ap.id" pos="102" show="26" showname="id: id-NAS-PDU (26)" size="2" value="001a"/>
-                  <field hide="yes" name="per.enum_index" pos="104" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                  <field name="s1ap.criticality" pos="104" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                  <field hide="yes" name="per.open_type_length" pos="105" show="18" showname="Open Type Length: 18" size="1" value="12"/>
-                  <field name="s1ap.value_element" pos="106" show="" showname="value" size="18" value="">
-                    <field hide="yes" name="per.octet_string_length" pos="106" show="17" showname="Octet String Length: 17" size="1" value="11"/>
-                    <field name="s1ap.NAS_PDU" pos="107" show="17:b3:e0:e2:84:03:07:56:08:29:80:59:00:00:00:00:20" showname="NAS-PDU: 17b3e0e284030756082980590000000020" size="17" value="17b3e0e284030756082980590000000020"/>
-                    <proto name="nas-eps" pos="107" showname="Non-Access-Stratum (NAS)PDU" size="17">
-                      <field name="nas_eps.security_header_type" pos="107" show="1" showname="0001 .... = Security header type: Integrity protected (1)" size="1" unmaskedvalue="17" value="1"/>
-                      <field name="gsm_a.L3_protocol_discriminator" pos="107" show="7" showname=".... 0111 = Protocol discriminator: EPS mobility management messages (0x07)" size="1" unmaskedvalue="17" value="7"/>
-                      <field name="nas_eps.msg_auth_code" pos="108" show="3017859716" showname="Message authentication code: 0xb3e0e284" size="4" value="b3e0e284"/>
-                      <field name="nas_eps.seq_no" pos="112" show="3" showname="Sequence number: 3" size="1" value="03"/>
-                      <field name="nas_eps.security_header_type" pos="113" show="0" showname="0000 .... = Security header type: Plain NAS message, not security protected (0)" size="1" unmaskedvalue="07" value="0"/>
-                      <field name="gsm_a.L3_protocol_discriminator" pos="113" show="7" showname=".... 0111 = Protocol discriminator: EPS mobility management messages (0x07)" size="1" unmaskedvalue="07" value="7"/>
-                      <field name="nas_eps.nas_msg_emm_type" pos="114" show="86" showname="NAS EPS Mobility Management Message Type: Identity response (0x56)" size="1" value="56"/>
-                      <field name="" pos="115" show="Mobile identity - IMSI (208950000000002)" size="9" value="082980590000000020">
-                        <field name="gsm_a.len" pos="115" show="8" showname="Length: 8" size="1" value="08"/>
-                        <field name="" pos="116" show="0010 .... = Identity Digit 1: 2" size="1" value="29"/>
-                        <field name="gsm_a.oddevenind" pos="116" show="1" showname=".... 1... = Odd/even indication: Odd number of identity digits" size="1" unmaskedvalue="29" value="1"/>
-                        <field name="gsm_a.ie.mobileid.type" pos="116" show="1" showname=".... .001 = Mobile Identity Type: IMSI (1)" size="1" unmaskedvalue="29" value="1"/>
-                        <field name="gsm_a.imsi" pos="116" show="208950000000002" showname="BCD Digits: 208950000000002" size="8" value="2980590000000020"/>
-                      </field>
-                    </proto>
-                  </field>
-                </field>
-              </field>
-              <field name="" pos="124" show="Item 3: id-EUTRAN-CGI" size="12" value="006440080002f85900e00000">
-                <field name="s1ap.ProtocolIE_Field_element" pos="124" show="" showname="ProtocolIE-Field" size="12" value="">
-                  <field name="s1ap.id" pos="124" show="100" showname="id: id-EUTRAN-CGI (100)" size="2" value="0064"/>
-                  <field hide="yes" name="per.enum_index" pos="126" show="1" showname="Enumerated Index: 1" size="1" value="40"/>
-                  <field name="s1ap.criticality" pos="126" show="1" showname="criticality: ignore (1)" size="1" value="40"/>
-                  <field hide="yes" name="per.open_type_length" pos="127" show="8" showname="Open Type Length: 8" size="1" value="08"/>
-                  <field name="s1ap.value_element" pos="128" show="" showname="value" size="8" value="">
-                    <field name="s1ap.EUTRAN_CGI_element" pos="128" show="" showname="EUTRAN-CGI" size="7" value="">
-                      <field hide="yes" name="per.extension_bit" pos="128" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-                      <field hide="yes" name="per.optional_field_bit" pos="128" show="0" showname=".0.. .... Optional Field Bit: False (iE-Extensions is NOT present)" size="1" unmaskedvalue="00" value="0"/>
-                      <field name="s1ap.pLMNidentity" pos="129" show="02:f8:59" showname="pLMNidentity: 02f859" size="3" value="02f859"/>
-                      <field name="e212.mcc" pos="129" show="208" showname="Mobile Country Code (MCC): France (208)" size="2" value="02f8"/>
-                      <field name="e212.mnc" pos="130" show="95" showname="Mobile Network Code (MNC): Unknown (95)" size="2" value="f859"/>
-                      <field name="s1ap.cell_ID" pos="128" show="00:e0:00:00" showname="cell-ID: 00e00000 [bit length 28, 4 LSB pad bits, 0000 0000  1110 0000  0000 0000  0000 .... decimal value 917504]" size="4" value="00e00000"/>
-                    </field>
-                  </field>
-                </field>
-              </field>
-              <field name="" pos="136" show="Item 4: id-TAI" size="10" value="004340060002f8590001">
-                <field name="s1ap.ProtocolIE_Field_element" pos="136" show="" showname="ProtocolIE-Field" size="10" value="">
-                  <field name="s1ap.id" pos="136" show="67" showname="id: id-TAI (67)" size="2" value="0043"/>
-                  <field hide="yes" name="per.enum_index" pos="138" show="1" showname="Enumerated Index: 1" size="1" value="40"/>
-                  <field name="s1ap.criticality" pos="138" show="1" showname="criticality: ignore (1)" size="1" value="40"/>
-                  <field hide="yes" name="per.open_type_length" pos="139" show="6" showname="Open Type Length: 6" size="1" value="06"/>
-                  <field name="s1ap.value_element" pos="140" show="" showname="value" size="6" value="">
-                    <field name="s1ap.TAI_element" pos="140" show="" showname="TAI" size="6" value="">
-                      <field hide="yes" name="per.extension_bit" pos="140" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-                      <field hide="yes" name="per.optional_field_bit" pos="140" show="0" showname=".0.. .... Optional Field Bit: False (iE-Extensions is NOT present)" size="1" unmaskedvalue="00" value="0"/>
-                      <field name="s1ap.pLMNidentity" pos="141" show="02:f8:59" showname="pLMNidentity: 02f859" size="3" value="02f859"/>
-                      <field name="e212.mcc" pos="141" show="208" showname="Mobile Country Code (MCC): France (208)" size="2" value="02f8"/>
-                      <field name="e212.mnc" pos="142" show="95" showname="Mobile Network Code (MNC): Unknown (95)" size="2" value="f859"/>
-                      <field name="s1ap.tAC" pos="144" show="00:01" showname="tAC: 0001" size="2" value="0001"/>
-                    </field>
-                  </field>
-                </field>
-              </field>
-            </field>
-          </field>
-        </field>
-      </field>
-    </field>
-  </proto>
-</packet>
-<packet>
-  
-  <proto name="frame" pos="0" showname="Frame 79: 146 bytes on wire (1168 bits), 146 bytes captured (1168 bits) on interface 0" size="146">
-    <field name="frame.interface_id" pos="0" show="0" showname="Interface id: 0 (eth0)" size="0"/>
-    <field name="frame.encap_type" pos="0" show="1" showname="Encapsulation type: Ethernet (1)" size="0"/>
-    <field name="frame.time" pos="0" show="Sep 25, 2015 16:34:53.771623000 CEST" showname="Arrival Time: Sep 25, 2015 16:34:53.771623000 CEST" size="0"/>
-    <field name="frame.offset_shift" pos="0" show="0.000000000" showname="Time shift for this packet: 0.000000000 seconds" size="0"/>
-    <field name="frame.time_epoch" pos="0" show="1443191693.771623000" showname="Epoch Time: 1443191693.771623000 seconds" size="0"/>
-    <field name="frame.time_delta" pos="0" show="0.004497000" showname="Time delta from previous captured frame: 0.004497000 seconds" size="0"/>
-    <field name="frame.time_delta_displayed" pos="0" show="0.004497000" showname="Time delta from previous displayed frame: 0.004497000 seconds" size="0"/>
-    <field name="frame.time_relative" pos="0" show="47.305992000" showname="Time since reference or first frame: 47.305992000 seconds" size="0"/>
-    <field name="frame.number" pos="0" show="79" showname="Frame Number: 79" size="0"/>
-    <field name="frame.len" pos="0" show="146" showname="Frame Length: 146 bytes (1168 bits)" size="0"/>
-    <field name="frame.cap_len" pos="0" show="146" showname="Capture Length: 146 bytes (1168 bits)" size="0"/>
-    <field name="frame.marked" pos="0" show="0" showname="Frame is marked: False" size="0"/>
-    <field name="frame.ignored" pos="0" show="0" showname="Frame is ignored: False" size="0"/>
-    <field name="frame.protocols" pos="0" show="eth:ethertype:ip:sctp:s1ap:s1ap:s1ap:s1ap:s1ap:nas-eps" showname="Protocols in frame: eth:ethertype:ip:sctp:s1ap:s1ap:s1ap:s1ap:s1ap:nas-eps" size="0"/>
-  </proto>
-  
-  <proto name="ip" pos="14" showname="Internet Protocol Version 4, Src: 192.168.12.17 (192.168.12.17), Dst: 192.168.12.213 (192.168.12.213)" size="20">
-    <field name="ip.version" pos="14" show="4" showname="Version: 4" size="1" value="45"/>
-    <field name="ip.hdr_len" pos="14" show="20" showname="Header Length: 20 bytes" size="1" value="45"/>
-    <field name="ip.dsfield" pos="15" show="2" showname="Differentiated Services Field: 0x02 (DSCP 0x00: Default; ECN: 0x02: ECT(0) (ECN-Capable Transport))" size="1" value="02">
-      <field name="ip.dsfield.dscp" pos="15" show="0" showname="0000 00.. = Differentiated Services Codepoint: Default (0x00)" size="1" unmaskedvalue="02" value="0"/>
-      <field name="ip.dsfield.ecn" pos="15" show="2" showname=".... ..10 = Explicit Congestion Notification: ECT(0) (ECN-Capable Transport) (0x02)" size="1" unmaskedvalue="02" value="2"/>
-    </field>
-    <field name="ip.len" pos="16" show="132" showname="Total Length: 132" size="2" value="0084"/>
-    <field name="ip.id" pos="18" show="0" showname="Identification: 0x0000 (0)" size="2" value="0000"/>
-    <field name="ip.flags" pos="20" show="2" showname="Flags: 0x02 (Don't Fragment)" size="1" value="40">
-      <field name="ip.flags.rb" pos="20" show="0" showname="0... .... = Reserved bit: Not set" size="1" value="40"/>
-      <field name="ip.flags.df" pos="20" show="1" showname=".1.. .... = Don't fragment: Set" size="1" value="40"/>
-      <field name="ip.flags.mf" pos="20" show="0" showname="..0. .... = More fragments: Not set" size="1" value="40"/>
-    </field>
-    <field name="ip.frag_offset" pos="20" show="0" showname="Fragment offset: 0" size="2" value="4000"/>
-    <field name="ip.ttl" pos="22" show="64" showname="Time to live: 64" size="1" value="40"/>
-    <field name="ip.proto" pos="23" show="132" showname="Protocol: SCTP (132)" size="1" value="84"/>
-    <field name="ip.checksum" pos="24" show="40893" showname="Header checksum: 0x9fbd [validation disabled]" size="2" value="9fbd">
-      <field name="ip.checksum_good" pos="24" show="0" showname="Good: False" size="2" value="9fbd"/>
-      <field name="ip.checksum_bad" pos="24" show="0" showname="Bad: False" size="2" value="9fbd"/>
-    </field>
-    <field name="ip.src" pos="26" show="192.168.12.17" showname="Source: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.addr" pos="26" show="192.168.12.17" showname="Source or Destination Address: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.src_host" pos="26" show="192.168.12.17" showname="Source Host: 192.168.12.17" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.host" pos="26" show="192.168.12.17" showname="Source or Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-    <field name="ip.dst" pos="30" show="192.168.12.213" showname="Destination: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.addr" pos="30" show="192.168.12.213" showname="Source or Destination Address: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.dst_host" pos="30" show="192.168.12.213" showname="Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.host" pos="30" show="192.168.12.213" showname="Source or Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-    <field name="" pos="26" show="Source GeoIP: Unknown" size="4" value="c0a80c11"/>
-    <field name="" pos="30" show="Destination GeoIP: Unknown" size="4" value="c0a80cd5"/>
-  </proto>
-  <proto name="sctp" pos="34" showname="Stream Control Transmission Protocol, Src Port: 36412 (36412), Dst Port: 36412 (36412)" size="44">
-    <field name="sctp.srcport" pos="34" show="36412" showname="Source port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.dstport" pos="36" show="36412" showname="Destination port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.verification_tag" pos="38" show="1425553323" showname="Verification tag: 0x54f837ab" size="4" value="54f837ab"/>
-    <field name="sctp.assoc_index" pos="34" show="0" showname="Assocation index: 0" size="0"/>
-    <field hide="yes" name="sctp.port" pos="34" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-    <field hide="yes" name="sctp.port" pos="36" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.checksum" pos="42" show="4128518844" showname="Checksum: 0xf61432bc (not verified)" size="4" value="f61432bc"/>
-    <field name="" pos="46" show="SACK chunk (Cumulative TSN: 3304831193, a_rwnd: 106496, gaps: 0, duplicate TSNs: 0)" size="16" value="03000010c4fbb8d90001a00000000000">
-      <field name="sctp.chunk_type" pos="46" show="3" showname="Chunk type: SACK (3)" size="1" value="03">
-        <field name="sctp.chunk_bit_1" pos="46" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="03" value="0"/>
-        <field name="sctp.chunk_bit_2" pos="46" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="03" value="0"/>
-      </field>
-      <field name="sctp.chunk_flags" pos="47" show="0" showname="Chunk flags: 0x00" size="1" value="00">
-        <field name="sctp.sack_nounce_sum" pos="47" show="0" showname=".... ...0 = Nounce sum: 0" size="1" unmaskedvalue="00" value="0"/>
-      </field>
-      <field name="sctp.chunk_length" pos="48" show="16" showname="Chunk length: 16" size="2" value="0010"/>
-      <field name="sctp.sack_cumulative_tsn_ack" pos="50" show="3304831193" showname="Cumulative TSN ACK: 3304831193" size="4" value="c4fbb8d9">
-        <field name="sctp.ack" pos="96" show="3304831193" showname="Acknowledges TSN: 3304831193" size="0">
-          <field name="sctp.ack_frame" pos="46" show="78" showname="Chunk acknowledged in frame: 78" size="0"/>
-          <field name="sctp.sack_rtt" pos="46" show="0.004497000" showname="The RTT since DATA was: 0.004497000 seconds" size="0"/>
-        </field>
-      </field>
-      <field name="sctp.sack_a_rwnd" pos="54" show="106496" showname="Advertised receiver window credit (a_rwnd): 106496" size="4" value="0001a000"/>
-      <field name="sctp.sack_number_of_gap_blocks" pos="58" show="0" showname="Number of gap acknowledgement blocks: 0" size="2" value="0000"/>
-      <field name="sctp.sack_number_of_duplicated_tsns" pos="60" show="0" showname="Number of duplicated TSNs: 0" size="2" value="0000"/>
-    </field>
-    <field name="" pos="62" show="DATA chunk(ordered, complete segment, TSN: 2008295177, SID: 1, SSN: 1, PPID: 301989888, payload length: 65 bytes)" size="16" value="0003005177b427090001000112000000">
-      <field name="sctp.chunk_type" pos="62" show="0" showname="Chunk type: DATA (0)" size="1" value="00">
-        <field name="sctp.chunk_bit_1" pos="62" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="00" value="0"/>
-        <field name="sctp.chunk_bit_2" pos="62" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="00" value="0"/>
-      </field>
-      <field name="sctp.chunk_flags" pos="63" show="3" showname="Chunk flags: 0x03" size="1" value="03">
-        <field name="sctp.data_e_bit" pos="63" show="1" showname=".... ...1 = E-Bit: Last segment" size="1" unmaskedvalue="03" value="1"/>
-        <field name="sctp.data_b_bit" pos="63" show="1" showname=".... ..1. = B-Bit: First segment" size="1" unmaskedvalue="03" value="1"/>
-        <field name="sctp.data_u_bit" pos="63" show="0" showname=".... .0.. = U-Bit: Ordered delivery" size="1" unmaskedvalue="03" value="0"/>
-        <field name="sctp.data_i_bit" pos="63" show="0" showname=".... 0... = I-Bit: Possibly delay SACK" size="1" unmaskedvalue="03" value="0"/>
-      </field>
-      <field name="sctp.chunk_length" pos="64" show="81" showname="Chunk length: 81" size="2" value="0051"/>
-      <field name="sctp.data_tsn" pos="66" show="2008295177" showname="TSN: 2008295177" size="4" value="77b42709"/>
-      <field name="sctp.data_sid" pos="70" show="1" showname="Stream Identifier: 0x0001" size="2" value="0001"/>
-      <field name="sctp.data_ssn" pos="72" show="1" showname="Stream sequence number: 1" size="2" value="0001"/>
-      <field name="sctp.data_payload_proto_id" pos="74" show="301989888" showname="Payload protocol identifier: Unknown (301989888)" size="4" value="12000000"/>
-      <field name="sctp.chunk_padding" pos="143" show="00:00:00" showname="Chunk padding: 000000" size="3" value="000000"/>
-    </field>
-  </proto>
-  <proto name="s1ap" pos="78" showname="S1 Application Protocol" size="65">
-    <field hide="yes" name="per.extension_bit" pos="78" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-    <field hide="yes" name="per.choice_index" pos="78" show="0" showname="Choice Index: 0" size="1" value="00"/>
-    <field name="s1ap.S1AP_PDU" pos="78" show="0" showname="S1AP-PDU: initiatingMessage (0)" size="65" value="000b003d00000300000005c0740010d0000800048006692d001a00252407520007cefaf5dd90a76da30d2c6775f4e41f10a19ee7945f198000a2a656d4988ff528">
-      <field name="s1ap.initiatingMessage_element" pos="78" show="" showname="initiatingMessage" size="65" value="">
-        <field name="s1ap.procedureCode" pos="79" show="11" showname="procedureCode: id-downlinkNASTransport (11)" size="1" value="0b"/>
-        <field hide="yes" name="per.enum_index" pos="80" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-        <field name="s1ap.criticality" pos="80" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-        <field hide="yes" name="per.open_type_length" pos="81" show="61" showname="Open Type Length: 61" size="1" value="3d"/>
-        <field name="s1ap.value_element" pos="82" show="" showname="value" size="61" value="">
-          <field name="s1ap.DownlinkNASTransport_element" pos="82" show="" showname="DownlinkNASTransport" size="61" value="">
-            <field hide="yes" name="per.extension_bit" pos="82" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-            <field hide="yes" name="per.sequence_of_length" pos="83" show="3" showname="Sequence-Of Length: 3" size="2" value="0003"/>
-            <field name="s1ap.protocolIEs" pos="85" show="3" showname="protocolIEs: 3 items" size="58" value="00000005c0740010d0000800048006692d001a00252407520007cefaf5dd90a76da30d2c6775f4e41f10a19ee7945f198000a2a656d4988ff528">
-              <field name="" pos="85" show="Item 0: id-MME-UE-S1AP-ID" size="9" value="00000005c0740010d0">
-                <field name="s1ap.ProtocolIE_Field_element" pos="85" show="" showname="ProtocolIE-Field" size="9" value="">
-                  <field name="s1ap.id" pos="85" show="0" showname="id: id-MME-UE-S1AP-ID (0)" size="2" value="0000"/>
-                  <field hide="yes" name="per.enum_index" pos="87" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                  <field name="s1ap.criticality" pos="87" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                  <field hide="yes" name="per.open_type_length" pos="88" show="5" showname="Open Type Length: 5" size="1" value="05"/>
-                  <field name="s1ap.value_element" pos="89" show="" showname="value" size="5" value="">
-                    <field name="s1ap.MME_UE_S1AP_ID" pos="89" show="1946161360" showname="MME-UE-S1AP-ID: 1946161360" size="5" value="c0740010d0"/>
-                  </field>
-                </field>
-              </field>
-              <field name="" pos="94" show="Item 1: id-eNB-UE-S1AP-ID" size="8" value="000800048006692d">
-                <field name="s1ap.ProtocolIE_Field_element" pos="94" show="" showname="ProtocolIE-Field" size="8" value="">
-                  <field name="s1ap.id" pos="94" show="8" showname="id: id-eNB-UE-S1AP-ID (8)" size="2" value="0008"/>
-                  <field hide="yes" name="per.enum_index" pos="96" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                  <field name="s1ap.criticality" pos="96" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                  <field hide="yes" name="per.open_type_length" pos="97" show="4" showname="Open Type Length: 4" size="1" value="04"/>
-                  <field name="s1ap.value_element" pos="98" show="" showname="value" size="4" value="">
-                    <field name="s1ap.ENB_UE_S1AP_ID" pos="98" show="420141" showname="ENB-UE-S1AP-ID: 420141" size="4" value="8006692d"/>
-                  </field>
-                </field>
-              </field>
-              <field name="" pos="102" show="Item 2: id-NAS-PDU" size="41" value="001a00252407520007cefaf5dd90a76da30d2c6775f4e41f10a19ee7945f198000a2a656d4988ff528">
-                <field name="s1ap.ProtocolIE_Field_element" pos="102" show="" showname="ProtocolIE-Field" size="41" value="">
-                  <field name="s1ap.id" pos="102" show="26" showname="id: id-NAS-PDU (26)" size="2" value="001a"/>
-                  <field hide="yes" name="per.enum_index" pos="104" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                  <field name="s1ap.criticality" pos="104" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                  <field hide="yes" name="per.open_type_length" pos="105" show="37" showname="Open Type Length: 37" size="1" value="25"/>
-                  <field name="s1ap.value_element" pos="106" show="" showname="value" size="37" value="">
-                    <field hide="yes" name="per.octet_string_length" pos="106" show="36" showname="Octet String Length: 36" size="1" value="24"/>
-                    <field name="s1ap.NAS_PDU" pos="107" show="07:52:00:07:ce:fa:f5:dd:90:a7:6d:a3:0d:2c:67:75:f4:e4:1f:10:a1:9e:e7:94:5f:19:80:00:a2:a6:56:d4:98:8f:f5:28" showname="NAS-PDU: 07520007cefaf5dd90a76da30d2c6775f4e41f10a19ee794..." size="36" value="07520007cefaf5dd90a76da30d2c6775f4e41f10a19ee7945f198000a2a656d4988ff528"/>
-                    <proto name="nas-eps" pos="107" showname="Non-Access-Stratum (NAS)PDU" size="36">
-                      <field name="nas_eps.security_header_type" pos="107" show="0" showname="0000 .... = Security header type: Plain NAS message, not security protected (0)" size="1" unmaskedvalue="07" value="0"/>
-                      <field name="gsm_a.L3_protocol_discriminator" pos="107" show="7" showname=".... 0111 = Protocol discriminator: EPS mobility management messages (0x07)" size="1" unmaskedvalue="07" value="7"/>
-                      <field name="nas_eps.nas_msg_emm_type" pos="108" show="82" showname="NAS EPS Mobility Management Message Type: Authentication request (0x52)" size="1" value="52"/>
-                      <field name="nas_eps.emm.spare_half_octet" pos="109" show="0" showname="0000 .... = Spare half octet: 0" size="1" value="00"/>
-                      <field name="nas_eps.emm.tsc" pos="109" show="0" showname=".... 0... = Type of security context flag (TSC): Native security context (for KSIasme)" size="1" value="00"/>
-                      <field name="nas_eps.emm.nas_key_set_id" pos="109" show="0" showname=".... .000 = NAS key set identifier:  (0) ASME" size="1" value="00"/>
-                      <field name="" pos="110" show="Authentication Parameter RAND - EPS challenge" size="16" value="07cefaf5dd90a76da30d2c6775f4e41f">
-                        <field name="gsm_a.dtap.rand" pos="110" show="07:ce:fa:f5:dd:90:a7:6d:a3:0d:2c:67:75:f4:e4:1f" showname="RAND value: 07cefaf5dd90a76da30d2c6775f4e41f" size="16" value="07cefaf5dd90a76da30d2c6775f4e41f"/>
-                      </field>
-                      <field name="" pos="126" show="Authentication Parameter AUTN (UMTS and EPS authentication challenge) - EPS challenge" size="17" value="10a19ee7945f198000a2a656d4988ff528">
-                        <field name="gsm_a.len" pos="126" show="16" showname="Length: 16" size="1" value="10"/>
-                        <field name="gsm_a.dtap.autn" pos="127" show="a1:9e:e7:94:5f:19:80:00:a2:a6:56:d4:98:8f:f5:28" showname="AUTN value: a19ee7945f198000a2a656d4988ff528" size="16" value="a19ee7945f198000a2a656d4988ff528">
-                          <field name="gsm_a.dtap.autn.sqn_xor_ak" pos="127" show="a1:9e:e7:94:5f:19" showname="SQN xor AK: a19ee7945f19" size="6" value="a19ee7945f19"/>
-                          <field name="gsm_a.dtap.autn.amf" pos="133" show="80:00" showname="AMF: 8000" size="2" value="8000"/>
-                          <field name="gsm_a.dtap.autn.mac" pos="135" show="a2:a6:56:d4:98:8f:f5:28" showname="MAC: a2a656d4988ff528" size="8" value="a2a656d4988ff528"/>
-                        </field>
-                      </field>
-                    </proto>
-                  </field>
-                </field>
-              </field>
-            </field>
-          </field>
-        </field>
-      </field>
-    </field>
-  </proto>
-</packet>
-<packet>
-  
-  <proto name="frame" pos="0" showname="Frame 80: 62 bytes on wire (496 bits), 62 bytes captured (496 bits) on interface 0" size="62">
-    <field name="frame.interface_id" pos="0" show="0" showname="Interface id: 0 (eth0)" size="0"/>
-    <field name="frame.encap_type" pos="0" show="1" showname="Encapsulation type: Ethernet (1)" size="0"/>
-    <field name="frame.time" pos="0" show="Sep 25, 2015 16:34:53.971568000 CEST" showname="Arrival Time: Sep 25, 2015 16:34:53.971568000 CEST" size="0"/>
-    <field name="frame.offset_shift" pos="0" show="0.000000000" showname="Time shift for this packet: 0.000000000 seconds" size="0"/>
-    <field name="frame.time_epoch" pos="0" show="1443191693.971568000" showname="Epoch Time: 1443191693.971568000 seconds" size="0"/>
-    <field name="frame.time_delta" pos="0" show="0.199945000" showname="Time delta from previous captured frame: 0.199945000 seconds" size="0"/>
-    <field name="frame.time_delta_displayed" pos="0" show="0.199945000" showname="Time delta from previous displayed frame: 0.199945000 seconds" size="0"/>
-    <field name="frame.time_relative" pos="0" show="47.505937000" showname="Time since reference or first frame: 47.505937000 seconds" size="0"/>
-    <field name="frame.number" pos="0" show="80" showname="Frame Number: 80" size="0"/>
-    <field name="frame.len" pos="0" show="62" showname="Frame Length: 62 bytes (496 bits)" size="0"/>
-    <field name="frame.cap_len" pos="0" show="62" showname="Capture Length: 62 bytes (496 bits)" size="0"/>
-    <field name="frame.marked" pos="0" show="0" showname="Frame is marked: False" size="0"/>
-    <field name="frame.ignored" pos="0" show="0" showname="Frame is ignored: False" size="0"/>
-    <field name="frame.protocols" pos="0" show="eth:ethertype:ip:sctp" showname="Protocols in frame: eth:ethertype:ip:sctp" size="0"/>
-  </proto>
-  
-  <proto name="ip" pos="14" showname="Internet Protocol Version 4, Src: 192.168.12.213 (192.168.12.213), Dst: 192.168.12.17 (192.168.12.17)" size="20">
-    <field name="ip.version" pos="14" show="4" showname="Version: 4" size="1" value="45"/>
-    <field name="ip.hdr_len" pos="14" show="20" showname="Header Length: 20 bytes" size="1" value="45"/>
-    <field name="ip.dsfield" pos="15" show="2" showname="Differentiated Services Field: 0x02 (DSCP 0x00: Default; ECN: 0x02: ECT(0) (ECN-Capable Transport))" size="1" value="02">
-      <field name="ip.dsfield.dscp" pos="15" show="0" showname="0000 00.. = Differentiated Services Codepoint: Default (0x00)" size="1" unmaskedvalue="02" value="0"/>
-      <field name="ip.dsfield.ecn" pos="15" show="2" showname=".... ..10 = Explicit Congestion Notification: ECT(0) (ECN-Capable Transport) (0x02)" size="1" unmaskedvalue="02" value="2"/>
-    </field>
-    <field name="ip.len" pos="16" show="48" showname="Total Length: 48" size="2" value="0030"/>
-    <field name="ip.id" pos="18" show="7" showname="Identification: 0x0007 (7)" size="2" value="0007"/>
-    <field name="ip.flags" pos="20" show="2" showname="Flags: 0x02 (Don't Fragment)" size="1" value="40">
-      <field name="ip.flags.rb" pos="20" show="0" showname="0... .... = Reserved bit: Not set" size="1" value="40"/>
-      <field name="ip.flags.df" pos="20" show="1" showname=".1.. .... = Don't fragment: Set" size="1" value="40"/>
-      <field name="ip.flags.mf" pos="20" show="0" showname="..0. .... = More fragments: Not set" size="1" value="40"/>
-    </field>
-    <field name="ip.frag_offset" pos="20" show="0" showname="Fragment offset: 0" size="2" value="4000"/>
-    <field name="ip.ttl" pos="22" show="64" showname="Time to live: 64" size="1" value="40"/>
-    <field name="ip.proto" pos="23" show="132" showname="Protocol: SCTP (132)" size="1" value="84"/>
-    <field name="ip.checksum" pos="24" show="40970" showname="Header checksum: 0xa00a [validation disabled]" size="2" value="a00a">
-      <field name="ip.checksum_good" pos="24" show="0" showname="Good: False" size="2" value="a00a"/>
-      <field name="ip.checksum_bad" pos="24" show="0" showname="Bad: False" size="2" value="a00a"/>
-    </field>
-    <field name="ip.src" pos="26" show="192.168.12.213" showname="Source: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.addr" pos="26" show="192.168.12.213" showname="Source or Destination Address: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.src_host" pos="26" show="192.168.12.213" showname="Source Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.host" pos="26" show="192.168.12.213" showname="Source or Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-    <field name="ip.dst" pos="30" show="192.168.12.17" showname="Destination: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.addr" pos="30" show="192.168.12.17" showname="Source or Destination Address: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.dst_host" pos="30" show="192.168.12.17" showname="Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.host" pos="30" show="192.168.12.17" showname="Source or Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-    <field name="" pos="26" show="Source GeoIP: Unknown" size="4" value="c0a80cd5"/>
-    <field name="" pos="30" show="Destination GeoIP: Unknown" size="4" value="c0a80c11"/>
-  </proto>
-  <proto name="sctp" pos="34" showname="Stream Control Transmission Protocol, Src Port: 36412 (36412), Dst Port: 36412 (36412)" size="28">
-    <field name="sctp.srcport" pos="34" show="36412" showname="Source port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.dstport" pos="36" show="36412" showname="Destination port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.verification_tag" pos="38" show="1288826016" showname="Verification tag: 0x4cd1eca0" size="4" value="4cd1eca0"/>
-    <field name="sctp.assoc_index" pos="34" show="0" showname="Assocation index: 0" size="0"/>
-    <field hide="yes" name="sctp.port" pos="34" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-    <field hide="yes" name="sctp.port" pos="36" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.checksum" pos="42" show="2417470431" showname="Checksum: 0x9017abdf (not verified)" size="4" value="9017abdf"/>
-    <field name="" pos="46" show="SACK chunk (Cumulative TSN: 2008295177, a_rwnd: 106496, gaps: 0, duplicate TSNs: 0)" size="16" value="0300001077b427090001a00000000000">
-      <field name="sctp.chunk_type" pos="46" show="3" showname="Chunk type: SACK (3)" size="1" value="03">
-        <field name="sctp.chunk_bit_1" pos="46" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="03" value="0"/>
-        <field name="sctp.chunk_bit_2" pos="46" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="03" value="0"/>
-      </field>
-      <field name="sctp.chunk_flags" pos="47" show="0" showname="Chunk flags: 0x00" size="1" value="00">
-        <field name="sctp.sack_nounce_sum" pos="47" show="0" showname=".... ...0 = Nounce sum: 0" size="1" unmaskedvalue="00" value="0"/>
-      </field>
-      <field name="sctp.chunk_length" pos="48" show="16" showname="Chunk length: 16" size="2" value="0010"/>
-      <field name="sctp.sack_cumulative_tsn_ack" pos="50" show="2008295177" showname="Cumulative TSN ACK: 2008295177" size="4" value="77b42709">
-        <field name="sctp.ack" pos="96" show="2008295177" showname="Acknowledges TSN: 2008295177" size="0">
-          <field name="sctp.ack_frame" pos="46" show="79" showname="Chunk acknowledged in frame: 79" size="0"/>
-          <field name="sctp.sack_rtt" pos="46" show="0.199945000" showname="The RTT since DATA was: 0.199945000 seconds" size="0"/>
-        </field>
-      </field>
-      <field name="sctp.sack_a_rwnd" pos="54" show="106496" showname="Advertised receiver window credit (a_rwnd): 106496" size="4" value="0001a000"/>
-      <field name="sctp.sack_number_of_gap_blocks" pos="58" show="0" showname="Number of gap acknowledgement blocks: 0" size="2" value="0000"/>
-      <field name="sctp.sack_number_of_duplicated_tsns" pos="60" show="0" showname="Number of duplicated TSNs: 0" size="2" value="0000"/>
-    </field>
-  </proto>
-</packet>
-<packet>
-  
-  <proto name="frame" pos="0" showname="Frame 81: 130 bytes on wire (1040 bits), 130 bytes captured (1040 bits) on interface 0" size="130">
-    <field name="frame.interface_id" pos="0" show="0" showname="Interface id: 0 (eth0)" size="0"/>
-    <field name="frame.encap_type" pos="0" show="1" showname="Encapsulation type: Ethernet (1)" size="0"/>
-    <field name="frame.time" pos="0" show="Sep 25, 2015 16:34:53.977130000 CEST" showname="Arrival Time: Sep 25, 2015 16:34:53.977130000 CEST" size="0"/>
-    <field name="frame.offset_shift" pos="0" show="0.000000000" showname="Time shift for this packet: 0.000000000 seconds" size="0"/>
-    <field name="frame.time_epoch" pos="0" show="1443191693.977130000" showname="Epoch Time: 1443191693.977130000 seconds" size="0"/>
-    <field name="frame.time_delta" pos="0" show="0.005562000" showname="Time delta from previous captured frame: 0.005562000 seconds" size="0"/>
-    <field name="frame.time_delta_displayed" pos="0" show="0.005562000" showname="Time delta from previous displayed frame: 0.005562000 seconds" size="0"/>
-    <field name="frame.time_relative" pos="0" show="47.511499000" showname="Time since reference or first frame: 47.511499000 seconds" size="0"/>
-    <field name="frame.number" pos="0" show="81" showname="Frame Number: 81" size="0"/>
-    <field name="frame.len" pos="0" show="130" showname="Frame Length: 130 bytes (1040 bits)" size="0"/>
-    <field name="frame.cap_len" pos="0" show="130" showname="Capture Length: 130 bytes (1040 bits)" size="0"/>
-    <field name="frame.marked" pos="0" show="0" showname="Frame is marked: False" size="0"/>
-    <field name="frame.ignored" pos="0" show="0" showname="Frame is ignored: False" size="0"/>
-    <field name="frame.protocols" pos="0" show="eth:ethertype:ip:sctp:s1ap:s1ap:s1ap:s1ap:s1ap:nas-eps:s1ap:s1ap" showname="Protocols in frame: eth:ethertype:ip:sctp:s1ap:s1ap:s1ap:s1ap:s1ap:nas-eps:s1ap:s1ap" size="0"/>
-  </proto>
-  
-  <proto name="ip" pos="14" showname="Internet Protocol Version 4, Src: 192.168.12.213 (192.168.12.213), Dst: 192.168.12.17 (192.168.12.17)" size="20">
-    <field name="ip.version" pos="14" show="4" showname="Version: 4" size="1" value="45"/>
-    <field name="ip.hdr_len" pos="14" show="20" showname="Header Length: 20 bytes" size="1" value="45"/>
-    <field name="ip.dsfield" pos="15" show="2" showname="Differentiated Services Field: 0x02 (DSCP 0x00: Default; ECN: 0x02: ECT(0) (ECN-Capable Transport))" size="1" value="02">
-      <field name="ip.dsfield.dscp" pos="15" show="0" showname="0000 00.. = Differentiated Services Codepoint: Default (0x00)" size="1" unmaskedvalue="02" value="0"/>
-      <field name="ip.dsfield.ecn" pos="15" show="2" showname=".... ..10 = Explicit Congestion Notification: ECT(0) (ECN-Capable Transport) (0x02)" size="1" unmaskedvalue="02" value="2"/>
-    </field>
-    <field name="ip.len" pos="16" show="116" showname="Total Length: 116" size="2" value="0074"/>
-    <field name="ip.id" pos="18" show="8" showname="Identification: 0x0008 (8)" size="2" value="0008"/>
-    <field name="ip.flags" pos="20" show="2" showname="Flags: 0x02 (Don't Fragment)" size="1" value="40">
-      <field name="ip.flags.rb" pos="20" show="0" showname="0... .... = Reserved bit: Not set" size="1" value="40"/>
-      <field name="ip.flags.df" pos="20" show="1" showname=".1.. .... = Don't fragment: Set" size="1" value="40"/>
-      <field name="ip.flags.mf" pos="20" show="0" showname="..0. .... = More fragments: Not set" size="1" value="40"/>
-    </field>
-    <field name="ip.frag_offset" pos="20" show="0" showname="Fragment offset: 0" size="2" value="4000"/>
-    <field name="ip.ttl" pos="22" show="64" showname="Time to live: 64" size="1" value="40"/>
-    <field name="ip.proto" pos="23" show="132" showname="Protocol: SCTP (132)" size="1" value="84"/>
-    <field name="ip.checksum" pos="24" show="40901" showname="Header checksum: 0x9fc5 [validation disabled]" size="2" value="9fc5">
-      <field name="ip.checksum_good" pos="24" show="0" showname="Good: False" size="2" value="9fc5"/>
-      <field name="ip.checksum_bad" pos="24" show="0" showname="Bad: False" size="2" value="9fc5"/>
-    </field>
-    <field name="ip.src" pos="26" show="192.168.12.213" showname="Source: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.addr" pos="26" show="192.168.12.213" showname="Source or Destination Address: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.src_host" pos="26" show="192.168.12.213" showname="Source Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.host" pos="26" show="192.168.12.213" showname="Source or Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-    <field name="ip.dst" pos="30" show="192.168.12.17" showname="Destination: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.addr" pos="30" show="192.168.12.17" showname="Source or Destination Address: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.dst_host" pos="30" show="192.168.12.17" showname="Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.host" pos="30" show="192.168.12.17" showname="Source or Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-    <field name="" pos="26" show="Source GeoIP: Unknown" size="4" value="c0a80cd5"/>
-    <field name="" pos="30" show="Destination GeoIP: Unknown" size="4" value="c0a80c11"/>
-  </proto>
-  <proto name="sctp" pos="34" showname="Stream Control Transmission Protocol, Src Port: 36412 (36412), Dst Port: 36412 (36412)" size="28">
-    <field name="sctp.srcport" pos="34" show="36412" showname="Source port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.dstport" pos="36" show="36412" showname="Destination port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.verification_tag" pos="38" show="1288826016" showname="Verification tag: 0x4cd1eca0" size="4" value="4cd1eca0"/>
-    <field name="sctp.assoc_index" pos="34" show="0" showname="Assocation index: 0" size="0"/>
-    <field hide="yes" name="sctp.port" pos="34" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-    <field hide="yes" name="sctp.port" pos="36" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.checksum" pos="42" show="801017725" showname="Checksum: 0x2fbe8f7d (not verified)" size="4" value="2fbe8f7d"/>
-    <field name="" pos="46" show="DATA chunk(ordered, complete segment, TSN: 3304831194, SID: 1, SSN: 2, PPID: 18, payload length: 68 bytes)" size="16" value="00030054c4fbb8da0001000200000012">
-      <field name="sctp.chunk_type" pos="46" show="0" showname="Chunk type: DATA (0)" size="1" value="00">
-        <field name="sctp.chunk_bit_1" pos="46" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="00" value="0"/>
-        <field name="sctp.chunk_bit_2" pos="46" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="00" value="0"/>
-      </field>
-      <field name="sctp.chunk_flags" pos="47" show="3" showname="Chunk flags: 0x03" size="1" value="03">
-        <field name="sctp.data_e_bit" pos="47" show="1" showname=".... ...1 = E-Bit: Last segment" size="1" unmaskedvalue="03" value="1"/>
-        <field name="sctp.data_b_bit" pos="47" show="1" showname=".... ..1. = B-Bit: First segment" size="1" unmaskedvalue="03" value="1"/>
-        <field name="sctp.data_u_bit" pos="47" show="0" showname=".... .0.. = U-Bit: Ordered delivery" size="1" unmaskedvalue="03" value="0"/>
-        <field name="sctp.data_i_bit" pos="47" show="0" showname=".... 0... = I-Bit: Possibly delay SACK" size="1" unmaskedvalue="03" value="0"/>
-      </field>
-      <field name="sctp.chunk_length" pos="48" show="84" showname="Chunk length: 84" size="2" value="0054"/>
-      <field name="sctp.data_tsn" pos="50" show="3304831194" showname="TSN: 3304831194" size="4" value="c4fbb8da"/>
-      <field name="sctp.data_sid" pos="54" show="1" showname="Stream Identifier: 0x0001" size="2" value="0001"/>
-      <field name="sctp.data_ssn" pos="56" show="2" showname="Stream sequence number: 2" size="2" value="0002"/>
-      <field name="sctp.data_payload_proto_id" pos="58" show="18" showname="Payload protocol identifier: S1 Application Protocol (S1AP) (18)" size="4" value="00000012"/>
-    </field>
-  </proto>
-  <proto name="s1ap" pos="62" showname="S1 Application Protocol" size="68">
-    <field hide="yes" name="per.extension_bit" pos="62" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-    <field hide="yes" name="per.choice_index" pos="62" show="0" showname="Choice Index: 0" size="1" value="00"/>
-    <field name="s1ap.S1AP_PDU" pos="62" show="0" showname="S1AP-PDU: initiatingMessage (0)" size="68" value="000d404000000500000005c0740010d0000800048006692d001a00121117aecd82eb0407530829a497732efc0114006440080002f85900e00000004340060002f8590001">
-      <field name="s1ap.initiatingMessage_element" pos="62" show="" showname="initiatingMessage" size="68" value="">
-        <field name="s1ap.procedureCode" pos="63" show="13" showname="procedureCode: id-uplinkNASTransport (13)" size="1" value="0d"/>
-        <field hide="yes" name="per.enum_index" pos="64" show="1" showname="Enumerated Index: 1" size="1" value="40"/>
-        <field name="s1ap.criticality" pos="64" show="1" showname="criticality: ignore (1)" size="1" value="40"/>
-        <field hide="yes" name="per.open_type_length" pos="65" show="64" showname="Open Type Length: 64" size="1" value="40"/>
-        <field name="s1ap.value_element" pos="66" show="" showname="value" size="64" value="">
-          <field name="s1ap.UplinkNASTransport_element" pos="66" show="" showname="UplinkNASTransport" size="64" value="">
-            <field hide="yes" name="per.extension_bit" pos="66" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-            <field hide="yes" name="per.sequence_of_length" pos="67" show="5" showname="Sequence-Of Length: 5" size="2" value="0005"/>
-            <field name="s1ap.protocolIEs" pos="69" show="5" showname="protocolIEs: 5 items" size="61" value="00000005c0740010d0000800048006692d001a00121117aecd82eb0407530829a497732efc0114006440080002f85900e00000004340060002f8590001">
-              <field name="" pos="69" show="Item 0: id-MME-UE-S1AP-ID" size="9" value="00000005c0740010d0">
-                <field name="s1ap.ProtocolIE_Field_element" pos="69" show="" showname="ProtocolIE-Field" size="9" value="">
-                  <field name="s1ap.id" pos="69" show="0" showname="id: id-MME-UE-S1AP-ID (0)" size="2" value="0000"/>
-                  <field hide="yes" name="per.enum_index" pos="71" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                  <field name="s1ap.criticality" pos="71" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                  <field hide="yes" name="per.open_type_length" pos="72" show="5" showname="Open Type Length: 5" size="1" value="05"/>
-                  <field name="s1ap.value_element" pos="73" show="" showname="value" size="5" value="">
-                    <field name="s1ap.MME_UE_S1AP_ID" pos="73" show="1946161360" showname="MME-UE-S1AP-ID: 1946161360" size="5" value="c0740010d0"/>
-                  </field>
-                </field>
-              </field>
-              <field name="" pos="78" show="Item 1: id-eNB-UE-S1AP-ID" size="8" value="000800048006692d">
-                <field name="s1ap.ProtocolIE_Field_element" pos="78" show="" showname="ProtocolIE-Field" size="8" value="">
-                  <field name="s1ap.id" pos="78" show="8" showname="id: id-eNB-UE-S1AP-ID (8)" size="2" value="0008"/>
-                  <field hide="yes" name="per.enum_index" pos="80" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                  <field name="s1ap.criticality" pos="80" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                  <field hide="yes" name="per.open_type_length" pos="81" show="4" showname="Open Type Length: 4" size="1" value="04"/>
-                  <field name="s1ap.value_element" pos="82" show="" showname="value" size="4" value="">
-                    <field name="s1ap.ENB_UE_S1AP_ID" pos="82" show="420141" showname="ENB-UE-S1AP-ID: 420141" size="4" value="8006692d"/>
-                  </field>
-                </field>
-              </field>
-              <field name="" pos="86" show="Item 2: id-NAS-PDU" size="22" value="001a00121117aecd82eb0407530829a497732efc0114">
-                <field name="s1ap.ProtocolIE_Field_element" pos="86" show="" showname="ProtocolIE-Field" size="22" value="">
-                  <field name="s1ap.id" pos="86" show="26" showname="id: id-NAS-PDU (26)" size="2" value="001a"/>
-                  <field hide="yes" name="per.enum_index" pos="88" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                  <field name="s1ap.criticality" pos="88" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                  <field hide="yes" name="per.open_type_length" pos="89" show="18" showname="Open Type Length: 18" size="1" value="12"/>
-                  <field name="s1ap.value_element" pos="90" show="" showname="value" size="18" value="">
-                    <field hide="yes" name="per.octet_string_length" pos="90" show="17" showname="Octet String Length: 17" size="1" value="11"/>
-                    <field name="s1ap.NAS_PDU" pos="91" show="17:ae:cd:82:eb:04:07:53:08:29:a4:97:73:2e:fc:01:14" showname="NAS-PDU: 17aecd82eb0407530829a497732efc0114" size="17" value="17aecd82eb0407530829a497732efc0114"/>
-                    <proto name="nas-eps" pos="91" showname="Non-Access-Stratum (NAS)PDU" size="17">
-                      <field name="nas_eps.security_header_type" pos="91" show="1" showname="0001 .... = Security header type: Integrity protected (1)" size="1" unmaskedvalue="17" value="1"/>
-                      <field name="gsm_a.L3_protocol_discriminator" pos="91" show="7" showname=".... 0111 = Protocol discriminator: EPS mobility management messages (0x07)" size="1" unmaskedvalue="17" value="7"/>
-                      <field name="nas_eps.msg_auth_code" pos="92" show="2932703979" showname="Message authentication code: 0xaecd82eb" size="4" value="aecd82eb"/>
-                      <field name="nas_eps.seq_no" pos="96" show="4" showname="Sequence number: 4" size="1" value="04"/>
-                      <field name="nas_eps.security_header_type" pos="97" show="0" showname="0000 .... = Security header type: Plain NAS message, not security protected (0)" size="1" unmaskedvalue="07" value="0"/>
-                      <field name="gsm_a.L3_protocol_discriminator" pos="97" show="7" showname=".... 0111 = Protocol discriminator: EPS mobility management messages (0x07)" size="1" unmaskedvalue="07" value="7"/>
-                      <field name="nas_eps.nas_msg_emm_type" pos="98" show="83" showname="NAS EPS Mobility Management Message Type: Authentication response (0x53)" size="1" value="53"/>
-                      <field name="" pos="99" show="Authentication response parameter" size="9" value="0829a497732efc0114">
-                        <field name="gsm_a.len" pos="99" show="8" showname="Length: 8" size="1" value="08"/>
-                        <field name="nas_eps.emm.res" pos="100" show="29:a4:97:73:2e:fc:01:14" showname="RES: 29a497732efc0114" size="8" value="29a497732efc0114"/>
-                      </field>
-                    </proto>
-                  </field>
-                </field>
-              </field>
-              <field name="" pos="108" show="Item 3: id-EUTRAN-CGI" size="12" value="006440080002f85900e00000">
-                <field name="s1ap.ProtocolIE_Field_element" pos="108" show="" showname="ProtocolIE-Field" size="12" value="">
-                  <field name="s1ap.id" pos="108" show="100" showname="id: id-EUTRAN-CGI (100)" size="2" value="0064"/>
-                  <field hide="yes" name="per.enum_index" pos="110" show="1" showname="Enumerated Index: 1" size="1" value="40"/>
-                  <field name="s1ap.criticality" pos="110" show="1" showname="criticality: ignore (1)" size="1" value="40"/>
-                  <field hide="yes" name="per.open_type_length" pos="111" show="8" showname="Open Type Length: 8" size="1" value="08"/>
-                  <field name="s1ap.value_element" pos="112" show="" showname="value" size="8" value="">
-                    <field name="s1ap.EUTRAN_CGI_element" pos="112" show="" showname="EUTRAN-CGI" size="7" value="">
-                      <field hide="yes" name="per.extension_bit" pos="112" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-                      <field hide="yes" name="per.optional_field_bit" pos="112" show="0" showname=".0.. .... Optional Field Bit: False (iE-Extensions is NOT present)" size="1" unmaskedvalue="00" value="0"/>
-                      <field name="s1ap.pLMNidentity" pos="113" show="02:f8:59" showname="pLMNidentity: 02f859" size="3" value="02f859"/>
-                      <field name="e212.mcc" pos="113" show="208" showname="Mobile Country Code (MCC): France (208)" size="2" value="02f8"/>
-                      <field name="e212.mnc" pos="114" show="95" showname="Mobile Network Code (MNC): Unknown (95)" size="2" value="f859"/>
-                      <field name="s1ap.cell_ID" pos="112" show="00:e0:00:00" showname="cell-ID: 00e00000 [bit length 28, 4 LSB pad bits, 0000 0000  1110 0000  0000 0000  0000 .... decimal value 917504]" size="4" value="00e00000"/>
-                    </field>
-                  </field>
-                </field>
-              </field>
-              <field name="" pos="120" show="Item 4: id-TAI" size="10" value="004340060002f8590001">
-                <field name="s1ap.ProtocolIE_Field_element" pos="120" show="" showname="ProtocolIE-Field" size="10" value="">
-                  <field name="s1ap.id" pos="120" show="67" showname="id: id-TAI (67)" size="2" value="0043"/>
-                  <field hide="yes" name="per.enum_index" pos="122" show="1" showname="Enumerated Index: 1" size="1" value="40"/>
-                  <field name="s1ap.criticality" pos="122" show="1" showname="criticality: ignore (1)" size="1" value="40"/>
-                  <field hide="yes" name="per.open_type_length" pos="123" show="6" showname="Open Type Length: 6" size="1" value="06"/>
-                  <field name="s1ap.value_element" pos="124" show="" showname="value" size="6" value="">
-                    <field name="s1ap.TAI_element" pos="124" show="" showname="TAI" size="6" value="">
-                      <field hide="yes" name="per.extension_bit" pos="124" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-                      <field hide="yes" name="per.optional_field_bit" pos="124" show="0" showname=".0.. .... Optional Field Bit: False (iE-Extensions is NOT present)" size="1" unmaskedvalue="00" value="0"/>
-                      <field name="s1ap.pLMNidentity" pos="125" show="02:f8:59" showname="pLMNidentity: 02f859" size="3" value="02f859"/>
-                      <field name="e212.mcc" pos="125" show="208" showname="Mobile Country Code (MCC): France (208)" size="2" value="02f8"/>
-                      <field name="e212.mnc" pos="126" show="95" showname="Mobile Network Code (MNC): Unknown (95)" size="2" value="f859"/>
-                      <field name="s1ap.tAC" pos="128" show="00:01" showname="tAC: 0001" size="2" value="0001"/>
-                    </field>
-                  </field>
-                </field>
-              </field>
-            </field>
-          </field>
-        </field>
-      </field>
-    </field>
-  </proto>
-</packet>
-<packet>
-  
-  <proto name="frame" pos="0" showname="Frame 82: 122 bytes on wire (976 bits), 122 bytes captured (976 bits) on interface 0" size="122">
-    <field name="frame.interface_id" pos="0" show="0" showname="Interface id: 0 (eth0)" size="0"/>
-    <field name="frame.encap_type" pos="0" show="1" showname="Encapsulation type: Ethernet (1)" size="0"/>
-    <field name="frame.time" pos="0" show="Sep 25, 2015 16:34:53.978741000 CEST" showname="Arrival Time: Sep 25, 2015 16:34:53.978741000 CEST" size="0"/>
-    <field name="frame.offset_shift" pos="0" show="0.000000000" showname="Time shift for this packet: 0.000000000 seconds" size="0"/>
-    <field name="frame.time_epoch" pos="0" show="1443191693.978741000" showname="Epoch Time: 1443191693.978741000 seconds" size="0"/>
-    <field name="frame.time_delta" pos="0" show="0.001611000" showname="Time delta from previous captured frame: 0.001611000 seconds" size="0"/>
-    <field name="frame.time_delta_displayed" pos="0" show="0.001611000" showname="Time delta from previous displayed frame: 0.001611000 seconds" size="0"/>
-    <field name="frame.time_relative" pos="0" show="47.513110000" showname="Time since reference or first frame: 47.513110000 seconds" size="0"/>
-    <field name="frame.number" pos="0" show="82" showname="Frame Number: 82" size="0"/>
-    <field name="frame.len" pos="0" show="122" showname="Frame Length: 122 bytes (976 bits)" size="0"/>
-    <field name="frame.cap_len" pos="0" show="122" showname="Capture Length: 122 bytes (976 bits)" size="0"/>
-    <field name="frame.marked" pos="0" show="0" showname="Frame is marked: False" size="0"/>
-    <field name="frame.ignored" pos="0" show="0" showname="Frame is ignored: False" size="0"/>
-    <field name="frame.protocols" pos="0" show="eth:ethertype:ip:sctp:s1ap:s1ap:s1ap:s1ap:s1ap:nas-eps" showname="Protocols in frame: eth:ethertype:ip:sctp:s1ap:s1ap:s1ap:s1ap:s1ap:nas-eps" size="0"/>
-  </proto>
-  
-  <proto name="ip" pos="14" showname="Internet Protocol Version 4, Src: 192.168.12.17 (192.168.12.17), Dst: 192.168.12.213 (192.168.12.213)" size="20">
-    <field name="ip.version" pos="14" show="4" showname="Version: 4" size="1" value="45"/>
-    <field name="ip.hdr_len" pos="14" show="20" showname="Header Length: 20 bytes" size="1" value="45"/>
-    <field name="ip.dsfield" pos="15" show="2" showname="Differentiated Services Field: 0x02 (DSCP 0x00: Default; ECN: 0x02: ECT(0) (ECN-Capable Transport))" size="1" value="02">
-      <field name="ip.dsfield.dscp" pos="15" show="0" showname="0000 00.. = Differentiated Services Codepoint: Default (0x00)" size="1" unmaskedvalue="02" value="0"/>
-      <field name="ip.dsfield.ecn" pos="15" show="2" showname=".... ..10 = Explicit Congestion Notification: ECT(0) (ECN-Capable Transport) (0x02)" size="1" unmaskedvalue="02" value="2"/>
-    </field>
-    <field name="ip.len" pos="16" show="108" showname="Total Length: 108" size="2" value="006c"/>
-    <field name="ip.id" pos="18" show="0" showname="Identification: 0x0000 (0)" size="2" value="0000"/>
-    <field name="ip.flags" pos="20" show="2" showname="Flags: 0x02 (Don't Fragment)" size="1" value="40">
-      <field name="ip.flags.rb" pos="20" show="0" showname="0... .... = Reserved bit: Not set" size="1" value="40"/>
-      <field name="ip.flags.df" pos="20" show="1" showname=".1.. .... = Don't fragment: Set" size="1" value="40"/>
-      <field name="ip.flags.mf" pos="20" show="0" showname="..0. .... = More fragments: Not set" size="1" value="40"/>
-    </field>
-    <field name="ip.frag_offset" pos="20" show="0" showname="Fragment offset: 0" size="2" value="4000"/>
-    <field name="ip.ttl" pos="22" show="64" showname="Time to live: 64" size="1" value="40"/>
-    <field name="ip.proto" pos="23" show="132" showname="Protocol: SCTP (132)" size="1" value="84"/>
-    <field name="ip.checksum" pos="24" show="40917" showname="Header checksum: 0x9fd5 [validation disabled]" size="2" value="9fd5">
-      <field name="ip.checksum_good" pos="24" show="0" showname="Good: False" size="2" value="9fd5"/>
-      <field name="ip.checksum_bad" pos="24" show="0" showname="Bad: False" size="2" value="9fd5"/>
-    </field>
-    <field name="ip.src" pos="26" show="192.168.12.17" showname="Source: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.addr" pos="26" show="192.168.12.17" showname="Source or Destination Address: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.src_host" pos="26" show="192.168.12.17" showname="Source Host: 192.168.12.17" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.host" pos="26" show="192.168.12.17" showname="Source or Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-    <field name="ip.dst" pos="30" show="192.168.12.213" showname="Destination: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.addr" pos="30" show="192.168.12.213" showname="Source or Destination Address: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.dst_host" pos="30" show="192.168.12.213" showname="Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.host" pos="30" show="192.168.12.213" showname="Source or Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-    <field name="" pos="26" show="Source GeoIP: Unknown" size="4" value="c0a80c11"/>
-    <field name="" pos="30" show="Destination GeoIP: Unknown" size="4" value="c0a80cd5"/>
-  </proto>
-  <proto name="sctp" pos="34" showname="Stream Control Transmission Protocol, Src Port: 36412 (36412), Dst Port: 36412 (36412)" size="44">
-    <field name="sctp.srcport" pos="34" show="36412" showname="Source port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.dstport" pos="36" show="36412" showname="Destination port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.verification_tag" pos="38" show="1425553323" showname="Verification tag: 0x54f837ab" size="4" value="54f837ab"/>
-    <field name="sctp.assoc_index" pos="34" show="0" showname="Assocation index: 0" size="0"/>
-    <field hide="yes" name="sctp.port" pos="34" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-    <field hide="yes" name="sctp.port" pos="36" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.checksum" pos="42" show="1543634177" showname="Checksum: 0x5c01fd01 (not verified)" size="4" value="5c01fd01"/>
-    <field name="" pos="46" show="SACK chunk (Cumulative TSN: 3304831194, a_rwnd: 106496, gaps: 0, duplicate TSNs: 0)" size="16" value="03000010c4fbb8da0001a00000000000">
-      <field name="sctp.chunk_type" pos="46" show="3" showname="Chunk type: SACK (3)" size="1" value="03">
-        <field name="sctp.chunk_bit_1" pos="46" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="03" value="0"/>
-        <field name="sctp.chunk_bit_2" pos="46" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="03" value="0"/>
-      </field>
-      <field name="sctp.chunk_flags" pos="47" show="0" showname="Chunk flags: 0x00" size="1" value="00">
-        <field name="sctp.sack_nounce_sum" pos="47" show="0" showname=".... ...0 = Nounce sum: 0" size="1" unmaskedvalue="00" value="0"/>
-      </field>
-      <field name="sctp.chunk_length" pos="48" show="16" showname="Chunk length: 16" size="2" value="0010"/>
-      <field name="sctp.sack_cumulative_tsn_ack" pos="50" show="3304831194" showname="Cumulative TSN ACK: 3304831194" size="4" value="c4fbb8da">
-        <field name="sctp.ack" pos="96" show="3304831194" showname="Acknowledges TSN: 3304831194" size="0">
-          <field name="sctp.ack_frame" pos="46" show="81" showname="Chunk acknowledged in frame: 81" size="0"/>
-          <field name="sctp.sack_rtt" pos="46" show="0.001611000" showname="The RTT since DATA was: 0.001611000 seconds" size="0"/>
-        </field>
-      </field>
-      <field name="sctp.sack_a_rwnd" pos="54" show="106496" showname="Advertised receiver window credit (a_rwnd): 106496" size="4" value="0001a000"/>
-      <field name="sctp.sack_number_of_gap_blocks" pos="58" show="0" showname="Number of gap acknowledgement blocks: 0" size="2" value="0000"/>
-      <field name="sctp.sack_number_of_duplicated_tsns" pos="60" show="0" showname="Number of duplicated TSNs: 0" size="2" value="0000"/>
-    </field>
-    <field name="" pos="62" show="DATA chunk(ordered, complete segment, TSN: 2008295178, SID: 1, SSN: 2, PPID: 301989888, payload length: 42 bytes)" size="16" value="0003003a77b4270a0001000212000000">
-      <field name="sctp.chunk_type" pos="62" show="0" showname="Chunk type: DATA (0)" size="1" value="00">
-        <field name="sctp.chunk_bit_1" pos="62" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="00" value="0"/>
-        <field name="sctp.chunk_bit_2" pos="62" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="00" value="0"/>
-      </field>
-      <field name="sctp.chunk_flags" pos="63" show="3" showname="Chunk flags: 0x03" size="1" value="03">
-        <field name="sctp.data_e_bit" pos="63" show="1" showname=".... ...1 = E-Bit: Last segment" size="1" unmaskedvalue="03" value="1"/>
-        <field name="sctp.data_b_bit" pos="63" show="1" showname=".... ..1. = B-Bit: First segment" size="1" unmaskedvalue="03" value="1"/>
-        <field name="sctp.data_u_bit" pos="63" show="0" showname=".... .0.. = U-Bit: Ordered delivery" size="1" unmaskedvalue="03" value="0"/>
-        <field name="sctp.data_i_bit" pos="63" show="0" showname=".... 0... = I-Bit: Possibly delay SACK" size="1" unmaskedvalue="03" value="0"/>
-      </field>
-      <field name="sctp.chunk_length" pos="64" show="58" showname="Chunk length: 58" size="2" value="003a"/>
-      <field name="sctp.data_tsn" pos="66" show="2008295178" showname="TSN: 2008295178" size="4" value="77b4270a"/>
-      <field name="sctp.data_sid" pos="70" show="1" showname="Stream Identifier: 0x0001" size="2" value="0001"/>
-      <field name="sctp.data_ssn" pos="72" show="2" showname="Stream sequence number: 2" size="2" value="0002"/>
-      <field name="sctp.data_payload_proto_id" pos="74" show="301989888" showname="Payload protocol identifier: Unknown (301989888)" size="4" value="12000000"/>
-      <field name="sctp.chunk_padding" pos="120" show="00:00" showname="Chunk padding: 0000" size="2" value="0000"/>
-    </field>
-  </proto>
-  <proto name="s1ap" pos="78" showname="S1 Application Protocol" size="42">
-    <field hide="yes" name="per.extension_bit" pos="78" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-    <field hide="yes" name="per.choice_index" pos="78" show="0" showname="Choice Index: 0" size="1" value="00"/>
-    <field name="s1ap.S1AP_PDU" pos="78" show="0" showname="S1AP-PDU: initiatingMessage (0)" size="42" value="000b002600000300000005c0740010d0000800048006692d001a000e0d376566048700075d020002e0e0">
-      <field name="s1ap.initiatingMessage_element" pos="78" show="" showname="initiatingMessage" size="42" value="">
-        <field name="s1ap.procedureCode" pos="79" show="11" showname="procedureCode: id-downlinkNASTransport (11)" size="1" value="0b"/>
-        <field hide="yes" name="per.enum_index" pos="80" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-        <field name="s1ap.criticality" pos="80" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-        <field hide="yes" name="per.open_type_length" pos="81" show="38" showname="Open Type Length: 38" size="1" value="26"/>
-        <field name="s1ap.value_element" pos="82" show="" showname="value" size="38" value="">
-          <field name="s1ap.DownlinkNASTransport_element" pos="82" show="" showname="DownlinkNASTransport" size="38" value="">
-            <field hide="yes" name="per.extension_bit" pos="82" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-            <field hide="yes" name="per.sequence_of_length" pos="83" show="3" showname="Sequence-Of Length: 3" size="2" value="0003"/>
-            <field name="s1ap.protocolIEs" pos="85" show="3" showname="protocolIEs: 3 items" size="35" value="00000005c0740010d0000800048006692d001a000e0d376566048700075d020002e0e0">
-              <field name="" pos="85" show="Item 0: id-MME-UE-S1AP-ID" size="9" value="00000005c0740010d0">
-                <field name="s1ap.ProtocolIE_Field_element" pos="85" show="" showname="ProtocolIE-Field" size="9" value="">
-                  <field name="s1ap.id" pos="85" show="0" showname="id: id-MME-UE-S1AP-ID (0)" size="2" value="0000"/>
-                  <field hide="yes" name="per.enum_index" pos="87" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                  <field name="s1ap.criticality" pos="87" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                  <field hide="yes" name="per.open_type_length" pos="88" show="5" showname="Open Type Length: 5" size="1" value="05"/>
-                  <field name="s1ap.value_element" pos="89" show="" showname="value" size="5" value="">
-                    <field name="s1ap.MME_UE_S1AP_ID" pos="89" show="1946161360" showname="MME-UE-S1AP-ID: 1946161360" size="5" value="c0740010d0"/>
-                  </field>
-                </field>
-              </field>
-              <field name="" pos="94" show="Item 1: id-eNB-UE-S1AP-ID" size="8" value="000800048006692d">
-                <field name="s1ap.ProtocolIE_Field_element" pos="94" show="" showname="ProtocolIE-Field" size="8" value="">
-                  <field name="s1ap.id" pos="94" show="8" showname="id: id-eNB-UE-S1AP-ID (8)" size="2" value="0008"/>
-                  <field hide="yes" name="per.enum_index" pos="96" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                  <field name="s1ap.criticality" pos="96" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                  <field hide="yes" name="per.open_type_length" pos="97" show="4" showname="Open Type Length: 4" size="1" value="04"/>
-                  <field name="s1ap.value_element" pos="98" show="" showname="value" size="4" value="">
-                    <field name="s1ap.ENB_UE_S1AP_ID" pos="98" show="420141" showname="ENB-UE-S1AP-ID: 420141" size="4" value="8006692d"/>
-                  </field>
-                </field>
-              </field>
-              <field name="" pos="102" show="Item 2: id-NAS-PDU" size="18" value="001a000e0d376566048700075d020002e0e0">
-                <field name="s1ap.ProtocolIE_Field_element" pos="102" show="" showname="ProtocolIE-Field" size="18" value="">
-                  <field name="s1ap.id" pos="102" show="26" showname="id: id-NAS-PDU (26)" size="2" value="001a"/>
-                  <field hide="yes" name="per.enum_index" pos="104" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                  <field name="s1ap.criticality" pos="104" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                  <field hide="yes" name="per.open_type_length" pos="105" show="14" showname="Open Type Length: 14" size="1" value="0e"/>
-                  <field name="s1ap.value_element" pos="106" show="" showname="value" size="14" value="">
-                    <field hide="yes" name="per.octet_string_length" pos="106" show="13" showname="Octet String Length: 13" size="1" value="0d"/>
-                    <field name="s1ap.NAS_PDU" pos="107" show="37:65:66:04:87:00:07:5d:02:00:02:e0:e0" showname="NAS-PDU: 376566048700075d020002e0e0" size="13" value="376566048700075d020002e0e0"/>
-                    <proto name="nas-eps" pos="107" showname="Non-Access-Stratum (NAS)PDU" size="13">
-                      <field name="nas_eps.security_header_type" pos="107" show="3" showname="0011 .... = Security header type: Integrity protected with new EPS security context (3)" size="1" unmaskedvalue="37" value="3"/>
-                      <field name="gsm_a.L3_protocol_discriminator" pos="107" show="7" showname=".... 0111 = Protocol discriminator: EPS mobility management messages (0x07)" size="1" unmaskedvalue="37" value="7"/>
-                      <field name="nas_eps.msg_auth_code" pos="108" show="1701184647" showname="Message authentication code: 0x65660487" size="4" value="65660487"/>
-                      <field name="nas_eps.seq_no" pos="112" show="0" showname="Sequence number: 0" size="1" value="00"/>
-                      <field name="nas_eps.security_header_type" pos="113" show="0" showname="0000 .... = Security header type: Plain NAS message, not security protected (0)" size="1" unmaskedvalue="07" value="0"/>
-                      <field name="gsm_a.L3_protocol_discriminator" pos="113" show="7" showname=".... 0111 = Protocol discriminator: EPS mobility management messages (0x07)" size="1" unmaskedvalue="07" value="7"/>
-                      <field name="nas_eps.nas_msg_emm_type" pos="114" show="93" showname="NAS EPS Mobility Management Message Type: Security mode command (0x5d)" size="1" value="5d"/>
-                      <field name="" pos="115" show="NAS security algorithms - Selected NAS security algorithms" size="1" value="02">
-                        <field name="nas_eps.spare_bits" pos="115" show="0" showname="0... .... = Spare bit(s): 0x00" size="1" value="02"/>
-                        <field name="nas_eps.emm.toc" pos="115" show="0" showname=".000 .... = Type of ciphering algorithm: EPS encryption algorithm EEA0 (null ciphering algorithm) (0)" size="1" unmaskedvalue="02" value="0"/>
-                        <field name="nas_eps.spare_bits" pos="115" show="0" showname=".... 0... = Spare bit(s): 0x00" size="1" value="02"/>
-                        <field name="nas_eps.emm.toi" pos="115" show="2" showname=".... .010 = Type of integrity protection algorithm: EPS integrity algorithm 128-EIA2 (2)" size="1" unmaskedvalue="02" value="2"/>
-                      </field>
-                      <field name="nas_eps.emm.spare_half_octet" pos="116" show="0" showname="0000 .... = Spare half octet: 0" size="1" value="00"/>
-                      <field name="nas_eps.emm.tsc" pos="116" show="0" showname=".... 0... = Type of security context flag (TSC): Native security context (for KSIasme)" size="1" value="00"/>
-                      <field name="nas_eps.emm.nas_key_set_id" pos="116" show="0" showname=".... .000 = NAS key set identifier:  (0) ASME" size="1" value="00"/>
-                      <field name="" pos="117" show="UE security capability - Replayed UE security capabilities" size="3" value="02e0e0">
-                        <field name="gsm_a.len" pos="117" show="2" showname="Length: 2" size="1" value="02"/>
-                        <field name="nas_eps.emm.eea0" pos="118" show="1" showname="1... .... = EEA0: Supported" size="1" unmaskedvalue="e0" value="1"/>
-                        <field name="nas_eps.emm.128eea1" pos="118" show="1" showname=".1.. .... = 128-EEA1: Supported" size="1" unmaskedvalue="e0" value="1"/>
-                        <field name="nas_eps.emm.128eea2" pos="118" show="1" showname="..1. .... = 128-EEA2: Supported" size="1" unmaskedvalue="e0" value="1"/>
-                        <field name="nas_eps.emm.eea3" pos="118" show="0" showname="...0 .... = 128-EEA3: Not Supported" size="1" unmaskedvalue="e0" value="0"/>
-                        <field name="nas_eps.emm.eea4" pos="118" show="0" showname=".... 0... = EEA4: Not Supported" size="1" unmaskedvalue="e0" value="0"/>
-                        <field name="nas_eps.emm.eea5" pos="118" show="0" showname=".... .0.. = EEA5: Not Supported" size="1" unmaskedvalue="e0" value="0"/>
-                        <field name="nas_eps.emm.eea6" pos="118" show="0" showname=".... ..0. = EEA6: Not Supported" size="1" unmaskedvalue="e0" value="0"/>
-                        <field name="nas_eps.emm.eea7" pos="118" show="0" showname=".... ...0 = EEA7: Not Supported" size="1" unmaskedvalue="e0" value="0"/>
-                        <field name="nas_eps.emm.eia0" pos="119" show="1" showname="1... .... = EIA0: Supported" size="1" unmaskedvalue="e0" value="1"/>
-                        <field name="nas_eps.emm.128eia1" pos="119" show="1" showname=".1.. .... = 128-EIA1: Supported" size="1" unmaskedvalue="e0" value="1"/>
-                        <field name="nas_eps.emm.128eia2" pos="119" show="1" showname="..1. .... = 128-EIA2: Supported" size="1" unmaskedvalue="e0" value="1"/>
-                        <field name="nas_eps.emm.eia3" pos="119" show="0" showname="...0 .... = 128-EIA3: Not Supported" size="1" unmaskedvalue="e0" value="0"/>
-                        <field name="nas_eps.emm.eia4" pos="119" show="0" showname=".... 0... = EIA4: Not Supported" size="1" unmaskedvalue="e0" value="0"/>
-                        <field name="nas_eps.emm.eia5" pos="119" show="0" showname=".... .0.. = EIA5: Not Supported" size="1" unmaskedvalue="e0" value="0"/>
-                        <field name="nas_eps.emm.eia6" pos="119" show="0" showname=".... ..0. = EIA6: Not Supported" size="1" unmaskedvalue="e0" value="0"/>
-                        <field name="nas_eps.emm.eia7" pos="119" show="0" showname=".... ...0 = EIA7: Not Supported" size="1" unmaskedvalue="e0" value="0"/>
-                      </field>
-                    </proto>
-                  </field>
-                </field>
-              </field>
-            </field>
-          </field>
-        </field>
-      </field>
-    </field>
-  </proto>
-</packet>
-<packet>
-  
-  <proto name="frame" pos="0" showname="Frame 83: 138 bytes on wire (1104 bits), 138 bytes captured (1104 bits) on interface 0" size="138">
-    <field name="frame.interface_id" pos="0" show="0" showname="Interface id: 0 (eth0)" size="0"/>
-    <field name="frame.encap_type" pos="0" show="1" showname="Encapsulation type: Ethernet (1)" size="0"/>
-    <field name="frame.time" pos="0" show="Sep 25, 2015 16:34:53.997356000 CEST" showname="Arrival Time: Sep 25, 2015 16:34:53.997356000 CEST" size="0"/>
-    <field name="frame.offset_shift" pos="0" show="0.000000000" showname="Time shift for this packet: 0.000000000 seconds" size="0"/>
-    <field name="frame.time_epoch" pos="0" show="1443191693.997356000" showname="Epoch Time: 1443191693.997356000 seconds" size="0"/>
-    <field name="frame.time_delta" pos="0" show="0.018615000" showname="Time delta from previous captured frame: 0.018615000 seconds" size="0"/>
-    <field name="frame.time_delta_displayed" pos="0" show="0.018615000" showname="Time delta from previous displayed frame: 0.018615000 seconds" size="0"/>
-    <field name="frame.time_relative" pos="0" show="47.531725000" showname="Time since reference or first frame: 47.531725000 seconds" size="0"/>
-    <field name="frame.number" pos="0" show="83" showname="Frame Number: 83" size="0"/>
-    <field name="frame.len" pos="0" show="138" showname="Frame Length: 138 bytes (1104 bits)" size="0"/>
-    <field name="frame.cap_len" pos="0" show="138" showname="Capture Length: 138 bytes (1104 bits)" size="0"/>
-    <field name="frame.marked" pos="0" show="0" showname="Frame is marked: False" size="0"/>
-    <field name="frame.ignored" pos="0" show="0" showname="Frame is ignored: False" size="0"/>
-    <field name="frame.protocols" pos="0" show="eth:ethertype:ip:sctp:s1ap:s1ap:s1ap:s1ap:s1ap:nas-eps:s1ap:s1ap" showname="Protocols in frame: eth:ethertype:ip:sctp:s1ap:s1ap:s1ap:s1ap:s1ap:nas-eps:s1ap:s1ap" size="0"/>
-  </proto>
-  
-  <proto name="ip" pos="14" showname="Internet Protocol Version 4, Src: 192.168.12.213 (192.168.12.213), Dst: 192.168.12.17 (192.168.12.17)" size="20">
-    <field name="ip.version" pos="14" show="4" showname="Version: 4" size="1" value="45"/>
-    <field name="ip.hdr_len" pos="14" show="20" showname="Header Length: 20 bytes" size="1" value="45"/>
-    <field name="ip.dsfield" pos="15" show="2" showname="Differentiated Services Field: 0x02 (DSCP 0x00: Default; ECN: 0x02: ECT(0) (ECN-Capable Transport))" size="1" value="02">
-      <field name="ip.dsfield.dscp" pos="15" show="0" showname="0000 00.. = Differentiated Services Codepoint: Default (0x00)" size="1" unmaskedvalue="02" value="0"/>
-      <field name="ip.dsfield.ecn" pos="15" show="2" showname=".... ..10 = Explicit Congestion Notification: ECT(0) (ECN-Capable Transport) (0x02)" size="1" unmaskedvalue="02" value="2"/>
-    </field>
-    <field name="ip.len" pos="16" show="124" showname="Total Length: 124" size="2" value="007c"/>
-    <field name="ip.id" pos="18" show="9" showname="Identification: 0x0009 (9)" size="2" value="0009"/>
-    <field name="ip.flags" pos="20" show="2" showname="Flags: 0x02 (Don't Fragment)" size="1" value="40">
-      <field name="ip.flags.rb" pos="20" show="0" showname="0... .... = Reserved bit: Not set" size="1" value="40"/>
-      <field name="ip.flags.df" pos="20" show="1" showname=".1.. .... = Don't fragment: Set" size="1" value="40"/>
-      <field name="ip.flags.mf" pos="20" show="0" showname="..0. .... = More fragments: Not set" size="1" value="40"/>
-    </field>
-    <field name="ip.frag_offset" pos="20" show="0" showname="Fragment offset: 0" size="2" value="4000"/>
-    <field name="ip.ttl" pos="22" show="64" showname="Time to live: 64" size="1" value="40"/>
-    <field name="ip.proto" pos="23" show="132" showname="Protocol: SCTP (132)" size="1" value="84"/>
-    <field name="ip.checksum" pos="24" show="40892" showname="Header checksum: 0x9fbc [validation disabled]" size="2" value="9fbc">
-      <field name="ip.checksum_good" pos="24" show="0" showname="Good: False" size="2" value="9fbc"/>
-      <field name="ip.checksum_bad" pos="24" show="0" showname="Bad: False" size="2" value="9fbc"/>
-    </field>
-    <field name="ip.src" pos="26" show="192.168.12.213" showname="Source: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.addr" pos="26" show="192.168.12.213" showname="Source or Destination Address: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.src_host" pos="26" show="192.168.12.213" showname="Source Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.host" pos="26" show="192.168.12.213" showname="Source or Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-    <field name="ip.dst" pos="30" show="192.168.12.17" showname="Destination: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.addr" pos="30" show="192.168.12.17" showname="Source or Destination Address: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.dst_host" pos="30" show="192.168.12.17" showname="Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.host" pos="30" show="192.168.12.17" showname="Source or Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-    <field name="" pos="26" show="Source GeoIP: Unknown" size="4" value="c0a80cd5"/>
-    <field name="" pos="30" show="Destination GeoIP: Unknown" size="4" value="c0a80c11"/>
-  </proto>
-  <proto name="sctp" pos="34" showname="Stream Control Transmission Protocol, Src Port: 36412 (36412), Dst Port: 36412 (36412)" size="44">
-    <field name="sctp.srcport" pos="34" show="36412" showname="Source port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.dstport" pos="36" show="36412" showname="Destination port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.verification_tag" pos="38" show="1288826016" showname="Verification tag: 0x4cd1eca0" size="4" value="4cd1eca0"/>
-    <field name="sctp.assoc_index" pos="34" show="0" showname="Assocation index: 0" size="0"/>
-    <field hide="yes" name="sctp.port" pos="34" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-    <field hide="yes" name="sctp.port" pos="36" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.checksum" pos="42" show="3578791527" showname="Checksum: 0xd5500667 (not verified)" size="4" value="d5500667"/>
-    <field name="" pos="46" show="SACK chunk (Cumulative TSN: 2008295178, a_rwnd: 106496, gaps: 0, duplicate TSNs: 0)" size="16" value="0300001077b4270a0001a00000000000">
-      <field name="sctp.chunk_type" pos="46" show="3" showname="Chunk type: SACK (3)" size="1" value="03">
-        <field name="sctp.chunk_bit_1" pos="46" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="03" value="0"/>
-        <field name="sctp.chunk_bit_2" pos="46" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="03" value="0"/>
-      </field>
-      <field name="sctp.chunk_flags" pos="47" show="0" showname="Chunk flags: 0x00" size="1" value="00">
-        <field name="sctp.sack_nounce_sum" pos="47" show="0" showname=".... ...0 = Nounce sum: 0" size="1" unmaskedvalue="00" value="0"/>
-      </field>
-      <field name="sctp.chunk_length" pos="48" show="16" showname="Chunk length: 16" size="2" value="0010"/>
-      <field name="sctp.sack_cumulative_tsn_ack" pos="50" show="2008295178" showname="Cumulative TSN ACK: 2008295178" size="4" value="77b4270a">
-        <field name="sctp.ack" pos="96" show="2008295178" showname="Acknowledges TSN: 2008295178" size="0">
-          <field name="sctp.ack_frame" pos="46" show="82" showname="Chunk acknowledged in frame: 82" size="0"/>
-          <field name="sctp.sack_rtt" pos="46" show="0.018615000" showname="The RTT since DATA was: 0.018615000 seconds" size="0"/>
-        </field>
-      </field>
-      <field name="sctp.sack_a_rwnd" pos="54" show="106496" showname="Advertised receiver window credit (a_rwnd): 106496" size="4" value="0001a000"/>
-      <field name="sctp.sack_number_of_gap_blocks" pos="58" show="0" showname="Number of gap acknowledgement blocks: 0" size="2" value="0000"/>
-      <field name="sctp.sack_number_of_duplicated_tsns" pos="60" show="0" showname="Number of duplicated TSNs: 0" size="2" value="0000"/>
-    </field>
-    <field name="" pos="62" show="DATA chunk(ordered, complete segment, TSN: 3304831195, SID: 1, SSN: 3, PPID: 18, payload length: 59 bytes)" size="16" value="0003004bc4fbb8db0001000300000012">
-      <field name="sctp.chunk_type" pos="62" show="0" showname="Chunk type: DATA (0)" size="1" value="00">
-        <field name="sctp.chunk_bit_1" pos="62" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="00" value="0"/>
-        <field name="sctp.chunk_bit_2" pos="62" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="00" value="0"/>
-      </field>
-      <field name="sctp.chunk_flags" pos="63" show="3" showname="Chunk flags: 0x03" size="1" value="03">
-        <field name="sctp.data_e_bit" pos="63" show="1" showname=".... ...1 = E-Bit: Last segment" size="1" unmaskedvalue="03" value="1"/>
-        <field name="sctp.data_b_bit" pos="63" show="1" showname=".... ..1. = B-Bit: First segment" size="1" unmaskedvalue="03" value="1"/>
-        <field name="sctp.data_u_bit" pos="63" show="0" showname=".... .0.. = U-Bit: Ordered delivery" size="1" unmaskedvalue="03" value="0"/>
-        <field name="sctp.data_i_bit" pos="63" show="0" showname=".... 0... = I-Bit: Possibly delay SACK" size="1" unmaskedvalue="03" value="0"/>
-      </field>
-      <field name="sctp.chunk_length" pos="64" show="75" showname="Chunk length: 75" size="2" value="004b"/>
-      <field name="sctp.data_tsn" pos="66" show="3304831195" showname="TSN: 3304831195" size="4" value="c4fbb8db"/>
-      <field name="sctp.data_sid" pos="70" show="1" showname="Stream Identifier: 0x0001" size="2" value="0001"/>
-      <field name="sctp.data_ssn" pos="72" show="3" showname="Stream sequence number: 3" size="2" value="0003"/>
-      <field name="sctp.data_payload_proto_id" pos="74" show="18" showname="Payload protocol identifier: S1 Application Protocol (S1AP) (18)" size="4" value="00000012"/>
-      <field name="sctp.chunk_padding" pos="137" show="00" showname="Chunk padding: 00" size="1" value="00"/>
-    </field>
-  </proto>
-  <proto name="s1ap" pos="78" showname="S1 Application Protocol" size="59">
-    <field hide="yes" name="per.extension_bit" pos="78" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-    <field hide="yes" name="per.choice_index" pos="78" show="0" showname="Choice Index: 0" size="1" value="00"/>
-    <field name="s1ap.S1AP_PDU" pos="78" show="0" showname="S1AP-PDU: initiatingMessage (0)" size="59" value="000d403700000500000005c0740010d0000800048006692d001a0009084795eaf72e00075e006440080002f85900e00000004340060002f8590001">
-      <field name="s1ap.initiatingMessage_element" pos="78" show="" showname="initiatingMessage" size="59" value="">
-        <field name="s1ap.procedureCode" pos="79" show="13" showname="procedureCode: id-uplinkNASTransport (13)" size="1" value="0d"/>
-        <field hide="yes" name="per.enum_index" pos="80" show="1" showname="Enumerated Index: 1" size="1" value="40"/>
-        <field name="s1ap.criticality" pos="80" show="1" showname="criticality: ignore (1)" size="1" value="40"/>
-        <field hide="yes" name="per.open_type_length" pos="81" show="55" showname="Open Type Length: 55" size="1" value="37"/>
-        <field name="s1ap.value_element" pos="82" show="" showname="value" size="55" value="">
-          <field name="s1ap.UplinkNASTransport_element" pos="82" show="" showname="UplinkNASTransport" size="55" value="">
-            <field hide="yes" name="per.extension_bit" pos="82" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-            <field hide="yes" name="per.sequence_of_length" pos="83" show="5" showname="Sequence-Of Length: 5" size="2" value="0005"/>
-            <field name="s1ap.protocolIEs" pos="85" show="5" showname="protocolIEs: 5 items" size="52" value="00000005c0740010d0000800048006692d001a0009084795eaf72e00075e006440080002f85900e00000004340060002f8590001">
-              <field name="" pos="85" show="Item 0: id-MME-UE-S1AP-ID" size="9" value="00000005c0740010d0">
-                <field name="s1ap.ProtocolIE_Field_element" pos="85" show="" showname="ProtocolIE-Field" size="9" value="">
-                  <field name="s1ap.id" pos="85" show="0" showname="id: id-MME-UE-S1AP-ID (0)" size="2" value="0000"/>
-                  <field hide="yes" name="per.enum_index" pos="87" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                  <field name="s1ap.criticality" pos="87" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                  <field hide="yes" name="per.open_type_length" pos="88" show="5" showname="Open Type Length: 5" size="1" value="05"/>
-                  <field name="s1ap.value_element" pos="89" show="" showname="value" size="5" value="">
-                    <field name="s1ap.MME_UE_S1AP_ID" pos="89" show="1946161360" showname="MME-UE-S1AP-ID: 1946161360" size="5" value="c0740010d0"/>
-                  </field>
-                </field>
-              </field>
-              <field name="" pos="94" show="Item 1: id-eNB-UE-S1AP-ID" size="8" value="000800048006692d">
-                <field name="s1ap.ProtocolIE_Field_element" pos="94" show="" showname="ProtocolIE-Field" size="8" value="">
-                  <field name="s1ap.id" pos="94" show="8" showname="id: id-eNB-UE-S1AP-ID (8)" size="2" value="0008"/>
-                  <field hide="yes" name="per.enum_index" pos="96" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                  <field name="s1ap.criticality" pos="96" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                  <field hide="yes" name="per.open_type_length" pos="97" show="4" showname="Open Type Length: 4" size="1" value="04"/>
-                  <field name="s1ap.value_element" pos="98" show="" showname="value" size="4" value="">
-                    <field name="s1ap.ENB_UE_S1AP_ID" pos="98" show="420141" showname="ENB-UE-S1AP-ID: 420141" size="4" value="8006692d"/>
-                  </field>
-                </field>
-              </field>
-              <field name="" pos="102" show="Item 2: id-NAS-PDU" size="13" value="001a0009084795eaf72e00075e">
-                <field name="s1ap.ProtocolIE_Field_element" pos="102" show="" showname="ProtocolIE-Field" size="13" value="">
-                  <field name="s1ap.id" pos="102" show="26" showname="id: id-NAS-PDU (26)" size="2" value="001a"/>
-                  <field hide="yes" name="per.enum_index" pos="104" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                  <field name="s1ap.criticality" pos="104" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                  <field hide="yes" name="per.open_type_length" pos="105" show="9" showname="Open Type Length: 9" size="1" value="09"/>
-                  <field name="s1ap.value_element" pos="106" show="" showname="value" size="9" value="">
-                    <field hide="yes" name="per.octet_string_length" pos="106" show="8" showname="Octet String Length: 8" size="1" value="08"/>
-                    <field name="s1ap.NAS_PDU" pos="107" show="47:95:ea:f7:2e:00:07:5e" showname="NAS-PDU: 4795eaf72e00075e" size="8" value="4795eaf72e00075e"/>
-                    <proto name="nas-eps" pos="107" showname="Non-Access-Stratum (NAS)PDU" size="8">
-                      <field name="nas_eps.security_header_type" pos="107" show="4" showname="0100 .... = Security header type: Integrity protected and ciphered with new EPS security context (4)" size="1" unmaskedvalue="47" value="4"/>
-                      <field name="gsm_a.L3_protocol_discriminator" pos="107" show="7" showname=".... 0111 = Protocol discriminator: EPS mobility management messages (0x07)" size="1" unmaskedvalue="47" value="7"/>
-                      <field name="nas_eps.msg_auth_code" pos="108" show="2515203886" showname="Message authentication code: 0x95eaf72e" size="4" value="95eaf72e"/>
-                      <field name="nas_eps.seq_no" pos="112" show="0" showname="Sequence number: 0" size="1" value="00"/>
-                      <field name="nas_eps.security_header_type" pos="113" show="0" showname="0000 .... = Security header type: Plain NAS message, not security protected (0)" size="1" unmaskedvalue="07" value="0"/>
-                      <field name="gsm_a.L3_protocol_discriminator" pos="113" show="7" showname=".... 0111 = Protocol discriminator: EPS mobility management messages (0x07)" size="1" unmaskedvalue="07" value="7"/>
-                      <field name="nas_eps.nas_msg_emm_type" pos="114" show="94" showname="NAS EPS Mobility Management Message Type: Security mode complete (0x5e)" size="1" value="5e"/>
-                    </proto>
-                  </field>
-                </field>
-              </field>
-              <field name="" pos="115" show="Item 3: id-EUTRAN-CGI" size="12" value="006440080002f85900e00000">
-                <field name="s1ap.ProtocolIE_Field_element" pos="115" show="" showname="ProtocolIE-Field" size="12" value="">
-                  <field name="s1ap.id" pos="115" show="100" showname="id: id-EUTRAN-CGI (100)" size="2" value="0064"/>
-                  <field hide="yes" name="per.enum_index" pos="117" show="1" showname="Enumerated Index: 1" size="1" value="40"/>
-                  <field name="s1ap.criticality" pos="117" show="1" showname="criticality: ignore (1)" size="1" value="40"/>
-                  <field hide="yes" name="per.open_type_length" pos="118" show="8" showname="Open Type Length: 8" size="1" value="08"/>
-                  <field name="s1ap.value_element" pos="119" show="" showname="value" size="8" value="">
-                    <field name="s1ap.EUTRAN_CGI_element" pos="119" show="" showname="EUTRAN-CGI" size="7" value="">
-                      <field hide="yes" name="per.extension_bit" pos="119" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-                      <field hide="yes" name="per.optional_field_bit" pos="119" show="0" showname=".0.. .... Optional Field Bit: False (iE-Extensions is NOT present)" size="1" unmaskedvalue="00" value="0"/>
-                      <field name="s1ap.pLMNidentity" pos="120" show="02:f8:59" showname="pLMNidentity: 02f859" size="3" value="02f859"/>
-                      <field name="e212.mcc" pos="120" show="208" showname="Mobile Country Code (MCC): France (208)" size="2" value="02f8"/>
-                      <field name="e212.mnc" pos="121" show="95" showname="Mobile Network Code (MNC): Unknown (95)" size="2" value="f859"/>
-                      <field name="s1ap.cell_ID" pos="119" show="00:e0:00:00" showname="cell-ID: 00e00000 [bit length 28, 4 LSB pad bits, 0000 0000  1110 0000  0000 0000  0000 .... decimal value 917504]" size="4" value="00e00000"/>
-                    </field>
-                  </field>
-                </field>
-              </field>
-              <field name="" pos="127" show="Item 4: id-TAI" size="10" value="004340060002f8590001">
-                <field name="s1ap.ProtocolIE_Field_element" pos="127" show="" showname="ProtocolIE-Field" size="10" value="">
-                  <field name="s1ap.id" pos="127" show="67" showname="id: id-TAI (67)" size="2" value="0043"/>
-                  <field hide="yes" name="per.enum_index" pos="129" show="1" showname="Enumerated Index: 1" size="1" value="40"/>
-                  <field name="s1ap.criticality" pos="129" show="1" showname="criticality: ignore (1)" size="1" value="40"/>
-                  <field hide="yes" name="per.open_type_length" pos="130" show="6" showname="Open Type Length: 6" size="1" value="06"/>
-                  <field name="s1ap.value_element" pos="131" show="" showname="value" size="6" value="">
-                    <field name="s1ap.TAI_element" pos="131" show="" showname="TAI" size="6" value="">
-                      <field hide="yes" name="per.extension_bit" pos="131" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-                      <field hide="yes" name="per.optional_field_bit" pos="131" show="0" showname=".0.. .... Optional Field Bit: False (iE-Extensions is NOT present)" size="1" unmaskedvalue="00" value="0"/>
-                      <field name="s1ap.pLMNidentity" pos="132" show="02:f8:59" showname="pLMNidentity: 02f859" size="3" value="02f859"/>
-                      <field name="e212.mcc" pos="132" show="208" showname="Mobile Country Code (MCC): France (208)" size="2" value="02f8"/>
-                      <field name="e212.mnc" pos="133" show="95" showname="Mobile Network Code (MNC): Unknown (95)" size="2" value="f859"/>
-                      <field name="s1ap.tAC" pos="135" show="00:01" showname="tAC: 0001" size="2" value="0001"/>
-                    </field>
-                  </field>
-                </field>
-              </field>
-            </field>
-          </field>
-        </field>
-      </field>
-    </field>
-  </proto>
-</packet>
-<packet>
-  
-  <proto name="frame" pos="0" showname="Frame 84: 270 bytes on wire (2160 bits), 270 bytes captured (2160 bits) on interface 0" size="270">
-    <field name="frame.interface_id" pos="0" show="0" showname="Interface id: 0 (eth0)" size="0"/>
-    <field name="frame.encap_type" pos="0" show="1" showname="Encapsulation type: Ethernet (1)" size="0"/>
-    <field name="frame.time" pos="0" show="Sep 25, 2015 16:34:54.002963000 CEST" showname="Arrival Time: Sep 25, 2015 16:34:54.002963000 CEST" size="0"/>
-    <field name="frame.offset_shift" pos="0" show="0.000000000" showname="Time shift for this packet: 0.000000000 seconds" size="0"/>
-    <field name="frame.time_epoch" pos="0" show="1443191694.002963000" showname="Epoch Time: 1443191694.002963000 seconds" size="0"/>
-    <field name="frame.time_delta" pos="0" show="0.005607000" showname="Time delta from previous captured frame: 0.005607000 seconds" size="0"/>
-    <field name="frame.time_delta_displayed" pos="0" show="0.005607000" showname="Time delta from previous displayed frame: 0.005607000 seconds" size="0"/>
-    <field name="frame.time_relative" pos="0" show="47.537332000" showname="Time since reference or first frame: 47.537332000 seconds" size="0"/>
-    <field name="frame.number" pos="0" show="84" showname="Frame Number: 84" size="0"/>
-    <field name="frame.len" pos="0" show="270" showname="Frame Length: 270 bytes (2160 bits)" size="0"/>
-    <field name="frame.cap_len" pos="0" show="270" showname="Capture Length: 270 bytes (2160 bits)" size="0"/>
-    <field name="frame.marked" pos="0" show="0" showname="Frame is marked: False" size="0"/>
-    <field name="frame.ignored" pos="0" show="0" showname="Frame is ignored: False" size="0"/>
-    <field name="frame.protocols" pos="0" show="eth:ethertype:ip:sctp:s1ap:s1ap:s1ap:s1ap:s1ap:s1ap:s1ap:nas-eps:ipcp:s1ap:s1ap" showname="Protocols in frame: eth:ethertype:ip:sctp:s1ap:s1ap:s1ap:s1ap:s1ap:s1ap:s1ap:nas-eps:ipcp:s1ap:s1ap" size="0"/>
-  </proto>
-  
-  <proto name="ip" pos="14" showname="Internet Protocol Version 4, Src: 192.168.12.17 (192.168.12.17), Dst: 192.168.12.213 (192.168.12.213)" size="20">
-    <field name="ip.version" pos="14" show="4" showname="Version: 4" size="1" value="45"/>
-    <field name="ip.hdr_len" pos="14" show="20" showname="Header Length: 20 bytes" size="1" value="45"/>
-    <field name="ip.dsfield" pos="15" show="2" showname="Differentiated Services Field: 0x02 (DSCP 0x00: Default; ECN: 0x02: ECT(0) (ECN-Capable Transport))" size="1" value="02">
-      <field name="ip.dsfield.dscp" pos="15" show="0" showname="0000 00.. = Differentiated Services Codepoint: Default (0x00)" size="1" unmaskedvalue="02" value="0"/>
-      <field name="ip.dsfield.ecn" pos="15" show="2" showname=".... ..10 = Explicit Congestion Notification: ECT(0) (ECN-Capable Transport) (0x02)" size="1" unmaskedvalue="02" value="2"/>
-    </field>
-    <field name="ip.len" pos="16" show="256" showname="Total Length: 256" size="2" value="0100"/>
-    <field name="ip.id" pos="18" show="0" showname="Identification: 0x0000 (0)" size="2" value="0000"/>
-    <field name="ip.flags" pos="20" show="2" showname="Flags: 0x02 (Don't Fragment)" size="1" value="40">
-      <field name="ip.flags.rb" pos="20" show="0" showname="0... .... = Reserved bit: Not set" size="1" value="40"/>
-      <field name="ip.flags.df" pos="20" show="1" showname=".1.. .... = Don't fragment: Set" size="1" value="40"/>
-      <field name="ip.flags.mf" pos="20" show="0" showname="..0. .... = More fragments: Not set" size="1" value="40"/>
-    </field>
-    <field name="ip.frag_offset" pos="20" show="0" showname="Fragment offset: 0" size="2" value="4000"/>
-    <field name="ip.ttl" pos="22" show="64" showname="Time to live: 64" size="1" value="40"/>
-    <field name="ip.proto" pos="23" show="132" showname="Protocol: SCTP (132)" size="1" value="84"/>
-    <field name="ip.checksum" pos="24" show="40769" showname="Header checksum: 0x9f41 [validation disabled]" size="2" value="9f41">
-      <field name="ip.checksum_good" pos="24" show="0" showname="Good: False" size="2" value="9f41"/>
-      <field name="ip.checksum_bad" pos="24" show="0" showname="Bad: False" size="2" value="9f41"/>
-    </field>
-    <field name="ip.src" pos="26" show="192.168.12.17" showname="Source: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.addr" pos="26" show="192.168.12.17" showname="Source or Destination Address: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.src_host" pos="26" show="192.168.12.17" showname="Source Host: 192.168.12.17" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.host" pos="26" show="192.168.12.17" showname="Source or Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-    <field name="ip.dst" pos="30" show="192.168.12.213" showname="Destination: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.addr" pos="30" show="192.168.12.213" showname="Source or Destination Address: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.dst_host" pos="30" show="192.168.12.213" showname="Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.host" pos="30" show="192.168.12.213" showname="Source or Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-    <field name="" pos="26" show="Source GeoIP: Unknown" size="4" value="c0a80c11"/>
-    <field name="" pos="30" show="Destination GeoIP: Unknown" size="4" value="c0a80cd5"/>
-  </proto>
-  <proto name="sctp" pos="34" showname="Stream Control Transmission Protocol, Src Port: 36412 (36412), Dst Port: 36412 (36412)" size="44">
-    <field name="sctp.srcport" pos="34" show="36412" showname="Source port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.dstport" pos="36" show="36412" showname="Destination port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.verification_tag" pos="38" show="1425553323" showname="Verification tag: 0x54f837ab" size="4" value="54f837ab"/>
-    <field name="sctp.assoc_index" pos="34" show="0" showname="Assocation index: 0" size="0"/>
-    <field hide="yes" name="sctp.port" pos="34" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-    <field hide="yes" name="sctp.port" pos="36" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.checksum" pos="42" show="3489541311" showname="Checksum: 0xcffe2cbf (not verified)" size="4" value="cffe2cbf"/>
-    <field name="" pos="46" show="SACK chunk (Cumulative TSN: 3304831195, a_rwnd: 106496, gaps: 0, duplicate TSNs: 0)" size="16" value="03000010c4fbb8db0001a00000000000">
-      <field name="sctp.chunk_type" pos="46" show="3" showname="Chunk type: SACK (3)" size="1" value="03">
-        <field name="sctp.chunk_bit_1" pos="46" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="03" value="0"/>
-        <field name="sctp.chunk_bit_2" pos="46" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="03" value="0"/>
-      </field>
-      <field name="sctp.chunk_flags" pos="47" show="0" showname="Chunk flags: 0x00" size="1" value="00">
-        <field name="sctp.sack_nounce_sum" pos="47" show="0" showname=".... ...0 = Nounce sum: 0" size="1" unmaskedvalue="00" value="0"/>
-      </field>
-      <field name="sctp.chunk_length" pos="48" show="16" showname="Chunk length: 16" size="2" value="0010"/>
-      <field name="sctp.sack_cumulative_tsn_ack" pos="50" show="3304831195" showname="Cumulative TSN ACK: 3304831195" size="4" value="c4fbb8db">
-        <field name="sctp.ack" pos="96" show="3304831195" showname="Acknowledges TSN: 3304831195" size="0">
-          <field name="sctp.ack_frame" pos="46" show="83" showname="Chunk acknowledged in frame: 83" size="0"/>
-          <field name="sctp.sack_rtt" pos="46" show="0.005607000" showname="The RTT since DATA was: 0.005607000 seconds" size="0"/>
-        </field>
-      </field>
-      <field name="sctp.sack_a_rwnd" pos="54" show="106496" showname="Advertised receiver window credit (a_rwnd): 106496" size="4" value="0001a000"/>
-      <field name="sctp.sack_number_of_gap_blocks" pos="58" show="0" showname="Number of gap acknowledgement blocks: 0" size="2" value="0000"/>
-      <field name="sctp.sack_number_of_duplicated_tsns" pos="60" show="0" showname="Number of duplicated TSNs: 0" size="2" value="0000"/>
-    </field>
-    <field name="" pos="62" show="DATA chunk(ordered, complete segment, TSN: 2008295179, SID: 1, SSN: 3, PPID: 301989888, payload length: 191 bytes)" size="16" value="000300cf77b4270b0001000312000000">
-      <field name="sctp.chunk_type" pos="62" show="0" showname="Chunk type: DATA (0)" size="1" value="00">
-        <field name="sctp.chunk_bit_1" pos="62" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="00" value="0"/>
-        <field name="sctp.chunk_bit_2" pos="62" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="00" value="0"/>
-      </field>
-      <field name="sctp.chunk_flags" pos="63" show="3" showname="Chunk flags: 0x03" size="1" value="03">
-        <field name="sctp.data_e_bit" pos="63" show="1" showname=".... ...1 = E-Bit: Last segment" size="1" unmaskedvalue="03" value="1"/>
-        <field name="sctp.data_b_bit" pos="63" show="1" showname=".... ..1. = B-Bit: First segment" size="1" unmaskedvalue="03" value="1"/>
-        <field name="sctp.data_u_bit" pos="63" show="0" showname=".... .0.. = U-Bit: Ordered delivery" size="1" unmaskedvalue="03" value="0"/>
-        <field name="sctp.data_i_bit" pos="63" show="0" showname=".... 0... = I-Bit: Possibly delay SACK" size="1" unmaskedvalue="03" value="0"/>
-      </field>
-      <field name="sctp.chunk_length" pos="64" show="207" showname="Chunk length: 207" size="2" value="00cf"/>
-      <field name="sctp.data_tsn" pos="66" show="2008295179" showname="TSN: 2008295179" size="4" value="77b4270b"/>
-      <field name="sctp.data_sid" pos="70" show="1" showname="Stream Identifier: 0x0001" size="2" value="0001"/>
-      <field name="sctp.data_ssn" pos="72" show="3" showname="Stream sequence number: 3" size="2" value="0003"/>
-      <field name="sctp.data_payload_proto_id" pos="74" show="301989888" showname="Payload protocol identifier: Unknown (301989888)" size="4" value="12000000"/>
-      <field name="sctp.chunk_padding" pos="269" show="00" showname="Chunk padding: 00" size="1" value="00"/>
-    </field>
-  </proto>
-  <proto name="s1ap" pos="78" showname="S1 Application Protocol" size="191">
-    <field hide="yes" name="per.extension_bit" pos="78" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-    <field hide="yes" name="per.choice_index" pos="78" show="0" showname="Choice Index: 0" size="1" value="00"/>
-    <field name="s1ap.S1AP_PDU" pos="78" show="0" showname="S1AP-PDU: initiatingMessage (0)" size="191" value="00090080ba00000600000005c0740010d0000800048006692d0042000a1805f5e1006002faf080001800670000340062450009040f80c0a80c11000000015327ad0aaa9a010742014a062002f859000100315201c1010909036f616904697076340501c0bc00025e04fefede9e271480802110030000108106c0a86a0c8306c0a80c64500bf602f8598000016c000920172c006b0005100002000000490020d3a2585db3755b592cdd43bd648158eb3d142a9f7295ef2da9003b8f7a7a5929">
-      <field name="s1ap.initiatingMessage_element" pos="78" show="" showname="initiatingMessage" size="191" value="">
-        <field name="s1ap.procedureCode" pos="79" show="9" showname="procedureCode: id-InitialContextSetup (9)" size="1" value="09"/>
-        <field hide="yes" name="per.enum_index" pos="80" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-        <field name="s1ap.criticality" pos="80" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-        <field hide="yes" name="per.open_type_length" pos="81" show="186" showname="Open Type Length: 186" size="2" value="80ba"/>
-        <field name="s1ap.value_element" pos="83" show="" showname="value" size="186" value="">
-          <field name="s1ap.InitialContextSetupRequest_element" pos="83" show="" showname="InitialContextSetupRequest" size="186" value="">
-            <field hide="yes" name="per.extension_bit" pos="83" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-            <field hide="yes" name="per.sequence_of_length" pos="84" show="6" showname="Sequence-Of Length: 6" size="2" value="0006"/>
-            <field name="s1ap.protocolIEs" pos="86" show="6" showname="protocolIEs: 6 items" size="183" value="00000005c0740010d0000800048006692d0042000a1805f5e1006002faf080001800670000340062450009040f80c0a80c11000000015327ad0aaa9a010742014a062002f859000100315201c1010909036f616904697076340501c0bc00025e04fefede9e271480802110030000108106c0a86a0c8306c0a80c64500bf602f8598000016c000920172c006b0005100002000000490020d3a2585db3755b592cdd43bd648158eb3d142a9f7295ef2da9003b8f7a7a5929">
-              <field name="" pos="86" show="Item 0: id-MME-UE-S1AP-ID" size="9" value="00000005c0740010d0">
-                <field name="s1ap.ProtocolIE_Field_element" pos="86" show="" showname="ProtocolIE-Field" size="9" value="">
-                  <field name="s1ap.id" pos="86" show="0" showname="id: id-MME-UE-S1AP-ID (0)" size="2" value="0000"/>
-                  <field hide="yes" name="per.enum_index" pos="88" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                  <field name="s1ap.criticality" pos="88" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                  <field hide="yes" name="per.open_type_length" pos="89" show="5" showname="Open Type Length: 5" size="1" value="05"/>
-                  <field name="s1ap.value_element" pos="90" show="" showname="value" size="5" value="">
-                    <field name="s1ap.MME_UE_S1AP_ID" pos="90" show="1946161360" showname="MME-UE-S1AP-ID: 1946161360" size="5" value="c0740010d0"/>
-                  </field>
-                </field>
-              </field>
-              <field name="" pos="95" show="Item 1: id-eNB-UE-S1AP-ID" size="8" value="000800048006692d">
-                <field name="s1ap.ProtocolIE_Field_element" pos="95" show="" showname="ProtocolIE-Field" size="8" value="">
-                  <field name="s1ap.id" pos="95" show="8" showname="id: id-eNB-UE-S1AP-ID (8)" size="2" value="0008"/>
-                  <field hide="yes" name="per.enum_index" pos="97" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                  <field name="s1ap.criticality" pos="97" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                  <field hide="yes" name="per.open_type_length" pos="98" show="4" showname="Open Type Length: 4" size="1" value="04"/>
-                  <field name="s1ap.value_element" pos="99" show="" showname="value" size="4" value="">
-                    <field name="s1ap.ENB_UE_S1AP_ID" pos="99" show="420141" showname="ENB-UE-S1AP-ID: 420141" size="4" value="8006692d"/>
-                  </field>
-                </field>
-              </field>
-              <field name="" pos="103" show="Item 2: id-uEaggregateMaximumBitrate" size="14" value="0042000a1805f5e1006002faf080">
-                <field name="s1ap.ProtocolIE_Field_element" pos="103" show="" showname="ProtocolIE-Field" size="14" value="">
-                  <field name="s1ap.id" pos="103" show="66" showname="id: id-uEaggregateMaximumBitrate (66)" size="2" value="0042"/>
-                  <field hide="yes" name="per.enum_index" pos="105" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                  <field name="s1ap.criticality" pos="105" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                  <field hide="yes" name="per.open_type_length" pos="106" show="10" showname="Open Type Length: 10" size="1" value="0a"/>
-                  <field name="s1ap.value_element" pos="107" show="" showname="value" size="10" value="">
-                    <field name="s1ap.UEAggregateMaximumBitrate_element" pos="107" show="" showname="UEAggregateMaximumBitrate" size="10" value="">
-                      <field hide="yes" name="per.extension_bit" pos="107" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="18" value="0"/>
-                      <field hide="yes" name="per.optional_field_bit" pos="107" show="0" showname=".0.. .... Optional Field Bit: False (iE-Extensions is NOT present)" size="1" unmaskedvalue="18" value="0"/>
-                      <field name="s1ap.uEaggregateMaximumBitRateDL" pos="107" show="100000000" showname="uEaggregateMaximumBitRateDL: 100000000" size="5" value="1805f5e100"/>
-                      <field name="s1ap.uEaggregateMaximumBitRateUL" pos="112" show="50000000" showname="uEaggregateMaximumBitRateUL: 50000000" size="5" value="6002faf080"/>
-                    </field>
-                  </field>
-                </field>
-              </field>
-              <field name="" pos="117" show="Item 3: id-E-RABToBeSetupListCtxtSUReq" size="107" value="001800670000340062450009040f80c0a80c11000000015327ad0aaa9a010742014a062002f859000100315201c1010909036f616904697076340501c0bc00025e04fefede9e271480802110030000108106c0a86a0c8306c0a80c64500bf602f8598000016c000920172c">
-                <field name="s1ap.ProtocolIE_Field_element" pos="117" show="" showname="ProtocolIE-Field" size="107" value="">
-                  <field name="s1ap.id" pos="117" show="24" showname="id: id-E-RABToBeSetupListCtxtSUReq (24)" size="2" value="0018"/>
-                  <field hide="yes" name="per.enum_index" pos="119" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                  <field name="s1ap.criticality" pos="119" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                  <field hide="yes" name="per.open_type_length" pos="120" show="103" showname="Open Type Length: 103" size="1" value="67"/>
-                  <field name="s1ap.value_element" pos="121" show="" showname="value" size="103" value="">
-                    <field hide="yes" name="per.sequence_of_length" pos="121" show="1" showname="Sequence-Of Length: 1" size="1" value="00"/>
-                    <field name="s1ap.E_RABToBeSetupListCtxtSUReq" pos="122" show="1" showname="E-RABToBeSetupListCtxtSUReq: 1 item" size="102" value="00340062450009040f80c0a80c11000000015327ad0aaa9a010742014a062002f859000100315201c1010909036f616904697076340501c0bc00025e04fefede9e271480802110030000108106c0a86a0c8306c0a80c64500bf602f8598000016c000920172c">
-                      <field name="" pos="122" show="Item 0: id-E-RABToBeSetupItemCtxtSUReq" size="102" value="00340062450009040f80c0a80c11000000015327ad0aaa9a010742014a062002f859000100315201c1010909036f616904697076340501c0bc00025e04fefede9e271480802110030000108106c0a86a0c8306c0a80c64500bf602f8598000016c000920172c">
-                        <field name="s1ap.ProtocolIE_SingleContainer_element" pos="122" show="" showname="ProtocolIE-SingleContainer" size="102" value="">
-                          <field name="s1ap.id" pos="122" show="52" showname="id: id-E-RABToBeSetupItemCtxtSUReq (52)" size="2" value="0034"/>
-                          <field hide="yes" name="per.enum_index" pos="124" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                          <field name="s1ap.criticality" pos="124" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                          <field hide="yes" name="per.open_type_length" pos="125" show="98" showname="Open Type Length: 98" size="1" value="62"/>
-                          <field name="s1ap.value_element" pos="126" show="" showname="value" size="98" value="">
-                            <field name="s1ap.E_RABToBeSetupItemCtxtSUReq_element" pos="126" show="" showname="E-RABToBeSetupItemCtxtSUReq" size="98" value="">
-                              <field hide="yes" name="per.extension_bit" pos="126" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="45" value="0"/>
-                              <field hide="yes" name="per.optional_field_bit" pos="126" show="1" showname=".1.. .... Optional Field Bit: True (nAS-PDU is present)" size="1" unmaskedvalue="45" value="1"/>
-                              <field hide="yes" name="per.optional_field_bit" pos="126" show="0" showname="..0. .... Optional Field Bit: False (iE-Extensions is NOT present)" size="1" unmaskedvalue="45" value="0"/>
-                              <field hide="yes" name="per.extension_present_bit" pos="126" show="0" showname="...0 .... Extension Present Bit: False" size="1" unmaskedvalue="45" value="0"/>
-                              <field name="s1ap.e_RAB_ID" pos="126" show="5" showname="e-RAB-ID: 5" size="1" value="45"/>
-                              <field name="s1ap.e_RABlevelQoSParameters_element" pos="127" show="" showname="e-RABlevelQoSParameters" size="3" value="">
-                                <field hide="yes" name="per.extension_bit" pos="127" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-                                <field hide="yes" name="per.optional_field_bit" pos="127" show="0" showname=".0.. .... Optional Field Bit: False (gbrQosInformation is NOT present)" size="1" unmaskedvalue="00" value="0"/>
-                                <field hide="yes" name="per.optional_field_bit" pos="127" show="0" showname="..0. .... Optional Field Bit: False (iE-Extensions is NOT present)" size="1" unmaskedvalue="00" value="0"/>
-                                <field name="s1ap.qCI" pos="128" show="9" showname="qCI: 9" size="1" value="09"/>
-                                <field name="s1ap.allocationRetentionPriority_element" pos="129" show="" showname="allocationRetentionPriority" size="1" value="">
-                                  <field hide="yes" name="per.extension_bit" pos="129" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="04" value="0"/>
-                                  <field hide="yes" name="per.optional_field_bit" pos="129" show="0" showname=".0.. .... Optional Field Bit: False (iE-Extensions is NOT present)" size="1" unmaskedvalue="04" value="0"/>
-                                  <field name="s1ap.priorityLevel" pos="129" show="1" showname="priorityLevel: highest (1)" size="1" value="04"/>
-                                  <field hide="yes" name="per.enum_index" pos="129" show="0" showname="Enumerated Index: 0" size="1" value="04"/>
-                                  <field name="s1ap.pre_emptionCapability" pos="129" show="0" showname="pre-emptionCapability: shall-not-trigger-pre-emption (0)" size="1" value="04"/>
-                                  <field hide="yes" name="per.enum_index" pos="129" show="0" showname="Enumerated Index: 0" size="1" value="04"/>
-                                  <field name="s1ap.pre_emptionVulnerability" pos="129" show="0" showname="pre-emptionVulnerability: not-pre-emptable (0)" size="1" value="04"/>
-                                </field>
-                              </field>
-                              <field name="per.extension_present_bit" pos="130" show="0" showname="0... .... Extension Present Bit: False" size="1" unmaskedvalue="0f" value="0"/>
-                              <field hide="yes" name="per.bit_string_length" pos="130" show="32" showname="Bit String Length: 32" size="1" value="0f"/>
-                              <field name="s1ap.transportLayerAddress" pos="132" show="c0:a8:0c:11" showname="transportLayerAddress: c0a80c11 [bit length 32, 1100 0000  1010 1000  0000 1100  0001 0001 decimal value 3232238609]" size="4" value="c0a80c11">
-                                <field name="s1ap.transportLayerAddressIPv4" pos="132" show="192.168.12.17" showname="transportLayerAddress(IPv4): 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-                              </field>
-                              <field name="s1ap.gTP_TEID" pos="136" show="00:00:00:01" showname="gTP-TEID: 00000001" size="4" value="00000001"/>
-                              <field hide="yes" name="per.octet_string_length" pos="140" show="83" showname="Octet String Length: 83" size="1" value="53"/>
-                              <field name="s1ap.nAS_PDU" pos="141" show="27:ad:0a:aa:9a:01:07:42:01:4a:06:20:02:f8:59:00:01:00:31:52:01:c1:01:09:09:03:6f:61:69:04:69:70:76:34:05:01:c0:bc:00:02:5e:04:fe:fe:de:9e:27:14:80:80:21:10:03:00:00:10:81:06:c0:a8:6a:0c:83:06:c0:a8:0c:64:50:0b:f6:02:f8:59:80:00:01:6c:00:09:20:17:2c" showname="nAS-PDU: 27ad0aaa9a010742014a062002f859000100315201c10109..." size="83" value="27ad0aaa9a010742014a062002f859000100315201c1010909036f616904697076340501c0bc00025e04fefede9e271480802110030000108106c0a86a0c8306c0a80c64500bf602f8598000016c000920172c"/>
-                              <proto name="nas-eps" pos="141" showname="Non-Access-Stratum (NAS)PDU" size="83">
-                                <field name="nas_eps.security_header_type" pos="141" show="2" showname="0010 .... = Security header type: Integrity protected and ciphered (2)" size="1" unmaskedvalue="27" value="2"/>
-                                <field name="gsm_a.L3_protocol_discriminator" pos="141" show="7" showname=".... 0111 = Protocol discriminator: EPS mobility management messages (0x07)" size="1" unmaskedvalue="27" value="7"/>
-                                <field name="nas_eps.msg_auth_code" pos="142" show="2903157402" showname="Message authentication code: 0xad0aaa9a" size="4" value="ad0aaa9a"/>
-                                <field name="nas_eps.seq_no" pos="146" show="1" showname="Sequence number: 1" size="1" value="01"/>
-                                <field name="nas_eps.security_header_type" pos="147" show="0" showname="0000 .... = Security header type: Plain NAS message, not security protected (0)" size="1" unmaskedvalue="07" value="0"/>
-                                <field name="gsm_a.L3_protocol_discriminator" pos="147" show="7" showname=".... 0111 = Protocol discriminator: EPS mobility management messages (0x07)" size="1" unmaskedvalue="07" value="7"/>
-                                <field name="nas_eps.nas_msg_emm_type" pos="148" show="66" showname="NAS EPS Mobility Management Message Type: Attach accept (0x42)" size="1" value="42"/>
-                                <field name="nas_eps.emm.spare_half_octet" pos="149" show="0" showname="0000 .... = Spare half octet: 0" size="1" value="01"/>
-                                <field name="nas_eps.spare_bits" pos="149" show="0" showname=".... 0... = Spare bit(s): 0x00" size="1" value="01"/>
-                                <field name="nas_eps.emm.EPS_attach_result" pos="149" show="1" showname=".... .001 = Attach result: EPS only (1)" size="1" value="01"/>
-                                <field name="" pos="150" show="GPRS Timer - T3412 value" size="1" value="4a">
-                                  <field name="" pos="150" show="GPRS Timer: 60 min" size="1" value="4a">
-                                    <field name="gsm_a.gm.gmm.gprs_timer_unit" pos="150" show="2" showname="010. .... = Unit: value is incremented in multiples of decihours (2)" size="1" unmaskedvalue="4a" value="2"/>
-                                    <field name="gsm_a.gm.gmm.gprs_timer_value" pos="150" show="10" showname="...0 1010 = Timer value: 10" size="1" unmaskedvalue="4a" value="A"/>
-                                  </field>
-                                </field>
-                                <field name="" pos="151" show="Tracking area identity list - TAI list" size="7" value="062002f8590001">
-                                  <field name="gsm_a.len" pos="151" show="6" showname="Length: 6" size="1" value="06"/>
-                                  <field name="nas_eps.spare_bits" pos="152" show="0" showname="0... .... = Spare bit(s): 0x00" size="1" value="20"/>
-                                  <field name="nas_eps.emm.tai_tol" pos="152" show="1" showname=".01. .... = Type of list: list of TACs belonging to one PLMN, with consecutive TAC values (1)" size="1" unmaskedvalue="20" value="1"/>
-                                  <field name="nas_eps.emm.tai_n_elem" pos="152" show="0" showname="...0 0000 = Number of elements: 0 [+1 = 1 element(s)]" size="1" unmaskedvalue="20" value="0"/>
-                                  <field name="e212.mcc" pos="153" show="208" showname="Mobile Country Code (MCC): France (208)" size="2" value="02f8"/>
-                                  <field name="e212.mnc" pos="154" show="95" showname="Mobile Network Code (MNC): Unknown (95)" size="2" value="f859"/>
-                                  <field name="nas_eps.emm.tai_tac" pos="156" show="1" showname="Tracking area code(TAC): 0x0001" size="2" value="0001"/>
-                                </field>
-                                <field name="" pos="158" show="ESM message container" size="51" value="00315201c1010909036f616904697076340501c0bc00025e04fefede9e271480802110030000108106c0a86a0c8306c0a80c64">
-                                  <field name="gsm_a.len" pos="158" show="49" showname="Length: 49" size="2" value="0031"/>
-                                  <field name="nas_eps.emm.esm_msg_cont" pos="160" show="52:01:c1:01:09:09:03:6f:61:69:04:69:70:76:34:05:01:c0:bc:00:02:5e:04:fe:fe:de:9e:27:14:80:80:21:10:03:00:00:10:81:06:c0:a8:6a:0c:83:06:c0:a8:0c:64" showname="ESM message container contents: 5201c1010909036f616904697076340501c0bc00025e04fe..." size="49" value="5201c1010909036f616904697076340501c0bc00025e04fefede9e271480802110030000108106c0a86a0c8306c0a80c64">
-                                    <field name="nas_eps.bearer_id" pos="160" show="5" showname="0101 .... = EPS bearer identity: EPS bearer identity value 5 (5)" size="1" unmaskedvalue="52" value="5"/>
-                                    <field name="gsm_a.L3_protocol_discriminator" pos="160" show="2" showname=".... 0010 = Protocol discriminator: EPS session management messages (0x02)" size="1" unmaskedvalue="52" value="2"/>
-                                    <field name="nas_eps.esm.proc_trans_id" pos="161" show="1" showname="Procedure transaction identity: 1" size="1" value="01"/>
-                                    <field name="nas_eps.nas_msg_esm_type" pos="162" show="193" showname="NAS EPS session management messages: Activate default EPS bearer context request (0xc1)" size="1" value="c1"/>
-                                    <field name="" pos="163" show="EPS quality of service" size="2" value="0109">
-                                      <field name="gsm_a.len" pos="163" show="1" showname="Length: 1" size="1" value="01"/>
-                                      <field name="nas_eps.emm.qci" pos="164" show="9" showname="Quality of Service Class Identifier (QCI): QCI 9 (9)" size="1" value="09"/>
-                                    </field>
-                                    <field name="" pos="165" show="Access Point Name" size="10" value="09036f61690469707634">
-                                      <field name="gsm_a.len" pos="165" show="9" showname="Length: 9" size="1" value="09"/>
-                                      <field name="gsm_a.gm.sm.apn" pos="166" show="oai.ipv4" showname="APN: oai.ipv4" size="9" value="036f61690469707634"/>
-                                    </field>
-                                    <field name="" pos="175" show="PDN address" size="6" value="0501c0bc0002">
-                                      <field name="gsm_a.len" pos="175" show="5" showname="Length: 5" size="1" value="05"/>
-                                      <field name="nas_eps.spare_bits" pos="176" show="0" showname="0000 0... = Spare bit(s): 0x00" size="1" value="01"/>
-                                      <field name="nas_eps.esm_pdn_type" pos="176" show="1" showname="PDN type: IPv4 (1)" size="1" value="01"/>
-                                      <field name="nas_eps.esm.pdn_ipv4" pos="177" show="192.188.0.2" showname="PDN IPv4: 192.188.0.2 (192.188.0.2)" size="4" value="c0bc0002"/>
-                                    </field>
-                                    <field name="" pos="181" show="APN aggregate maximum bit rate" size="6" value="5e04fefede9e">
-                                      <field name="nas_eps.esm.elem_id" pos="181" show="94" showname="Element ID: 0x5e" size="1" value="5e"/>
-                                      <field name="gsm_a.len" pos="182" show="4" showname="Length: 4" size="1" value="04"/>
-                                      <field name="nas_eps.emm.apn_ambr_dl" pos="183" show="254" showname="APN-AMBR for downlink: 8640 kbps" size="1" value="fe"/>
-                                      <field name="nas_eps.emm.apn_ambr_ul" pos="184" show="254" showname="APN-AMBR for uplink: 8640 kbps" size="1" value="fe"/>
-                                      <field name="nas_eps.emm.apn_ambr_dl_ext" pos="185" show="222" showname="APN-AMBR for downlink (extended): 200 Mbps" size="1" value="de"/>
-                                      <field name="" pos="185" show="Total APN-AMBR for downlink : 200.000 Mbps" size="1" value="de"/>
-                                      <field name="nas_eps.emm.apn_ambr_ul_ext" pos="186" show="158" showname="APN-AMBR for uplink (extended): 100 Mbps" size="1" value="9e"/>
-                                      <field name="" pos="186" show="Total APN-AMBR for uplink : 100.000 Mbps" size="1" value="9e"/>
-                                    </field>
-                                    <field name="" pos="187" show="Protocol Configuration Options" size="22" value="271480802110030000108106c0a86a0c8306c0a80c64">
-                                      <field name="gsm_a.gm.elem_id" pos="187" show="39" showname="Element ID: 0x27" size="1" value="27"/>
-                                      <field name="gsm_a.len" pos="188" show="20" showname="Length: 20" size="1" value="14"/>
-                                      <field name="gsm_a.gm.sm.link_dir" pos="189" show="1" showname="Link direction: Network to MS (1)" size="0"/>
-                                      <field name="gsm_a.gm.sm.ext" pos="189" show="1" showname="1... .... = Extension: True" size="1" unmaskedvalue="80" value="1"/>
-                                      <field name="" pos="189" show="Configuration Protocol: PPP for use with IP PDP type or IP PDN type (0)" size="1" value="80"/>
-                                      <field name="gsm_a.gm.sm.pco_pid" pos="190" show="32801" showname="Protocol or Container ID: Internet Protocol Control Protocol (0x8021)" size="2" value="8021">
-                                        <field name="" pos="192" show="Length: 0x10 (16)" size="1" value="10"/>
-                                        <proto name="ipcp" pos="193" showname="PPP IP Control Protocol" size="16">
-                                          <field name="ppp.code" pos="193" show="3" showname="Code: Configuration Nak (3)" size="1" value="03"/>
-                                          <field name="ppp.identifier" pos="194" show="0" showname="Identifier: 0 (0x00)" size="1" value="00"/>
-                                          <field name="ppp.length" pos="195" show="16" showname="Length: 16" size="2" value="0010"/>
-                                          <field name="" pos="197" show="Options: (12 bytes), Primary DNS Server IP Address, Secondary DNS Server IP Address" size="12" value="8106c0a86a0c8306c0a80c64">
-                                            <field name="" pos="197" show="Primary DNS Server IP Address: 192.168.106.12" size="6" value="8106c0a86a0c">
-                                              <field name="ipcp.opt.type" pos="197" show="129" showname="Type: Primary DNS Server IP Address (129)" size="1" value="81"/>
-                                              <field name="ipcp.opt.length" pos="198" show="6" showname="Length: 6" size="1" value="06"/>
-                                              <field name="ipcp.opt.pri_dns_address" pos="199" show="192.168.106.12" showname="Primary DNS Address: 192.168.106.12 (192.168.106.12)" size="4" value="c0a86a0c"/>
-                                            </field>
-                                            <field name="" pos="203" show="Secondary DNS Server IP Address: 192.168.12.100" size="6" value="8306c0a80c64">
-                                              <field name="ipcp.opt.type" pos="203" show="131" showname="Type: Secondary DNS Server IP Address (131)" size="1" value="83"/>
-                                              <field name="ipcp.opt.length" pos="204" show="6" showname="Length: 6" size="1" value="06"/>
-                                              <field name="ipcp.opt.sec_dns_address" pos="205" show="192.168.12.100" showname="Secondary DNS Address: 192.168.12.100 (192.168.12.100)" size="4" value="c0a80c64"/>
-                                            </field>
-                                          </field>
-                                        </proto>
-                                      </field>
-                                    </field>
-                                  </field>
-                                </field>
-                                <field name="" pos="209" show="EPS mobile identity - GUTI" size="13" value="500bf602f8598000016c000920">
-                                  <field name="nas_eps.emm.elem_id" pos="209" show="80" showname="Element ID: 0x50" size="1" value="50"/>
-                                  <field name="gsm_a.len" pos="210" show="11" showname="Length: 11" size="1" value="0b"/>
-                                  <field name="nas_eps.emm.odd_even" pos="211" show="0" showname=".... 0... = odd/even indic: 0" size="1" unmaskedvalue="f6" value="0"/>
-                                  <field name="nas_eps.emm.type_of_id" pos="211" show="6" showname=".... .110 = Type of identity: GUTI (6)" size="1" unmaskedvalue="f6" value="6"/>
-                                  <field name="e212.mcc" pos="212" show="208" showname="Mobile Country Code (MCC): France (208)" size="2" value="02f8"/>
-                                  <field name="e212.mnc" pos="213" show="95" showname="Mobile Network Code (MNC): Unknown (95)" size="2" value="f859"/>
-                                  <field name="nas_eps.emm.mme_grp_id" pos="215" show="32768" showname="MME Group ID: 32768" size="2" value="8000"/>
-                                  <field name="nas_eps.emm.mme_code" pos="217" show="1" showname="MME Code: 1" size="1" value="01"/>
-                                  <field name="nas_eps.emm.m_tmsi" pos="218" show="1811941664" showname="M-TMSI: 0x6c000920" size="4" value="6c000920"/>
-                                </field>
-                                <field name="" pos="222" show="GPRS Timer - T3402 value" size="2" value="172c">
-                                  <field name="gsm_a.gm.elem_id" pos="222" show="23" showname="Element ID: 0x17" size="1" value="17"/>
-                                  <field name="" pos="223" show="GPRS Timer: 12 min" size="1" value="2c">
-                                    <field name="gsm_a.gm.gmm.gprs_timer_unit" pos="223" show="1" showname="001. .... = Unit: value is incremented in multiples of 1 minute (1)" size="1" unmaskedvalue="2c" value="1"/>
-                                    <field name="gsm_a.gm.gmm.gprs_timer_value" pos="223" show="12" showname="...0 1100 = Timer value: 12" size="1" unmaskedvalue="2c" value="C"/>
-                                  </field>
-                                </field>
-                              </proto>
-                            </field>
-                          </field>
-                        </field>
-                      </field>
-                    </field>
-                  </field>
-                </field>
-              </field>
-              <field name="" pos="224" show="Item 4: id-UESecurityCapabilities" size="9" value="006b00051000020000">
-                <field name="s1ap.ProtocolIE_Field_element" pos="224" show="" showname="ProtocolIE-Field" size="9" value="">
-                  <field name="s1ap.id" pos="224" show="107" showname="id: id-UESecurityCapabilities (107)" size="2" value="006b"/>
-                  <field hide="yes" name="per.enum_index" pos="226" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                  <field name="s1ap.criticality" pos="226" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                  <field hide="yes" name="per.open_type_length" pos="227" show="5" showname="Open Type Length: 5" size="1" value="05"/>
-                  <field name="s1ap.value_element" pos="228" show="" showname="value" size="5" value="">
-                    <field name="s1ap.UESecurityCapabilities_element" pos="228" show="" showname="UESecurityCapabilities" size="4" value="">
-                      <field hide="yes" name="per.extension_bit" pos="228" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="10" value="0"/>
-                      <field hide="yes" name="per.optional_field_bit" pos="228" show="0" showname=".0.. .... Optional Field Bit: False (iE-Extensions is NOT present)" size="1" unmaskedvalue="10" value="0"/>
-                      <field name="per.extension_present_bit" pos="228" show="0" showname="..0. .... Extension Present Bit: False" size="1" unmaskedvalue="10" value="0"/>
-                      <field name="s1ap.encryptionAlgorithms" pos="228" show="80:00" showname="encryptionAlgorithms: 8000 [bit length 16, 1000 0000  0000 0000 decimal value 32768]" size="2" value="8000"/>
-                      <field name="per.extension_present_bit" pos="230" show="0" showname="...0 .... Extension Present Bit: False" size="1" unmaskedvalue="02" value="0"/>
-                      <field name="s1ap.integrityProtectionAlgorithms" pos="228" show="20:00" showname="integrityProtectionAlgorithms: 2000 [bit length 16, 0010 0000  0000 0000 decimal value 8192]" size="2" value="2000"/>
-                    </field>
-                  </field>
-                </field>
-              </field>
-              <field name="" pos="233" show="Item 5: id-SecurityKey" size="36" value="00490020d3a2585db3755b592cdd43bd648158eb3d142a9f7295ef2da9003b8f7a7a5929">
-                <field name="s1ap.ProtocolIE_Field_element" pos="233" show="" showname="ProtocolIE-Field" size="36" value="">
-                  <field name="s1ap.id" pos="233" show="73" showname="id: id-SecurityKey (73)" size="2" value="0049"/>
-                  <field hide="yes" name="per.enum_index" pos="235" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                  <field name="s1ap.criticality" pos="235" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                  <field hide="yes" name="per.open_type_length" pos="236" show="32" showname="Open Type Length: 32" size="1" value="20"/>
-                  <field name="s1ap.value_element" pos="237" show="" showname="value" size="32" value="">
-                    <field name="s1ap.SecurityKey" pos="237" show="d3:a2:58:5d:b3:75:5b:59:2c:dd:43:bd:64:81:58:eb:3d:14:2a:9f:72:95:ef:2d:a9:00:3b:8f:7a:7a:59:29" showname="SecurityKey: d3a2585db3755b592cdd43bd648158eb3d142a9f7295ef2d... [bit length 256]" size="32" value="d3a2585db3755b592cdd43bd648158eb3d142a9f7295ef2da9003b8f7a7a5929"/>
-                  </field>
-                </field>
-              </field>
-            </field>
-          </field>
-        </field>
-      </field>
-    </field>
-  </proto>
-</packet>
-<packet>
-  
-  <proto name="frame" pos="0" showname="Frame 86: 126 bytes on wire (1008 bits), 126 bytes captured (1008 bits) on interface 0" size="126">
-    <field name="frame.interface_id" pos="0" show="0" showname="Interface id: 0 (eth0)" size="0"/>
-    <field name="frame.encap_type" pos="0" show="1" showname="Encapsulation type: Ethernet (1)" size="0"/>
-    <field name="frame.time" pos="0" show="Sep 25, 2015 16:34:54.029328000 CEST" showname="Arrival Time: Sep 25, 2015 16:34:54.029328000 CEST" size="0"/>
-    <field name="frame.offset_shift" pos="0" show="0.000000000" showname="Time shift for this packet: 0.000000000 seconds" size="0"/>
-    <field name="frame.time_epoch" pos="0" show="1443191694.029328000" showname="Epoch Time: 1443191694.029328000 seconds" size="0"/>
-    <field name="frame.time_delta" pos="0" show="0.006335000" showname="Time delta from previous captured frame: 0.006335000 seconds" size="0"/>
-    <field name="frame.time_delta_displayed" pos="0" show="0.006335000" showname="Time delta from previous displayed frame: 0.006335000 seconds" size="0"/>
-    <field name="frame.time_relative" pos="0" show="47.563697000" showname="Time since reference or first frame: 47.563697000 seconds" size="0"/>
-    <field name="frame.number" pos="0" show="86" showname="Frame Number: 86" size="0"/>
-    <field name="frame.len" pos="0" show="126" showname="Frame Length: 126 bytes (1008 bits)" size="0"/>
-    <field name="frame.cap_len" pos="0" show="126" showname="Capture Length: 126 bytes (1008 bits)" size="0"/>
-    <field name="frame.marked" pos="0" show="0" showname="Frame is marked: False" size="0"/>
-    <field name="frame.ignored" pos="0" show="0" showname="Frame is ignored: False" size="0"/>
-    <field name="frame.protocols" pos="0" show="eth:ethertype:ip:sctp:s1ap:s1ap:s1ap:s1ap:s1ap" showname="Protocols in frame: eth:ethertype:ip:sctp:s1ap:s1ap:s1ap:s1ap:s1ap" size="0"/>
-  </proto>
-  
-  <proto name="ip" pos="14" showname="Internet Protocol Version 4, Src: 192.168.12.213 (192.168.12.213), Dst: 192.168.12.17 (192.168.12.17)" size="20">
-    <field name="ip.version" pos="14" show="4" showname="Version: 4" size="1" value="45"/>
-    <field name="ip.hdr_len" pos="14" show="20" showname="Header Length: 20 bytes" size="1" value="45"/>
-    <field name="ip.dsfield" pos="15" show="2" showname="Differentiated Services Field: 0x02 (DSCP 0x00: Default; ECN: 0x02: ECT(0) (ECN-Capable Transport))" size="1" value="02">
-      <field name="ip.dsfield.dscp" pos="15" show="0" showname="0000 00.. = Differentiated Services Codepoint: Default (0x00)" size="1" unmaskedvalue="02" value="0"/>
-      <field name="ip.dsfield.ecn" pos="15" show="2" showname=".... ..10 = Explicit Congestion Notification: ECT(0) (ECN-Capable Transport) (0x02)" size="1" unmaskedvalue="02" value="2"/>
-    </field>
-    <field name="ip.len" pos="16" show="112" showname="Total Length: 112" size="2" value="0070"/>
-    <field name="ip.id" pos="18" show="10" showname="Identification: 0x000a (10)" size="2" value="000a"/>
-    <field name="ip.flags" pos="20" show="2" showname="Flags: 0x02 (Don't Fragment)" size="1" value="40">
-      <field name="ip.flags.rb" pos="20" show="0" showname="0... .... = Reserved bit: Not set" size="1" value="40"/>
-      <field name="ip.flags.df" pos="20" show="1" showname=".1.. .... = Don't fragment: Set" size="1" value="40"/>
-      <field name="ip.flags.mf" pos="20" show="0" showname="..0. .... = More fragments: Not set" size="1" value="40"/>
-    </field>
-    <field name="ip.frag_offset" pos="20" show="0" showname="Fragment offset: 0" size="2" value="4000"/>
-    <field name="ip.ttl" pos="22" show="64" showname="Time to live: 64" size="1" value="40"/>
-    <field name="ip.proto" pos="23" show="132" showname="Protocol: SCTP (132)" size="1" value="84"/>
-    <field name="ip.checksum" pos="24" show="40903" showname="Header checksum: 0x9fc7 [validation disabled]" size="2" value="9fc7">
-      <field name="ip.checksum_good" pos="24" show="0" showname="Good: False" size="2" value="9fc7"/>
-      <field name="ip.checksum_bad" pos="24" show="0" showname="Bad: False" size="2" value="9fc7"/>
-    </field>
-    <field name="ip.src" pos="26" show="192.168.12.213" showname="Source: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.addr" pos="26" show="192.168.12.213" showname="Source or Destination Address: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.src_host" pos="26" show="192.168.12.213" showname="Source Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.host" pos="26" show="192.168.12.213" showname="Source or Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-    <field name="ip.dst" pos="30" show="192.168.12.17" showname="Destination: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.addr" pos="30" show="192.168.12.17" showname="Source or Destination Address: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.dst_host" pos="30" show="192.168.12.17" showname="Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.host" pos="30" show="192.168.12.17" showname="Source or Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-    <field name="" pos="26" show="Source GeoIP: Unknown" size="4" value="c0a80cd5"/>
-    <field name="" pos="30" show="Destination GeoIP: Unknown" size="4" value="c0a80c11"/>
-  </proto>
-  <proto name="sctp" pos="34" showname="Stream Control Transmission Protocol, Src Port: 36412 (36412), Dst Port: 36412 (36412)" size="44">
-    <field name="sctp.srcport" pos="34" show="36412" showname="Source port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.dstport" pos="36" show="36412" showname="Destination port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.verification_tag" pos="38" show="1288826016" showname="Verification tag: 0x4cd1eca0" size="4" value="4cd1eca0"/>
-    <field name="sctp.assoc_index" pos="34" show="0" showname="Assocation index: 0" size="0"/>
-    <field hide="yes" name="sctp.port" pos="34" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-    <field hide="yes" name="sctp.port" pos="36" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.checksum" pos="42" show="2473517857" showname="Checksum: 0x936ee321 (not verified)" size="4" value="936ee321"/>
-    <field name="" pos="46" show="SACK chunk (Cumulative TSN: 2008295179, a_rwnd: 106496, gaps: 0, duplicate TSNs: 0)" size="16" value="0300001077b4270b0001a00000000000">
-      <field name="sctp.chunk_type" pos="46" show="3" showname="Chunk type: SACK (3)" size="1" value="03">
-        <field name="sctp.chunk_bit_1" pos="46" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="03" value="0"/>
-        <field name="sctp.chunk_bit_2" pos="46" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="03" value="0"/>
-      </field>
-      <field name="sctp.chunk_flags" pos="47" show="0" showname="Chunk flags: 0x00" size="1" value="00">
-        <field name="sctp.sack_nounce_sum" pos="47" show="0" showname=".... ...0 = Nounce sum: 0" size="1" unmaskedvalue="00" value="0"/>
-      </field>
-      <field name="sctp.chunk_length" pos="48" show="16" showname="Chunk length: 16" size="2" value="0010"/>
-      <field name="sctp.sack_cumulative_tsn_ack" pos="50" show="2008295179" showname="Cumulative TSN ACK: 2008295179" size="4" value="77b4270b">
-        <field name="sctp.ack" pos="96" show="2008295179" showname="Acknowledges TSN: 2008295179" size="0">
-          <field name="sctp.ack_frame" pos="46" show="84" showname="Chunk acknowledged in frame: 84" size="0"/>
-          <field name="sctp.sack_rtt" pos="46" show="0.026365000" showname="The RTT since DATA was: 0.026365000 seconds" size="0"/>
-        </field>
-      </field>
-      <field name="sctp.sack_a_rwnd" pos="54" show="106496" showname="Advertised receiver window credit (a_rwnd): 106496" size="4" value="0001a000"/>
-      <field name="sctp.sack_number_of_gap_blocks" pos="58" show="0" showname="Number of gap acknowledgement blocks: 0" size="2" value="0000"/>
-      <field name="sctp.sack_number_of_duplicated_tsns" pos="60" show="0" showname="Number of duplicated TSNs: 0" size="2" value="0000"/>
-    </field>
-    <field name="" pos="62" show="DATA chunk(ordered, complete segment, TSN: 3304831196, SID: 1, SSN: 4, PPID: 18, payload length: 48 bytes)" size="16" value="00030040c4fbb8dc0001000400000012">
-      <field name="sctp.chunk_type" pos="62" show="0" showname="Chunk type: DATA (0)" size="1" value="00">
-        <field name="sctp.chunk_bit_1" pos="62" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="00" value="0"/>
-        <field name="sctp.chunk_bit_2" pos="62" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="00" value="0"/>
-      </field>
-      <field name="sctp.chunk_flags" pos="63" show="3" showname="Chunk flags: 0x03" size="1" value="03">
-        <field name="sctp.data_e_bit" pos="63" show="1" showname=".... ...1 = E-Bit: Last segment" size="1" unmaskedvalue="03" value="1"/>
-        <field name="sctp.data_b_bit" pos="63" show="1" showname=".... ..1. = B-Bit: First segment" size="1" unmaskedvalue="03" value="1"/>
-        <field name="sctp.data_u_bit" pos="63" show="0" showname=".... .0.. = U-Bit: Ordered delivery" size="1" unmaskedvalue="03" value="0"/>
-        <field name="sctp.data_i_bit" pos="63" show="0" showname=".... 0... = I-Bit: Possibly delay SACK" size="1" unmaskedvalue="03" value="0"/>
-      </field>
-      <field name="sctp.chunk_length" pos="64" show="64" showname="Chunk length: 64" size="2" value="0040"/>
-      <field name="sctp.data_tsn" pos="66" show="3304831196" showname="TSN: 3304831196" size="4" value="c4fbb8dc"/>
-      <field name="sctp.data_sid" pos="70" show="1" showname="Stream Identifier: 0x0001" size="2" value="0001"/>
-      <field name="sctp.data_ssn" pos="72" show="4" showname="Stream sequence number: 4" size="2" value="0004"/>
-      <field name="sctp.data_payload_proto_id" pos="74" show="18" showname="Payload protocol identifier: S1 Application Protocol (S1AP) (18)" size="4" value="00000012"/>
-    </field>
-  </proto>
-  <proto name="s1ap" pos="78" showname="S1 Application Protocol" size="48">
-    <field hide="yes" name="per.extension_bit" pos="78" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-    <field hide="yes" name="per.choice_index" pos="78" show="0" showname="Choice Index: 0" size="1" value="00"/>
-    <field name="s1ap.S1AP_PDU" pos="78" show="0" showname="S1AP-PDU: initiatingMessage (0)" size="48" value="0016402c00000300000005c0740010d0000800048006692d004a40141381200003001060e0c1f83f07e0fd7837620000">
-      <field name="s1ap.initiatingMessage_element" pos="78" show="" showname="initiatingMessage" size="48" value="">
-        <field name="s1ap.procedureCode" pos="79" show="22" showname="procedureCode: id-UECapabilityInfoIndication (22)" size="1" value="16"/>
-        <field hide="yes" name="per.enum_index" pos="80" show="1" showname="Enumerated Index: 1" size="1" value="40"/>
-        <field name="s1ap.criticality" pos="80" show="1" showname="criticality: ignore (1)" size="1" value="40"/>
-        <field hide="yes" name="per.open_type_length" pos="81" show="44" showname="Open Type Length: 44" size="1" value="2c"/>
-        <field name="s1ap.value_element" pos="82" show="" showname="value" size="44" value="">
-          <field name="s1ap.UECapabilityInfoIndication_element" pos="82" show="" showname="UECapabilityInfoIndication" size="44" value="">
-            <field hide="yes" name="per.extension_bit" pos="82" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-            <field hide="yes" name="per.sequence_of_length" pos="83" show="3" showname="Sequence-Of Length: 3" size="2" value="0003"/>
-            <field name="s1ap.protocolIEs" pos="85" show="3" showname="protocolIEs: 3 items" size="41" value="00000005c0740010d0000800048006692d004a40141381200003001060e0c1f83f07e0fd7837620000">
-              <field name="" pos="85" show="Item 0: id-MME-UE-S1AP-ID" size="9" value="00000005c0740010d0">
-                <field name="s1ap.ProtocolIE_Field_element" pos="85" show="" showname="ProtocolIE-Field" size="9" value="">
-                  <field name="s1ap.id" pos="85" show="0" showname="id: id-MME-UE-S1AP-ID (0)" size="2" value="0000"/>
-                  <field hide="yes" name="per.enum_index" pos="87" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                  <field name="s1ap.criticality" pos="87" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                  <field hide="yes" name="per.open_type_length" pos="88" show="5" showname="Open Type Length: 5" size="1" value="05"/>
-                  <field name="s1ap.value_element" pos="89" show="" showname="value" size="5" value="">
-                    <field name="s1ap.MME_UE_S1AP_ID" pos="89" show="1946161360" showname="MME-UE-S1AP-ID: 1946161360" size="5" value="c0740010d0"/>
-                  </field>
-                </field>
-              </field>
-              <field name="" pos="94" show="Item 1: id-eNB-UE-S1AP-ID" size="8" value="000800048006692d">
-                <field name="s1ap.ProtocolIE_Field_element" pos="94" show="" showname="ProtocolIE-Field" size="8" value="">
-                  <field name="s1ap.id" pos="94" show="8" showname="id: id-eNB-UE-S1AP-ID (8)" size="2" value="0008"/>
-                  <field hide="yes" name="per.enum_index" pos="96" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                  <field name="s1ap.criticality" pos="96" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                  <field hide="yes" name="per.open_type_length" pos="97" show="4" showname="Open Type Length: 4" size="1" value="04"/>
-                  <field name="s1ap.value_element" pos="98" show="" showname="value" size="4" value="">
-                    <field name="s1ap.ENB_UE_S1AP_ID" pos="98" show="420141" showname="ENB-UE-S1AP-ID: 420141" size="4" value="8006692d"/>
-                  </field>
-                </field>
-              </field>
-              <field name="" pos="102" show="Item 2: id-UERadioCapability" size="24" value="004a40141381200003001060e0c1f83f07e0fd7837620000">
-                <field name="s1ap.ProtocolIE_Field_element" pos="102" show="" showname="ProtocolIE-Field" size="24" value="">
-                  <field name="s1ap.id" pos="102" show="74" showname="id: id-UERadioCapability (74)" size="2" value="004a"/>
-                  <field hide="yes" name="per.enum_index" pos="104" show="1" showname="Enumerated Index: 1" size="1" value="40"/>
-                  <field name="s1ap.criticality" pos="104" show="1" showname="criticality: ignore (1)" size="1" value="40"/>
-                  <field hide="yes" name="per.open_type_length" pos="105" show="20" showname="Open Type Length: 20" size="1" value="14"/>
-                  <field name="s1ap.value_element" pos="106" show="" showname="value" size="20" value="">
-                    <field hide="yes" name="per.octet_string_length" pos="106" show="19" showname="Octet String Length: 19" size="1" value="13"/>
-                    <field name="s1ap.UERadioCapability" pos="107" show="81:20:00:03:00:10:60:e0:c1:f8:3f:07:e0:fd:78:37:62:00:00" showname="UERadioCapability: 81200003001060e0c1f83f07e0fd7837620000" size="19" value="81200003001060e0c1f83f07e0fd7837620000">
-                      <field name="lte-rrc.UERadioAccessCapabilityInformation_element" pos="107" show="" showname="UERadioAccessCapabilityInformation" size="1" value="">
-                        <field hide="yes" name="per.choice_index" pos="107" show="1" showname="Choice Index: 1" size="1" value="81"/>
-                        <field name="lte-rrc.criticalExtensions" pos="107" show="1" showname="criticalExtensions: criticalExtensionsFuture (1)" size="1" value="81">
-                          <field name="lte-rrc.criticalExtensionsFuture_element" pos="107" show="" showname="criticalExtensionsFuture" size="1" value=""/>
-                        </field>
-                      </field>
-                    </field>
-                  </field>
-                </field>
-              </field>
-            </field>
-          </field>
-        </field>
-      </field>
-    </field>
-  </proto>
-</packet>
-<packet>
-  
-  <proto name="frame" pos="0" showname="Frame 87: 62 bytes on wire (496 bits), 62 bytes captured (496 bits) on interface 0" size="62">
-    <field name="frame.interface_id" pos="0" show="0" showname="Interface id: 0 (eth0)" size="0"/>
-    <field name="frame.encap_type" pos="0" show="1" showname="Encapsulation type: Ethernet (1)" size="0"/>
-    <field name="frame.time" pos="0" show="Sep 25, 2015 16:34:54.226130000 CEST" showname="Arrival Time: Sep 25, 2015 16:34:54.226130000 CEST" size="0"/>
-    <field name="frame.offset_shift" pos="0" show="0.000000000" showname="Time shift for this packet: 0.000000000 seconds" size="0"/>
-    <field name="frame.time_epoch" pos="0" show="1443191694.226130000" showname="Epoch Time: 1443191694.226130000 seconds" size="0"/>
-    <field name="frame.time_delta" pos="0" show="0.196802000" showname="Time delta from previous captured frame: 0.196802000 seconds" size="0"/>
-    <field name="frame.time_delta_displayed" pos="0" show="0.196802000" showname="Time delta from previous displayed frame: 0.196802000 seconds" size="0"/>
-    <field name="frame.time_relative" pos="0" show="47.760499000" showname="Time since reference or first frame: 47.760499000 seconds" size="0"/>
-    <field name="frame.number" pos="0" show="87" showname="Frame Number: 87" size="0"/>
-    <field name="frame.len" pos="0" show="62" showname="Frame Length: 62 bytes (496 bits)" size="0"/>
-    <field name="frame.cap_len" pos="0" show="62" showname="Capture Length: 62 bytes (496 bits)" size="0"/>
-    <field name="frame.marked" pos="0" show="0" showname="Frame is marked: False" size="0"/>
-    <field name="frame.ignored" pos="0" show="0" showname="Frame is ignored: False" size="0"/>
-    <field name="frame.protocols" pos="0" show="eth:ethertype:ip:sctp" showname="Protocols in frame: eth:ethertype:ip:sctp" size="0"/>
-  </proto>
-  
-  <proto name="ip" pos="14" showname="Internet Protocol Version 4, Src: 192.168.12.17 (192.168.12.17), Dst: 192.168.12.213 (192.168.12.213)" size="20">
-    <field name="ip.version" pos="14" show="4" showname="Version: 4" size="1" value="45"/>
-    <field name="ip.hdr_len" pos="14" show="20" showname="Header Length: 20 bytes" size="1" value="45"/>
-    <field name="ip.dsfield" pos="15" show="2" showname="Differentiated Services Field: 0x02 (DSCP 0x00: Default; ECN: 0x02: ECT(0) (ECN-Capable Transport))" size="1" value="02">
-      <field name="ip.dsfield.dscp" pos="15" show="0" showname="0000 00.. = Differentiated Services Codepoint: Default (0x00)" size="1" unmaskedvalue="02" value="0"/>
-      <field name="ip.dsfield.ecn" pos="15" show="2" showname=".... ..10 = Explicit Congestion Notification: ECT(0) (ECN-Capable Transport) (0x02)" size="1" unmaskedvalue="02" value="2"/>
-    </field>
-    <field name="ip.len" pos="16" show="48" showname="Total Length: 48" size="2" value="0030"/>
-    <field name="ip.id" pos="18" show="0" showname="Identification: 0x0000 (0)" size="2" value="0000"/>
-    <field name="ip.flags" pos="20" show="2" showname="Flags: 0x02 (Don't Fragment)" size="1" value="40">
-      <field name="ip.flags.rb" pos="20" show="0" showname="0... .... = Reserved bit: Not set" size="1" value="40"/>
-      <field name="ip.flags.df" pos="20" show="1" showname=".1.. .... = Don't fragment: Set" size="1" value="40"/>
-      <field name="ip.flags.mf" pos="20" show="0" showname="..0. .... = More fragments: Not set" size="1" value="40"/>
-    </field>
-    <field name="ip.frag_offset" pos="20" show="0" showname="Fragment offset: 0" size="2" value="4000"/>
-    <field name="ip.ttl" pos="22" show="64" showname="Time to live: 64" size="1" value="40"/>
-    <field name="ip.proto" pos="23" show="132" showname="Protocol: SCTP (132)" size="1" value="84"/>
-    <field name="ip.checksum" pos="24" show="40977" showname="Header checksum: 0xa011 [validation disabled]" size="2" value="a011">
-      <field name="ip.checksum_good" pos="24" show="0" showname="Good: False" size="2" value="a011"/>
-      <field name="ip.checksum_bad" pos="24" show="0" showname="Bad: False" size="2" value="a011"/>
-    </field>
-    <field name="ip.src" pos="26" show="192.168.12.17" showname="Source: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.addr" pos="26" show="192.168.12.17" showname="Source or Destination Address: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.src_host" pos="26" show="192.168.12.17" showname="Source Host: 192.168.12.17" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.host" pos="26" show="192.168.12.17" showname="Source or Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-    <field name="ip.dst" pos="30" show="192.168.12.213" showname="Destination: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.addr" pos="30" show="192.168.12.213" showname="Source or Destination Address: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.dst_host" pos="30" show="192.168.12.213" showname="Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.host" pos="30" show="192.168.12.213" showname="Source or Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-    <field name="" pos="26" show="Source GeoIP: Unknown" size="4" value="c0a80c11"/>
-    <field name="" pos="30" show="Destination GeoIP: Unknown" size="4" value="c0a80cd5"/>
-  </proto>
-  <proto name="sctp" pos="34" showname="Stream Control Transmission Protocol, Src Port: 36412 (36412), Dst Port: 36412 (36412)" size="28">
-    <field name="sctp.srcport" pos="34" show="36412" showname="Source port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.dstport" pos="36" show="36412" showname="Destination port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.verification_tag" pos="38" show="1425553323" showname="Verification tag: 0x54f837ab" size="4" value="54f837ab"/>
-    <field name="sctp.assoc_index" pos="34" show="0" showname="Assocation index: 0" size="0"/>
-    <field hide="yes" name="sctp.port" pos="34" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-    <field hide="yes" name="sctp.port" pos="36" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.checksum" pos="42" show="1271492293" showname="Checksum: 0x4bc96ec5 (not verified)" size="4" value="4bc96ec5"/>
-    <field name="" pos="46" show="SACK chunk (Cumulative TSN: 3304831196, a_rwnd: 106496, gaps: 0, duplicate TSNs: 0)" size="16" value="03000010c4fbb8dc0001a00000000000">
-      <field name="sctp.chunk_type" pos="46" show="3" showname="Chunk type: SACK (3)" size="1" value="03">
-        <field name="sctp.chunk_bit_1" pos="46" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="03" value="0"/>
-        <field name="sctp.chunk_bit_2" pos="46" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="03" value="0"/>
-      </field>
-      <field name="sctp.chunk_flags" pos="47" show="0" showname="Chunk flags: 0x00" size="1" value="00">
-        <field name="sctp.sack_nounce_sum" pos="47" show="0" showname=".... ...0 = Nounce sum: 0" size="1" unmaskedvalue="00" value="0"/>
-      </field>
-      <field name="sctp.chunk_length" pos="48" show="16" showname="Chunk length: 16" size="2" value="0010"/>
-      <field name="sctp.sack_cumulative_tsn_ack" pos="50" show="3304831196" showname="Cumulative TSN ACK: 3304831196" size="4" value="c4fbb8dc">
-        <field name="sctp.ack" pos="96" show="3304831196" showname="Acknowledges TSN: 3304831196" size="0">
-          <field name="sctp.ack_frame" pos="46" show="86" showname="Chunk acknowledged in frame: 86" size="0"/>
-          <field name="sctp.sack_rtt" pos="46" show="0.196802000" showname="The RTT since DATA was: 0.196802000 seconds" size="0"/>
-        </field>
-      </field>
-      <field name="sctp.sack_a_rwnd" pos="54" show="106496" showname="Advertised receiver window credit (a_rwnd): 106496" size="4" value="0001a000"/>
-      <field name="sctp.sack_number_of_gap_blocks" pos="58" show="0" showname="Number of gap acknowledgement blocks: 0" size="2" value="0000"/>
-      <field name="sctp.sack_number_of_duplicated_tsns" pos="60" show="0" showname="Number of duplicated TSNs: 0" size="2" value="0000"/>
-    </field>
-  </proto>
-</packet>
-<packet>
-  
-  <proto name="frame" pos="0" showname="Frame 88: 186 bytes on wire (1488 bits), 186 bytes captured (1488 bits) on interface 0" size="186">
-    <field name="frame.interface_id" pos="0" show="0" showname="Interface id: 0 (eth0)" size="0"/>
-    <field name="frame.encap_type" pos="0" show="1" showname="Encapsulation type: Ethernet (1)" size="0"/>
-    <field name="frame.time" pos="0" show="Sep 25, 2015 16:34:54.226402000 CEST" showname="Arrival Time: Sep 25, 2015 16:34:54.226402000 CEST" size="0"/>
-    <field name="frame.offset_shift" pos="0" show="0.000000000" showname="Time shift for this packet: 0.000000000 seconds" size="0"/>
-    <field name="frame.time_epoch" pos="0" show="1443191694.226402000" showname="Epoch Time: 1443191694.226402000 seconds" size="0"/>
-    <field name="frame.time_delta" pos="0" show="0.000272000" showname="Time delta from previous captured frame: 0.000272000 seconds" size="0"/>
-    <field name="frame.time_delta_displayed" pos="0" show="0.000272000" showname="Time delta from previous displayed frame: 0.000272000 seconds" size="0"/>
-    <field name="frame.time_relative" pos="0" show="47.760771000" showname="Time since reference or first frame: 47.760771000 seconds" size="0"/>
-    <field name="frame.number" pos="0" show="88" showname="Frame Number: 88" size="0"/>
-    <field name="frame.len" pos="0" show="186" showname="Frame Length: 186 bytes (1488 bits)" size="0"/>
-    <field name="frame.cap_len" pos="0" show="186" showname="Capture Length: 186 bytes (1488 bits)" size="0"/>
-    <field name="frame.marked" pos="0" show="0" showname="Frame is marked: False" size="0"/>
-    <field name="frame.ignored" pos="0" show="0" showname="Frame is ignored: False" size="0"/>
-    <field name="frame.protocols" pos="0" show="eth:ethertype:ip:sctp:s1ap:s1ap:s1ap:s1ap:s1ap:s1ap:s1ap:s1ap:s1ap:s1ap:s1ap:nas-eps:s1ap:s1ap" showname="Protocols in frame: eth:ethertype:ip:sctp:s1ap:s1ap:s1ap:s1ap:s1ap:s1ap:s1ap:s1ap:s1ap:s1ap:s1ap:nas-eps:s1ap:s1ap" size="0"/>
-  </proto>
-  
-  <proto name="ip" pos="14" showname="Internet Protocol Version 4, Src: 192.168.12.213 (192.168.12.213), Dst: 192.168.12.17 (192.168.12.17)" size="20">
-    <field name="ip.version" pos="14" show="4" showname="Version: 4" size="1" value="45"/>
-    <field name="ip.hdr_len" pos="14" show="20" showname="Header Length: 20 bytes" size="1" value="45"/>
-    <field name="ip.dsfield" pos="15" show="2" showname="Differentiated Services Field: 0x02 (DSCP 0x00: Default; ECN: 0x02: ECT(0) (ECN-Capable Transport))" size="1" value="02">
-      <field name="ip.dsfield.dscp" pos="15" show="0" showname="0000 00.. = Differentiated Services Codepoint: Default (0x00)" size="1" unmaskedvalue="02" value="0"/>
-      <field name="ip.dsfield.ecn" pos="15" show="2" showname=".... ..10 = Explicit Congestion Notification: ECT(0) (ECN-Capable Transport) (0x02)" size="1" unmaskedvalue="02" value="2"/>
-    </field>
-    <field name="ip.len" pos="16" show="172" showname="Total Length: 172" size="2" value="00ac"/>
-    <field name="ip.id" pos="18" show="11" showname="Identification: 0x000b (11)" size="2" value="000b"/>
-    <field name="ip.flags" pos="20" show="2" showname="Flags: 0x02 (Don't Fragment)" size="1" value="40">
-      <field name="ip.flags.rb" pos="20" show="0" showname="0... .... = Reserved bit: Not set" size="1" value="40"/>
-      <field name="ip.flags.df" pos="20" show="1" showname=".1.. .... = Don't fragment: Set" size="1" value="40"/>
-      <field name="ip.flags.mf" pos="20" show="0" showname="..0. .... = More fragments: Not set" size="1" value="40"/>
-    </field>
-    <field name="ip.frag_offset" pos="20" show="0" showname="Fragment offset: 0" size="2" value="4000"/>
-    <field name="ip.ttl" pos="22" show="64" showname="Time to live: 64" size="1" value="40"/>
-    <field name="ip.proto" pos="23" show="132" showname="Protocol: SCTP (132)" size="1" value="84"/>
-    <field name="ip.checksum" pos="24" show="40842" showname="Header checksum: 0x9f8a [validation disabled]" size="2" value="9f8a">
-      <field name="ip.checksum_good" pos="24" show="0" showname="Good: False" size="2" value="9f8a"/>
-      <field name="ip.checksum_bad" pos="24" show="0" showname="Bad: False" size="2" value="9f8a"/>
-    </field>
-    <field name="ip.src" pos="26" show="192.168.12.213" showname="Source: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.addr" pos="26" show="192.168.12.213" showname="Source or Destination Address: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.src_host" pos="26" show="192.168.12.213" showname="Source Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.host" pos="26" show="192.168.12.213" showname="Source or Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-    <field name="ip.dst" pos="30" show="192.168.12.17" showname="Destination: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.addr" pos="30" show="192.168.12.17" showname="Source or Destination Address: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.dst_host" pos="30" show="192.168.12.17" showname="Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.host" pos="30" show="192.168.12.17" showname="Source or Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-    <field name="" pos="26" show="Source GeoIP: Unknown" size="4" value="c0a80cd5"/>
-    <field name="" pos="30" show="Destination GeoIP: Unknown" size="4" value="c0a80c11"/>
-  </proto>
-  <proto name="sctp" pos="34" showname="Stream Control Transmission Protocol, Src Port: 36412 (36412), Dst Port: 36412 (36412)" size="28">
-    <field name="sctp.srcport" pos="34" show="36412" showname="Source port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.dstport" pos="36" show="36412" showname="Destination port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.verification_tag" pos="38" show="1288826016" showname="Verification tag: 0x4cd1eca0" size="4" value="4cd1eca0"/>
-    <field name="sctp.assoc_index" pos="34" show="0" showname="Assocation index: 0" size="0"/>
-    <field hide="yes" name="sctp.port" pos="34" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-    <field hide="yes" name="sctp.port" pos="36" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.checksum" pos="42" show="2952833288" showname="Checksum: 0xb000a908 (not verified)" size="4" value="b000a908"/>
-    <field name="" pos="46" show="DATA chunk(ordered, complete segment, TSN: 3304831197, SID: 1, SSN: 5, PPID: 18, payload length: 43 bytes)" size="16" value="0003003bc4fbb8dd0001000500000012">
-      <field name="sctp.chunk_type" pos="46" show="0" showname="Chunk type: DATA (0)" size="1" value="00">
-        <field name="sctp.chunk_bit_1" pos="46" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="00" value="0"/>
-        <field name="sctp.chunk_bit_2" pos="46" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="00" value="0"/>
-      </field>
-      <field name="sctp.chunk_flags" pos="47" show="3" showname="Chunk flags: 0x03" size="1" value="03">
-        <field name="sctp.data_e_bit" pos="47" show="1" showname=".... ...1 = E-Bit: Last segment" size="1" unmaskedvalue="03" value="1"/>
-        <field name="sctp.data_b_bit" pos="47" show="1" showname=".... ..1. = B-Bit: First segment" size="1" unmaskedvalue="03" value="1"/>
-        <field name="sctp.data_u_bit" pos="47" show="0" showname=".... .0.. = U-Bit: Ordered delivery" size="1" unmaskedvalue="03" value="0"/>
-        <field name="sctp.data_i_bit" pos="47" show="0" showname=".... 0... = I-Bit: Possibly delay SACK" size="1" unmaskedvalue="03" value="0"/>
-      </field>
-      <field name="sctp.chunk_length" pos="48" show="59" showname="Chunk length: 59" size="2" value="003b"/>
-      <field name="sctp.data_tsn" pos="50" show="3304831197" showname="TSN: 3304831197" size="4" value="c4fbb8dd"/>
-      <field name="sctp.data_sid" pos="54" show="1" showname="Stream Identifier: 0x0001" size="2" value="0001"/>
-      <field name="sctp.data_ssn" pos="56" show="5" showname="Stream sequence number: 5" size="2" value="0005"/>
-      <field name="sctp.data_payload_proto_id" pos="58" show="18" showname="Payload protocol identifier: S1 Application Protocol (S1AP) (18)" size="4" value="00000012"/>
-      <field name="sctp.chunk_padding" pos="105" show="00" showname="Chunk padding: 00" size="1" value="00"/>
-    </field>
-  </proto>
-  <proto name="s1ap" pos="62" showname="S1 Application Protocol" size="43">
-    <field hide="yes" name="per.extension_bit" pos="62" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="20" value="0"/>
-    <field hide="yes" name="per.choice_index" pos="62" show="1" showname="Choice Index: 1" size="1" value="20"/>
-    <field name="s1ap.S1AP_PDU" pos="62" show="1" showname="S1AP-PDU: successfulOutcome (1)" size="43" value="2009002700000300004005c0740010d0000840048006692d0033400f000032400a0a1fc0a80cd5ca6fe0dd">
-      <field name="s1ap.successfulOutcome_element" pos="62" show="" showname="successfulOutcome" size="43" value="">
-        <field name="s1ap.procedureCode" pos="63" show="9" showname="procedureCode: id-InitialContextSetup (9)" size="1" value="09"/>
-        <field hide="yes" name="per.enum_index" pos="64" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-        <field name="s1ap.criticality" pos="64" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-        <field hide="yes" name="per.open_type_length" pos="65" show="39" showname="Open Type Length: 39" size="1" value="27"/>
-        <field name="s1ap.value_element" pos="66" show="" showname="value" size="39" value="">
-          <field name="s1ap.InitialContextSetupResponse_element" pos="66" show="" showname="InitialContextSetupResponse" size="39" value="">
-            <field hide="yes" name="per.extension_bit" pos="66" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-            <field hide="yes" name="per.sequence_of_length" pos="67" show="3" showname="Sequence-Of Length: 3" size="2" value="0003"/>
-            <field name="s1ap.protocolIEs" pos="69" show="3" showname="protocolIEs: 3 items" size="36" value="00004005c0740010d0000840048006692d0033400f000032400a0a1fc0a80cd5ca6fe0dd">
-              <field name="" pos="69" show="Item 0: id-MME-UE-S1AP-ID" size="9" value="00004005c0740010d0">
-                <field name="s1ap.ProtocolIE_Field_element" pos="69" show="" showname="ProtocolIE-Field" size="9" value="">
-                  <field name="s1ap.id" pos="69" show="0" showname="id: id-MME-UE-S1AP-ID (0)" size="2" value="0000"/>
-                  <field hide="yes" name="per.enum_index" pos="71" show="1" showname="Enumerated Index: 1" size="1" value="40"/>
-                  <field name="s1ap.criticality" pos="71" show="1" showname="criticality: ignore (1)" size="1" value="40"/>
-                  <field hide="yes" name="per.open_type_length" pos="72" show="5" showname="Open Type Length: 5" size="1" value="05"/>
-                  <field name="s1ap.value_element" pos="73" show="" showname="value" size="5" value="">
-                    <field name="s1ap.MME_UE_S1AP_ID" pos="73" show="1946161360" showname="MME-UE-S1AP-ID: 1946161360" size="5" value="c0740010d0"/>
-                  </field>
-                </field>
-              </field>
-              <field name="" pos="78" show="Item 1: id-eNB-UE-S1AP-ID" size="8" value="000840048006692d">
-                <field name="s1ap.ProtocolIE_Field_element" pos="78" show="" showname="ProtocolIE-Field" size="8" value="">
-                  <field name="s1ap.id" pos="78" show="8" showname="id: id-eNB-UE-S1AP-ID (8)" size="2" value="0008"/>
-                  <field hide="yes" name="per.enum_index" pos="80" show="1" showname="Enumerated Index: 1" size="1" value="40"/>
-                  <field name="s1ap.criticality" pos="80" show="1" showname="criticality: ignore (1)" size="1" value="40"/>
-                  <field hide="yes" name="per.open_type_length" pos="81" show="4" showname="Open Type Length: 4" size="1" value="04"/>
-                  <field name="s1ap.value_element" pos="82" show="" showname="value" size="4" value="">
-                    <field name="s1ap.ENB_UE_S1AP_ID" pos="82" show="420141" showname="ENB-UE-S1AP-ID: 420141" size="4" value="8006692d"/>
-                  </field>
-                </field>
-              </field>
-              <field name="" pos="86" show="Item 2: id-E-RABSetupListCtxtSURes" size="19" value="0033400f000032400a0a1fc0a80cd5ca6fe0dd">
-                <field name="s1ap.ProtocolIE_Field_element" pos="86" show="" showname="ProtocolIE-Field" size="19" value="">
-                  <field name="s1ap.id" pos="86" show="51" showname="id: id-E-RABSetupListCtxtSURes (51)" size="2" value="0033"/>
-                  <field hide="yes" name="per.enum_index" pos="88" show="1" showname="Enumerated Index: 1" size="1" value="40"/>
-                  <field name="s1ap.criticality" pos="88" show="1" showname="criticality: ignore (1)" size="1" value="40"/>
-                  <field hide="yes" name="per.open_type_length" pos="89" show="15" showname="Open Type Length: 15" size="1" value="0f"/>
-                  <field name="s1ap.value_element" pos="90" show="" showname="value" size="15" value="">
-                    <field hide="yes" name="per.sequence_of_length" pos="90" show="1" showname="Sequence-Of Length: 1" size="1" value="00"/>
-                    <field name="s1ap.E_RABSetupListCtxtSURes" pos="91" show="1" showname="E-RABSetupListCtxtSURes: 1 item" size="14" value="0032400a0a1fc0a80cd5ca6fe0dd">
-                      <field name="" pos="91" show="Item 0: id-E-RABSetupItemCtxtSURes" size="14" value="0032400a0a1fc0a80cd5ca6fe0dd">
-                        <field name="s1ap.ProtocolIE_SingleContainer_element" pos="91" show="" showname="ProtocolIE-SingleContainer" size="14" value="">
-                          <field name="s1ap.id" pos="91" show="50" showname="id: id-E-RABSetupItemCtxtSURes (50)" size="2" value="0032"/>
-                          <field hide="yes" name="per.enum_index" pos="93" show="1" showname="Enumerated Index: 1" size="1" value="40"/>
-                          <field name="s1ap.criticality" pos="93" show="1" showname="criticality: ignore (1)" size="1" value="40"/>
-                          <field hide="yes" name="per.open_type_length" pos="94" show="10" showname="Open Type Length: 10" size="1" value="0a"/>
-                          <field name="s1ap.value_element" pos="95" show="" showname="value" size="10" value="">
-                            <field name="s1ap.E_RABSetupItemCtxtSURes_element" pos="95" show="" showname="E-RABSetupItemCtxtSURes" size="10" value="">
-                              <field hide="yes" name="per.extension_bit" pos="95" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="0a" value="0"/>
-                              <field hide="yes" name="per.optional_field_bit" pos="95" show="0" showname=".0.. .... Optional Field Bit: False (iE-Extensions is NOT present)" size="1" unmaskedvalue="0a" value="0"/>
-                              <field hide="yes" name="per.extension_present_bit" pos="95" show="0" showname="..0. .... Extension Present Bit: False" size="1" unmaskedvalue="0a" value="0"/>
-                              <field name="s1ap.e_RAB_ID" pos="95" show="5" showname="e-RAB-ID: 5" size="1" value="0a"/>
-                              <field name="per.extension_present_bit" pos="95" show="0" showname=".... ...0 Extension Present Bit: False" size="1" unmaskedvalue="0a" value="0"/>
-                              <field hide="yes" name="per.bit_string_length" pos="96" show="32" showname="Bit String Length: 32" size="1" value="1f"/>
-                              <field name="s1ap.transportLayerAddress" pos="97" show="c0:a8:0c:d5" showname="transportLayerAddress: c0a80cd5 [bit length 32, 1100 0000  1010 1000  0000 1100  1101 0101 decimal value 3232238805]" size="4" value="c0a80cd5">
-                                <field name="s1ap.transportLayerAddressIPv4" pos="97" show="192.168.12.213" showname="transportLayerAddress(IPv4): 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-                              </field>
-                              <field name="s1ap.gTP_TEID" pos="101" show="ca:6f:e0:dd" showname="gTP-TEID: ca6fe0dd" size="4" value="ca6fe0dd"/>
-                            </field>
-                          </field>
-                        </field>
-                      </field>
-                    </field>
-                  </field>
-                </field>
-              </field>
-            </field>
-          </field>
-        </field>
-      </field>
-    </field>
-  </proto>
-  <proto name="sctp" pos="106" showname="Stream Control Transmission Protocol" size="16">
-    <field name="" pos="106" show="DATA chunk(ordered, complete segment, TSN: 3304831198, SID: 1, SSN: 6, PPID: 18, payload length: 64 bytes)" size="16" value="00030050c4fbb8de0001000600000012">
-      <field name="sctp.chunk_type" pos="106" show="0" showname="Chunk type: DATA (0)" size="1" value="00">
-        <field name="sctp.chunk_bit_1" pos="106" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="00" value="0"/>
-        <field name="sctp.chunk_bit_2" pos="106" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="00" value="0"/>
-      </field>
-      <field name="sctp.chunk_flags" pos="107" show="3" showname="Chunk flags: 0x03" size="1" value="03">
-        <field name="sctp.data_e_bit" pos="107" show="1" showname=".... ...1 = E-Bit: Last segment" size="1" unmaskedvalue="03" value="1"/>
-        <field name="sctp.data_b_bit" pos="107" show="1" showname=".... ..1. = B-Bit: First segment" size="1" unmaskedvalue="03" value="1"/>
-        <field name="sctp.data_u_bit" pos="107" show="0" showname=".... .0.. = U-Bit: Ordered delivery" size="1" unmaskedvalue="03" value="0"/>
-        <field name="sctp.data_i_bit" pos="107" show="0" showname=".... 0... = I-Bit: Possibly delay SACK" size="1" unmaskedvalue="03" value="0"/>
-      </field>
-      <field name="sctp.chunk_length" pos="108" show="80" showname="Chunk length: 80" size="2" value="0050"/>
-      <field name="sctp.data_tsn" pos="110" show="3304831198" showname="TSN: 3304831198" size="4" value="c4fbb8de"/>
-      <field name="sctp.data_sid" pos="114" show="1" showname="Stream Identifier: 0x0001" size="2" value="0001"/>
-      <field name="sctp.data_ssn" pos="116" show="6" showname="Stream sequence number: 6" size="2" value="0006"/>
-      <field name="sctp.data_payload_proto_id" pos="118" show="18" showname="Payload protocol identifier: S1 Application Protocol (S1AP) (18)" size="4" value="00000012"/>
-    </field>
-  </proto>
-  <proto name="s1ap" pos="122" showname="S1 Application Protocol" size="64">
-    <field hide="yes" name="per.extension_bit" pos="122" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-    <field hide="yes" name="per.choice_index" pos="122" show="0" showname="Choice Index: 0" size="1" value="00"/>
-    <field name="s1ap.S1AP_PDU" pos="122" show="0" showname="S1AP-PDU: initiatingMessage (0)" size="64" value="000d403c00000500000005c0740010d0000800048006692d001a000e0d275cf0408901074300035200c2006440080002f85900e00000004340060002f8590001">
-      <field name="s1ap.initiatingMessage_element" pos="122" show="" showname="initiatingMessage" size="64" value="">
-        <field name="s1ap.procedureCode" pos="123" show="13" showname="procedureCode: id-uplinkNASTransport (13)" size="1" value="0d"/>
-        <field hide="yes" name="per.enum_index" pos="124" show="1" showname="Enumerated Index: 1" size="1" value="40"/>
-        <field name="s1ap.criticality" pos="124" show="1" showname="criticality: ignore (1)" size="1" value="40"/>
-        <field hide="yes" name="per.open_type_length" pos="125" show="60" showname="Open Type Length: 60" size="1" value="3c"/>
-        <field name="s1ap.value_element" pos="126" show="" showname="value" size="60" value="">
-          <field name="s1ap.UplinkNASTransport_element" pos="126" show="" showname="UplinkNASTransport" size="60" value="">
-            <field hide="yes" name="per.extension_bit" pos="126" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-            <field hide="yes" name="per.sequence_of_length" pos="127" show="5" showname="Sequence-Of Length: 5" size="2" value="0005"/>
-            <field name="s1ap.protocolIEs" pos="129" show="5" showname="protocolIEs: 5 items" size="57" value="00000005c0740010d0000800048006692d001a000e0d275cf0408901074300035200c2006440080002f85900e00000004340060002f8590001">
-              <field name="" pos="129" show="Item 0: id-MME-UE-S1AP-ID" size="9" value="00000005c0740010d0">
-                <field name="s1ap.ProtocolIE_Field_element" pos="129" show="" showname="ProtocolIE-Field" size="9" value="">
-                  <field name="s1ap.id" pos="129" show="0" showname="id: id-MME-UE-S1AP-ID (0)" size="2" value="0000"/>
-                  <field hide="yes" name="per.enum_index" pos="131" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                  <field name="s1ap.criticality" pos="131" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                  <field hide="yes" name="per.open_type_length" pos="132" show="5" showname="Open Type Length: 5" size="1" value="05"/>
-                  <field name="s1ap.value_element" pos="133" show="" showname="value" size="5" value="">
-                    <field name="s1ap.MME_UE_S1AP_ID" pos="133" show="1946161360" showname="MME-UE-S1AP-ID: 1946161360" size="5" value="c0740010d0"/>
-                  </field>
-                </field>
-              </field>
-              <field name="" pos="138" show="Item 1: id-eNB-UE-S1AP-ID" size="8" value="000800048006692d">
-                <field name="s1ap.ProtocolIE_Field_element" pos="138" show="" showname="ProtocolIE-Field" size="8" value="">
-                  <field name="s1ap.id" pos="138" show="8" showname="id: id-eNB-UE-S1AP-ID (8)" size="2" value="0008"/>
-                  <field hide="yes" name="per.enum_index" pos="140" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                  <field name="s1ap.criticality" pos="140" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                  <field hide="yes" name="per.open_type_length" pos="141" show="4" showname="Open Type Length: 4" size="1" value="04"/>
-                  <field name="s1ap.value_element" pos="142" show="" showname="value" size="4" value="">
-                    <field name="s1ap.ENB_UE_S1AP_ID" pos="142" show="420141" showname="ENB-UE-S1AP-ID: 420141" size="4" value="8006692d"/>
-                  </field>
-                </field>
-              </field>
-              <field name="" pos="146" show="Item 2: id-NAS-PDU" size="18" value="001a000e0d275cf0408901074300035200c2">
-                <field name="s1ap.ProtocolIE_Field_element" pos="146" show="" showname="ProtocolIE-Field" size="18" value="">
-                  <field name="s1ap.id" pos="146" show="26" showname="id: id-NAS-PDU (26)" size="2" value="001a"/>
-                  <field hide="yes" name="per.enum_index" pos="148" show="0" showname="Enumerated Index: 0" size="1" value="00"/>
-                  <field name="s1ap.criticality" pos="148" show="0" showname="criticality: reject (0)" size="1" value="00"/>
-                  <field hide="yes" name="per.open_type_length" pos="149" show="14" showname="Open Type Length: 14" size="1" value="0e"/>
-                  <field name="s1ap.value_element" pos="150" show="" showname="value" size="14" value="">
-                    <field hide="yes" name="per.octet_string_length" pos="150" show="13" showname="Octet String Length: 13" size="1" value="0d"/>
-                    <field name="s1ap.NAS_PDU" pos="151" show="27:5c:f0:40:89:01:07:43:00:03:52:00:c2" showname="NAS-PDU: 275cf0408901074300035200c2" size="13" value="275cf0408901074300035200c2"/>
-                    <proto name="nas-eps" pos="151" showname="Non-Access-Stratum (NAS)PDU" size="13">
-                      <field name="nas_eps.security_header_type" pos="151" show="2" showname="0010 .... = Security header type: Integrity protected and ciphered (2)" size="1" unmaskedvalue="27" value="2"/>
-                      <field name="gsm_a.L3_protocol_discriminator" pos="151" show="7" showname=".... 0111 = Protocol discriminator: EPS mobility management messages (0x07)" size="1" unmaskedvalue="27" value="7"/>
-                      <field name="nas_eps.msg_auth_code" pos="152" show="1559249033" showname="Message authentication code: 0x5cf04089" size="4" value="5cf04089"/>
-                      <field name="nas_eps.seq_no" pos="156" show="1" showname="Sequence number: 1" size="1" value="01"/>
-                      <field name="nas_eps.security_header_type" pos="157" show="0" showname="0000 .... = Security header type: Plain NAS message, not security protected (0)" size="1" unmaskedvalue="07" value="0"/>
-                      <field name="gsm_a.L3_protocol_discriminator" pos="157" show="7" showname=".... 0111 = Protocol discriminator: EPS mobility management messages (0x07)" size="1" unmaskedvalue="07" value="7"/>
-                      <field name="nas_eps.nas_msg_emm_type" pos="158" show="67" showname="NAS EPS Mobility Management Message Type: Attach complete (0x43)" size="1" value="43"/>
-                      <field name="" pos="159" show="ESM message container" size="5" value="00035200c2">
-                        <field name="gsm_a.len" pos="159" show="3" showname="Length: 3" size="2" value="0003"/>
-                        <field name="nas_eps.emm.esm_msg_cont" pos="161" show="52:00:c2" showname="ESM message container contents: 5200c2" size="3" value="5200c2">
-                          <field name="nas_eps.bearer_id" pos="161" show="5" showname="0101 .... = EPS bearer identity: EPS bearer identity value 5 (5)" size="1" unmaskedvalue="52" value="5"/>
-                          <field name="gsm_a.L3_protocol_discriminator" pos="161" show="2" showname=".... 0010 = Protocol discriminator: EPS session management messages (0x02)" size="1" unmaskedvalue="52" value="2"/>
-                          <field name="nas_eps.esm.proc_trans_id" pos="162" show="0" showname="Procedure transaction identity: 0" size="1" value="00"/>
-                          <field name="nas_eps.nas_msg_esm_type" pos="163" show="194" showname="NAS EPS session management messages: Activate default EPS bearer context accept (0xc2)" size="1" value="c2"/>
-                        </field>
-                      </field>
-                    </proto>
-                  </field>
-                </field>
-              </field>
-              <field name="" pos="164" show="Item 3: id-EUTRAN-CGI" size="12" value="006440080002f85900e00000">
-                <field name="s1ap.ProtocolIE_Field_element" pos="164" show="" showname="ProtocolIE-Field" size="12" value="">
-                  <field name="s1ap.id" pos="164" show="100" showname="id: id-EUTRAN-CGI (100)" size="2" value="0064"/>
-                  <field hide="yes" name="per.enum_index" pos="166" show="1" showname="Enumerated Index: 1" size="1" value="40"/>
-                  <field name="s1ap.criticality" pos="166" show="1" showname="criticality: ignore (1)" size="1" value="40"/>
-                  <field hide="yes" name="per.open_type_length" pos="167" show="8" showname="Open Type Length: 8" size="1" value="08"/>
-                  <field name="s1ap.value_element" pos="168" show="" showname="value" size="8" value="">
-                    <field name="s1ap.EUTRAN_CGI_element" pos="168" show="" showname="EUTRAN-CGI" size="7" value="">
-                      <field hide="yes" name="per.extension_bit" pos="168" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-                      <field hide="yes" name="per.optional_field_bit" pos="168" show="0" showname=".0.. .... Optional Field Bit: False (iE-Extensions is NOT present)" size="1" unmaskedvalue="00" value="0"/>
-                      <field name="s1ap.pLMNidentity" pos="169" show="02:f8:59" showname="pLMNidentity: 02f859" size="3" value="02f859"/>
-                      <field name="e212.mcc" pos="169" show="208" showname="Mobile Country Code (MCC): France (208)" size="2" value="02f8"/>
-                      <field name="e212.mnc" pos="170" show="95" showname="Mobile Network Code (MNC): Unknown (95)" size="2" value="f859"/>
-                      <field name="s1ap.cell_ID" pos="168" show="00:e0:00:00" showname="cell-ID: 00e00000 [bit length 28, 4 LSB pad bits, 0000 0000  1110 0000  0000 0000  0000 .... decimal value 917504]" size="4" value="00e00000"/>
-                    </field>
-                  </field>
-                </field>
-              </field>
-              <field name="" pos="176" show="Item 4: id-TAI" size="10" value="004340060002f8590001">
-                <field name="s1ap.ProtocolIE_Field_element" pos="176" show="" showname="ProtocolIE-Field" size="10" value="">
-                  <field name="s1ap.id" pos="176" show="67" showname="id: id-TAI (67)" size="2" value="0043"/>
-                  <field hide="yes" name="per.enum_index" pos="178" show="1" showname="Enumerated Index: 1" size="1" value="40"/>
-                  <field name="s1ap.criticality" pos="178" show="1" showname="criticality: ignore (1)" size="1" value="40"/>
-                  <field hide="yes" name="per.open_type_length" pos="179" show="6" showname="Open Type Length: 6" size="1" value="06"/>
-                  <field name="s1ap.value_element" pos="180" show="" showname="value" size="6" value="">
-                    <field name="s1ap.TAI_element" pos="180" show="" showname="TAI" size="6" value="">
-                      <field hide="yes" name="per.extension_bit" pos="180" show="0" showname="0... .... Extension Bit: False" size="1" unmaskedvalue="00" value="0"/>
-                      <field hide="yes" name="per.optional_field_bit" pos="180" show="0" showname=".0.. .... Optional Field Bit: False (iE-Extensions is NOT present)" size="1" unmaskedvalue="00" value="0"/>
-                      <field name="s1ap.pLMNidentity" pos="181" show="02:f8:59" showname="pLMNidentity: 02f859" size="3" value="02f859"/>
-                      <field name="e212.mcc" pos="181" show="208" showname="Mobile Country Code (MCC): France (208)" size="2" value="02f8"/>
-                      <field name="e212.mnc" pos="182" show="95" showname="Mobile Network Code (MNC): Unknown (95)" size="2" value="f859"/>
-                      <field name="s1ap.tAC" pos="184" show="00:01" showname="tAC: 0001" size="2" value="0001"/>
-                    </field>
-                  </field>
-                </field>
-              </field>
-            </field>
-          </field>
-        </field>
-      </field>
-    </field>
-  </proto>
-</packet>
-<packet>
-  
-  <proto name="frame" pos="0" showname="Frame 89: 62 bytes on wire (496 bits), 62 bytes captured (496 bits) on interface 0" size="62">
-    <field name="frame.interface_id" pos="0" show="0" showname="Interface id: 0 (eth0)" size="0"/>
-    <field name="frame.encap_type" pos="0" show="1" showname="Encapsulation type: Ethernet (1)" size="0"/>
-    <field name="frame.time" pos="0" show="Sep 25, 2015 16:34:54.426135000 CEST" showname="Arrival Time: Sep 25, 2015 16:34:54.426135000 CEST" size="0"/>
-    <field name="frame.offset_shift" pos="0" show="0.000000000" showname="Time shift for this packet: 0.000000000 seconds" size="0"/>
-    <field name="frame.time_epoch" pos="0" show="1443191694.426135000" showname="Epoch Time: 1443191694.426135000 seconds" size="0"/>
-    <field name="frame.time_delta" pos="0" show="0.199733000" showname="Time delta from previous captured frame: 0.199733000 seconds" size="0"/>
-    <field name="frame.time_delta_displayed" pos="0" show="0.199733000" showname="Time delta from previous displayed frame: 0.199733000 seconds" size="0"/>
-    <field name="frame.time_relative" pos="0" show="47.960504000" showname="Time since reference or first frame: 47.960504000 seconds" size="0"/>
-    <field name="frame.number" pos="0" show="89" showname="Frame Number: 89" size="0"/>
-    <field name="frame.len" pos="0" show="62" showname="Frame Length: 62 bytes (496 bits)" size="0"/>
-    <field name="frame.cap_len" pos="0" show="62" showname="Capture Length: 62 bytes (496 bits)" size="0"/>
-    <field name="frame.marked" pos="0" show="0" showname="Frame is marked: False" size="0"/>
-    <field name="frame.ignored" pos="0" show="0" showname="Frame is ignored: False" size="0"/>
-    <field name="frame.protocols" pos="0" show="eth:ethertype:ip:sctp" showname="Protocols in frame: eth:ethertype:ip:sctp" size="0"/>
-  </proto>
-  
-  <proto name="ip" pos="14" showname="Internet Protocol Version 4, Src: 192.168.12.17 (192.168.12.17), Dst: 192.168.12.213 (192.168.12.213)" size="20">
-    <field name="ip.version" pos="14" show="4" showname="Version: 4" size="1" value="45"/>
-    <field name="ip.hdr_len" pos="14" show="20" showname="Header Length: 20 bytes" size="1" value="45"/>
-    <field name="ip.dsfield" pos="15" show="2" showname="Differentiated Services Field: 0x02 (DSCP 0x00: Default; ECN: 0x02: ECT(0) (ECN-Capable Transport))" size="1" value="02">
-      <field name="ip.dsfield.dscp" pos="15" show="0" showname="0000 00.. = Differentiated Services Codepoint: Default (0x00)" size="1" unmaskedvalue="02" value="0"/>
-      <field name="ip.dsfield.ecn" pos="15" show="2" showname=".... ..10 = Explicit Congestion Notification: ECT(0) (ECN-Capable Transport) (0x02)" size="1" unmaskedvalue="02" value="2"/>
-    </field>
-    <field name="ip.len" pos="16" show="48" showname="Total Length: 48" size="2" value="0030"/>
-    <field name="ip.id" pos="18" show="0" showname="Identification: 0x0000 (0)" size="2" value="0000"/>
-    <field name="ip.flags" pos="20" show="2" showname="Flags: 0x02 (Don't Fragment)" size="1" value="40">
-      <field name="ip.flags.rb" pos="20" show="0" showname="0... .... = Reserved bit: Not set" size="1" value="40"/>
-      <field name="ip.flags.df" pos="20" show="1" showname=".1.. .... = Don't fragment: Set" size="1" value="40"/>
-      <field name="ip.flags.mf" pos="20" show="0" showname="..0. .... = More fragments: Not set" size="1" value="40"/>
-    </field>
-    <field name="ip.frag_offset" pos="20" show="0" showname="Fragment offset: 0" size="2" value="4000"/>
-    <field name="ip.ttl" pos="22" show="64" showname="Time to live: 64" size="1" value="40"/>
-    <field name="ip.proto" pos="23" show="132" showname="Protocol: SCTP (132)" size="1" value="84"/>
-    <field name="ip.checksum" pos="24" show="40977" showname="Header checksum: 0xa011 [validation disabled]" size="2" value="a011">
-      <field name="ip.checksum_good" pos="24" show="0" showname="Good: False" size="2" value="a011"/>
-      <field name="ip.checksum_bad" pos="24" show="0" showname="Bad: False" size="2" value="a011"/>
-    </field>
-    <field name="ip.src" pos="26" show="192.168.12.17" showname="Source: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.addr" pos="26" show="192.168.12.17" showname="Source or Destination Address: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.src_host" pos="26" show="192.168.12.17" showname="Source Host: 192.168.12.17" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.host" pos="26" show="192.168.12.17" showname="Source or Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-    <field name="ip.dst" pos="30" show="192.168.12.213" showname="Destination: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.addr" pos="30" show="192.168.12.213" showname="Source or Destination Address: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.dst_host" pos="30" show="192.168.12.213" showname="Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.host" pos="30" show="192.168.12.213" showname="Source or Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-    <field name="" pos="26" show="Source GeoIP: Unknown" size="4" value="c0a80c11"/>
-    <field name="" pos="30" show="Destination GeoIP: Unknown" size="4" value="c0a80cd5"/>
-  </proto>
-  <proto name="sctp" pos="34" showname="Stream Control Transmission Protocol, Src Port: 36412 (36412), Dst Port: 36412 (36412)" size="28">
-    <field name="sctp.srcport" pos="34" show="36412" showname="Source port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.dstport" pos="36" show="36412" showname="Destination port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.verification_tag" pos="38" show="1425553323" showname="Verification tag: 0x54f837ab" size="4" value="54f837ab"/>
-    <field name="sctp.assoc_index" pos="34" show="0" showname="Assocation index: 0" size="0"/>
-    <field hide="yes" name="sctp.port" pos="34" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-    <field hide="yes" name="sctp.port" pos="36" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.checksum" pos="42" show="705953576" showname="Checksum: 0x2a13ff28 (not verified)" size="4" value="2a13ff28"/>
-    <field name="" pos="46" show="SACK chunk (Cumulative TSN: 3304831198, a_rwnd: 106496, gaps: 0, duplicate TSNs: 0)" size="16" value="03000010c4fbb8de0001a00000000000">
-      <field name="sctp.chunk_type" pos="46" show="3" showname="Chunk type: SACK (3)" size="1" value="03">
-        <field name="sctp.chunk_bit_1" pos="46" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="03" value="0"/>
-        <field name="sctp.chunk_bit_2" pos="46" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="03" value="0"/>
-      </field>
-      <field name="sctp.chunk_flags" pos="47" show="0" showname="Chunk flags: 0x00" size="1" value="00">
-        <field name="sctp.sack_nounce_sum" pos="47" show="0" showname=".... ...0 = Nounce sum: 0" size="1" unmaskedvalue="00" value="0"/>
-      </field>
-      <field name="sctp.chunk_length" pos="48" show="16" showname="Chunk length: 16" size="2" value="0010"/>
-      <field name="sctp.sack_cumulative_tsn_ack" pos="50" show="3304831198" showname="Cumulative TSN ACK: 3304831198" size="4" value="c4fbb8de">
-        <field name="sctp.ack" pos="96" show="3304831197" showname="Acknowledges TSN: 3304831197" size="0">
-          <field name="sctp.ack_frame" pos="46" show="88" showname="Chunk acknowledged in frame: 88" size="0"/>
-          <field name="sctp.sack_rtt" pos="46" show="0.199733000" showname="The RTT since DATA was: 0.199733000 seconds" size="0"/>
-        </field>
-        <field name="sctp.ack" pos="96" show="3304831198" showname="Acknowledges TSN: 3304831198" size="0">
-          <field name="sctp.ack_frame" pos="46" show="88" showname="Chunk acknowledged in frame: 88" size="0"/>
-          <field name="sctp.sack_rtt" pos="46" show="0.199733000" showname="The RTT since DATA was: 0.199733000 seconds" size="0"/>
-        </field>
-      </field>
-      <field name="sctp.sack_a_rwnd" pos="54" show="106496" showname="Advertised receiver window credit (a_rwnd): 106496" size="4" value="0001a000"/>
-      <field name="sctp.sack_number_of_gap_blocks" pos="58" show="0" showname="Number of gap acknowledgement blocks: 0" size="2" value="0000"/>
-      <field name="sctp.sack_number_of_duplicated_tsns" pos="60" show="0" showname="Number of duplicated TSNs: 0" size="2" value="0000"/>
-    </field>
-  </proto>
-</packet>
-<packet>
-  
-  <proto name="frame" pos="0" showname="Frame 176: 98 bytes on wire (784 bits), 98 bytes captured (784 bits) on interface 0" size="98">
-    <field name="frame.interface_id" pos="0" show="0" showname="Interface id: 0 (eth0)" size="0"/>
-    <field name="frame.encap_type" pos="0" show="1" showname="Encapsulation type: Ethernet (1)" size="0"/>
-    <field name="frame.time" pos="0" show="Sep 25, 2015 16:35:24.530270000 CEST" showname="Arrival Time: Sep 25, 2015 16:35:24.530270000 CEST" size="0"/>
-    <field name="frame.offset_shift" pos="0" show="0.000000000" showname="Time shift for this packet: 0.000000000 seconds" size="0"/>
-    <field name="frame.time_epoch" pos="0" show="1443191724.530270000" showname="Epoch Time: 1443191724.530270000 seconds" size="0"/>
-    <field name="frame.time_delta" pos="0" show="0.030375000" showname="Time delta from previous captured frame: 0.030375000 seconds" size="0"/>
-    <field name="frame.time_delta_displayed" pos="0" show="0.030375000" showname="Time delta from previous displayed frame: 0.030375000 seconds" size="0"/>
-    <field name="frame.time_relative" pos="0" show="78.064639000" showname="Time since reference or first frame: 78.064639000 seconds" size="0"/>
-    <field name="frame.number" pos="0" show="176" showname="Frame Number: 176" size="0"/>
-    <field name="frame.len" pos="0" show="98" showname="Frame Length: 98 bytes (784 bits)" size="0"/>
-    <field name="frame.cap_len" pos="0" show="98" showname="Capture Length: 98 bytes (784 bits)" size="0"/>
-    <field name="frame.marked" pos="0" show="0" showname="Frame is marked: False" size="0"/>
-    <field name="frame.ignored" pos="0" show="0" showname="Frame is ignored: False" size="0"/>
-    <field name="frame.protocols" pos="0" show="eth:ethertype:ip:sctp" showname="Protocols in frame: eth:ethertype:ip:sctp" size="0"/>
-  </proto>
-  
-  <proto name="ip" pos="14" showname="Internet Protocol Version 4, Src: 192.168.12.17 (192.168.12.17), Dst: 192.168.12.213 (192.168.12.213)" size="20">
-    <field name="ip.version" pos="14" show="4" showname="Version: 4" size="1" value="45"/>
-    <field name="ip.hdr_len" pos="14" show="20" showname="Header Length: 20 bytes" size="1" value="45"/>
-    <field name="ip.dsfield" pos="15" show="2" showname="Differentiated Services Field: 0x02 (DSCP 0x00: Default; ECN: 0x02: ECT(0) (ECN-Capable Transport))" size="1" value="02">
-      <field name="ip.dsfield.dscp" pos="15" show="0" showname="0000 00.. = Differentiated Services Codepoint: Default (0x00)" size="1" unmaskedvalue="02" value="0"/>
-      <field name="ip.dsfield.ecn" pos="15" show="2" showname=".... ..10 = Explicit Congestion Notification: ECT(0) (ECN-Capable Transport) (0x02)" size="1" unmaskedvalue="02" value="2"/>
-    </field>
-    <field name="ip.len" pos="16" show="84" showname="Total Length: 84" size="2" value="0054"/>
-    <field name="ip.id" pos="18" show="0" showname="Identification: 0x0000 (0)" size="2" value="0000"/>
-    <field name="ip.flags" pos="20" show="2" showname="Flags: 0x02 (Don't Fragment)" size="1" value="40">
-      <field name="ip.flags.rb" pos="20" show="0" showname="0... .... = Reserved bit: Not set" size="1" value="40"/>
-      <field name="ip.flags.df" pos="20" show="1" showname=".1.. .... = Don't fragment: Set" size="1" value="40"/>
-      <field name="ip.flags.mf" pos="20" show="0" showname="..0. .... = More fragments: Not set" size="1" value="40"/>
-    </field>
-    <field name="ip.frag_offset" pos="20" show="0" showname="Fragment offset: 0" size="2" value="4000"/>
-    <field name="ip.ttl" pos="22" show="64" showname="Time to live: 64" size="1" value="40"/>
-    <field name="ip.proto" pos="23" show="132" showname="Protocol: SCTP (132)" size="1" value="84"/>
-    <field name="ip.checksum" pos="24" show="40941" showname="Header checksum: 0x9fed [validation disabled]" size="2" value="9fed">
-      <field name="ip.checksum_good" pos="24" show="0" showname="Good: False" size="2" value="9fed"/>
-      <field name="ip.checksum_bad" pos="24" show="0" showname="Bad: False" size="2" value="9fed"/>
-    </field>
-    <field name="ip.src" pos="26" show="192.168.12.17" showname="Source: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.addr" pos="26" show="192.168.12.17" showname="Source or Destination Address: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.src_host" pos="26" show="192.168.12.17" showname="Source Host: 192.168.12.17" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.host" pos="26" show="192.168.12.17" showname="Source or Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-    <field name="ip.dst" pos="30" show="192.168.12.213" showname="Destination: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.addr" pos="30" show="192.168.12.213" showname="Source or Destination Address: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.dst_host" pos="30" show="192.168.12.213" showname="Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.host" pos="30" show="192.168.12.213" showname="Source or Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-    <field name="" pos="26" show="Source GeoIP: Unknown" size="4" value="c0a80c11"/>
-    <field name="" pos="30" show="Destination GeoIP: Unknown" size="4" value="c0a80cd5"/>
-  </proto>
-  <proto name="sctp" pos="34" showname="Stream Control Transmission Protocol, Src Port: 36412 (36412), Dst Port: 36412 (36412)" size="64">
-    <field name="sctp.srcport" pos="34" show="36412" showname="Source port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.dstport" pos="36" show="36412" showname="Destination port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.verification_tag" pos="38" show="1425553323" showname="Verification tag: 0x54f837ab" size="4" value="54f837ab"/>
-    <field name="sctp.assoc_index" pos="34" show="0" showname="Assocation index: 0" size="0"/>
-    <field hide="yes" name="sctp.port" pos="34" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-    <field hide="yes" name="sctp.port" pos="36" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.checksum" pos="42" show="1940683722" showname="Checksum: 0x73ac7bca (not verified)" size="4" value="73ac7bca"/>
-    <field name="" pos="46" show="HEARTBEAT chunk (Information: 48 bytes)" size="52" value="040000340001003002008e3cc0a80cd5000000000000000000000000000000000000000060313300010000008db53fb930a0b65f">
-      <field name="sctp.chunk_type" pos="46" show="4" showname="Chunk type: HEARTBEAT (4)" size="1" value="04">
-        <field name="sctp.chunk_bit_1" pos="46" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="04" value="0"/>
-        <field name="sctp.chunk_bit_2" pos="46" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="04" value="0"/>
-      </field>
-      <field name="sctp.chunk_flags" pos="47" show="0" showname="Chunk flags: 0x00" size="1" value="00"/>
-      <field name="sctp.chunk_length" pos="48" show="52" showname="Chunk length: 52" size="2" value="0034"/>
-      <field name="" pos="50" show="Heartbeat info parameter (Information: 44 bytes)" size="48" value="0001003002008e3cc0a80cd5000000000000000000000000000000000000000060313300010000008db53fb930a0b65f">
-        <field name="sctp.parameter_type" pos="50" show="1" showname="Parameter type: Heartbeat info (0x0001)" size="2" value="0001">
-          <field name="sctp.parameter_bit_1" pos="50" show="0" showname="0... .... .... .... = Bit: Stop processing of chunk" size="2" unmaskedvalue="0001" value="0"/>
-          <field name="sctp.parameter_bit_2" pos="50" show="0" showname=".0.. .... .... .... = Bit: Do not report" size="2" unmaskedvalue="0001" value="0"/>
-        </field>
-        <field name="sctp.parameter_length" pos="52" show="48" showname="Parameter length: 48" size="2" value="0030"/>
-        <field name="sctp.parameter_heartbeat_information" pos="54" show="02:00:8e:3c:c0:a8:0c:d5:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:60:31:33:00:01:00:00:00:8d:b5:3f:b9:30:a0:b6:5f" showname="Heartbeat information: 02008e3cc0a80cd500000000000000000000000000000000..." size="44" value="02008e3cc0a80cd5000000000000000000000000000000000000000060313300010000008db53fb930a0b65f"/>
-      </field>
-    </field>
-  </proto>
-</packet>
-<packet>
-  
-  <proto name="frame" pos="0" showname="Frame 177: 98 bytes on wire (784 bits), 98 bytes captured (784 bits) on interface 0" size="98">
-    <field name="frame.interface_id" pos="0" show="0" showname="Interface id: 0 (eth0)" size="0"/>
-    <field name="frame.encap_type" pos="0" show="1" showname="Encapsulation type: Ethernet (1)" size="0"/>
-    <field name="frame.time" pos="0" show="Sep 25, 2015 16:35:24.530415000 CEST" showname="Arrival Time: Sep 25, 2015 16:35:24.530415000 CEST" size="0"/>
-    <field name="frame.offset_shift" pos="0" show="0.000000000" showname="Time shift for this packet: 0.000000000 seconds" size="0"/>
-    <field name="frame.time_epoch" pos="0" show="1443191724.530415000" showname="Epoch Time: 1443191724.530415000 seconds" size="0"/>
-    <field name="frame.time_delta" pos="0" show="0.000145000" showname="Time delta from previous captured frame: 0.000145000 seconds" size="0"/>
-    <field name="frame.time_delta_displayed" pos="0" show="0.000145000" showname="Time delta from previous displayed frame: 0.000145000 seconds" size="0"/>
-    <field name="frame.time_relative" pos="0" show="78.064784000" showname="Time since reference or first frame: 78.064784000 seconds" size="0"/>
-    <field name="frame.number" pos="0" show="177" showname="Frame Number: 177" size="0"/>
-    <field name="frame.len" pos="0" show="98" showname="Frame Length: 98 bytes (784 bits)" size="0"/>
-    <field name="frame.cap_len" pos="0" show="98" showname="Capture Length: 98 bytes (784 bits)" size="0"/>
-    <field name="frame.marked" pos="0" show="0" showname="Frame is marked: False" size="0"/>
-    <field name="frame.ignored" pos="0" show="0" showname="Frame is ignored: False" size="0"/>
-    <field name="frame.protocols" pos="0" show="eth:ethertype:ip:sctp" showname="Protocols in frame: eth:ethertype:ip:sctp" size="0"/>
-  </proto>
-  
-  <proto name="ip" pos="14" showname="Internet Protocol Version 4, Src: 192.168.12.213 (192.168.12.213), Dst: 192.168.12.17 (192.168.12.17)" size="20">
-    <field name="ip.version" pos="14" show="4" showname="Version: 4" size="1" value="45"/>
-    <field name="ip.hdr_len" pos="14" show="20" showname="Header Length: 20 bytes" size="1" value="45"/>
-    <field name="ip.dsfield" pos="15" show="2" showname="Differentiated Services Field: 0x02 (DSCP 0x00: Default; ECN: 0x02: ECT(0) (ECN-Capable Transport))" size="1" value="02">
-      <field name="ip.dsfield.dscp" pos="15" show="0" showname="0000 00.. = Differentiated Services Codepoint: Default (0x00)" size="1" unmaskedvalue="02" value="0"/>
-      <field name="ip.dsfield.ecn" pos="15" show="2" showname=".... ..10 = Explicit Congestion Notification: ECT(0) (ECN-Capable Transport) (0x02)" size="1" unmaskedvalue="02" value="2"/>
-    </field>
-    <field name="ip.len" pos="16" show="84" showname="Total Length: 84" size="2" value="0054"/>
-    <field name="ip.id" pos="18" show="12" showname="Identification: 0x000c (12)" size="2" value="000c"/>
-    <field name="ip.flags" pos="20" show="2" showname="Flags: 0x02 (Don't Fragment)" size="1" value="40">
-      <field name="ip.flags.rb" pos="20" show="0" showname="0... .... = Reserved bit: Not set" size="1" value="40"/>
-      <field name="ip.flags.df" pos="20" show="1" showname=".1.. .... = Don't fragment: Set" size="1" value="40"/>
-      <field name="ip.flags.mf" pos="20" show="0" showname="..0. .... = More fragments: Not set" size="1" value="40"/>
-    </field>
-    <field name="ip.frag_offset" pos="20" show="0" showname="Fragment offset: 0" size="2" value="4000"/>
-    <field name="ip.ttl" pos="22" show="64" showname="Time to live: 64" size="1" value="40"/>
-    <field name="ip.proto" pos="23" show="132" showname="Protocol: SCTP (132)" size="1" value="84"/>
-    <field name="ip.checksum" pos="24" show="40929" showname="Header checksum: 0x9fe1 [validation disabled]" size="2" value="9fe1">
-      <field name="ip.checksum_good" pos="24" show="0" showname="Good: False" size="2" value="9fe1"/>
-      <field name="ip.checksum_bad" pos="24" show="0" showname="Bad: False" size="2" value="9fe1"/>
-    </field>
-    <field name="ip.src" pos="26" show="192.168.12.213" showname="Source: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.addr" pos="26" show="192.168.12.213" showname="Source or Destination Address: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.src_host" pos="26" show="192.168.12.213" showname="Source Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.host" pos="26" show="192.168.12.213" showname="Source or Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-    <field name="ip.dst" pos="30" show="192.168.12.17" showname="Destination: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.addr" pos="30" show="192.168.12.17" showname="Source or Destination Address: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.dst_host" pos="30" show="192.168.12.17" showname="Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.host" pos="30" show="192.168.12.17" showname="Source or Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-    <field name="" pos="26" show="Source GeoIP: Unknown" size="4" value="c0a80cd5"/>
-    <field name="" pos="30" show="Destination GeoIP: Unknown" size="4" value="c0a80c11"/>
-  </proto>
-  <proto name="sctp" pos="34" showname="Stream Control Transmission Protocol, Src Port: 36412 (36412), Dst Port: 36412 (36412)" size="64">
-    <field name="sctp.srcport" pos="34" show="36412" showname="Source port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.dstport" pos="36" show="36412" showname="Destination port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.verification_tag" pos="38" show="1288826016" showname="Verification tag: 0x4cd1eca0" size="4" value="4cd1eca0"/>
-    <field name="sctp.assoc_index" pos="34" show="0" showname="Assocation index: 0" size="0"/>
-    <field hide="yes" name="sctp.port" pos="34" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-    <field hide="yes" name="sctp.port" pos="36" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.checksum" pos="42" show="1098191026" showname="Checksum: 0x417510b2 (not verified)" size="4" value="417510b2"/>
-    <field name="" pos="46" show="HEARTBEAT_ACK chunk (Information: 48 bytes)" size="52" value="050000340001003002008e3cc0a80cd5000000000000000000000000000000000000000060313300010000008db53fb930a0b65f">
-      <field name="sctp.chunk_type" pos="46" show="5" showname="Chunk type: HEARTBEAT_ACK (5)" size="1" value="05">
-        <field name="sctp.chunk_bit_1" pos="46" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="05" value="0"/>
-        <field name="sctp.chunk_bit_2" pos="46" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="05" value="0"/>
-      </field>
-      <field name="sctp.chunk_flags" pos="47" show="0" showname="Chunk flags: 0x00" size="1" value="00"/>
-      <field name="sctp.chunk_length" pos="48" show="52" showname="Chunk length: 52" size="2" value="0034"/>
-      <field name="" pos="50" show="Heartbeat info parameter (Information: 44 bytes)" size="48" value="0001003002008e3cc0a80cd5000000000000000000000000000000000000000060313300010000008db53fb930a0b65f">
-        <field name="sctp.parameter_type" pos="50" show="1" showname="Parameter type: Heartbeat info (0x0001)" size="2" value="0001">
-          <field name="sctp.parameter_bit_1" pos="50" show="0" showname="0... .... .... .... = Bit: Stop processing of chunk" size="2" unmaskedvalue="0001" value="0"/>
-          <field name="sctp.parameter_bit_2" pos="50" show="0" showname=".0.. .... .... .... = Bit: Do not report" size="2" unmaskedvalue="0001" value="0"/>
-        </field>
-        <field name="sctp.parameter_length" pos="52" show="48" showname="Parameter length: 48" size="2" value="0030"/>
-        <field name="sctp.parameter_heartbeat_information" pos="54" show="02:00:8e:3c:c0:a8:0c:d5:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:60:31:33:00:01:00:00:00:8d:b5:3f:b9:30:a0:b6:5f" showname="Heartbeat information: 02008e3cc0a80cd500000000000000000000000000000000..." size="44" value="02008e3cc0a80cd5000000000000000000000000000000000000000060313300010000008db53fb930a0b65f"/>
-      </field>
-    </field>
-  </proto>
-</packet>
-<packet>
-  
-  <proto name="frame" pos="0" showname="Frame 185: 98 bytes on wire (784 bits), 98 bytes captured (784 bits) on interface 0" size="98">
-    <field name="frame.interface_id" pos="0" show="0" showname="Interface id: 0 (eth0)" size="0"/>
-    <field name="frame.encap_type" pos="0" show="1" showname="Encapsulation type: Ethernet (1)" size="0"/>
-    <field name="frame.time" pos="0" show="Sep 25, 2015 16:35:25.005065000 CEST" showname="Arrival Time: Sep 25, 2015 16:35:25.005065000 CEST" size="0"/>
-    <field name="frame.offset_shift" pos="0" show="0.000000000" showname="Time shift for this packet: 0.000000000 seconds" size="0"/>
-    <field name="frame.time_epoch" pos="0" show="1443191725.005065000" showname="Epoch Time: 1443191725.005065000 seconds" size="0"/>
-    <field name="frame.time_delta" pos="0" show="0.087558000" showname="Time delta from previous captured frame: 0.087558000 seconds" size="0"/>
-    <field name="frame.time_delta_displayed" pos="0" show="0.087558000" showname="Time delta from previous displayed frame: 0.087558000 seconds" size="0"/>
-    <field name="frame.time_relative" pos="0" show="78.539434000" showname="Time since reference or first frame: 78.539434000 seconds" size="0"/>
-    <field name="frame.number" pos="0" show="185" showname="Frame Number: 185" size="0"/>
-    <field name="frame.len" pos="0" show="98" showname="Frame Length: 98 bytes (784 bits)" size="0"/>
-    <field name="frame.cap_len" pos="0" show="98" showname="Capture Length: 98 bytes (784 bits)" size="0"/>
-    <field name="frame.marked" pos="0" show="0" showname="Frame is marked: False" size="0"/>
-    <field name="frame.ignored" pos="0" show="0" showname="Frame is ignored: False" size="0"/>
-    <field name="frame.protocols" pos="0" show="eth:ethertype:ip:sctp" showname="Protocols in frame: eth:ethertype:ip:sctp" size="0"/>
-  </proto>
-  
-  <proto name="ip" pos="14" showname="Internet Protocol Version 4, Src: 192.168.12.213 (192.168.12.213), Dst: 192.168.12.17 (192.168.12.17)" size="20">
-    <field name="ip.version" pos="14" show="4" showname="Version: 4" size="1" value="45"/>
-    <field name="ip.hdr_len" pos="14" show="20" showname="Header Length: 20 bytes" size="1" value="45"/>
-    <field name="ip.dsfield" pos="15" show="2" showname="Differentiated Services Field: 0x02 (DSCP 0x00: Default; ECN: 0x02: ECT(0) (ECN-Capable Transport))" size="1" value="02">
-      <field name="ip.dsfield.dscp" pos="15" show="0" showname="0000 00.. = Differentiated Services Codepoint: Default (0x00)" size="1" unmaskedvalue="02" value="0"/>
-      <field name="ip.dsfield.ecn" pos="15" show="2" showname=".... ..10 = Explicit Congestion Notification: ECT(0) (ECN-Capable Transport) (0x02)" size="1" unmaskedvalue="02" value="2"/>
-    </field>
-    <field name="ip.len" pos="16" show="84" showname="Total Length: 84" size="2" value="0054"/>
-    <field name="ip.id" pos="18" show="13" showname="Identification: 0x000d (13)" size="2" value="000d"/>
-    <field name="ip.flags" pos="20" show="2" showname="Flags: 0x02 (Don't Fragment)" size="1" value="40">
-      <field name="ip.flags.rb" pos="20" show="0" showname="0... .... = Reserved bit: Not set" size="1" value="40"/>
-      <field name="ip.flags.df" pos="20" show="1" showname=".1.. .... = Don't fragment: Set" size="1" value="40"/>
-      <field name="ip.flags.mf" pos="20" show="0" showname="..0. .... = More fragments: Not set" size="1" value="40"/>
-    </field>
-    <field name="ip.frag_offset" pos="20" show="0" showname="Fragment offset: 0" size="2" value="4000"/>
-    <field name="ip.ttl" pos="22" show="64" showname="Time to live: 64" size="1" value="40"/>
-    <field name="ip.proto" pos="23" show="132" showname="Protocol: SCTP (132)" size="1" value="84"/>
-    <field name="ip.checksum" pos="24" show="40928" showname="Header checksum: 0x9fe0 [validation disabled]" size="2" value="9fe0">
-      <field name="ip.checksum_good" pos="24" show="0" showname="Good: False" size="2" value="9fe0"/>
-      <field name="ip.checksum_bad" pos="24" show="0" showname="Bad: False" size="2" value="9fe0"/>
-    </field>
-    <field name="ip.src" pos="26" show="192.168.12.213" showname="Source: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.addr" pos="26" show="192.168.12.213" showname="Source or Destination Address: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.src_host" pos="26" show="192.168.12.213" showname="Source Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.host" pos="26" show="192.168.12.213" showname="Source or Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-    <field name="ip.dst" pos="30" show="192.168.12.17" showname="Destination: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.addr" pos="30" show="192.168.12.17" showname="Source or Destination Address: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.dst_host" pos="30" show="192.168.12.17" showname="Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.host" pos="30" show="192.168.12.17" showname="Source or Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-    <field name="" pos="26" show="Source GeoIP: Unknown" size="4" value="c0a80cd5"/>
-    <field name="" pos="30" show="Destination GeoIP: Unknown" size="4" value="c0a80c11"/>
-  </proto>
-  <proto name="sctp" pos="34" showname="Stream Control Transmission Protocol, Src Port: 36412 (36412), Dst Port: 36412 (36412)" size="64">
-    <field name="sctp.srcport" pos="34" show="36412" showname="Source port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.dstport" pos="36" show="36412" showname="Destination port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.verification_tag" pos="38" show="1288826016" showname="Verification tag: 0x4cd1eca0" size="4" value="4cd1eca0"/>
-    <field name="sctp.assoc_index" pos="34" show="0" showname="Assocation index: 0" size="0"/>
-    <field hide="yes" name="sctp.port" pos="34" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-    <field hide="yes" name="sctp.port" pos="36" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.checksum" pos="42" show="2886205372" showname="Checksum: 0xac07ffbc (not verified)" size="4" value="ac07ffbc"/>
-    <field name="" pos="46" show="HEARTBEAT chunk (Information: 48 bytes)" size="52" value="040000340001003002008e3cc0a80c110000000000000000007459d10088ffff1e201d8180292314010000007730e920aa62f65b">
-      <field name="sctp.chunk_type" pos="46" show="4" showname="Chunk type: HEARTBEAT (4)" size="1" value="04">
-        <field name="sctp.chunk_bit_1" pos="46" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="04" value="0"/>
-        <field name="sctp.chunk_bit_2" pos="46" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="04" value="0"/>
-      </field>
-      <field name="sctp.chunk_flags" pos="47" show="0" showname="Chunk flags: 0x00" size="1" value="00"/>
-      <field name="sctp.chunk_length" pos="48" show="52" showname="Chunk length: 52" size="2" value="0034"/>
-      <field name="" pos="50" show="Heartbeat info parameter (Information: 44 bytes)" size="48" value="0001003002008e3cc0a80c110000000000000000007459d10088ffff1e201d8180292314010000007730e920aa62f65b">
-        <field name="sctp.parameter_type" pos="50" show="1" showname="Parameter type: Heartbeat info (0x0001)" size="2" value="0001">
-          <field name="sctp.parameter_bit_1" pos="50" show="0" showname="0... .... .... .... = Bit: Stop processing of chunk" size="2" unmaskedvalue="0001" value="0"/>
-          <field name="sctp.parameter_bit_2" pos="50" show="0" showname=".0.. .... .... .... = Bit: Do not report" size="2" unmaskedvalue="0001" value="0"/>
-        </field>
-        <field name="sctp.parameter_length" pos="52" show="48" showname="Parameter length: 48" size="2" value="0030"/>
-        <field name="sctp.parameter_heartbeat_information" pos="54" show="02:00:8e:3c:c0:a8:0c:11:00:00:00:00:00:00:00:00:00:74:59:d1:00:88:ff:ff:1e:20:1d:81:80:29:23:14:01:00:00:00:77:30:e9:20:aa:62:f6:5b" showname="Heartbeat information: 02008e3cc0a80c110000000000000000007459d10088ffff..." size="44" value="02008e3cc0a80c110000000000000000007459d10088ffff1e201d8180292314010000007730e920aa62f65b"/>
-      </field>
-    </field>
-  </proto>
-</packet>
-<packet>
-  
-  <proto name="frame" pos="0" showname="Frame 186: 98 bytes on wire (784 bits), 98 bytes captured (784 bits) on interface 0" size="98">
-    <field name="frame.interface_id" pos="0" show="0" showname="Interface id: 0 (eth0)" size="0"/>
-    <field name="frame.encap_type" pos="0" show="1" showname="Encapsulation type: Ethernet (1)" size="0"/>
-    <field name="frame.time" pos="0" show="Sep 25, 2015 16:35:25.005098000 CEST" showname="Arrival Time: Sep 25, 2015 16:35:25.005098000 CEST" size="0"/>
-    <field name="frame.offset_shift" pos="0" show="0.000000000" showname="Time shift for this packet: 0.000000000 seconds" size="0"/>
-    <field name="frame.time_epoch" pos="0" show="1443191725.005098000" showname="Epoch Time: 1443191725.005098000 seconds" size="0"/>
-    <field name="frame.time_delta" pos="0" show="0.000033000" showname="Time delta from previous captured frame: 0.000033000 seconds" size="0"/>
-    <field name="frame.time_delta_displayed" pos="0" show="0.000033000" showname="Time delta from previous displayed frame: 0.000033000 seconds" size="0"/>
-    <field name="frame.time_relative" pos="0" show="78.539467000" showname="Time since reference or first frame: 78.539467000 seconds" size="0"/>
-    <field name="frame.number" pos="0" show="186" showname="Frame Number: 186" size="0"/>
-    <field name="frame.len" pos="0" show="98" showname="Frame Length: 98 bytes (784 bits)" size="0"/>
-    <field name="frame.cap_len" pos="0" show="98" showname="Capture Length: 98 bytes (784 bits)" size="0"/>
-    <field name="frame.marked" pos="0" show="0" showname="Frame is marked: False" size="0"/>
-    <field name="frame.ignored" pos="0" show="0" showname="Frame is ignored: False" size="0"/>
-    <field name="frame.protocols" pos="0" show="eth:ethertype:ip:sctp" showname="Protocols in frame: eth:ethertype:ip:sctp" size="0"/>
-  </proto>
-  
-  <proto name="ip" pos="14" showname="Internet Protocol Version 4, Src: 192.168.12.17 (192.168.12.17), Dst: 192.168.12.213 (192.168.12.213)" size="20">
-    <field name="ip.version" pos="14" show="4" showname="Version: 4" size="1" value="45"/>
-    <field name="ip.hdr_len" pos="14" show="20" showname="Header Length: 20 bytes" size="1" value="45"/>
-    <field name="ip.dsfield" pos="15" show="2" showname="Differentiated Services Field: 0x02 (DSCP 0x00: Default; ECN: 0x02: ECT(0) (ECN-Capable Transport))" size="1" value="02">
-      <field name="ip.dsfield.dscp" pos="15" show="0" showname="0000 00.. = Differentiated Services Codepoint: Default (0x00)" size="1" unmaskedvalue="02" value="0"/>
-      <field name="ip.dsfield.ecn" pos="15" show="2" showname=".... ..10 = Explicit Congestion Notification: ECT(0) (ECN-Capable Transport) (0x02)" size="1" unmaskedvalue="02" value="2"/>
-    </field>
-    <field name="ip.len" pos="16" show="84" showname="Total Length: 84" size="2" value="0054"/>
-    <field name="ip.id" pos="18" show="0" showname="Identification: 0x0000 (0)" size="2" value="0000"/>
-    <field name="ip.flags" pos="20" show="2" showname="Flags: 0x02 (Don't Fragment)" size="1" value="40">
-      <field name="ip.flags.rb" pos="20" show="0" showname="0... .... = Reserved bit: Not set" size="1" value="40"/>
-      <field name="ip.flags.df" pos="20" show="1" showname=".1.. .... = Don't fragment: Set" size="1" value="40"/>
-      <field name="ip.flags.mf" pos="20" show="0" showname="..0. .... = More fragments: Not set" size="1" value="40"/>
-    </field>
-    <field name="ip.frag_offset" pos="20" show="0" showname="Fragment offset: 0" size="2" value="4000"/>
-    <field name="ip.ttl" pos="22" show="64" showname="Time to live: 64" size="1" value="40"/>
-    <field name="ip.proto" pos="23" show="132" showname="Protocol: SCTP (132)" size="1" value="84"/>
-    <field name="ip.checksum" pos="24" show="40941" showname="Header checksum: 0x9fed [validation disabled]" size="2" value="9fed">
-      <field name="ip.checksum_good" pos="24" show="0" showname="Good: False" size="2" value="9fed"/>
-      <field name="ip.checksum_bad" pos="24" show="0" showname="Bad: False" size="2" value="9fed"/>
-    </field>
-    <field name="ip.src" pos="26" show="192.168.12.17" showname="Source: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.addr" pos="26" show="192.168.12.17" showname="Source or Destination Address: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.src_host" pos="26" show="192.168.12.17" showname="Source Host: 192.168.12.17" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.host" pos="26" show="192.168.12.17" showname="Source or Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-    <field name="ip.dst" pos="30" show="192.168.12.213" showname="Destination: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.addr" pos="30" show="192.168.12.213" showname="Source or Destination Address: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.dst_host" pos="30" show="192.168.12.213" showname="Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.host" pos="30" show="192.168.12.213" showname="Source or Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-    <field name="" pos="26" show="Source GeoIP: Unknown" size="4" value="c0a80c11"/>
-    <field name="" pos="30" show="Destination GeoIP: Unknown" size="4" value="c0a80cd5"/>
-  </proto>
-  <proto name="sctp" pos="34" showname="Stream Control Transmission Protocol, Src Port: 36412 (36412), Dst Port: 36412 (36412)" size="64">
-    <field name="sctp.srcport" pos="34" show="36412" showname="Source port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.dstport" pos="36" show="36412" showname="Destination port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.verification_tag" pos="38" show="1425553323" showname="Verification tag: 0x54f837ab" size="4" value="54f837ab"/>
-    <field name="sctp.assoc_index" pos="34" show="0" showname="Assocation index: 0" size="0"/>
-    <field hide="yes" name="sctp.port" pos="34" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-    <field hide="yes" name="sctp.port" pos="36" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.checksum" pos="42" show="2665387204" showname="Checksum: 0x9ede94c4 (not verified)" size="4" value="9ede94c4"/>
-    <field name="" pos="46" show="HEARTBEAT_ACK chunk (Information: 48 bytes)" size="52" value="050000340001003002008e3cc0a80c110000000000000000007459d10088ffff1e201d8180292314010000007730e920aa62f65b">
-      <field name="sctp.chunk_type" pos="46" show="5" showname="Chunk type: HEARTBEAT_ACK (5)" size="1" value="05">
-        <field name="sctp.chunk_bit_1" pos="46" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="05" value="0"/>
-        <field name="sctp.chunk_bit_2" pos="46" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="05" value="0"/>
-      </field>
-      <field name="sctp.chunk_flags" pos="47" show="0" showname="Chunk flags: 0x00" size="1" value="00"/>
-      <field name="sctp.chunk_length" pos="48" show="52" showname="Chunk length: 52" size="2" value="0034"/>
-      <field name="" pos="50" show="Heartbeat info parameter (Information: 44 bytes)" size="48" value="0001003002008e3cc0a80c110000000000000000007459d10088ffff1e201d8180292314010000007730e920aa62f65b">
-        <field name="sctp.parameter_type" pos="50" show="1" showname="Parameter type: Heartbeat info (0x0001)" size="2" value="0001">
-          <field name="sctp.parameter_bit_1" pos="50" show="0" showname="0... .... .... .... = Bit: Stop processing of chunk" size="2" unmaskedvalue="0001" value="0"/>
-          <field name="sctp.parameter_bit_2" pos="50" show="0" showname=".0.. .... .... .... = Bit: Do not report" size="2" unmaskedvalue="0001" value="0"/>
-        </field>
-        <field name="sctp.parameter_length" pos="52" show="48" showname="Parameter length: 48" size="2" value="0030"/>
-        <field name="sctp.parameter_heartbeat_information" pos="54" show="02:00:8e:3c:c0:a8:0c:11:00:00:00:00:00:00:00:00:00:74:59:d1:00:88:ff:ff:1e:20:1d:81:80:29:23:14:01:00:00:00:77:30:e9:20:aa:62:f6:5b" showname="Heartbeat information: 02008e3cc0a80c110000000000000000007459d10088ffff..." size="44" value="02008e3cc0a80c110000000000000000007459d10088ffff1e201d8180292314010000007730e920aa62f65b"/>
-      </field>
-    </field>
-  </proto>
-</packet>
-<packet>
-  
-  <proto name="frame" pos="0" showname="Frame 421: 98 bytes on wire (784 bits), 98 bytes captured (784 bits) on interface 0" size="98">
-    <field name="frame.interface_id" pos="0" show="0" showname="Interface id: 0 (eth0)" size="0"/>
-    <field name="frame.encap_type" pos="0" show="1" showname="Encapsulation type: Ethernet (1)" size="0"/>
-    <field name="frame.time" pos="0" show="Sep 25, 2015 16:35:55.122133000 CEST" showname="Arrival Time: Sep 25, 2015 16:35:55.122133000 CEST" size="0"/>
-    <field name="frame.offset_shift" pos="0" show="0.000000000" showname="Time shift for this packet: 0.000000000 seconds" size="0"/>
-    <field name="frame.time_epoch" pos="0" show="1443191755.122133000" showname="Epoch Time: 1443191755.122133000 seconds" size="0"/>
-    <field name="frame.time_delta" pos="0" show="0.163967000" showname="Time delta from previous captured frame: 0.163967000 seconds" size="0"/>
-    <field name="frame.time_delta_displayed" pos="0" show="0.163967000" showname="Time delta from previous displayed frame: 0.163967000 seconds" size="0"/>
-    <field name="frame.time_relative" pos="0" show="108.656502000" showname="Time since reference or first frame: 108.656502000 seconds" size="0"/>
-    <field name="frame.number" pos="0" show="421" showname="Frame Number: 421" size="0"/>
-    <field name="frame.len" pos="0" show="98" showname="Frame Length: 98 bytes (784 bits)" size="0"/>
-    <field name="frame.cap_len" pos="0" show="98" showname="Capture Length: 98 bytes (784 bits)" size="0"/>
-    <field name="frame.marked" pos="0" show="0" showname="Frame is marked: False" size="0"/>
-    <field name="frame.ignored" pos="0" show="0" showname="Frame is ignored: False" size="0"/>
-    <field name="frame.protocols" pos="0" show="eth:ethertype:ip:sctp" showname="Protocols in frame: eth:ethertype:ip:sctp" size="0"/>
-  </proto>
-  
-  <proto name="ip" pos="14" showname="Internet Protocol Version 4, Src: 192.168.12.17 (192.168.12.17), Dst: 192.168.12.213 (192.168.12.213)" size="20">
-    <field name="ip.version" pos="14" show="4" showname="Version: 4" size="1" value="45"/>
-    <field name="ip.hdr_len" pos="14" show="20" showname="Header Length: 20 bytes" size="1" value="45"/>
-    <field name="ip.dsfield" pos="15" show="2" showname="Differentiated Services Field: 0x02 (DSCP 0x00: Default; ECN: 0x02: ECT(0) (ECN-Capable Transport))" size="1" value="02">
-      <field name="ip.dsfield.dscp" pos="15" show="0" showname="0000 00.. = Differentiated Services Codepoint: Default (0x00)" size="1" unmaskedvalue="02" value="0"/>
-      <field name="ip.dsfield.ecn" pos="15" show="2" showname=".... ..10 = Explicit Congestion Notification: ECT(0) (ECN-Capable Transport) (0x02)" size="1" unmaskedvalue="02" value="2"/>
-    </field>
-    <field name="ip.len" pos="16" show="84" showname="Total Length: 84" size="2" value="0054"/>
-    <field name="ip.id" pos="18" show="0" showname="Identification: 0x0000 (0)" size="2" value="0000"/>
-    <field name="ip.flags" pos="20" show="2" showname="Flags: 0x02 (Don't Fragment)" size="1" value="40">
-      <field name="ip.flags.rb" pos="20" show="0" showname="0... .... = Reserved bit: Not set" size="1" value="40"/>
-      <field name="ip.flags.df" pos="20" show="1" showname=".1.. .... = Don't fragment: Set" size="1" value="40"/>
-      <field name="ip.flags.mf" pos="20" show="0" showname="..0. .... = More fragments: Not set" size="1" value="40"/>
-    </field>
-    <field name="ip.frag_offset" pos="20" show="0" showname="Fragment offset: 0" size="2" value="4000"/>
-    <field name="ip.ttl" pos="22" show="64" showname="Time to live: 64" size="1" value="40"/>
-    <field name="ip.proto" pos="23" show="132" showname="Protocol: SCTP (132)" size="1" value="84"/>
-    <field name="ip.checksum" pos="24" show="40941" showname="Header checksum: 0x9fed [validation disabled]" size="2" value="9fed">
-      <field name="ip.checksum_good" pos="24" show="0" showname="Good: False" size="2" value="9fed"/>
-      <field name="ip.checksum_bad" pos="24" show="0" showname="Bad: False" size="2" value="9fed"/>
-    </field>
-    <field name="ip.src" pos="26" show="192.168.12.17" showname="Source: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.addr" pos="26" show="192.168.12.17" showname="Source or Destination Address: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.src_host" pos="26" show="192.168.12.17" showname="Source Host: 192.168.12.17" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.host" pos="26" show="192.168.12.17" showname="Source or Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-    <field name="ip.dst" pos="30" show="192.168.12.213" showname="Destination: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.addr" pos="30" show="192.168.12.213" showname="Source or Destination Address: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.dst_host" pos="30" show="192.168.12.213" showname="Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.host" pos="30" show="192.168.12.213" showname="Source or Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-    <field name="" pos="26" show="Source GeoIP: Unknown" size="4" value="c0a80c11"/>
-    <field name="" pos="30" show="Destination GeoIP: Unknown" size="4" value="c0a80cd5"/>
-  </proto>
-  <proto name="sctp" pos="34" showname="Stream Control Transmission Protocol, Src Port: 36412 (36412), Dst Port: 36412 (36412)" size="64">
-    <field name="sctp.srcport" pos="34" show="36412" showname="Source port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.dstport" pos="36" show="36412" showname="Destination port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.verification_tag" pos="38" show="1425553323" showname="Verification tag: 0x54f837ab" size="4" value="54f837ab"/>
-    <field name="sctp.assoc_index" pos="34" show="0" showname="Assocation index: 0" size="0"/>
-    <field hide="yes" name="sctp.port" pos="34" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-    <field hide="yes" name="sctp.port" pos="36" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.checksum" pos="42" show="2452800186" showname="Checksum: 0x9232c2ba (not verified)" size="4" value="9232c2ba"/>
-    <field name="" pos="46" show="HEARTBEAT chunk (Information: 48 bytes)" size="52" value="040000340001003002008e3cc0a80cd50000000000000000000000000000000000000000404f3300010000008db53fb930a0b65f">
-      <field name="sctp.chunk_type" pos="46" show="4" showname="Chunk type: HEARTBEAT (4)" size="1" value="04">
-        <field name="sctp.chunk_bit_1" pos="46" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="04" value="0"/>
-        <field name="sctp.chunk_bit_2" pos="46" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="04" value="0"/>
-      </field>
-      <field name="sctp.chunk_flags" pos="47" show="0" showname="Chunk flags: 0x00" size="1" value="00"/>
-      <field name="sctp.chunk_length" pos="48" show="52" showname="Chunk length: 52" size="2" value="0034"/>
-      <field name="" pos="50" show="Heartbeat info parameter (Information: 44 bytes)" size="48" value="0001003002008e3cc0a80cd50000000000000000000000000000000000000000404f3300010000008db53fb930a0b65f">
-        <field name="sctp.parameter_type" pos="50" show="1" showname="Parameter type: Heartbeat info (0x0001)" size="2" value="0001">
-          <field name="sctp.parameter_bit_1" pos="50" show="0" showname="0... .... .... .... = Bit: Stop processing of chunk" size="2" unmaskedvalue="0001" value="0"/>
-          <field name="sctp.parameter_bit_2" pos="50" show="0" showname=".0.. .... .... .... = Bit: Do not report" size="2" unmaskedvalue="0001" value="0"/>
-        </field>
-        <field name="sctp.parameter_length" pos="52" show="48" showname="Parameter length: 48" size="2" value="0030"/>
-        <field name="sctp.parameter_heartbeat_information" pos="54" show="02:00:8e:3c:c0:a8:0c:d5:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:40:4f:33:00:01:00:00:00:8d:b5:3f:b9:30:a0:b6:5f" showname="Heartbeat information: 02008e3cc0a80cd500000000000000000000000000000000..." size="44" value="02008e3cc0a80cd50000000000000000000000000000000000000000404f3300010000008db53fb930a0b65f"/>
-      </field>
-    </field>
-  </proto>
-</packet>
-<packet>
-  
-  <proto name="frame" pos="0" showname="Frame 422: 98 bytes on wire (784 bits), 98 bytes captured (784 bits) on interface 0" size="98">
-    <field name="frame.interface_id" pos="0" show="0" showname="Interface id: 0 (eth0)" size="0"/>
-    <field name="frame.encap_type" pos="0" show="1" showname="Encapsulation type: Ethernet (1)" size="0"/>
-    <field name="frame.time" pos="0" show="Sep 25, 2015 16:35:55.122270000 CEST" showname="Arrival Time: Sep 25, 2015 16:35:55.122270000 CEST" size="0"/>
-    <field name="frame.offset_shift" pos="0" show="0.000000000" showname="Time shift for this packet: 0.000000000 seconds" size="0"/>
-    <field name="frame.time_epoch" pos="0" show="1443191755.122270000" showname="Epoch Time: 1443191755.122270000 seconds" size="0"/>
-    <field name="frame.time_delta" pos="0" show="0.000137000" showname="Time delta from previous captured frame: 0.000137000 seconds" size="0"/>
-    <field name="frame.time_delta_displayed" pos="0" show="0.000137000" showname="Time delta from previous displayed frame: 0.000137000 seconds" size="0"/>
-    <field name="frame.time_relative" pos="0" show="108.656639000" showname="Time since reference or first frame: 108.656639000 seconds" size="0"/>
-    <field name="frame.number" pos="0" show="422" showname="Frame Number: 422" size="0"/>
-    <field name="frame.len" pos="0" show="98" showname="Frame Length: 98 bytes (784 bits)" size="0"/>
-    <field name="frame.cap_len" pos="0" show="98" showname="Capture Length: 98 bytes (784 bits)" size="0"/>
-    <field name="frame.marked" pos="0" show="0" showname="Frame is marked: False" size="0"/>
-    <field name="frame.ignored" pos="0" show="0" showname="Frame is ignored: False" size="0"/>
-    <field name="frame.protocols" pos="0" show="eth:ethertype:ip:sctp" showname="Protocols in frame: eth:ethertype:ip:sctp" size="0"/>
-  </proto>
-  
-  <proto name="ip" pos="14" showname="Internet Protocol Version 4, Src: 192.168.12.213 (192.168.12.213), Dst: 192.168.12.17 (192.168.12.17)" size="20">
-    <field name="ip.version" pos="14" show="4" showname="Version: 4" size="1" value="45"/>
-    <field name="ip.hdr_len" pos="14" show="20" showname="Header Length: 20 bytes" size="1" value="45"/>
-    <field name="ip.dsfield" pos="15" show="2" showname="Differentiated Services Field: 0x02 (DSCP 0x00: Default; ECN: 0x02: ECT(0) (ECN-Capable Transport))" size="1" value="02">
-      <field name="ip.dsfield.dscp" pos="15" show="0" showname="0000 00.. = Differentiated Services Codepoint: Default (0x00)" size="1" unmaskedvalue="02" value="0"/>
-      <field name="ip.dsfield.ecn" pos="15" show="2" showname=".... ..10 = Explicit Congestion Notification: ECT(0) (ECN-Capable Transport) (0x02)" size="1" unmaskedvalue="02" value="2"/>
-    </field>
-    <field name="ip.len" pos="16" show="84" showname="Total Length: 84" size="2" value="0054"/>
-    <field name="ip.id" pos="18" show="14" showname="Identification: 0x000e (14)" size="2" value="000e"/>
-    <field name="ip.flags" pos="20" show="2" showname="Flags: 0x02 (Don't Fragment)" size="1" value="40">
-      <field name="ip.flags.rb" pos="20" show="0" showname="0... .... = Reserved bit: Not set" size="1" value="40"/>
-      <field name="ip.flags.df" pos="20" show="1" showname=".1.. .... = Don't fragment: Set" size="1" value="40"/>
-      <field name="ip.flags.mf" pos="20" show="0" showname="..0. .... = More fragments: Not set" size="1" value="40"/>
-    </field>
-    <field name="ip.frag_offset" pos="20" show="0" showname="Fragment offset: 0" size="2" value="4000"/>
-    <field name="ip.ttl" pos="22" show="64" showname="Time to live: 64" size="1" value="40"/>
-    <field name="ip.proto" pos="23" show="132" showname="Protocol: SCTP (132)" size="1" value="84"/>
-    <field name="ip.checksum" pos="24" show="40927" showname="Header checksum: 0x9fdf [validation disabled]" size="2" value="9fdf">
-      <field name="ip.checksum_good" pos="24" show="0" showname="Good: False" size="2" value="9fdf"/>
-      <field name="ip.checksum_bad" pos="24" show="0" showname="Bad: False" size="2" value="9fdf"/>
-    </field>
-    <field name="ip.src" pos="26" show="192.168.12.213" showname="Source: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.addr" pos="26" show="192.168.12.213" showname="Source or Destination Address: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.src_host" pos="26" show="192.168.12.213" showname="Source Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.host" pos="26" show="192.168.12.213" showname="Source or Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-    <field name="ip.dst" pos="30" show="192.168.12.17" showname="Destination: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.addr" pos="30" show="192.168.12.17" showname="Source or Destination Address: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.dst_host" pos="30" show="192.168.12.17" showname="Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.host" pos="30" show="192.168.12.17" showname="Source or Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-    <field name="" pos="26" show="Source GeoIP: Unknown" size="4" value="c0a80cd5"/>
-    <field name="" pos="30" show="Destination GeoIP: Unknown" size="4" value="c0a80c11"/>
-  </proto>
-  <proto name="sctp" pos="34" showname="Stream Control Transmission Protocol, Src Port: 36412 (36412), Dst Port: 36412 (36412)" size="64">
-    <field name="sctp.srcport" pos="34" show="36412" showname="Source port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.dstport" pos="36" show="36412" showname="Destination port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.verification_tag" pos="38" show="1288826016" showname="Verification tag: 0x4cd1eca0" size="4" value="4cd1eca0"/>
-    <field name="sctp.assoc_index" pos="34" show="0" showname="Assocation index: 0" size="0"/>
-    <field hide="yes" name="sctp.port" pos="34" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-    <field hide="yes" name="sctp.port" pos="36" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.checksum" pos="42" show="2699798978" showname="Checksum: 0xa0eba9c2 (not verified)" size="4" value="a0eba9c2"/>
-    <field name="" pos="46" show="HEARTBEAT_ACK chunk (Information: 48 bytes)" size="52" value="050000340001003002008e3cc0a80cd50000000000000000000000000000000000000000404f3300010000008db53fb930a0b65f">
-      <field name="sctp.chunk_type" pos="46" show="5" showname="Chunk type: HEARTBEAT_ACK (5)" size="1" value="05">
-        <field name="sctp.chunk_bit_1" pos="46" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="05" value="0"/>
-        <field name="sctp.chunk_bit_2" pos="46" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="05" value="0"/>
-      </field>
-      <field name="sctp.chunk_flags" pos="47" show="0" showname="Chunk flags: 0x00" size="1" value="00"/>
-      <field name="sctp.chunk_length" pos="48" show="52" showname="Chunk length: 52" size="2" value="0034"/>
-      <field name="" pos="50" show="Heartbeat info parameter (Information: 44 bytes)" size="48" value="0001003002008e3cc0a80cd50000000000000000000000000000000000000000404f3300010000008db53fb930a0b65f">
-        <field name="sctp.parameter_type" pos="50" show="1" showname="Parameter type: Heartbeat info (0x0001)" size="2" value="0001">
-          <field name="sctp.parameter_bit_1" pos="50" show="0" showname="0... .... .... .... = Bit: Stop processing of chunk" size="2" unmaskedvalue="0001" value="0"/>
-          <field name="sctp.parameter_bit_2" pos="50" show="0" showname=".0.. .... .... .... = Bit: Do not report" size="2" unmaskedvalue="0001" value="0"/>
-        </field>
-        <field name="sctp.parameter_length" pos="52" show="48" showname="Parameter length: 48" size="2" value="0030"/>
-        <field name="sctp.parameter_heartbeat_information" pos="54" show="02:00:8e:3c:c0:a8:0c:d5:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:40:4f:33:00:01:00:00:00:8d:b5:3f:b9:30:a0:b6:5f" showname="Heartbeat information: 02008e3cc0a80cd500000000000000000000000000000000..." size="44" value="02008e3cc0a80cd50000000000000000000000000000000000000000404f3300010000008db53fb930a0b65f"/>
-      </field>
-    </field>
-  </proto>
-</packet>
-<packet>
-  
-  <proto name="frame" pos="0" showname="Frame 426: 98 bytes on wire (784 bits), 98 bytes captured (784 bits) on interface 0" size="98">
-    <field name="frame.interface_id" pos="0" show="0" showname="Interface id: 0 (eth0)" size="0"/>
-    <field name="frame.encap_type" pos="0" show="1" showname="Encapsulation type: Ethernet (1)" size="0"/>
-    <field name="frame.time" pos="0" show="Sep 25, 2015 16:35:56.493553000 CEST" showname="Arrival Time: Sep 25, 2015 16:35:56.493553000 CEST" size="0"/>
-    <field name="frame.offset_shift" pos="0" show="0.000000000" showname="Time shift for this packet: 0.000000000 seconds" size="0"/>
-    <field name="frame.time_epoch" pos="0" show="1443191756.493553000" showname="Epoch Time: 1443191756.493553000 seconds" size="0"/>
-    <field name="frame.time_delta" pos="0" show="0.655441000" showname="Time delta from previous captured frame: 0.655441000 seconds" size="0"/>
-    <field name="frame.time_delta_displayed" pos="0" show="0.655441000" showname="Time delta from previous displayed frame: 0.655441000 seconds" size="0"/>
-    <field name="frame.time_relative" pos="0" show="110.027922000" showname="Time since reference or first frame: 110.027922000 seconds" size="0"/>
-    <field name="frame.number" pos="0" show="426" showname="Frame Number: 426" size="0"/>
-    <field name="frame.len" pos="0" show="98" showname="Frame Length: 98 bytes (784 bits)" size="0"/>
-    <field name="frame.cap_len" pos="0" show="98" showname="Capture Length: 98 bytes (784 bits)" size="0"/>
-    <field name="frame.marked" pos="0" show="0" showname="Frame is marked: False" size="0"/>
-    <field name="frame.ignored" pos="0" show="0" showname="Frame is ignored: False" size="0"/>
-    <field name="frame.protocols" pos="0" show="eth:ethertype:ip:sctp" showname="Protocols in frame: eth:ethertype:ip:sctp" size="0"/>
-  </proto>
-  
-  <proto name="ip" pos="14" showname="Internet Protocol Version 4, Src: 192.168.12.213 (192.168.12.213), Dst: 192.168.12.17 (192.168.12.17)" size="20">
-    <field name="ip.version" pos="14" show="4" showname="Version: 4" size="1" value="45"/>
-    <field name="ip.hdr_len" pos="14" show="20" showname="Header Length: 20 bytes" size="1" value="45"/>
-    <field name="ip.dsfield" pos="15" show="2" showname="Differentiated Services Field: 0x02 (DSCP 0x00: Default; ECN: 0x02: ECT(0) (ECN-Capable Transport))" size="1" value="02">
-      <field name="ip.dsfield.dscp" pos="15" show="0" showname="0000 00.. = Differentiated Services Codepoint: Default (0x00)" size="1" unmaskedvalue="02" value="0"/>
-      <field name="ip.dsfield.ecn" pos="15" show="2" showname=".... ..10 = Explicit Congestion Notification: ECT(0) (ECN-Capable Transport) (0x02)" size="1" unmaskedvalue="02" value="2"/>
-    </field>
-    <field name="ip.len" pos="16" show="84" showname="Total Length: 84" size="2" value="0054"/>
-    <field name="ip.id" pos="18" show="15" showname="Identification: 0x000f (15)" size="2" value="000f"/>
-    <field name="ip.flags" pos="20" show="2" showname="Flags: 0x02 (Don't Fragment)" size="1" value="40">
-      <field name="ip.flags.rb" pos="20" show="0" showname="0... .... = Reserved bit: Not set" size="1" value="40"/>
-      <field name="ip.flags.df" pos="20" show="1" showname=".1.. .... = Don't fragment: Set" size="1" value="40"/>
-      <field name="ip.flags.mf" pos="20" show="0" showname="..0. .... = More fragments: Not set" size="1" value="40"/>
-    </field>
-    <field name="ip.frag_offset" pos="20" show="0" showname="Fragment offset: 0" size="2" value="4000"/>
-    <field name="ip.ttl" pos="22" show="64" showname="Time to live: 64" size="1" value="40"/>
-    <field name="ip.proto" pos="23" show="132" showname="Protocol: SCTP (132)" size="1" value="84"/>
-    <field name="ip.checksum" pos="24" show="40926" showname="Header checksum: 0x9fde [validation disabled]" size="2" value="9fde">
-      <field name="ip.checksum_good" pos="24" show="0" showname="Good: False" size="2" value="9fde"/>
-      <field name="ip.checksum_bad" pos="24" show="0" showname="Bad: False" size="2" value="9fde"/>
-    </field>
-    <field name="ip.src" pos="26" show="192.168.12.213" showname="Source: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.addr" pos="26" show="192.168.12.213" showname="Source or Destination Address: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.src_host" pos="26" show="192.168.12.213" showname="Source Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.host" pos="26" show="192.168.12.213" showname="Source or Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-    <field name="ip.dst" pos="30" show="192.168.12.17" showname="Destination: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.addr" pos="30" show="192.168.12.17" showname="Source or Destination Address: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.dst_host" pos="30" show="192.168.12.17" showname="Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.host" pos="30" show="192.168.12.17" showname="Source or Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-    <field name="" pos="26" show="Source GeoIP: Unknown" size="4" value="c0a80cd5"/>
-    <field name="" pos="30" show="Destination GeoIP: Unknown" size="4" value="c0a80c11"/>
-  </proto>
-  <proto name="sctp" pos="34" showname="Stream Control Transmission Protocol, Src Port: 36412 (36412), Dst Port: 36412 (36412)" size="64">
-    <field name="sctp.srcport" pos="34" show="36412" showname="Source port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.dstport" pos="36" show="36412" showname="Destination port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.verification_tag" pos="38" show="1288826016" showname="Verification tag: 0x4cd1eca0" size="4" value="4cd1eca0"/>
-    <field name="sctp.assoc_index" pos="34" show="0" showname="Assocation index: 0" size="0"/>
-    <field hide="yes" name="sctp.port" pos="34" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-    <field hide="yes" name="sctp.port" pos="36" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.checksum" pos="42" show="3768706648" showname="Checksum: 0xe0a1e658 (not verified)" size="4" value="e0a1e658"/>
-    <field name="" pos="46" show="HEARTBEAT chunk (Information: 48 bytes)" size="52" value="040000340001003002008e3cc0a80c110000000000000000007459d10088ffff1e201d8180a42314010000007730e920aa62f65b">
-      <field name="sctp.chunk_type" pos="46" show="4" showname="Chunk type: HEARTBEAT (4)" size="1" value="04">
-        <field name="sctp.chunk_bit_1" pos="46" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="04" value="0"/>
-        <field name="sctp.chunk_bit_2" pos="46" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="04" value="0"/>
-      </field>
-      <field name="sctp.chunk_flags" pos="47" show="0" showname="Chunk flags: 0x00" size="1" value="00"/>
-      <field name="sctp.chunk_length" pos="48" show="52" showname="Chunk length: 52" size="2" value="0034"/>
-      <field name="" pos="50" show="Heartbeat info parameter (Information: 44 bytes)" size="48" value="0001003002008e3cc0a80c110000000000000000007459d10088ffff1e201d8180a42314010000007730e920aa62f65b">
-        <field name="sctp.parameter_type" pos="50" show="1" showname="Parameter type: Heartbeat info (0x0001)" size="2" value="0001">
-          <field name="sctp.parameter_bit_1" pos="50" show="0" showname="0... .... .... .... = Bit: Stop processing of chunk" size="2" unmaskedvalue="0001" value="0"/>
-          <field name="sctp.parameter_bit_2" pos="50" show="0" showname=".0.. .... .... .... = Bit: Do not report" size="2" unmaskedvalue="0001" value="0"/>
-        </field>
-        <field name="sctp.parameter_length" pos="52" show="48" showname="Parameter length: 48" size="2" value="0030"/>
-        <field name="sctp.parameter_heartbeat_information" pos="54" show="02:00:8e:3c:c0:a8:0c:11:00:00:00:00:00:00:00:00:00:74:59:d1:00:88:ff:ff:1e:20:1d:81:80:a4:23:14:01:00:00:00:77:30:e9:20:aa:62:f6:5b" showname="Heartbeat information: 02008e3cc0a80c110000000000000000007459d10088ffff..." size="44" value="02008e3cc0a80c110000000000000000007459d10088ffff1e201d8180a42314010000007730e920aa62f65b"/>
-      </field>
-    </field>
-  </proto>
-</packet>
-<packet>
-  
-  <proto name="frame" pos="0" showname="Frame 427: 98 bytes on wire (784 bits), 98 bytes captured (784 bits) on interface 0" size="98">
-    <field name="frame.interface_id" pos="0" show="0" showname="Interface id: 0 (eth0)" size="0"/>
-    <field name="frame.encap_type" pos="0" show="1" showname="Encapsulation type: Ethernet (1)" size="0"/>
-    <field name="frame.time" pos="0" show="Sep 25, 2015 16:35:56.493586000 CEST" showname="Arrival Time: Sep 25, 2015 16:35:56.493586000 CEST" size="0"/>
-    <field name="frame.offset_shift" pos="0" show="0.000000000" showname="Time shift for this packet: 0.000000000 seconds" size="0"/>
-    <field name="frame.time_epoch" pos="0" show="1443191756.493586000" showname="Epoch Time: 1443191756.493586000 seconds" size="0"/>
-    <field name="frame.time_delta" pos="0" show="0.000033000" showname="Time delta from previous captured frame: 0.000033000 seconds" size="0"/>
-    <field name="frame.time_delta_displayed" pos="0" show="0.000033000" showname="Time delta from previous displayed frame: 0.000033000 seconds" size="0"/>
-    <field name="frame.time_relative" pos="0" show="110.027955000" showname="Time since reference or first frame: 110.027955000 seconds" size="0"/>
-    <field name="frame.number" pos="0" show="427" showname="Frame Number: 427" size="0"/>
-    <field name="frame.len" pos="0" show="98" showname="Frame Length: 98 bytes (784 bits)" size="0"/>
-    <field name="frame.cap_len" pos="0" show="98" showname="Capture Length: 98 bytes (784 bits)" size="0"/>
-    <field name="frame.marked" pos="0" show="0" showname="Frame is marked: False" size="0"/>
-    <field name="frame.ignored" pos="0" show="0" showname="Frame is ignored: False" size="0"/>
-    <field name="frame.protocols" pos="0" show="eth:ethertype:ip:sctp" showname="Protocols in frame: eth:ethertype:ip:sctp" size="0"/>
-  </proto>
-  
-  <proto name="ip" pos="14" showname="Internet Protocol Version 4, Src: 192.168.12.17 (192.168.12.17), Dst: 192.168.12.213 (192.168.12.213)" size="20">
-    <field name="ip.version" pos="14" show="4" showname="Version: 4" size="1" value="45"/>
-    <field name="ip.hdr_len" pos="14" show="20" showname="Header Length: 20 bytes" size="1" value="45"/>
-    <field name="ip.dsfield" pos="15" show="2" showname="Differentiated Services Field: 0x02 (DSCP 0x00: Default; ECN: 0x02: ECT(0) (ECN-Capable Transport))" size="1" value="02">
-      <field name="ip.dsfield.dscp" pos="15" show="0" showname="0000 00.. = Differentiated Services Codepoint: Default (0x00)" size="1" unmaskedvalue="02" value="0"/>
-      <field name="ip.dsfield.ecn" pos="15" show="2" showname=".... ..10 = Explicit Congestion Notification: ECT(0) (ECN-Capable Transport) (0x02)" size="1" unmaskedvalue="02" value="2"/>
-    </field>
-    <field name="ip.len" pos="16" show="84" showname="Total Length: 84" size="2" value="0054"/>
-    <field name="ip.id" pos="18" show="0" showname="Identification: 0x0000 (0)" size="2" value="0000"/>
-    <field name="ip.flags" pos="20" show="2" showname="Flags: 0x02 (Don't Fragment)" size="1" value="40">
-      <field name="ip.flags.rb" pos="20" show="0" showname="0... .... = Reserved bit: Not set" size="1" value="40"/>
-      <field name="ip.flags.df" pos="20" show="1" showname=".1.. .... = Don't fragment: Set" size="1" value="40"/>
-      <field name="ip.flags.mf" pos="20" show="0" showname="..0. .... = More fragments: Not set" size="1" value="40"/>
-    </field>
-    <field name="ip.frag_offset" pos="20" show="0" showname="Fragment offset: 0" size="2" value="4000"/>
-    <field name="ip.ttl" pos="22" show="64" showname="Time to live: 64" size="1" value="40"/>
-    <field name="ip.proto" pos="23" show="132" showname="Protocol: SCTP (132)" size="1" value="84"/>
-    <field name="ip.checksum" pos="24" show="40941" showname="Header checksum: 0x9fed [validation disabled]" size="2" value="9fed">
-      <field name="ip.checksum_good" pos="24" show="0" showname="Good: False" size="2" value="9fed"/>
-      <field name="ip.checksum_bad" pos="24" show="0" showname="Bad: False" size="2" value="9fed"/>
-    </field>
-    <field name="ip.src" pos="26" show="192.168.12.17" showname="Source: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.addr" pos="26" show="192.168.12.17" showname="Source or Destination Address: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.src_host" pos="26" show="192.168.12.17" showname="Source Host: 192.168.12.17" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.host" pos="26" show="192.168.12.17" showname="Source or Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-    <field name="ip.dst" pos="30" show="192.168.12.213" showname="Destination: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.addr" pos="30" show="192.168.12.213" showname="Source or Destination Address: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.dst_host" pos="30" show="192.168.12.213" showname="Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.host" pos="30" show="192.168.12.213" showname="Source or Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-    <field name="" pos="26" show="Source GeoIP: Unknown" size="4" value="c0a80c11"/>
-    <field name="" pos="30" show="Destination GeoIP: Unknown" size="4" value="c0a80cd5"/>
-  </proto>
-  <proto name="sctp" pos="34" showname="Stream Control Transmission Protocol, Src Port: 36412 (36412), Dst Port: 36412 (36412)" size="64">
-    <field name="sctp.srcport" pos="34" show="36412" showname="Source port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.dstport" pos="36" show="36412" showname="Destination port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.verification_tag" pos="38" show="1425553323" showname="Verification tag: 0x54f837ab" size="4" value="54f837ab"/>
-    <field name="sctp.assoc_index" pos="34" show="0" showname="Assocation index: 0" size="0"/>
-    <field hide="yes" name="sctp.port" pos="34" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-    <field hide="yes" name="sctp.port" pos="36" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.checksum" pos="42" show="3531115808" showname="Checksum: 0xd2788d20 (not verified)" size="4" value="d2788d20"/>
-    <field name="" pos="46" show="HEARTBEAT_ACK chunk (Information: 48 bytes)" size="52" value="050000340001003002008e3cc0a80c110000000000000000007459d10088ffff1e201d8180a42314010000007730e920aa62f65b">
-      <field name="sctp.chunk_type" pos="46" show="5" showname="Chunk type: HEARTBEAT_ACK (5)" size="1" value="05">
-        <field name="sctp.chunk_bit_1" pos="46" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="05" value="0"/>
-        <field name="sctp.chunk_bit_2" pos="46" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="05" value="0"/>
-      </field>
-      <field name="sctp.chunk_flags" pos="47" show="0" showname="Chunk flags: 0x00" size="1" value="00"/>
-      <field name="sctp.chunk_length" pos="48" show="52" showname="Chunk length: 52" size="2" value="0034"/>
-      <field name="" pos="50" show="Heartbeat info parameter (Information: 44 bytes)" size="48" value="0001003002008e3cc0a80c110000000000000000007459d10088ffff1e201d8180a42314010000007730e920aa62f65b">
-        <field name="sctp.parameter_type" pos="50" show="1" showname="Parameter type: Heartbeat info (0x0001)" size="2" value="0001">
-          <field name="sctp.parameter_bit_1" pos="50" show="0" showname="0... .... .... .... = Bit: Stop processing of chunk" size="2" unmaskedvalue="0001" value="0"/>
-          <field name="sctp.parameter_bit_2" pos="50" show="0" showname=".0.. .... .... .... = Bit: Do not report" size="2" unmaskedvalue="0001" value="0"/>
-        </field>
-        <field name="sctp.parameter_length" pos="52" show="48" showname="Parameter length: 48" size="2" value="0030"/>
-        <field name="sctp.parameter_heartbeat_information" pos="54" show="02:00:8e:3c:c0:a8:0c:11:00:00:00:00:00:00:00:00:00:74:59:d1:00:88:ff:ff:1e:20:1d:81:80:a4:23:14:01:00:00:00:77:30:e9:20:aa:62:f6:5b" showname="Heartbeat information: 02008e3cc0a80c110000000000000000007459d10088ffff..." size="44" value="02008e3cc0a80c110000000000000000007459d10088ffff1e201d8180a42314010000007730e920aa62f65b"/>
-      </field>
-    </field>
-  </proto>
-</packet>
-<packet>
-  
-  <proto name="frame" pos="0" showname="Frame 491: 54 bytes on wire (432 bits), 54 bytes captured (432 bits) on interface 0" size="54">
-    <field name="frame.interface_id" pos="0" show="0" showname="Interface id: 0 (eth0)" size="0"/>
-    <field name="frame.encap_type" pos="0" show="1" showname="Encapsulation type: Ethernet (1)" size="0"/>
-    <field name="frame.time" pos="0" show="Sep 25, 2015 16:36:14.355024000 CEST" showname="Arrival Time: Sep 25, 2015 16:36:14.355024000 CEST" size="0"/>
-    <field name="frame.offset_shift" pos="0" show="0.000000000" showname="Time shift for this packet: 0.000000000 seconds" size="0"/>
-    <field name="frame.time_epoch" pos="0" show="1443191774.355024000" showname="Epoch Time: 1443191774.355024000 seconds" size="0"/>
-    <field name="frame.time_delta" pos="0" show="0.484347000" showname="Time delta from previous captured frame: 0.484347000 seconds" size="0"/>
-    <field name="frame.time_delta_displayed" pos="0" show="0.484347000" showname="Time delta from previous displayed frame: 0.484347000 seconds" size="0"/>
-    <field name="frame.time_relative" pos="0" show="127.889393000" showname="Time since reference or first frame: 127.889393000 seconds" size="0"/>
-    <field name="frame.number" pos="0" show="491" showname="Frame Number: 491" size="0"/>
-    <field name="frame.len" pos="0" show="54" showname="Frame Length: 54 bytes (432 bits)" size="0"/>
-    <field name="frame.cap_len" pos="0" show="54" showname="Capture Length: 54 bytes (432 bits)" size="0"/>
-    <field name="frame.marked" pos="0" show="0" showname="Frame is marked: False" size="0"/>
-    <field name="frame.ignored" pos="0" show="0" showname="Frame is ignored: False" size="0"/>
-    <field name="frame.protocols" pos="0" show="eth:ethertype:ip:sctp" showname="Protocols in frame: eth:ethertype:ip:sctp" size="0"/>
-  </proto>
-  
-  <proto name="ip" pos="14" showname="Internet Protocol Version 4, Src: 192.168.12.17 (192.168.12.17), Dst: 192.168.12.213 (192.168.12.213)" size="20">
-    <field name="ip.version" pos="14" show="4" showname="Version: 4" size="1" value="45"/>
-    <field name="ip.hdr_len" pos="14" show="20" showname="Header Length: 20 bytes" size="1" value="45"/>
-    <field name="ip.dsfield" pos="15" show="2" showname="Differentiated Services Field: 0x02 (DSCP 0x00: Default; ECN: 0x02: ECT(0) (ECN-Capable Transport))" size="1" value="02">
-      <field name="ip.dsfield.dscp" pos="15" show="0" showname="0000 00.. = Differentiated Services Codepoint: Default (0x00)" size="1" unmaskedvalue="02" value="0"/>
-      <field name="ip.dsfield.ecn" pos="15" show="2" showname=".... ..10 = Explicit Congestion Notification: ECT(0) (ECN-Capable Transport) (0x02)" size="1" unmaskedvalue="02" value="2"/>
-    </field>
-    <field name="ip.len" pos="16" show="40" showname="Total Length: 40" size="2" value="0028"/>
-    <field name="ip.id" pos="18" show="0" showname="Identification: 0x0000 (0)" size="2" value="0000"/>
-    <field name="ip.flags" pos="20" show="2" showname="Flags: 0x02 (Don't Fragment)" size="1" value="40">
-      <field name="ip.flags.rb" pos="20" show="0" showname="0... .... = Reserved bit: Not set" size="1" value="40"/>
-      <field name="ip.flags.df" pos="20" show="1" showname=".1.. .... = Don't fragment: Set" size="1" value="40"/>
-      <field name="ip.flags.mf" pos="20" show="0" showname="..0. .... = More fragments: Not set" size="1" value="40"/>
-    </field>
-    <field name="ip.frag_offset" pos="20" show="0" showname="Fragment offset: 0" size="2" value="4000"/>
-    <field name="ip.ttl" pos="22" show="64" showname="Time to live: 64" size="1" value="40"/>
-    <field name="ip.proto" pos="23" show="132" showname="Protocol: SCTP (132)" size="1" value="84"/>
-    <field name="ip.checksum" pos="24" show="40985" showname="Header checksum: 0xa019 [validation disabled]" size="2" value="a019">
-      <field name="ip.checksum_good" pos="24" show="0" showname="Good: False" size="2" value="a019"/>
-      <field name="ip.checksum_bad" pos="24" show="0" showname="Bad: False" size="2" value="a019"/>
-    </field>
-    <field name="ip.src" pos="26" show="192.168.12.17" showname="Source: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.addr" pos="26" show="192.168.12.17" showname="Source or Destination Address: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.src_host" pos="26" show="192.168.12.17" showname="Source Host: 192.168.12.17" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.host" pos="26" show="192.168.12.17" showname="Source or Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-    <field name="ip.dst" pos="30" show="192.168.12.213" showname="Destination: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.addr" pos="30" show="192.168.12.213" showname="Source or Destination Address: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.dst_host" pos="30" show="192.168.12.213" showname="Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.host" pos="30" show="192.168.12.213" showname="Source or Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-    <field name="" pos="26" show="Source GeoIP: Unknown" size="4" value="c0a80c11"/>
-    <field name="" pos="30" show="Destination GeoIP: Unknown" size="4" value="c0a80cd5"/>
-  </proto>
-  <proto name="sctp" pos="34" showname="Stream Control Transmission Protocol, Src Port: 36412 (36412), Dst Port: 36412 (36412)" size="20">
-    <field name="sctp.srcport" pos="34" show="36412" showname="Source port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.dstport" pos="36" show="36412" showname="Destination port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.verification_tag" pos="38" show="1425553323" showname="Verification tag: 0x54f837ab" size="4" value="54f837ab"/>
-    <field name="sctp.assoc_index" pos="34" show="0" showname="Assocation index: 0" size="0"/>
-    <field hide="yes" name="sctp.port" pos="34" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-    <field hide="yes" name="sctp.port" pos="36" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.checksum" pos="42" show="3563692304" showname="Checksum: 0xd469a110 (not verified)" size="4" value="d469a110"/>
-    <field name="" pos="46" show="SHUTDOWN chunk (Cumulative TSN ack: 3304831198)" size="8" value="07000008c4fbb8de">
-      <field name="sctp.chunk_type" pos="46" show="7" showname="Chunk type: SHUTDOWN (7)" size="1" value="07">
-        <field name="sctp.chunk_bit_1" pos="46" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="07" value="0"/>
-        <field name="sctp.chunk_bit_2" pos="46" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="07" value="0"/>
-      </field>
-      <field name="sctp.chunk_flags" pos="47" show="0" showname="Chunk flags: 0x00" size="1" value="00"/>
-      <field name="sctp.chunk_length" pos="48" show="8" showname="Chunk length: 8" size="2" value="0008"/>
-      <field name="sctp.shutdown_cumulative_tsn_ack" pos="50" show="3304831198" showname="Cumulative TSN Ack: 3304831198" size="4" value="c4fbb8de"/>
-    </field>
-  </proto>
-</packet>
-<packet>
-  
-  <proto name="frame" pos="0" showname="Frame 492: 60 bytes on wire (480 bits), 60 bytes captured (480 bits) on interface 0" size="60">
-    <field name="frame.interface_id" pos="0" show="0" showname="Interface id: 0 (eth0)" size="0"/>
-    <field name="frame.encap_type" pos="0" show="1" showname="Encapsulation type: Ethernet (1)" size="0"/>
-    <field name="frame.time" pos="0" show="Sep 25, 2015 16:36:14.355162000 CEST" showname="Arrival Time: Sep 25, 2015 16:36:14.355162000 CEST" size="0"/>
-    <field name="frame.offset_shift" pos="0" show="0.000000000" showname="Time shift for this packet: 0.000000000 seconds" size="0"/>
-    <field name="frame.time_epoch" pos="0" show="1443191774.355162000" showname="Epoch Time: 1443191774.355162000 seconds" size="0"/>
-    <field name="frame.time_delta" pos="0" show="0.000138000" showname="Time delta from previous captured frame: 0.000138000 seconds" size="0"/>
-    <field name="frame.time_delta_displayed" pos="0" show="0.000138000" showname="Time delta from previous displayed frame: 0.000138000 seconds" size="0"/>
-    <field name="frame.time_relative" pos="0" show="127.889531000" showname="Time since reference or first frame: 127.889531000 seconds" size="0"/>
-    <field name="frame.number" pos="0" show="492" showname="Frame Number: 492" size="0"/>
-    <field name="frame.len" pos="0" show="60" showname="Frame Length: 60 bytes (480 bits)" size="0"/>
-    <field name="frame.cap_len" pos="0" show="60" showname="Capture Length: 60 bytes (480 bits)" size="0"/>
-    <field name="frame.marked" pos="0" show="0" showname="Frame is marked: False" size="0"/>
-    <field name="frame.ignored" pos="0" show="0" showname="Frame is ignored: False" size="0"/>
-    <field name="frame.protocols" pos="0" show="eth:ethertype:ip:sctp" showname="Protocols in frame: eth:ethertype:ip:sctp" size="0"/>
-  </proto>
-  
-  <proto name="ip" pos="14" showname="Internet Protocol Version 4, Src: 192.168.12.213 (192.168.12.213), Dst: 192.168.12.17 (192.168.12.17)" size="20">
-    <field name="ip.version" pos="14" show="4" showname="Version: 4" size="1" value="45"/>
-    <field name="ip.hdr_len" pos="14" show="20" showname="Header Length: 20 bytes" size="1" value="45"/>
-    <field name="ip.dsfield" pos="15" show="2" showname="Differentiated Services Field: 0x02 (DSCP 0x00: Default; ECN: 0x02: ECT(0) (ECN-Capable Transport))" size="1" value="02">
-      <field name="ip.dsfield.dscp" pos="15" show="0" showname="0000 00.. = Differentiated Services Codepoint: Default (0x00)" size="1" unmaskedvalue="02" value="0"/>
-      <field name="ip.dsfield.ecn" pos="15" show="2" showname=".... ..10 = Explicit Congestion Notification: ECT(0) (ECN-Capable Transport) (0x02)" size="1" unmaskedvalue="02" value="2"/>
-    </field>
-    <field name="ip.len" pos="16" show="36" showname="Total Length: 36" size="2" value="0024"/>
-    <field name="ip.id" pos="18" show="16" showname="Identification: 0x0010 (16)" size="2" value="0010"/>
-    <field name="ip.flags" pos="20" show="2" showname="Flags: 0x02 (Don't Fragment)" size="1" value="40">
-      <field name="ip.flags.rb" pos="20" show="0" showname="0... .... = Reserved bit: Not set" size="1" value="40"/>
-      <field name="ip.flags.df" pos="20" show="1" showname=".1.. .... = Don't fragment: Set" size="1" value="40"/>
-      <field name="ip.flags.mf" pos="20" show="0" showname="..0. .... = More fragments: Not set" size="1" value="40"/>
-    </field>
-    <field name="ip.frag_offset" pos="20" show="0" showname="Fragment offset: 0" size="2" value="4000"/>
-    <field name="ip.ttl" pos="22" show="64" showname="Time to live: 64" size="1" value="40"/>
-    <field name="ip.proto" pos="23" show="132" showname="Protocol: SCTP (132)" size="1" value="84"/>
-    <field name="ip.checksum" pos="24" show="40973" showname="Header checksum: 0xa00d [validation disabled]" size="2" value="a00d">
-      <field name="ip.checksum_good" pos="24" show="0" showname="Good: False" size="2" value="a00d"/>
-      <field name="ip.checksum_bad" pos="24" show="0" showname="Bad: False" size="2" value="a00d"/>
-    </field>
-    <field name="ip.src" pos="26" show="192.168.12.213" showname="Source: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.addr" pos="26" show="192.168.12.213" showname="Source or Destination Address: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.src_host" pos="26" show="192.168.12.213" showname="Source Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.host" pos="26" show="192.168.12.213" showname="Source or Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-    <field name="ip.dst" pos="30" show="192.168.12.17" showname="Destination: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.addr" pos="30" show="192.168.12.17" showname="Source or Destination Address: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.dst_host" pos="30" show="192.168.12.17" showname="Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.host" pos="30" show="192.168.12.17" showname="Source or Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-    <field name="" pos="26" show="Source GeoIP: Unknown" size="4" value="c0a80cd5"/>
-    <field name="" pos="30" show="Destination GeoIP: Unknown" size="4" value="c0a80c11"/>
-  </proto>
-  <proto name="sctp" pos="34" showname="Stream Control Transmission Protocol, Src Port: 36412 (36412), Dst Port: 36412 (36412)" size="16">
-    <field name="sctp.srcport" pos="34" show="36412" showname="Source port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.dstport" pos="36" show="36412" showname="Destination port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.verification_tag" pos="38" show="1288826016" showname="Verification tag: 0x4cd1eca0" size="4" value="4cd1eca0"/>
-    <field name="sctp.assoc_index" pos="34" show="0" showname="Assocation index: 0" size="0"/>
-    <field hide="yes" name="sctp.port" pos="34" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-    <field hide="yes" name="sctp.port" pos="36" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.checksum" pos="42" show="3792983264" showname="Checksum: 0xe21454e0 (not verified)" size="4" value="e21454e0"/>
-    <field name="" pos="46" show="SHUTDOWN_ACK chunk" size="4" value="08000004">
-      <field name="sctp.chunk_type" pos="46" show="8" showname="Chunk type: SHUTDOWN_ACK (8)" size="1" value="08">
-        <field name="sctp.chunk_bit_1" pos="46" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="08" value="0"/>
-        <field name="sctp.chunk_bit_2" pos="46" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="08" value="0"/>
-      </field>
-      <field name="sctp.chunk_flags" pos="47" show="0" showname="Chunk flags: 0x00" size="1" value="00"/>
-      <field name="sctp.chunk_length" pos="48" show="4" showname="Chunk length: 4" size="2" value="0004"/>
-    </field>
-  </proto>
-</packet>
-<packet>
-  
-  <proto name="frame" pos="0" showname="Frame 493: 50 bytes on wire (400 bits), 50 bytes captured (400 bits) on interface 0" size="50">
-    <field name="frame.interface_id" pos="0" show="0" showname="Interface id: 0 (eth0)" size="0"/>
-    <field name="frame.encap_type" pos="0" show="1" showname="Encapsulation type: Ethernet (1)" size="0"/>
-    <field name="frame.time" pos="0" show="Sep 25, 2015 16:36:14.355191000 CEST" showname="Arrival Time: Sep 25, 2015 16:36:14.355191000 CEST" size="0"/>
-    <field name="frame.offset_shift" pos="0" show="0.000000000" showname="Time shift for this packet: 0.000000000 seconds" size="0"/>
-    <field name="frame.time_epoch" pos="0" show="1443191774.355191000" showname="Epoch Time: 1443191774.355191000 seconds" size="0"/>
-    <field name="frame.time_delta" pos="0" show="0.000029000" showname="Time delta from previous captured frame: 0.000029000 seconds" size="0"/>
-    <field name="frame.time_delta_displayed" pos="0" show="0.000029000" showname="Time delta from previous displayed frame: 0.000029000 seconds" size="0"/>
-    <field name="frame.time_relative" pos="0" show="127.889560000" showname="Time since reference or first frame: 127.889560000 seconds" size="0"/>
-    <field name="frame.number" pos="0" show="493" showname="Frame Number: 493" size="0"/>
-    <field name="frame.len" pos="0" show="50" showname="Frame Length: 50 bytes (400 bits)" size="0"/>
-    <field name="frame.cap_len" pos="0" show="50" showname="Capture Length: 50 bytes (400 bits)" size="0"/>
-    <field name="frame.marked" pos="0" show="0" showname="Frame is marked: False" size="0"/>
-    <field name="frame.ignored" pos="0" show="0" showname="Frame is ignored: False" size="0"/>
-    <field name="frame.protocols" pos="0" show="eth:ethertype:ip:sctp" showname="Protocols in frame: eth:ethertype:ip:sctp" size="0"/>
-  </proto>
-  
-  <proto name="ip" pos="14" showname="Internet Protocol Version 4, Src: 192.168.12.17 (192.168.12.17), Dst: 192.168.12.213 (192.168.12.213)" size="20">
-    <field name="ip.version" pos="14" show="4" showname="Version: 4" size="1" value="45"/>
-    <field name="ip.hdr_len" pos="14" show="20" showname="Header Length: 20 bytes" size="1" value="45"/>
-    <field name="ip.dsfield" pos="15" show="2" showname="Differentiated Services Field: 0x02 (DSCP 0x00: Default; ECN: 0x02: ECT(0) (ECN-Capable Transport))" size="1" value="02">
-      <field name="ip.dsfield.dscp" pos="15" show="0" showname="0000 00.. = Differentiated Services Codepoint: Default (0x00)" size="1" unmaskedvalue="02" value="0"/>
-      <field name="ip.dsfield.ecn" pos="15" show="2" showname=".... ..10 = Explicit Congestion Notification: ECT(0) (ECN-Capable Transport) (0x02)" size="1" unmaskedvalue="02" value="2"/>
-    </field>
-    <field name="ip.len" pos="16" show="36" showname="Total Length: 36" size="2" value="0024"/>
-    <field name="ip.id" pos="18" show="0" showname="Identification: 0x0000 (0)" size="2" value="0000"/>
-    <field name="ip.flags" pos="20" show="2" showname="Flags: 0x02 (Don't Fragment)" size="1" value="40">
-      <field name="ip.flags.rb" pos="20" show="0" showname="0... .... = Reserved bit: Not set" size="1" value="40"/>
-      <field name="ip.flags.df" pos="20" show="1" showname=".1.. .... = Don't fragment: Set" size="1" value="40"/>
-      <field name="ip.flags.mf" pos="20" show="0" showname="..0. .... = More fragments: Not set" size="1" value="40"/>
-    </field>
-    <field name="ip.frag_offset" pos="20" show="0" showname="Fragment offset: 0" size="2" value="4000"/>
-    <field name="ip.ttl" pos="22" show="64" showname="Time to live: 64" size="1" value="40"/>
-    <field name="ip.proto" pos="23" show="132" showname="Protocol: SCTP (132)" size="1" value="84"/>
-    <field name="ip.checksum" pos="24" show="40989" showname="Header checksum: 0xa01d [validation disabled]" size="2" value="a01d">
-      <field name="ip.checksum_good" pos="24" show="0" showname="Good: False" size="2" value="a01d"/>
-      <field name="ip.checksum_bad" pos="24" show="0" showname="Bad: False" size="2" value="a01d"/>
-    </field>
-    <field name="ip.src" pos="26" show="192.168.12.17" showname="Source: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.addr" pos="26" show="192.168.12.17" showname="Source or Destination Address: 192.168.12.17 (192.168.12.17)" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.src_host" pos="26" show="192.168.12.17" showname="Source Host: 192.168.12.17" size="4" value="c0a80c11"/>
-    <field hide="yes" name="ip.host" pos="26" show="192.168.12.17" showname="Source or Destination Host: 192.168.12.17" size="4" value="c0a80c11"/>
-    <field name="ip.dst" pos="30" show="192.168.12.213" showname="Destination: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.addr" pos="30" show="192.168.12.213" showname="Source or Destination Address: 192.168.12.213 (192.168.12.213)" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.dst_host" pos="30" show="192.168.12.213" showname="Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-    <field hide="yes" name="ip.host" pos="30" show="192.168.12.213" showname="Source or Destination Host: 192.168.12.213" size="4" value="c0a80cd5"/>
-    <field name="" pos="26" show="Source GeoIP: Unknown" size="4" value="c0a80c11"/>
-    <field name="" pos="30" show="Destination GeoIP: Unknown" size="4" value="c0a80cd5"/>
-  </proto>
-  <proto name="sctp" pos="34" showname="Stream Control Transmission Protocol, Src Port: 36412 (36412), Dst Port: 36412 (36412)" size="16">
-    <field name="sctp.srcport" pos="34" show="36412" showname="Source port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.dstport" pos="36" show="36412" showname="Destination port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.verification_tag" pos="38" show="1425553323" showname="Verification tag: 0x54f837ab" size="4" value="54f837ab"/>
-    <field name="sctp.assoc_index" pos="34" show="0" showname="Assocation index: 0" size="0"/>
-    <field hide="yes" name="sctp.port" pos="34" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-    <field hide="yes" name="sctp.port" pos="36" show="36412" showname="Port: 36412" size="2" value="8e3c"/>
-    <field name="sctp.checksum" pos="42" show="688292166" showname="Checksum: 0x29068146 (not verified)" size="4" value="29068146"/>
-    <field name="" pos="46" show="SHUTDOWN_COMPLETE chunk" size="4" value="0e000004">
-      <field name="sctp.chunk_type" pos="46" show="14" showname="Chunk type: SHUTDOWN_COMPLETE (14)" size="1" value="0e">
-        <field name="sctp.chunk_bit_1" pos="46" show="0" showname="0... .... = Bit: Stop processing of the packet" size="1" unmaskedvalue="0e" value="0"/>
-        <field name="sctp.chunk_bit_2" pos="46" show="0" showname=".0.. .... = Bit: Do not report" size="1" unmaskedvalue="0e" value="0"/>
-      </field>
-      <field name="sctp.chunk_flags" pos="47" show="0" showname="Chunk flags: 0x00" size="1" value="00">
-        <field name="sctp.shutdown_complete_t_bit" pos="47" show="0" showname=".... ...0 = T-Bit: Tag not reflected" size="1" unmaskedvalue="00" value="0"/>
-      </field>
-      <field name="sctp.chunk_length" pos="48" show="4" showname="Chunk length: 4" size="2" value="0004"/>
-    </field>
-  </proto>
-</packet>
-</pdml>
diff --git a/openair3/TEST/EPC_TEST/generate_scenario.c b/openair3/TEST/EPC_TEST/generate_scenario.c
deleted file mode 100644
index a8a359094518ae62b32f9dac52f5d40bc3539647..0000000000000000000000000000000000000000
--- a/openair3/TEST/EPC_TEST/generate_scenario.c
+++ /dev/null
@@ -1,684 +0,0 @@
-/*
- * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The OpenAirInterface Software Alliance licenses this file to You under
- * the OAI Public License, Version 1.1  (the "License"); you may not use this file
- * except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.openairinterface.org/?page_id=698
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *-------------------------------------------------------------------------------
- * For more information about the OpenAirInterface (OAI) Software Alliance:
- *      contact@openairinterface.org
- */
-
-/*
-                                generate_scenario.c
-                                -------------------
-  AUTHOR  : Lionel GAUTHIER
-  COMPANY : EURECOM
-  EMAIL   : Lionel.Gauthier@eurecom.fr
- */
-
-#include <string.h>
-#include <limits.h>
-#include <libconfig.h>
-#include <inttypes.h>
-#include <getopt.h>
-#include <libgen.h>
-#include <unistd.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <unistd.h>
-#include <libxml/xmlmemory.h>
-#include <libxml/debugXML.h>
-#include <libxml/HTMLtree.h>
-#include <libxml/xmlIO.h>
-#include <libxml/DOCBparser.h>
-#include <libxml/xinclude.h>
-#include <libxml/catalog.h>
-#include <libxslt/xslt.h>
-#include <libxslt/xsltInternals.h>
-#include <libxslt/transform.h>
-#include <libxslt/xsltutils.h>
-
-#include "assertions.h"
-#include "generate_scenario.h"
-#include "s1ap_eNB.h"
-#include "intertask_interface.h"
-
-#define ENB_CONFIG_STRING_ACTIVE_ENBS                   "Active_eNBs"
-
-#define ENB_CONFIG_STRING_ENB_LIST                      "eNBs"
-#define ENB_CONFIG_STRING_ENB_ID                        "eNB_ID"
-#define ENB_CONFIG_STRING_CELL_TYPE                     "cell_type"
-#define ENB_CONFIG_STRING_ENB_NAME                      "eNB_name"
-
-#define ENB_CONFIG_STRING_TRACKING_AREA_CODE            "tracking_area_code"
-#define ENB_CONFIG_STRING_MOBILE_COUNTRY_CODE           "mobile_country_code"
-#define ENB_CONFIG_STRING_MOBILE_NETWORK_CODE           "mobile_network_code"
-
-
-#define ENB_CONFIG_STRING_MME_IP_ADDRESS                "mme_ip_address"
-#define ENB_CONFIG_STRING_MME_IPV4_ADDRESS              "ipv4"
-#define ENB_CONFIG_STRING_MME_IPV6_ADDRESS              "ipv6"
-#define ENB_CONFIG_STRING_MME_IP_ADDRESS_ACTIVE         "active"
-#define ENB_CONFIG_STRING_MME_IP_ADDRESS_PREFERENCE     "preference"
-
-#define ENB_CONFIG_STRING_SCTP_CONFIG                    "SCTP"
-#define ENB_CONFIG_STRING_SCTP_INSTREAMS                 "SCTP_INSTREAMS"
-#define ENB_CONFIG_STRING_SCTP_OUTSTREAMS                "SCTP_OUTSTREAMS"
-
-#define ENB_CONFIG_STRING_NETWORK_INTERFACES_CONFIG     "NETWORK_INTERFACES"
-#define ENB_CONFIG_STRING_ENB_INTERFACE_NAME_FOR_S1_MME "ENB_INTERFACE_NAME_FOR_S1_MME"
-#define ENB_CONFIG_STRING_ENB_IPV4_ADDRESS_FOR_S1_MME   "ENB_IPV4_ADDRESS_FOR_S1_MME"
-#define ENB_CONFIG_STRING_ENB_INTERFACE_NAME_FOR_S1U    "ENB_INTERFACE_NAME_FOR_S1U"
-#define ENB_CONFIG_STRING_ENB_IPV4_ADDR_FOR_S1U         "ENB_IPV4_ADDRESS_FOR_S1U"
-#define ENB_CONFIG_STRING_ENB_PORT_FOR_S1U              "ENB_PORT_FOR_S1U"
-
-
-#define ENB_CONFIG_MAX_XSLT_PARAMS 32
-
-Enb_properties_array_t g_enb_properties;
-char                  *g_test_dir         = NULL;
-char                  *g_pdml_in_origin   = NULL;
-extern int             xmlLoadExtDtdDefaultValue;
-
-#define GENERATE_PDML_FILE           1
-#define GENERATE_SCENARIO    2
-
-#define GS_IS_FILE           1
-#define GS_IS_DIR            2
-
-//------------------------------------------------------------------------------
-// test if file exist in current directory
-int is_file_exists( const char const * file_nameP, const char const *file_roleP)
-{
-  struct stat s;
-  int err = stat(file_nameP, &s);
-  if(-1 == err) {
-    if(ENOENT == errno) {
-      fprintf(stderr, "Please provide a valid %s, %s does not exist\n", file_roleP, file_nameP);
-    } else {
-      perror("stat");
-      exit(1);
-    }
-  } else {
-    if(S_ISREG(s.st_mode)) {
-      return GS_IS_FILE;
-    } else if(S_ISDIR(s.st_mode)) {
-      return GS_IS_DIR;
-    } else {
-      fprintf(stderr, "Please provide a valid test %s, %s exists but is not found valid\n", file_roleP, file_nameP);
-    }
-  }
-  return 0;
-}
-
-
-//------------------------------------------------------------------------------
-int strip_extension(char *in_filename)
-{
-  static const uint8_t name_min_len = 1;
-  static const uint8_t max_ext_len = 5; // .pdml !
-  fprintf(stdout, "strip_extension %s\n", in_filename);
-
-  if (NULL != in_filename) {
-    /* Check chars starting at end of string to find last '.' */
-    for (ssize_t i = strlen(in_filename); i >= name_min_len; i--) {
-      if (in_filename[i] == '.') {
-        in_filename[i] = '\0';
-        return i;
-      }
-    }
-  }
-  return -1;
-}
-//------------------------------------------------------------------------------
-// return number of splitted items
-int split_path( char * pathP, char *** resP)
-{
-  char *  saveptr1;
-  char *  p    = strtok_r (pathP, "/", &saveptr1);
-  int     n_spaces = 0;
-
-  /// split string and append tokens to 'res'
-  while (p) {
-    *resP = realloc (*resP, sizeof (char*) * ++n_spaces);
-    AssertFatal (*resP, "realloc failed");
-    (*resP)[n_spaces-1] = p;
-    p = strtok_r (NULL, "/", &saveptr1);
-  }
-  return n_spaces;
-}
-
-//------------------------------------------------------------------------------
-int generate_test_scenario(const char const * test_nameP, const char const * pdml_in_basenameP)
-//------------------------------------------------------------------------------
-{
-  //int fd_pdml_in;
-  xsltStylesheetPtr cur = NULL;
-  xmlDocPtr         doc, res;
-  FILE             *test_scenario_file = NULL;
-  const char        test_scenario_filename[NAME_MAX];
-  const char       *params[2*ENB_CONFIG_MAX_XSLT_PARAMS];
-  int               nb_params = 0;
-  int               i,j;
-  char              astring[1024];
-  char             *astring2 = NULL;
-  struct in_addr    addr;
-
-  memset(test_scenario_filename, 0, sizeof(test_scenario_filename));
-  memset(astring, 0, sizeof(astring));
-  if (getcwd(astring, sizeof(astring)) != NULL) {
-    fprintf(stdout, "working in %s directory\n", astring);
-  } else {
-    perror("getcwd() error");
-    exit(1);
-  }
-
-  xmlSubstituteEntitiesDefault(1);
-  xmlLoadExtDtdDefaultValue = 1;
-  cur = xsltParseStylesheetFile("/usr/share/oai/xsl/generic_scenario.xsl");
-  if (NULL == cur) {
-    AssertFatal (0, "Could not parse stylesheet file /usr/share/oai/xsl/generic_scenario.xsl!\n");
-  } else {
-    fprintf(stdout, "XSLT style sheet: /usr/share/oai/xsl/generic_scenario.xsl\n");
-  }
-
-  doc = xmlParseFile(pdml_in_basenameP);
-  if (NULL == doc) {
-    AssertFatal (0, "Could not parse pdml file %s!\n", pdml_in_basenameP);
-  } else {
-    fprintf(stdout, "pdml file: %s\n", pdml_in_basenameP);
-  }
-  params[nb_params++] = "test_name";
-  sprintf(astring, "%s", pdml_in_basenameP);
-  if (strip_extension(astring) > 0) {
-    astring2 = strdup(astring);
-    sprintf(astring, "\"%s\"", astring2);
-    free(astring2);
-    astring2 = NULL;
-  } else {
-    fprintf(stderr, "Assigning test name failed: %s\n", astring);
-  }
-  params[nb_params++] = strdup(astring);
-
-  for (i = 0; i < g_enb_properties.number; i++) {
-    // eNB S1-C IPv4 address
-    sprintf(astring, "enb%d_s1c", i);
-    params[nb_params++] = strdup(astring);
-    addr.s_addr = g_enb_properties.properties[i]->enb_ipv4_address_for_S1_MME;
-    sprintf(astring, "\"%s\"", inet_ntoa(addr));
-    params[nb_params++] = strdup(astring);
-
-    // MME S1-C IPv4 address
-    for (j = 0; j < g_enb_properties.properties[i]->nb_mme; j++) {
-      sprintf(astring, "mme%d_s1c_%d", i, j);
-      params[nb_params++] = strdup(astring);
-      AssertFatal (g_enb_properties.properties[i]->mme_ip_address[j].ipv4_address,
-          "Only support MME IPv4 address\n");
-      sprintf(astring, "\"%s\"", g_enb_properties.properties[i]->mme_ip_address[j].ipv4_address);
-      params[nb_params++] = strdup(astring);
-    }
-  }
-  params[nb_params] = NULL;
-  res = xsltApplyStylesheet(cur, doc, params);
-  if (NULL != res) {
-    // since pdml filename is not relative (no path), just filename in current directory we can safely remove
-    sprintf(test_scenario_filename,"%s",pdml_in_basenameP);
-    if (strip_extension(test_scenario_filename) > 0) {
-      strcat(test_scenario_filename, ".xml");
-      test_scenario_file = fopen( test_scenario_filename, "w+");
-      if (NULL != test_scenario_file) {
-        xsltSaveResultToFile(test_scenario_file, res, cur);
-        fclose(test_scenario_file);
-        fprintf(stdout, "Wrote test scenario to %s\n", test_scenario_filename);
-      } else {
-        fprintf(stderr, "Error in fopen(%s)\n", test_scenario_filename);
-      }
-    } else {
-      fprintf(stderr, "Error in strip_extension()\n");
-    }
-  } else {
-    fprintf(stderr, "Error in xsltApplyStylesheet()\n");
-  }
-  xsltFreeStylesheet(cur);
-  xmlFreeDoc(res);
-  xmlFreeDoc(doc);
-
-  xsltCleanupGlobals();
-  xmlCleanupParser();
-}
-
-//------------------------------------------------------------------------------
-static void enb_config_display(void)
-//------------------------------------------------------------------------------
-{
-  int i;
-
-  printf( "\n----------------------------------------------------------------------\n");
-  printf( " ENB CONFIG FILE CONTENT LOADED:\n");
-  printf( "----------------------------------------------------------------------\n");
-  for (i = 0; i < g_enb_properties.number; i++) {
-    printf( "ENB CONFIG for instance %d:\n\n", i);
-    printf( "\teNB name:           \t%s\n",g_enb_properties.properties[i]->eNB_name);
-    printf( "\teNB ID:             \t%"PRIu32"\n",g_enb_properties.properties[i]->eNB_id);
-    printf( "\tCell type:          \t%s\n",g_enb_properties.properties[i]->cell_type == CELL_MACRO_ENB ? "CELL_MACRO_ENB":"CELL_HOME_ENB");
-    printf( "\tTAC:                \t%"PRIu16"\n",g_enb_properties.properties[i]->tac);
-    printf( "\tMCC:                \t%"PRIu16"\n",g_enb_properties.properties[i]->mcc);
-
-    if (g_enb_properties.properties[i]->mnc_digit_length == 3) {
-      printf( "\tMNC:                \t%03"PRIu16"\n",g_enb_properties.properties[i]->mnc);
-    } else {
-      printf( "\tMNC:                \t%02"PRIu16"\n",g_enb_properties.properties[i]->mnc);
-    }
-    printf( "\n--------------------------------------------------------\n");
-  }
-}
-
-
-#ifdef LIBCONFIG_LONG
-#define libconfig_int long
-#else
-#define libconfig_int int
-#endif
-//------------------------------------------------------------------------------
-void enb_config_init(const  char const * lib_config_file_name_pP)
-//------------------------------------------------------------------------------
-{
-  config_t          cfg;
-  config_setting_t *setting                       = NULL;
-  config_setting_t *subsetting                    = NULL;
-  config_setting_t *setting_mme_addresses         = NULL;
-  config_setting_t *setting_mme_address           = NULL;
-  config_setting_t *setting_enb                   = NULL;
-  int               num_enb_properties            = 0;
-  int               enb_properties_index          = 0;
-  int               num_enbs                      = 0;
-  int               num_mme_address               = 0;
-  int               i                             = 0;
-  int               j                             = 0;
-  int               parse_errors                  = 0;
-  libconfig_int     enb_id                        = 0;
-  const char*       cell_type                     = NULL;
-  const char*       tac                           = 0;
-  const char*       enb_name                      = NULL;
-  const char*       mcc                           = 0;
-  const char*       mnc                           = 0;
-  char*             ipv4                          = NULL;
-  char*             ipv6                          = NULL;
-  char*             active                        = NULL;
-  char*             preference                    = NULL;
-  const char*       active_enb[EPC_TEST_SCENARIO_MAX_ENB];
-  char*             enb_interface_name_for_S1U    = NULL;
-  char*             enb_ipv4_address_for_S1U      = NULL;
-  libconfig_int     enb_port_for_S1U              = 0;
-  char*             enb_interface_name_for_S1_MME = NULL;
-  char*             enb_ipv4_address_for_S1_MME   = NULL;
-  char             *address                       = NULL;
-  char             *cidr                          = NULL;
-
-
-  AssertFatal (lib_config_file_name_pP != NULL,
-               "Bad parameter lib_config_file_name_pP %s , must reference a valid eNB config file\n",
-               lib_config_file_name_pP);
-
-  memset((char*)active_enb,     0 , EPC_TEST_SCENARIO_MAX_ENB * sizeof(char*));
-
-  config_init(&cfg);
-
-  /* Read the file. If there is an error, report it and exit. */
-  if (! config_read_file(&cfg, lib_config_file_name_pP)) {
-    config_destroy(&cfg);
-    AssertFatal (0, "Failed to parse eNB configuration file %s!\n", lib_config_file_name_pP);
-  }
-
-  // Get list of active eNBs, (only these will be configured)
-  setting = config_lookup(&cfg, ENB_CONFIG_STRING_ACTIVE_ENBS);
-
-  if (setting != NULL) {
-    num_enbs = config_setting_length(setting);
-
-    for (i = 0; i < num_enbs; i++) {
-      setting_enb   = config_setting_get_elem(setting, i);
-      active_enb[i] = config_setting_get_string (setting_enb);
-      AssertFatal (active_enb[i] != NULL,
-                   "Failed to parse config file %s, %dth attribute %s \n",
-                   lib_config_file_name_pP, i, ENB_CONFIG_STRING_ACTIVE_ENBS);
-      active_enb[i] = strdup(active_enb[i]);
-      num_enb_properties += 1;
-    }
-  }
-
-  /* Output a list of all eNBs. */
-  setting = config_lookup(&cfg, ENB_CONFIG_STRING_ENB_LIST);
-
-  if (setting != NULL) {
-    enb_properties_index = g_enb_properties.number;
-    parse_errors      = 0;
-    num_enbs = config_setting_length(setting);
-
-    for (i = 0; i < num_enbs; i++) {
-      setting_enb = config_setting_get_elem(setting, i);
-
-      if (! config_setting_lookup_int(setting_enb, ENB_CONFIG_STRING_ENB_ID, &enb_id)) {
-        /* Calculate a default eNB ID */
-# if defined(ENABLE_USE_MME)
-        uint32_t hash;
-
-        hash = s1ap_generate_eNB_id ();
-        enb_id = i + (hash & 0xFFFF8);
-# else
-        enb_id = i;
-# endif
-      }
-
-      if (  !(       config_setting_lookup_string(setting_enb, ENB_CONFIG_STRING_CELL_TYPE,           &cell_type)
-                    && config_setting_lookup_string(setting_enb, ENB_CONFIG_STRING_ENB_NAME,            &enb_name)
-                    && config_setting_lookup_string(setting_enb, ENB_CONFIG_STRING_TRACKING_AREA_CODE,  &tac)
-                    && config_setting_lookup_string(setting_enb, ENB_CONFIG_STRING_MOBILE_COUNTRY_CODE, &mcc)
-                    && config_setting_lookup_string(setting_enb, ENB_CONFIG_STRING_MOBILE_NETWORK_CODE, &mnc)
-
-
-            )
-        ) {
-        AssertError (0, parse_errors ++,
-                     "Failed to parse eNB configuration file %s, %d th enb\n",
-                     lib_config_file_name_pP, i);
-        continue; // FIXME this prevents segfaults below, not sure what happens after function exit
-      }
-
-      // search if in active list
-      for (j=0; j < num_enb_properties; j++) {
-        if (strcmp(active_enb[j], enb_name) == 0) {
-          g_enb_properties.properties[enb_properties_index] = calloc(1, sizeof(Enb_properties_t));
-
-          g_enb_properties.properties[enb_properties_index]->eNB_id   = enb_id;
-
-          if (strcmp(cell_type, "CELL_MACRO_ENB") == 0) {
-            g_enb_properties.properties[enb_properties_index]->cell_type = CELL_MACRO_ENB;
-          } else  if (strcmp(cell_type, "CELL_HOME_ENB") == 0) {
-            g_enb_properties.properties[enb_properties_index]->cell_type = CELL_HOME_ENB;
-          } else {
-            AssertError (0, parse_errors ++,
-                         "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for cell_type choice: CELL_MACRO_ENB or CELL_HOME_ENB !\n",
-                         lib_config_file_name_pP, i, cell_type);
-          }
-
-          g_enb_properties.properties[enb_properties_index]->eNB_name         = strdup(enb_name);
-          g_enb_properties.properties[enb_properties_index]->tac              = (uint16_t)atoi(tac);
-          g_enb_properties.properties[enb_properties_index]->mcc              = (uint16_t)atoi(mcc);
-          g_enb_properties.properties[enb_properties_index]->mnc              = (uint16_t)atoi(mnc);
-          g_enb_properties.properties[enb_properties_index]->mnc_digit_length = strlen(mnc);
-          AssertFatal((g_enb_properties.properties[enb_properties_index]->mnc_digit_length == 2) ||
-                      (g_enb_properties.properties[enb_properties_index]->mnc_digit_length == 3),
-                      "BAD MNC DIGIT LENGTH %d",
-                      g_enb_properties.properties[i]->mnc_digit_length);
-
-
-          setting_mme_addresses = config_setting_get_member (setting_enb, ENB_CONFIG_STRING_MME_IP_ADDRESS);
-          num_mme_address     = config_setting_length(setting_mme_addresses);
-          g_enb_properties.properties[enb_properties_index]->nb_mme = 0;
-
-          for (j = 0; j < num_mme_address; j++) {
-            setting_mme_address = config_setting_get_elem(setting_mme_addresses, j);
-
-            if (  !(
-                   config_setting_lookup_string(setting_mme_address, ENB_CONFIG_STRING_MME_IPV4_ADDRESS, (const char **)&ipv4)
-                   && config_setting_lookup_string(setting_mme_address, ENB_CONFIG_STRING_MME_IPV6_ADDRESS, (const char **)&ipv6)
-                   && config_setting_lookup_string(setting_mme_address, ENB_CONFIG_STRING_MME_IP_ADDRESS_ACTIVE, (const char **)&active)
-                   && config_setting_lookup_string(setting_mme_address, ENB_CONFIG_STRING_MME_IP_ADDRESS_PREFERENCE, (const char **)&preference)
-                 )
-              ) {
-              AssertError (0, parse_errors ++,
-                           "Failed to parse eNB configuration file %s, %d th enb %d th mme address !\n",
-                           lib_config_file_name_pP, i, j);
-              continue; // FIXME will prevent segfaults below, not sure what happens at function exit...
-            }
-
-            g_enb_properties.properties[enb_properties_index]->nb_mme += 1;
-
-            g_enb_properties.properties[enb_properties_index]->mme_ip_address[j].ipv4_address = strdup(ipv4);
-            g_enb_properties.properties[enb_properties_index]->mme_ip_address[j].ipv6_address = strdup(ipv6);
-
-            if (strcmp(active, "yes") == 0) {
-              g_enb_properties.properties[enb_properties_index]->mme_ip_address[j].active = 1;
-            } // else { (calloc)
-
-            if (strcmp(preference, "ipv4") == 0) {
-              g_enb_properties.properties[enb_properties_index]->mme_ip_address[j].ipv4 = 1;
-            } else if (strcmp(preference, "ipv6") == 0) {
-              g_enb_properties.properties[enb_properties_index]->mme_ip_address[j].ipv6 = 1;
-            } else if (strcmp(preference, "no") == 0) {
-              g_enb_properties.properties[enb_properties_index]->mme_ip_address[j].ipv4 = 1;
-              g_enb_properties.properties[enb_properties_index]->mme_ip_address[j].ipv6 = 1;
-            }
-          }
-
-
-          // NETWORK_INTERFACES
-          subsetting = config_setting_get_member (setting_enb, ENB_CONFIG_STRING_NETWORK_INTERFACES_CONFIG);
-
-          if (subsetting != NULL) {
-            if (  (
-                   config_setting_lookup_string( subsetting, ENB_CONFIG_STRING_ENB_INTERFACE_NAME_FOR_S1_MME,
-                                                 (const char **)&enb_interface_name_for_S1_MME)
-                   && config_setting_lookup_string( subsetting, ENB_CONFIG_STRING_ENB_IPV4_ADDRESS_FOR_S1_MME,
-                                                    (const char **)&enb_ipv4_address_for_S1_MME)
-                   && config_setting_lookup_string( subsetting, ENB_CONFIG_STRING_ENB_INTERFACE_NAME_FOR_S1U,
-                                                    (const char **)&enb_interface_name_for_S1U)
-                   && config_setting_lookup_string( subsetting, ENB_CONFIG_STRING_ENB_IPV4_ADDR_FOR_S1U,
-                                                    (const char **)&enb_ipv4_address_for_S1U)
-                   && config_setting_lookup_int(subsetting, ENB_CONFIG_STRING_ENB_PORT_FOR_S1U,
-                                                &enb_port_for_S1U)
-                 )
-              ) {
-              g_enb_properties.properties[enb_properties_index]->enb_interface_name_for_S1U = strdup(enb_interface_name_for_S1U);
-              cidr = enb_ipv4_address_for_S1U;
-              address = strtok(cidr, "/");
-
-              if (address) {
-                IPV4_STR_ADDR_TO_INT_NWBO ( address, g_enb_properties.properties[enb_properties_index]->enb_ipv4_address_for_S1U, "BAD IP ADDRESS FORMAT FOR eNB S1_U !\n" );
-              }
-
-              g_enb_properties.properties[enb_properties_index]->enb_port_for_S1U = enb_port_for_S1U;
-
-              g_enb_properties.properties[enb_properties_index]->enb_interface_name_for_S1_MME = strdup(enb_interface_name_for_S1_MME);
-              cidr = enb_ipv4_address_for_S1_MME;
-              address = strtok(cidr, "/");
-
-              if (address) {
-                IPV4_STR_ADDR_TO_INT_NWBO ( address, g_enb_properties.properties[enb_properties_index]->enb_ipv4_address_for_S1_MME, "BAD IP ADDRESS FORMAT FOR eNB S1_MME !\n" );
-              }
-            }
-          } // if (subsetting != NULL) {
-          enb_properties_index += 1;
-        } // if (strcmp(active_enb[j], enb_name) == 0)
-      } // for (j=0; j < num_enb_properties; j++)
-    } // for (i = 0; i < num_enbs; i++)
-  } //   if (setting != NULL) {
-
-  g_enb_properties.number += num_enb_properties;
-
-
-  AssertFatal (parse_errors == 0,
-               "Failed to parse eNB configuration file %s, found %d error%s !\n",
-               lib_config_file_name_pP, parse_errors, parse_errors > 1 ? "s" : "");
-}
-
-
-//------------------------------------------------------------------------------
-static void usage (
-    int argc,
-    char *argv[])
-//------------------------------------------------------------------------------
-{
-  fprintf (stdout, "Please report any bug to: %s\n",PACKAGE_BUGREPORT);
-  fprintf (stdout, "Usage: %s [options]\n\n", argv[0]);
-  fprintf (stdout, "\n");
-  fprintf (stdout, "Mandatory options:\n");
-  fprintf (stdout, "\t-c | --enb-conf-file    <file>     Provide the old eNB config file for generating a copy of the original test\n");
-  fprintf (stdout, "\t-d | --test-dir         <dir>      Directory where a set of files related to a particular test are located\n");
-  fprintf (stdout, "\t-p | --pdml             <file>     File name (with no path) in 'test-dir' directory of an original scenario that has to be reworked (IP addresses) with new testbed\n");
-  fprintf (stdout, "\n");
-  fprintf (stdout, "Other options:\n");
-  fprintf (stdout, "\t-h | --help                        Print this help and return\n");
-  fprintf (stdout, "\t-v | --version                     Print informations about the version of this executable\n");
-  fprintf (stdout, "\n");
-  fprintf (stdout, "Example of generate_scenario use case:  \n");
-  fprintf (stdout, "\n");
-  fprintf (stdout, "  Generate a generix xml scenario from a captured pcap file:        \n");
-  fprintf (stdout, "           +---------------------+ \n");
-  fprintf (stdout, "           |captured pcap-ng file| \n");
-  fprintf (stdout, "           +----------+----------+ \n");
-  fprintf (stdout, "                      |\n");
-  fprintf (stdout, "             mme_test_s1_pcap2pdml --pcap_file <`captured pcap-ng file`>\n");
-  fprintf (stdout, "                      |\n");
-  fprintf (stdout, "             +--------V----------+    +--------------------+\n");
-  fprintf (stdout, "             |'pdml-in-orig' file|    |'enb-conf-file' file|\n");
-  fprintf (stdout, "             +--------+----------+    +--------------------+\n");
-  fprintf (stdout, "                      |                            |\n");
-  fprintf (stdout, "                      +----------------------------+\n");
-  fprintf (stdout, "                      |\n");
-  fprintf (stdout, "      generate_scenario -d <dir> -p <'pdml-in-orig' file>  -c <'enb-conf-file' file> \n");
-  fprintf (stdout, "                      |\n");
-  fprintf (stdout, "         +------------V--------------+\n");
-  fprintf (stdout, "         +'xml-test-scenario' file   |\n");
-  fprintf (stdout, "         +---------------------------+\n");
-  fprintf (stdout, "\n");
-}
-
-//------------------------------------------------------------------------------
-int
-config_parse_opt_line (
-  int argc,
-  char *argv[])
-//------------------------------------------------------------------------------
-{
-  int                           option;
-  int                           rv                         = 0;
-  char                         *enb_config_file_name   = NULL;
-  char                         *pdml_in_file_name          = NULL;
-  char                         *test_dir_name              = NULL;
-
-  enum long_option_e {
-    LONG_OPTION_START = 0x100, /* Start after regular single char options */
-    LONG_OPTION_ENB_CONF_FILE,
-    LONG_OPTION_PDML,
-    LONG_OPTION_TEST_DIR,
-    LONG_OPTION_HELP,
-    LONG_OPTION_VERSION,
-  };
-
-  static struct option long_options[] = {
-    {"enb-conf-file",      required_argument, 0, LONG_OPTION_ENB_CONF_FILE},
-    {"pdml ",              required_argument, 0, LONG_OPTION_PDML},
-    {"test-dir",           required_argument, 0, LONG_OPTION_TEST_DIR},
-    {"help",               no_argument,       0, LONG_OPTION_HELP},
-    {"version",            no_argument,       0, LONG_OPTION_VERSION},
-    {NULL, 0, NULL, 0}
-  };
-
-  /*
-   * Parsing command line
-   */
-  while ((option = getopt_long (argc, argv, "vhp:n:c:s:d:", long_options, NULL)) != -1) {
-    switch (option) {
-      case LONG_OPTION_ENB_CONF_FILE:
-      case 'c':
-        if (optarg) {
-          enb_config_file_name = optarg;
-          printf("eNB config file name is %s\n", enb_config_file_name);
-          rv |= GENERATE_SCENARIO;
-        }
-        break;
-
-      case LONG_OPTION_PDML:
-      case 'p':
-        if (optarg) {
-          pdml_in_file_name = strdup(optarg);
-          printf("PDML input file name is %s\n", pdml_in_file_name);
-          rv |= GENERATE_SCENARIO;
-        }
-        break;
-
-      case LONG_OPTION_TEST_DIR:
-      case 'd':
-        if (optarg) {
-          test_dir_name = strdup(optarg);
-          if (is_file_exists(test_dir_name, "test dirname") != GS_IS_DIR) {
-            fprintf(stderr, "Please provide a valid test dirname, %s is not a valid directory name\n", test_dir_name);
-            exit(1);
-          }
-          printf("Test dir name is %s\n", test_dir_name);
-        }
-        break;
-
-      case LONG_OPTION_VERSION:
-      case 'v':
-        printf("Version %s\n", PACKAGE_VERSION);
-        exit (0);
-        break;
-
-      case LONG_OPTION_HELP:
-      case 'h':
-      default:
-        usage (argc, argv);
-        exit (0);
-    }
-  }
-  if (NULL == test_dir_name) {
-    fprintf(stderr, "Please provide a valid test dirname\n");
-    exit(1);
-  }
-  g_test_dir = test_dir_name; test_dir_name = NULL;
-  if (chdir(g_test_dir) != 0) {
-    fprintf(stderr, "Error: chdir %s returned %s\n", g_test_dir, strerror(errno));
-    exit(1);
-  }
-  if (rv & GENERATE_SCENARIO) {
-    if (NULL == enb_config_file_name) {
-      fprintf(stderr, "Error: please provide the original eNB config file name that should be in %s\n", g_test_dir);
-    }
-    if (is_file_exists(enb_config_file_name, "ENB config file") != GS_IS_FILE) {
-      fprintf(stderr, "Error: eNB config file name %s is not found in dir %s\n", enb_config_file_name, g_test_dir);
-    }
-    enb_config_init(enb_config_file_name);
-    //enb_config_display();
-
-    if (NULL == pdml_in_file_name) {
-      fprintf(stderr, "Error: please provide the PDML file name that should be in %s\n", g_test_dir);
-    }
-    if (is_file_exists(pdml_in_file_name, "PDML file") != GS_IS_FILE) {
-      fprintf(stderr, "Error: PDML file name %s is not found in dir %s\n", pdml_in_file_name, g_test_dir);
-    }
-    g_pdml_in_origin = pdml_in_file_name; pdml_in_file_name = NULL;
-  }
-  return rv;
-}
-
-//------------------------------------------------------------------------------
-int main( int argc, char **argv )
-//------------------------------------------------------------------------------
-{
-  int     actions = 0;
-
-  memset((char*) &g_enb_properties, 0 , sizeof(g_enb_properties));
-
-  actions = config_parse_opt_line (argc, argv); //Command-line options
-  if  (actions & GENERATE_SCENARIO) {
-    generate_test_scenario(g_test_dir, g_pdml_in_origin);
-  }
-
-  return 0;
-}
diff --git a/openair3/TEST/EPC_TEST/generate_scenario.h b/openair3/TEST/EPC_TEST/generate_scenario.h
deleted file mode 100644
index 8deded3f524fff04579cff3f3d69eb7147f2d3d0..0000000000000000000000000000000000000000
--- a/openair3/TEST/EPC_TEST/generate_scenario.h
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The OpenAirInterface Software Alliance licenses this file to You under
- * the OAI Public License, Version 1.1  (the "License"); you may not use this file
- * except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.openairinterface.org/?page_id=698
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *-------------------------------------------------------------------------------
- * For more information about the OpenAirInterface (OAI) Software Alliance:
- *      contact@openairinterface.org
- */
-
-/*
-                                generate_scenario.h
-                             -------------------
-  AUTHOR  : Lionel GAUTHIER
-  COMPANY : EURECOM
-  EMAIL   : Lionel.Gauthier@eurecom.fr
-*/
-
-#ifndef GENERATE_SCENARIO_H_
-#define GENERATE_SCENARIO_H_
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-
-#include "commonDef.h"
-#include "platform_types.h"
-#include "platform_constants.h"
-#include "s1ap_messages_types.h"
-#include "SystemInformationBlockType2.h"
-
-#define IPV4_STR_ADDR_TO_INT_NWBO(AdDr_StR,NwBo,MeSsAgE ) do {\
-            struct in_addr inp;\
-            if ( inet_aton(AdDr_StR, &inp ) < 0 ) {\
-                AssertFatal (0, MeSsAgE);\
-            } else {\
-                NwBo = inp.s_addr;\
-            }\
-        } while (0);
-
-/** @defgroup _enb_app ENB APP 
- * @ingroup _oai2
- * @{
- */
-
-// Hard to find a defined value for max enb...
-#define EPC_TEST_SCENARIO_MAX_ENB                       4
-
-
-typedef struct mme_ip_address_s {
-  unsigned  ipv4:1;
-  unsigned  ipv6:1;
-  unsigned  active:1;
-  char     *ipv4_address;
-  char     *ipv6_address;
-} mme_ip_address_t;
-
-typedef struct Enb_properties_s {
-  /* Unique eNB_id to identify the eNB within EPC.
-   * For macro eNB ids this field should be 20 bits long.
-   * For home eNB ids this field should be 28 bits long.
-   */
-  uint32_t            eNB_id;
-
-  /* The type of the cell */
-  enum cell_type_e    cell_type;
-
-  /* Optional name for the cell
-   * NOTE: the name can be NULL (i.e no name) and will be cropped to 150
-   * characters.
-   */
-  char               *eNB_name;
-
-  /* Tracking area code */
-  uint16_t            tac;
-
-  /* Mobile Country Code
-   * Mobile Network Code
-   */
-  uint16_t            mcc;
-  uint16_t            mnc;
-  uint8_t             mnc_digit_length;
-
-  /* Nb of MME to connect to */
-  uint8_t             nb_mme;
-  /* List of MME to connect to */
-  mme_ip_address_t    mme_ip_address[S1AP_MAX_NB_MME_IP_ADDRESS];
-
-  int                 sctp_in_streams;
-  int                 sctp_out_streams;
-
-  char               *enb_interface_name_for_S1U;
-  in_addr_t           enb_ipv4_address_for_S1U;
-  tcp_udp_port_t      enb_port_for_S1U;
-
-  char               *enb_interface_name_for_S1_MME;
-  in_addr_t           enb_ipv4_address_for_S1_MME;
-
-} Enb_properties_t;
-
-typedef struct Enb_properties_array_s {
-  int                  number;
-  Enb_properties_t    *properties[EPC_TEST_SCENARIO_MAX_ENB];
-} Enb_properties_array_t;
-
-void enb_config_init(const char const * lib_config_file_name_pP);
-
-#endif /* ENB_CONFIG_H_ */
-/** @} */
diff --git a/openair3/TEST/EPC_TEST/play_scenario.c b/openair3/TEST/EPC_TEST/play_scenario.c
deleted file mode 100644
index ebaffdb39edd69f10e83824e96d57bd4f0f8e732..0000000000000000000000000000000000000000
--- a/openair3/TEST/EPC_TEST/play_scenario.c
+++ /dev/null
@@ -1,1240 +0,0 @@
-/*
- * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The OpenAirInterface Software Alliance licenses this file to You under
- * the OAI Public License, Version 1.1  (the "License"); you may not use this file
- * except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.openairinterface.org/?page_id=698
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *-------------------------------------------------------------------------------
- * For more information about the OpenAirInterface (OAI) Software Alliance:
- *      contact@openairinterface.org
- */
-
-/*
-                                play_scenario.c
-                                -------------------
-  AUTHOR  : Lionel GAUTHIER
-  COMPANY : EURECOM
-  EMAIL   : Lionel.Gauthier@eurecom.fr
- */
-
-#include <string.h>
-#include <limits.h>
-#include <libconfig.h>
-#include <inttypes.h>
-#include <getopt.h>
-#include <libgen.h>
-#include <unistd.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <sys/time.h>
-#include <unistd.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <pthread.h>
-
-
-#include "assertions.h"
-#include "s1ap_common.h"
-#include "intertask_interface.h"
-#include "play_scenario.h"
-#include "sctp_eNB_task.h"
-#include "sctp_default_values.h"
-#include "log.h"
-//------------------------------------------------------------------------------
-#define PLAY_SCENARIO              1
-#define GS_IS_FILE                 1
-#define GS_IS_DIR                  2
-//------------------------------------------------------------------------------
-Enb_properties_array_t g_enb_properties;
-int                    g_max_speed = 0;
-//------------------------------------------------------------------------------
-extern et_scenario_t  *g_scenario;
-extern int             xmlLoadExtDtdDefaultValue;
-extern int             asn_debug;
-extern int             asn1_xer_print;
-extern pthread_mutex_t g_fsm_lock;
-
-//------------------------------------------------------------------------------
-// MEMO:
-// Scenario with several eNBs: We may have to create ethx.y interfaces
-//
-
-
-
-//------------------------------------------------------------------------------
-// test if file exist in current directory
-int is_file_exists( const char const * file_nameP, const char const *file_roleP)
-{
-  struct stat s;
-  int err = stat(file_nameP, &s);
-  if(-1 == err) {
-    if(ENOENT == errno) {
-      fprintf(stderr, "Please provide a valid %s, %s does not exist\n", file_roleP, file_nameP);
-    } else {
-      perror("stat");
-      exit(1);
-    }
-  } else {
-    if(S_ISREG(s.st_mode)) {
-      return GS_IS_FILE;
-    } else if(S_ISDIR(s.st_mode)) {
-      return GS_IS_DIR;
-    } else {
-      fprintf(stderr, "Please provide a valid test %s, %s exists but is not found valid\n", file_roleP, file_nameP);
-    }
-  }
-  return 0;
-}
-
-
-//------------------------------------------------------------------------------
-int et_strip_extension(char *in_filename)
-{
-  static const uint8_t name_min_len = 1;
-  static const uint8_t max_ext_len = 5; // .pdml !
-  fprintf(stdout, "strip_extension %s\n", in_filename);
-
-  if (NULL != in_filename) {
-    /* Check chars starting at end of string to find last '.' */
-    for (ssize_t i = strlen(in_filename); i > name_min_len; i--) {
-      if (in_filename[i] == '.') {
-        in_filename[i] = '\0';
-        return i;
-      }
-    }
-  }
-  return -1;
-}
-//------------------------------------------------------------------------------
-// return number of splitted items
-void et_get_shift_arg( char * line_argument, shift_packet_t * const shift)
-{
-  int  len       = strlen(line_argument);
-  int  i         = 0;
-  int  j         = 0;
-  int  num_milli = 0;
-  char my_num[64];
-  int  negative  = 0;
-
-
-  while ((line_argument[i] != ':') && (i < len)) {
-    if (isdigit(line_argument[i])) { // may occur '\"'
-      my_num[j++] = line_argument[i];
-    }
-    i += 1;
-  }
-  AssertFatal(':' == line_argument[i], "Bad format");
-  i += 1; // ':'
-  my_num[j++] = '\0';
-  shift->frame_number = atoi(my_num);
-  AssertFatal(i<len, "Shift argument %s bad format", line_argument);
-
-  if (line_argument[i] == '-') {
-    negative = 1;
-    i += 1;
-  } else if (line_argument[i] == '+') {
-    i += 1;
-  }
-  AssertFatal(i<len, "Shift argument %s bad format", line_argument);
-  j = 0;
-  while ((line_argument[i] != '.') && (i < len)) {
-    my_num[j++] = line_argument[i++];
-  }
-  my_num[j] = '\0';
-  j = 0;
-  i += 1;
-  shift->shift_seconds = atoi(my_num);
-  // may omit .mmm, accept .m or .mm or .mmm or ...
-  while ((i < len) && (num_milli++ < 3)){
-    my_num[j++] = line_argument[i++];
-  }
-  while (num_milli++ < 6){
-    my_num[j++] = '0';
-  }
-  my_num[j] = '\0';
-  shift->shift_microseconds = atoi(my_num);
-  if (negative == 1) {
-    shift->shift_seconds      = - shift->shift_seconds;
-    shift->shift_microseconds = - shift->shift_microseconds;
-  }
-}
-//------------------------------------------------------------------------------
-// return number of splitted items
-int split_path( char * pathP, char *** resP)
-{
-  char *  saveptr1;
-  char *  p    = strtok_r (pathP, "/", &saveptr1);
-  int     n_spaces = 0;
-
-  /// split string and append tokens to 'res'
-  while (p) {
-    *resP = realloc (*resP, sizeof (char*) * ++n_spaces);
-    AssertFatal (*resP, "realloc failed");
-    (*resP)[n_spaces-1] = p;
-    p = strtok_r (NULL, "/", &saveptr1);
-  }
-  return n_spaces;
-}
-//------------------------------------------------------------------------------
-void et_free_packet(et_packet_t* packet)
-{
-  if (packet) {
-    switch (packet->sctp_hdr.chunk_type) {
-      case SCTP_CID_DATA:
-        et_free_pointer(packet->sctp_hdr.u.data_hdr.payload.binary_stream);
-        break;
-      default:
-        ;
-    }
-    et_free_pointer(packet);
-  }
-}
-
-//------------------------------------------------------------------------------
-void et_free_scenario(et_scenario_t* scenario)
-{
-  et_packet_t *packet = NULL;
-  et_packet_t *next_packet = NULL;
-  if (scenario) {
-    packet = scenario->list_packet;
-    while (packet) {
-      next_packet = packet->next;
-      et_free_packet(packet);
-      packet = next_packet->next;
-    }
-    et_free_pointer(scenario);
-    pthread_mutex_destroy(&g_fsm_lock);
-  }
-}
-
-//------------------------------------------------------------------------------
-char * et_ip2ip_str(const et_ip_t * const ip)
-{
-  static char str[INET6_ADDRSTRLEN];
-
-  sprintf(str, "ERROR");
-  switch (ip->address_family) {
-    case AF_INET6:
-      inet_ntop(AF_INET6, &(ip->address.ipv6), str, INET6_ADDRSTRLEN);
-      break;
-    case AF_INET:
-      inet_ntop(AF_INET, &(ip->address.ipv4), str, INET_ADDRSTRLEN);
-      break;
-    default:
-      ;
-  }
-  return str;
-}
-//------------------------------------------------------------------------------
-//convert hexstring to len bytes of data
-//returns 0 on success, negative on error
-//data is a buffer of at least len bytes
-//hexstring is upper or lower case hexadecimal, NOT prepended with "0x"
-int et_hex2data(unsigned char * const data, const unsigned char * const hexstring, const unsigned int len)
-{
-  unsigned const char *pos = hexstring;
-  char *endptr = NULL;
-  size_t count = 0;
-
-  fprintf(stdout, "%s(%s,%u)\n", __FUNCTION__, hexstring, len);
-
-  if ((len > 1) && (strlen((const char*)hexstring) % 2)) {
-    //or hexstring has an odd length
-    return -3;
-  }
-
-  if (len == 1)  {
-    char buf[5] = {'0', 'x', 0, pos[0], '\0'};
-    data[0] = strtol(buf, &endptr, 16);
-    /* Check for various possible errors */
-    AssertFatal ((errno == 0) || (data[0] != 0), "ERROR %s() strtol: %s\n", __FUNCTION__, strerror(errno));
-    AssertFatal (endptr != buf, "ERROR %s() No digits were found\n", __FUNCTION__);
-    return 0;
-  }
-
-  for(count = 0; count < len/2; count++) {
-    char buf[5] = {'0', 'x', pos[0], pos[1], 0};
-    data[count] = strtol(buf, &endptr, 16);
-    pos += 2 * sizeof(char);
-    AssertFatal (endptr[0] == '\0', "ERROR %s() non-hexadecimal character encountered buf %p endptr %p buf %s count %zu pos %p\n", __FUNCTION__, buf, endptr, buf, count, pos);
-    AssertFatal (endptr != buf, "ERROR %s() No digits were found\n", __FUNCTION__);
-  }
-  return 0;
-}
-//------------------------------------------------------------------------------
-sctp_cid_t et_chunk_type_str2cid(const xmlChar * const chunk_type_str)
-{
-  if ((!xmlStrcmp(chunk_type_str, (const xmlChar *)"DATA")))              { return SCTP_CID_DATA;}
-  if ((!xmlStrcmp(chunk_type_str, (const xmlChar *)"INIT")))              { return SCTP_CID_INIT;}
-  if ((!xmlStrcmp(chunk_type_str, (const xmlChar *)"INIT_ACK")))          { return SCTP_CID_INIT_ACK;}
-  if ((!xmlStrcmp(chunk_type_str, (const xmlChar *)"SACK")))              { return SCTP_CID_SACK;}
-  if ((!xmlStrcmp(chunk_type_str, (const xmlChar *)"HEARTBEAT")))         { return SCTP_CID_HEARTBEAT;}
-  if ((!xmlStrcmp(chunk_type_str, (const xmlChar *)"HEARTBEAT_ACK")))     { return SCTP_CID_HEARTBEAT_ACK;}
-  if ((!xmlStrcmp(chunk_type_str, (const xmlChar *)"ABORT")))             { return SCTP_CID_ABORT;}
-  if ((!xmlStrcmp(chunk_type_str, (const xmlChar *)"SHUTDOWN")))          { return SCTP_CID_SHUTDOWN;}
-  if ((!xmlStrcmp(chunk_type_str, (const xmlChar *)"SHUTDOWN_ACK")))      { return SCTP_CID_SHUTDOWN_ACK;}
-  if ((!xmlStrcmp(chunk_type_str, (const xmlChar *)"ERROR")))             { return SCTP_CID_ERROR;}
-  if ((!xmlStrcmp(chunk_type_str, (const xmlChar *)"COOKIE_ECHO")))       { return SCTP_CID_COOKIE_ECHO;}
-  if ((!xmlStrcmp(chunk_type_str, (const xmlChar *)"COOKIE_ACK")))        { return SCTP_CID_COOKIE_ACK;}
-  if ((!xmlStrcmp(chunk_type_str, (const xmlChar *)"ECN_ECNE")))          { return SCTP_CID_ECN_ECNE;}
-  if ((!xmlStrcmp(chunk_type_str, (const xmlChar *)"ECN_CWR")))           { return SCTP_CID_ECN_CWR;}
-  if ((!xmlStrcmp(chunk_type_str, (const xmlChar *)"SHUTDOWN_COMPLETE"))) { return SCTP_CID_SHUTDOWN_COMPLETE;}
-  if ((!xmlStrcmp(chunk_type_str, (const xmlChar *)"AUTH")))              { return SCTP_CID_AUTH;}
-  if ((!xmlStrcmp(chunk_type_str, (const xmlChar *)"FWD_TSN")))           { return SCTP_CID_FWD_TSN;}
-  if ((!xmlStrcmp(chunk_type_str, (const xmlChar *)"ASCONF")))            { return SCTP_CID_ASCONF;}
-  if ((!xmlStrcmp(chunk_type_str, (const xmlChar *)"ASCONF_ACK")))        { return SCTP_CID_ASCONF_ACK;}
-  AssertFatal (0, "ERROR: %s() cannot convert: %s\n", __FUNCTION__, chunk_type_str);
-}
-//------------------------------------------------------------------------------
-const char * const et_chunk_type_cid2str(const sctp_cid_t chunk_type)
-{
-  switch (chunk_type) {
-    case  SCTP_CID_DATA:              return "DATA"; break;
-    case  SCTP_CID_INIT:              return "INIT"; break;
-    case  SCTP_CID_INIT_ACK:          return "INIT_ACK"; break;
-    case  SCTP_CID_SACK:              return "SACK"; break;
-    case  SCTP_CID_HEARTBEAT:         return "HEARTBEAT"; break;
-    case  SCTP_CID_HEARTBEAT_ACK:     return "HEARTBEAT_ACK"; break;
-    case  SCTP_CID_ABORT:             return "ABORT"; break;
-    case  SCTP_CID_SHUTDOWN:          return "SHUTDOWN"; break;
-    case  SCTP_CID_SHUTDOWN_ACK:      return "SHUTDOWN_ACK"; break;
-    case  SCTP_CID_ERROR:             return "ERROR"; break;
-    case  SCTP_CID_COOKIE_ECHO:       return "COOKIE_ECHO"; break;
-    case  SCTP_CID_COOKIE_ACK:        return "COOKIE_ACK"; break;
-    case  SCTP_CID_ECN_ECNE:          return "ECN_ECNE"; break;
-    case  SCTP_CID_ECN_CWR:           return "ECN_CWR"; break;
-    case  SCTP_CID_SHUTDOWN_COMPLETE: return "SHUTDOWN_COMPLETE"; break;
-    case  SCTP_CID_AUTH:              return "AUTH"; break;
-    case  SCTP_CID_FWD_TSN:           return "FWD_TSN"; break;
-    case  SCTP_CID_ASCONF:            return "ASCONF"; break;
-    case  SCTP_CID_ASCONF_ACK:        return "ASCONF_ACK"; break;
-    default:
-      AssertFatal (0, "ERROR: Unknown chunk_type %d!\n", chunk_type);
-  }
-}
-//------------------------------------------------------------------------------
-const char * const et_error_match2str(const int err)
-{
-  switch (err) {
-    // from asn_compare.h
-    case  COMPARE_ERR_CODE_NO_MATCH:                   return "CODE_NO_MATCH"; break;
-    case  COMPARE_ERR_CODE_TYPE_MISMATCH:              return "TYPE_MISMATCH"; break;
-    case  COMPARE_ERR_CODE_TYPE_ARG_NULL:              return "TYPE_ARG_NULL"; break;
-    case  COMPARE_ERR_CODE_VALUE_NULL:                 return "VALUE_NULL"; break;
-    case  COMPARE_ERR_CODE_VALUE_ARG_NULL:             return "VALUE_ARG_NULL"; break;
-    case  COMPARE_ERR_CODE_CHOICE_NUM:                 return "CHOICE_NUM"; break;
-    case  COMPARE_ERR_CODE_CHOICE_PRESENT:             return "CHOICE_PRESENT"; break;
-    case  COMPARE_ERR_CODE_CHOICE_MALFORMED:           return "CHOICE_MALFORMED"; break;
-    case  COMPARE_ERR_CODE_SET_MALFORMED:              return "SET_MALFORMED"; break;
-    case  COMPARE_ERR_CODE_COLLECTION_NUM_ELEMENTS:    return "COLLECTION_NUM_ELEMENTS"; break;
-    // from play_scenario.h
-    case  ET_ERROR_MATCH_PACKET_SCTP_CHUNK_TYPE:       return "SCTP_CHUNK_TYPE"; break;
-    case  ET_ERROR_MATCH_PACKET_SCTP_PPID:             return "SCTP_PPID"; break;
-    case  ET_ERROR_MATCH_PACKET_SCTP_ASSOC_ID:         return "SCTP_ASSOC_ID"; break;
-    case  ET_ERROR_MATCH_PACKET_SCTP_STREAM_ID:        return "SCTP_STREAM_ID"; break;
-    case  ET_ERROR_MATCH_PACKET_SCTP_SSN:              return "SCTP_SSN"; break;
-    case  ET_ERROR_MATCH_PACKET_S1AP_PRESENT:          return "S1AP_PRESENT"; break;
-    case  ET_ERROR_MATCH_PACKET_S1AP_PROCEDURE_CODE:   return "S1AP_PROCEDURE_CODE"; break;
-    case  ET_ERROR_MATCH_PACKET_S1AP_CRITICALITY:      return "S1AP_CRITICALITY"; break;
-    default:
-      AssertFatal (0, "ERROR: Unknown match error %d!(TODO handle an1c error codes)\n", err);
-  }
-}
-//------------------------------------------------------------------------------
-et_packet_action_t et_action_str2et_action_t(const xmlChar * const action)
-{
-  if ((!xmlStrcmp(action, (const xmlChar *)"SEND")))              { return ET_PACKET_ACTION_S1C_SEND;}
-  if ((!xmlStrcmp(action, (const xmlChar *)"RECEIVE")))              { return ET_PACKET_ACTION_S1C_RECEIVE;}
-  AssertFatal (0, "ERROR: cannot convert: %s\n", action);
-  //if (NULL == action) {return ACTION_S1C_NULL;}
-}
-//------------------------------------------------------------------------------
-void et_ip_str2et_ip(const xmlChar  * const ip_str, et_ip_t * const ip)
-{
-  AssertFatal (NULL != ip_str, "ERROR Cannot convert null string to ip address!\n");
-  AssertFatal (NULL != ip,     "ERROR out parameter pointer is NULL!\n");
-  // store this IP address in sa:
-  if (inet_pton(AF_INET, (const char*)ip_str, (void*)&(ip->address.ipv4)) > 0) {
-    ip->address_family = AF_INET;
-    strncpy((char *)ip->str, (const char *)ip_str, INET_ADDRSTRLEN+1);
-  } else if (inet_pton(AF_INET6, (const char*)ip_str, (void*)&(ip->address.ipv6)) > 0) {
-    ip->address_family = AF_INET6;
-    strncpy((char *)ip->str, (const char *)ip_str, INET6_ADDRSTRLEN+1);
-  } else {
-    ip->address_family = AF_UNSPEC;
-    AssertFatal (0, "ERROR %s() Could not parse ip address %s!\n", __FUNCTION__, ip_str);
-  }
-}
-//------------------------------------------------------------------------------
-int et_compare_et_ip_to_net_ip_address(const et_ip_t * const ip, const net_ip_address_t * const net_ip)
-{
-  AssertFatal (NULL != ip,     "ERROR ip parameter\n");
-  AssertFatal (NULL != net_ip, "ERROR net_ip parameter\n");
-  switch (ip->address_family) {
-    case AF_INET:
-      if (net_ip->ipv4) {
-        //S1AP_DEBUG("%s(%s,%s)=%d\n",__FUNCTION__,ip->str, net_ip->ipv4_address, strcmp(ip->str, net_ip->ipv4_address));
-        return strcmp(ip->str, net_ip->ipv4_address);
-      }
-      //S1AP_DEBUG("%s(%s,%s)=-1 (IP version (4) not matching)\n",__FUNCTION__,ip->str, net_ip->ipv4_address);
-      return -1;
-      break;
-    case AF_INET6:
-      if (net_ip->ipv6) {
-        //S1AP_DEBUG("%s(%s,%s)=%d\n",__FUNCTION__,ip->str, net_ip->ipv4_address, strcmp(ip->str, net_ip->ipv6_address));
-        return strcmp(ip->str, net_ip->ipv6_address);
-      }
-      //S1AP_DEBUG("%s(%s,%s)=-1 (IP version (6) not matching)\n",__FUNCTION__,ip->str, net_ip->ipv6_address);
-      return -1;
-      break;
-    default:
-      S1AP_DEBUG("%s(%s,...)=-1 (unknown IP version)\n",__FUNCTION__,ip->str);
-      return -1;
-  }
-}
-
-#ifdef LIBCONFIG_LONG
-#define libconfig_int long
-#else
-#define libconfig_int int
-#endif
-//------------------------------------------------------------------------------
-void et_enb_config_init(const  char const * lib_config_file_name_pP)
-//------------------------------------------------------------------------------
-{
-  config_t          cfg;
-  config_setting_t *setting                       = NULL;
-  config_setting_t *subsetting                    = NULL;
-  config_setting_t *setting_mme_addresses         = NULL;
-  config_setting_t *setting_mme_address           = NULL;
-  config_setting_t *setting_enb                   = NULL;
-  libconfig_int     my_int;
-  int               num_enb_properties            = 0;
-  int               enb_properties_index          = 0;
-  int               num_enbs                      = 0;
-  int               num_mme_address               = 0;
-  int               i                             = 0;
-  int               j                             = 0;
-  int               parse_errors                  = 0;
-  libconfig_int     enb_id                        = 0;
-  const char*       cell_type                     = NULL;
-  const char*       tac                           = 0;
-  const char*       enb_name                      = NULL;
-  const char*       mcc                           = 0;
-  const char*       mnc                           = 0;
-  char*             ipv4                          = NULL;
-  char*             ipv6                          = NULL;
-  char*             active                        = NULL;
-  char*             preference                    = NULL;
-  const char*       active_enb[MAX_ENB];
-  char*             enb_interface_name_for_S1U    = NULL;
-  char*             enb_ipv4_address_for_S1U      = NULL;
-  libconfig_int     enb_port_for_S1U              = 0;
-  char*             enb_interface_name_for_S1_MME = NULL;
-  char*             enb_ipv4_address_for_S1_MME   = NULL;
-  char             *address                       = NULL;
-  char             *cidr                          = NULL;
-
-
-  AssertFatal (lib_config_file_name_pP != NULL,
-               "Bad parameter lib_config_file_name_pP %s , must reference a valid eNB config file\n",
-               lib_config_file_name_pP);
-
-  memset((char*)active_enb,     0 , MAX_ENB * sizeof(char*));
-
-  config_init(&cfg);
-
-  /* Read the file. If there is an error, report it and exit. */
-  if (! config_read_file(&cfg, lib_config_file_name_pP)) {
-    config_destroy(&cfg);
-    AssertFatal (0, "Failed to parse eNB configuration file %s!\n", lib_config_file_name_pP);
-  }
-
-  // Get list of active eNBs, (only these will be configured)
-  setting = config_lookup(&cfg, ENB_CONFIG_STRING_ACTIVE_ENBS);
-
-  if (setting != NULL) {
-    num_enbs = config_setting_length(setting);
-
-    for (i = 0; i < num_enbs; i++) {
-      setting_enb   = config_setting_get_elem(setting, i);
-      active_enb[i] = config_setting_get_string (setting_enb);
-      AssertFatal (active_enb[i] != NULL,
-                   "Failed to parse config file %s, %dth attribute %s \n",
-                   lib_config_file_name_pP, i, ENB_CONFIG_STRING_ACTIVE_ENBS);
-      active_enb[i] = strdup(active_enb[i]);
-      num_enb_properties += 1;
-    }
-  }
-
-  /* Output a list of all eNBs. */
-  setting = config_lookup(&cfg, ENB_CONFIG_STRING_ENB_LIST);
-
-  if (setting != NULL) {
-    enb_properties_index = g_enb_properties.number;
-    parse_errors      = 0;
-    num_enbs = config_setting_length(setting);
-
-    for (i = 0; i < num_enbs; i++) {
-      setting_enb = config_setting_get_elem(setting, i);
-
-      if (! config_setting_lookup_int(setting_enb, ENB_CONFIG_STRING_ENB_ID, &enb_id)) {
-        /* Calculate a default eNB ID */
-# if defined(ENABLE_USE_MME)
-        uint32_t hash;
-
-        hash = et_s1ap_generate_eNB_id ();
-        enb_id = i + (hash & 0xFFFF8);
-# else
-        enb_id = i;
-# endif
-      }
-
-      if (  !(       config_setting_lookup_string(setting_enb, ENB_CONFIG_STRING_CELL_TYPE,           &cell_type)
-                    && config_setting_lookup_string(setting_enb, ENB_CONFIG_STRING_ENB_NAME,            &enb_name)
-                    && config_setting_lookup_string(setting_enb, ENB_CONFIG_STRING_TRACKING_AREA_CODE,  &tac)
-                    && config_setting_lookup_string(setting_enb, ENB_CONFIG_STRING_MOBILE_COUNTRY_CODE, &mcc)
-                    && config_setting_lookup_string(setting_enb, ENB_CONFIG_STRING_MOBILE_NETWORK_CODE, &mnc)
-
-
-            )
-        ) {
-        AssertError (0, parse_errors ++,
-                     "Failed to parse eNB configuration file %s, %d th enb\n",
-                     lib_config_file_name_pP, i);
-        continue; // FIXME this prevents segfaults below, not sure what happens after function exit
-      }
-
-      // search if in active list
-      for (j=0; j < num_enb_properties; j++) {
-        if (strcmp(active_enb[j], enb_name) == 0) {
-          g_enb_properties.properties[enb_properties_index] = calloc(1, sizeof(Enb_properties_t));
-
-          g_enb_properties.properties[enb_properties_index]->eNB_id   = enb_id;
-
-          if (strcmp(cell_type, "CELL_MACRO_ENB") == 0) {
-            g_enb_properties.properties[enb_properties_index]->cell_type = CELL_MACRO_ENB;
-          } else  if (strcmp(cell_type, "CELL_HOME_ENB") == 0) {
-            g_enb_properties.properties[enb_properties_index]->cell_type = CELL_HOME_ENB;
-          } else {
-            AssertError (0, parse_errors ++,
-                         "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for cell_type choice: CELL_MACRO_ENB or CELL_HOME_ENB !\n",
-                         lib_config_file_name_pP, i, cell_type);
-          }
-
-          g_enb_properties.properties[enb_properties_index]->eNB_name         = strdup(enb_name);
-          g_enb_properties.properties[enb_properties_index]->tac              = (uint16_t)atoi(tac);
-          g_enb_properties.properties[enb_properties_index]->mcc              = (uint16_t)atoi(mcc);
-          g_enb_properties.properties[enb_properties_index]->mnc              = (uint16_t)atoi(mnc);
-          g_enb_properties.properties[enb_properties_index]->mnc_digit_length = strlen(mnc);
-          AssertFatal((g_enb_properties.properties[enb_properties_index]->mnc_digit_length == 2) ||
-                      (g_enb_properties.properties[enb_properties_index]->mnc_digit_length == 3),
-                      "BAD MNC DIGIT LENGTH %d",
-                      g_enb_properties.properties[i]->mnc_digit_length);
-
-
-          setting_mme_addresses = config_setting_get_member (setting_enb, ENB_CONFIG_STRING_MME_IP_ADDRESS);
-          num_mme_address     = config_setting_length(setting_mme_addresses);
-          g_enb_properties.properties[enb_properties_index]->nb_mme = 0;
-
-          for (j = 0; j < num_mme_address; j++) {
-            setting_mme_address = config_setting_get_elem(setting_mme_addresses, j);
-
-            if (  !(
-                   config_setting_lookup_string(setting_mme_address, ENB_CONFIG_STRING_MME_IPV4_ADDRESS, (const char **)&ipv4)
-                   && config_setting_lookup_string(setting_mme_address, ENB_CONFIG_STRING_MME_IPV6_ADDRESS, (const char **)&ipv6)
-                   && config_setting_lookup_string(setting_mme_address, ENB_CONFIG_STRING_MME_IP_ADDRESS_ACTIVE, (const char **)&active)
-                   && config_setting_lookup_string(setting_mme_address, ENB_CONFIG_STRING_MME_IP_ADDRESS_PREFERENCE, (const char **)&preference)
-                 )
-              ) {
-              AssertError (0, parse_errors ++,
-                           "Failed to parse eNB configuration file %s, %d th enb %d th mme address !\n",
-                           lib_config_file_name_pP, i, j);
-              continue; // FIXME will prevent segfaults below, not sure what happens at function exit...
-            }
-
-            g_enb_properties.properties[enb_properties_index]->nb_mme += 1;
-
-            g_enb_properties.properties[enb_properties_index]->mme_ip_address[j].ipv4_address = strdup(ipv4);
-            g_enb_properties.properties[enb_properties_index]->mme_ip_address[j].ipv6_address = strdup(ipv6);
-
-            if (strcmp(active, "yes") == 0) {
-              g_enb_properties.properties[enb_properties_index]->mme_ip_address[j].active = 1;
-            } // else { (calloc)
-
-            if (strcmp(preference, "ipv4") == 0) {
-              g_enb_properties.properties[enb_properties_index]->mme_ip_address[j].ipv4 = 1;
-            } else if (strcmp(preference, "ipv6") == 0) {
-              g_enb_properties.properties[enb_properties_index]->mme_ip_address[j].ipv6 = 1;
-            } else if (strcmp(preference, "no") == 0) {
-              g_enb_properties.properties[enb_properties_index]->mme_ip_address[j].ipv4 = 1;
-              g_enb_properties.properties[enb_properties_index]->mme_ip_address[j].ipv6 = 1;
-            }
-          }
-          // SCTP SETTING
-          g_enb_properties.properties[enb_properties_index]->sctp_out_streams = SCTP_OUT_STREAMS;
-          g_enb_properties.properties[enb_properties_index]->sctp_in_streams  = SCTP_IN_STREAMS;
-          subsetting = config_setting_get_member (setting_enb, ENB_CONFIG_STRING_SCTP_CONFIG);
-
-          if (subsetting != NULL) {
-            if ( (config_setting_lookup_int( subsetting, ENB_CONFIG_STRING_SCTP_INSTREAMS, &my_int) )) {
-              g_enb_properties.properties[enb_properties_index]->sctp_in_streams = (uint16_t)my_int;
-            }
-
-            if ( (config_setting_lookup_int( subsetting, ENB_CONFIG_STRING_SCTP_OUTSTREAMS, &my_int) )) {
-              g_enb_properties.properties[enb_properties_index]->sctp_out_streams = (uint16_t)my_int;
-            }
-          }
-
-
-          // NETWORK_INTERFACES
-          subsetting = config_setting_get_member (setting_enb, ENB_CONFIG_STRING_NETWORK_INTERFACES_CONFIG);
-
-          if (subsetting != NULL) {
-            if (  (
-                   config_setting_lookup_string( subsetting, ENB_CONFIG_STRING_ENB_INTERFACE_NAME_FOR_S1_MME,
-                                                 (const char **)&enb_interface_name_for_S1_MME)
-                   && config_setting_lookup_string( subsetting, ENB_CONFIG_STRING_ENB_IPV4_ADDRESS_FOR_S1_MME,
-                                                    (const char **)&enb_ipv4_address_for_S1_MME)
-                   && config_setting_lookup_string( subsetting, ENB_CONFIG_STRING_ENB_INTERFACE_NAME_FOR_S1U,
-                                                    (const char **)&enb_interface_name_for_S1U)
-                   && config_setting_lookup_string( subsetting, ENB_CONFIG_STRING_ENB_IPV4_ADDR_FOR_S1U,
-                                                    (const char **)&enb_ipv4_address_for_S1U)
-                   && config_setting_lookup_int(subsetting, ENB_CONFIG_STRING_ENB_PORT_FOR_S1U,
-                                                &enb_port_for_S1U)
-                 )
-              ) {
-              g_enb_properties.properties[enb_properties_index]->enb_interface_name_for_S1U = strdup(enb_interface_name_for_S1U);
-              cidr = enb_ipv4_address_for_S1U;
-              address = strtok(cidr, "/");
-
-              if (address) {
-                IPV4_STR_ADDR_TO_INT_NWBO ( address, g_enb_properties.properties[enb_properties_index]->enb_ipv4_address_for_S1U, "BAD IP ADDRESS FORMAT FOR eNB S1_U !\n" );
-              }
-
-              g_enb_properties.properties[enb_properties_index]->enb_port_for_S1U = enb_port_for_S1U;
-
-              g_enb_properties.properties[enb_properties_index]->enb_interface_name_for_S1_MME = strdup(enb_interface_name_for_S1_MME);
-              cidr = enb_ipv4_address_for_S1_MME;
-              address = strtok(cidr, "/");
-
-              if (address) {
-                IPV4_STR_ADDR_TO_INT_NWBO ( address, g_enb_properties.properties[enb_properties_index]->enb_ipv4_address_for_S1_MME, "BAD IP ADDRESS FORMAT FOR eNB S1_MME !\n" );
-              }
-            }
-          } // if (subsetting != NULL) {
-          enb_properties_index += 1;
-        } // if (strcmp(active_enb[j], enb_name) == 0)
-      } // for (j=0; j < num_enb_properties; j++)
-    } // for (i = 0; i < num_enbs; i++)
-  } //   if (setting != NULL) {
-
-  g_enb_properties.number += num_enb_properties;
-
-
-  AssertFatal (parse_errors == 0,
-               "Failed to parse eNB configuration file %s, found %d error%s !\n",
-               lib_config_file_name_pP, parse_errors, parse_errors > 1 ? "s" : "");
-}
-/*------------------------------------------------------------------------------*/
-const Enb_properties_array_t *et_enb_config_get(void)
-{
-  return &g_enb_properties;
-}
-/*------------------------------------------------------------------------------*/
-void et_eNB_app_register(const Enb_properties_array_t *enb_properties)
-{
-  uint32_t         enb_id = 0;
-  uint32_t         mme_id = 0;
-  MessageDef      *msg_p  = NULL;
-  char            *str    = NULL;
-  struct in_addr   addr   = {.s_addr = 0};
-
-
-  g_scenario->register_enb_pending = 0;
-  for (enb_id = 0; (enb_id < enb_properties->number) ; enb_id++) {
-    {
-      s1ap_register_enb_req_t *s1ap_register_eNB = NULL;
-
-      /* note:  there is an implicit relationship between the data structure and the message name */
-      msg_p = itti_alloc_new_message (TASK_ENB_APP, S1AP_REGISTER_ENB_REQ);
-
-      s1ap_register_eNB = &S1AP_REGISTER_ENB_REQ(msg_p);
-
-      /* Some default/random parameters */
-      s1ap_register_eNB->eNB_id           = enb_properties->properties[enb_id]->eNB_id;
-      s1ap_register_eNB->cell_type        = enb_properties->properties[enb_id]->cell_type;
-      s1ap_register_eNB->eNB_name         = enb_properties->properties[enb_id]->eNB_name;
-      s1ap_register_eNB->tac              = enb_properties->properties[enb_id]->tac;
-      s1ap_register_eNB->mcc              = enb_properties->properties[enb_id]->mcc;
-      s1ap_register_eNB->mnc              = enb_properties->properties[enb_id]->mnc;
-      s1ap_register_eNB->mnc_digit_length = enb_properties->properties[enb_id]->mnc_digit_length;
-
-      s1ap_register_eNB->nb_mme =         enb_properties->properties[enb_id]->nb_mme;
-      AssertFatal (s1ap_register_eNB->nb_mme <= S1AP_MAX_NB_MME_IP_ADDRESS, "Too many MME for eNB %d (%d/%d)!", enb_id, s1ap_register_eNB->nb_mme,
-                   S1AP_MAX_NB_MME_IP_ADDRESS);
-
-      for (mme_id = 0; mme_id < s1ap_register_eNB->nb_mme; mme_id++) {
-        s1ap_register_eNB->mme_ip_address[mme_id].ipv4 = enb_properties->properties[enb_id]->mme_ip_address[mme_id].ipv4;
-        s1ap_register_eNB->mme_ip_address[mme_id].ipv6 = enb_properties->properties[enb_id]->mme_ip_address[mme_id].ipv6;
-        strncpy (s1ap_register_eNB->mme_ip_address[mme_id].ipv4_address,
-                 enb_properties->properties[enb_id]->mme_ip_address[mme_id].ipv4_address,
-                 sizeof(s1ap_register_eNB->mme_ip_address[0].ipv4_address));
-        strncpy (s1ap_register_eNB->mme_ip_address[mme_id].ipv6_address,
-                 enb_properties->properties[enb_id]->mme_ip_address[mme_id].ipv6_address,
-                 sizeof(s1ap_register_eNB->mme_ip_address[0].ipv6_address));
-      }
-
-      s1ap_register_eNB->sctp_in_streams       = enb_properties->properties[enb_id]->sctp_in_streams;
-      s1ap_register_eNB->sctp_out_streams      = enb_properties->properties[enb_id]->sctp_out_streams;
-
-
-      s1ap_register_eNB->enb_ip_address.ipv6 = 0;
-      s1ap_register_eNB->enb_ip_address.ipv4 = 1;
-      addr.s_addr = enb_properties->properties[enb_id]->enb_ipv4_address_for_S1_MME;
-      str = inet_ntoa(addr);
-      strcpy(s1ap_register_eNB->enb_ip_address.ipv4_address, str);
-
-      g_scenario->register_enb_pending++;
-      itti_send_msg_to_task (TASK_S1AP, ENB_MODULE_ID_TO_INSTANCE(enb_id), msg_p);
-    }
-  }
-}
-/*------------------------------------------------------------------------------*/
-void *et_eNB_app_task(void *args_p)
-{
-  et_scenario_t                  *scenario = (et_scenario_t*)args_p;
-  MessageDef                     *msg_p           = NULL;
-  const char                     *msg_name        = NULL;
-  instance_t                      instance        = 0;
-  int                             result          = 0;
-
-  itti_mark_task_ready (TASK_ENB_APP);
-
-  do {
-    // Wait for a message
-    itti_receive_msg (TASK_ENB_APP, &msg_p);
-
-    msg_name = ITTI_MSG_NAME (msg_p);
-    instance = ITTI_MSG_DESTINATION_INSTANCE (msg_p);
-
-    switch (ITTI_MSG_ID(msg_p)) {
-    case TERMINATE_MESSAGE:
-      itti_exit_task ();
-      break;
-
-    case S1AP_REGISTER_ENB_CNF:
-      LOG_I(ENB_APP, "[eNB %d] Received %s: associated MME %d\n", instance, msg_name,
-            S1AP_REGISTER_ENB_CNF(msg_p).nb_mme);
-
-      DevAssert(scenario->register_enb_pending > 0);
-      scenario->register_enb_pending--;
-
-      /* Check if at least eNB is registered with one MME */
-      if (S1AP_REGISTER_ENB_CNF(msg_p).nb_mme > 0) {
-        scenario->registered_enb++;
-      }
-
-      /* Check if all register eNB requests have been processed */
-      if (scenario->register_enb_pending == 0) {
-        timer_remove(scenario->enb_register_retry_timer_id);
-        if (scenario->registered_enb == scenario->enb_properties->number) {
-          /* If all eNB are registered, start scenario */
-          LOG_D(ENB_APP, " All eNB are now associated with a MME\n");
-          et_event_t event;
-          event.code = ET_EVENT_S1C_CONNECTED;
-          et_scenario_fsm_notify_event(event);
-        } else {
-          uint32_t not_associated = scenario->enb_properties->number - scenario->registered_enb;
-
-          LOG_W(ENB_APP, " %d eNB %s not associated with a MME, retrying registration in %d seconds ...\n",
-                not_associated, not_associated > 1 ? "are" : "is", ET_ENB_REGISTER_RETRY_DELAY);
-
-          /* Restart the eNB registration process in ENB_REGISTER_RETRY_DELAY seconds */
-          if (timer_setup (ET_ENB_REGISTER_RETRY_DELAY, 0, TASK_ENB_APP, INSTANCE_DEFAULT, TIMER_ONE_SHOT,
-                           NULL, &scenario->enb_register_retry_timer_id) < 0) {
-            LOG_E(ENB_APP, " Can not start eNB register retry timer, use \"sleep\" instead!\n");
-
-            sleep(ET_ENB_REGISTER_RETRY_DELAY);
-            /* Restart the registration process */
-            scenario->registered_enb = 0;
-            et_eNB_app_register (scenario->enb_properties);
-          }
-        }
-      }
-
-      break;
-
-    case S1AP_DEREGISTERED_ENB_IND:
-      LOG_W(ENB_APP, "[eNB %d] Received %s: associated MME %d\n", instance, msg_name,
-            S1AP_DEREGISTERED_ENB_IND(msg_p).nb_mme);
-
-      /* TODO handle recovering of registration */
-      break;
-
-    case TIMER_HAS_EXPIRED:
-      LOG_I(ENB_APP, " Received %s: timer_id %d\n", msg_name, TIMER_HAS_EXPIRED(msg_p).timer_id);
-
-      if (TIMER_HAS_EXPIRED (msg_p).timer_id == scenario->enb_register_retry_timer_id) {
-        /* Restart the registration process */
-        scenario->registered_enb = 0;
-        et_eNB_app_register (scenario->enb_properties);
-      }
-      break;
-
-    default:
-      LOG_E(ENB_APP, "Received unexpected message %s\n", msg_name);
-      break;
-    }
-
-    result = itti_free (ITTI_MSG_ORIGIN_ID(msg_p), msg_p);
-    AssertFatal (result == EXIT_SUCCESS, "Failed to free memory (%d)!\n", result);
-  } while (1);
-  return NULL;
-}
-
-//------------------------------------------------------------------------------
-int et_play_scenario(et_scenario_t* const scenario, const struct shift_packet_s *shifts)
-{
-  et_event_t             event;
-  struct shift_packet_s *shift                 = shifts;
-  et_packet_t           *packet                = NULL;
-  et_packet_t           *next_packet           = NULL;
-  struct timeval         shift_all_packets     = { .tv_sec = 0, .tv_usec = 0 };
-  struct timeval         relative_last_sent_packet     = { .tv_sec = 0, .tv_usec = 0 };
-  struct timeval         relative_last_received_packet = { .tv_sec = 0, .tv_usec = 0 };
-  struct timeval         initial_time          = { .tv_sec = 0, .tv_usec = 0 };
-  char                   first_packet          = 1;
-  char                   first_sent_packet     = 1;
-  char                   first_received_packet = 1;
-
-  // first apply timing shifts if requested
-  while (shift) {
-    packet = scenario->list_packet;
-    while (packet) {
-      //fprintf(stdout, "*shift: %p\n", shift);
-      //fprintf(stdout, "\tframe_number:       %d\n", shift->frame_number);
-      //fprintf(stdout, "\tshift_seconds:      %ld\n", shift->shift_seconds);
-      //fprintf(stdout, "\tshift_microseconds: %ld\n", shift->shift_microseconds);
-      //fprintf(stdout, "\tsingle:             %d\n\n", shift->single);
-      //fprintf(stdout, "\tshift_all_packets_seconds:      %ld\n", shift_all_packets.tv_sec);
-      //fprintf(stdout, "\tshift_all_packets_microseconds: %ld\n", shift_all_packets.tv_usec);
-
-      AssertFatal((packet->time_relative_to_first_packet.tv_sec >= 0) && (packet->time_relative_to_first_packet.tv_usec >= 0),
-          "Bad timing result time_relative_to_first_packet=%d.%d packet num %u, original frame number %u",
-          packet->time_relative_to_first_packet.tv_sec,
-          packet->time_relative_to_first_packet.tv_usec,
-          packet->packet_number,
-          packet->original_frame_number);
-      AssertFatal((packet->time_relative_to_last_received_packet.tv_sec >= 0) && (packet->time_relative_to_last_received_packet.tv_usec >= 0),
-          "Bad timing result time_relative_to_last_received_packet=%d.%d packet num %u, original frame number %u",
-          packet->time_relative_to_last_received_packet.tv_sec,
-          packet->time_relative_to_last_received_packet.tv_usec,
-          packet->packet_number,
-          packet->original_frame_number);
-      AssertFatal((packet->time_relative_to_last_sent_packet.tv_sec >= 0) && (packet->time_relative_to_last_sent_packet.tv_usec >= 0),
-          "Bad timing result time_relative_to_last_sent_packet=%d.%d packet num %u, original frame number %u",
-          packet->time_relative_to_last_sent_packet.tv_sec,
-          packet->time_relative_to_last_sent_packet.tv_usec,
-          packet->packet_number,
-          packet->original_frame_number);
-//      fprintf(stdout, "\tpacket num %u, original frame number %u time_relative_to_first_packet=%d.%d\n",
-//          packet->packet_number,
-//          packet->original_frame_number,
-//          packet->time_relative_to_first_packet.tv_sec,
-//          packet->time_relative_to_first_packet.tv_usec);
-//      fprintf(stdout, "\tpacket num %u, original frame number %u time_relative_to_last_received_packet=%d.%d\n",
-//          packet->packet_number,
-//          packet->original_frame_number,
-//          packet->time_relative_to_last_received_packet.tv_sec,
-//          packet->time_relative_to_last_received_packet.tv_usec);
-//      fprintf(stdout, "\tpacket num %u, original frame number %u time_relative_to_last_sent_packet=%d.%d\n",
-//          packet->packet_number,
-//          packet->original_frame_number,
-//          packet->time_relative_to_last_sent_packet.tv_sec,
-//          packet->time_relative_to_last_sent_packet.tv_usec);
-
-      if ((shift->single) && (shift->frame_number == packet->original_frame_number)) {
-        struct timeval t_offset     = { .tv_sec = shift->shift_seconds, .tv_usec = shift->shift_microseconds };
-        et_packet_shift_timing(packet, &t_offset);
-        next_packet = packet->next;
-        if (next_packet) {
-          t_offset.tv_sec  = -t_offset.tv_sec;
-          t_offset.tv_usec = -t_offset.tv_usec;
-
-          if (packet->action == ET_PACKET_ACTION_S1C_SEND) {
-            timeval_add(&next_packet->time_relative_to_last_sent_packet, &next_packet->time_relative_to_last_sent_packet, &t_offset);
-          } else if (packet->action == ET_PACKET_ACTION_S1C_RECEIVE) {
-            timeval_add(&next_packet->time_relative_to_last_received_packet, &next_packet->time_relative_to_last_received_packet, &t_offset);
-          }
-        }
-      }
-      if ((0 == shift->single) && (shift->frame_number == packet->original_frame_number)) {
-        shift_all_packets.tv_sec = shift->shift_seconds;
-        shift_all_packets.tv_usec = shift->shift_microseconds;
-        timeval_add(&packet->time_relative_to_first_packet, &packet->time_relative_to_first_packet, &shift_all_packets);
-        fprintf(stdout, "\tpacket num %u, now original frame number %u time_relative_to_first_packet=%d.%d\n",
-            packet->packet_number,
-            packet->original_frame_number,
-            packet->time_relative_to_first_packet.tv_sec,
-            packet->time_relative_to_first_packet.tv_usec);
-        AssertFatal((packet->time_relative_to_first_packet.tv_sec >= 0) && (packet->time_relative_to_first_packet.tv_usec >= 0),
-            "Bad timing result time_relative_to_first_packet=%d.%d packet num %u, original frame number %u",
-            packet->time_relative_to_first_packet.tv_sec,
-            packet->time_relative_to_first_packet.tv_usec,
-            packet->packet_number,
-            packet->original_frame_number);
-      } else if ((0 == shift->single)  && (shift->frame_number < packet->original_frame_number)) {
-        timeval_add(&packet->time_relative_to_first_packet, &packet->time_relative_to_first_packet, &shift_all_packets);
-        fprintf(stdout, "\tpacket num %u, now original frame number %u time_relative_to_first_packet=%d.%d\n",
-            packet->packet_number,
-            packet->original_frame_number,
-            packet->time_relative_to_first_packet.tv_sec,
-            packet->time_relative_to_first_packet.tv_usec);
-        AssertFatal((packet->time_relative_to_first_packet.tv_sec >= 0) && (packet->time_relative_to_first_packet.tv_usec >= 0),
-            "Bad timing result time_relative_to_first_packet=%d.%d packet num %u, original frame number %u",
-            packet->time_relative_to_first_packet.tv_sec,
-            packet->time_relative_to_first_packet.tv_usec,
-            packet->packet_number,
-            packet->original_frame_number);
-      }
-      packet = packet->next;
-    }
-    shift = shift->next;
-  }
-  // now recompute time_relative_to_last_received_packet, time_relative_to_last_sent_packet
-  packet = scenario->list_packet;
-  while (packet) {
-    if (first_packet > 0) {
-      initial_time = packet->time_relative_to_first_packet;
-      packet->time_relative_to_first_packet.tv_sec  = 0;
-      packet->time_relative_to_first_packet.tv_usec = 0;
-      first_packet = 0;
-    } else {
-      timersub(&packet->time_relative_to_first_packet, &initial_time,
-          &packet->time_relative_to_first_packet);
-    }
-    if (packet->action == ET_PACKET_ACTION_S1C_SEND) {
-      if (first_sent_packet > 0) {
-        relative_last_sent_packet = packet->time_relative_to_first_packet;
-        packet->time_relative_to_last_sent_packet.tv_sec  = 0;
-        packet->time_relative_to_last_sent_packet.tv_usec = 0;
-        first_sent_packet = 0;
-      } else {
-        timersub(&packet->time_relative_to_first_packet, &relative_last_sent_packet,
-            &packet->time_relative_to_last_sent_packet);
-        relative_last_sent_packet = packet->time_relative_to_first_packet;
-      }
-      if (first_received_packet > 0) {
-        packet->time_relative_to_last_received_packet.tv_sec  = 0;
-        packet->time_relative_to_last_received_packet.tv_usec = 0;
-      } else {
-        timersub(&packet->time_relative_to_first_packet, &relative_last_received_packet,
-            &packet->time_relative_to_last_received_packet);
-      }
-    } else if (packet->action == ET_PACKET_ACTION_S1C_RECEIVE) {
-      if (first_received_packet > 0) {
-        relative_last_received_packet.tv_sec = packet->time_relative_to_first_packet.tv_sec;
-        relative_last_received_packet.tv_usec = packet->time_relative_to_first_packet.tv_usec;
-        packet->time_relative_to_last_received_packet.tv_sec  = 0;
-        packet->time_relative_to_last_received_packet.tv_usec = 0;
-        first_received_packet = 0;
-      } else {
-        timersub(&packet->time_relative_to_first_packet, &relative_last_received_packet,
-            &packet->time_relative_to_last_received_packet);
-        relative_last_received_packet = packet->time_relative_to_first_packet;
-      }
-      if (first_sent_packet > 0) {
-        packet->time_relative_to_last_sent_packet.tv_sec  = 0;
-        packet->time_relative_to_last_sent_packet.tv_usec = 0;
-      } else {
-        timersub(&packet->time_relative_to_first_packet, &relative_last_sent_packet,
-            &packet->time_relative_to_last_sent_packet);
-      }
-    }
-    packet = packet->next;
-  }
-  //et_display_scenario(scenario);
-
-  // create SCTP ITTI task: same as eNB code
-  if (itti_create_task (TASK_SCTP, sctp_eNB_task, NULL) < 0) {
-    LOG_E(SCTP, "Create task for SCTP failed\n");
-    return -1;
-  }
-
-  // create S1AP ITTI task: not as same as eNB code
-  if (itti_create_task (TASK_S1AP, et_s1ap_eNB_task, NULL) < 0) {
-    LOG_E(S1AP, "Create task for S1AP failed\n");
-    return -1;
-  }
-
-  // create ENB_APP ITTI task: not as same as eNB code
-  if (itti_create_task (TASK_ENB_APP, et_eNB_app_task, scenario) < 0) {
-    LOG_E(ENB_APP, "Create task for ENB_APP failed\n");
-    return -1;
-  }
-
-  event.code = ET_EVENT_INIT;
-  event.u.init.scenario = scenario;
-  et_scenario_fsm_notify_event(event);
-
-
-  return 0;
-}
-
-//------------------------------------------------------------------------------
-static void et_usage (
-    int argc,
-    char *argv[])
-//------------------------------------------------------------------------------
-{
-  fprintf (stdout, "Please report any bug to: %s\n",PACKAGE_BUGREPORT);
-  fprintf (stdout, "Usage: %s [options]\n\n", argv[0]);
-  fprintf (stdout, "\n");
-  fprintf (stdout, "\t-d | --test-dir       <dir>                  Directory where a set of files related to a particular test are located\n");
-  fprintf (stdout, "\t-c | --enb-conf-file  <file>                 Provide an eNB config file, valid for the testbed\n");
-  fprintf (stdout, "\t-D | --delay-on-exit  <delay-in-sec>         Wait delay-in-sec before exiting\n");
-  fprintf (stdout, "\t-f | --shift-packet   <frame:[+|-]seconds[.usec]> Shift the timing of a packet'\n");
-  fprintf (stdout, "\t-F | --shift-packets  <frame:[+|-]seconds[.usec]> Shift the timing of packets starting at frame 'frame' included\n");
-  fprintf (stdout, "\t-m | --max-speed                             Play scenario as fast as possible without respecting frame timings\n");
-  fprintf (stdout, "\t-s | --scenario       <file>                 File name (with no path) of a test scenario that has to be replayed ()\n");
-  fprintf (stdout, "\n");
-  fprintf (stdout, "Other options:\n");
-  fprintf (stdout, "\t-h | --help                                  Print this help and return\n");
-  fprintf (stdout, "\t-v | --version                               Print informations about the version of this executable\n");
-  fprintf (stdout, "\n");
-}
-
-//------------------------------------------------------------------------------
-int
-et_config_parse_opt_line (
-  int argc,
-  char *argv[],
-  char **et_dir_name,
-  char **scenario_file_name,
-  char **enb_config_file_name,
-  shift_packet_t **shifts,
-  int *delay_on_exit)
-//------------------------------------------------------------------------------
-{
-  int                 option   = 0;
-  int                 rv       = 0;
-  shift_packet_t      *shift   = NULL;
-
-  enum long_option_e {
-    LONG_OPTION_START = 0x100, /* Start after regular single char options */
-    LONG_OPTION_ENB_CONF_FILE,
-    LONG_OPTION_SCENARIO_FILE,
-    LONG_OPTION_MAX_SPEED,
-    LONG_OPTION_TEST_DIR,
-    LONG_OPTION_DELAY_EXIT,
-    LONG_OPTION_SHIFT_PACKET,
-    LONG_OPTION_SHIFT_PACKETS,
-    LONG_OPTION_HELP,
-    LONG_OPTION_VERSION
-  };
-
-  static struct option long_options[] = {
-    {"enb-conf-file",  required_argument, 0, LONG_OPTION_ENB_CONF_FILE},
-    {"scenario ",      required_argument, 0, LONG_OPTION_SCENARIO_FILE},
-    {"max-speed ",     no_argument,       0, LONG_OPTION_MAX_SPEED},
-    {"test-dir",       required_argument, 0, LONG_OPTION_TEST_DIR},
-    {"delay-on-exit",  required_argument, 0, LONG_OPTION_DELAY_EXIT},
-    {"shift-packet",   required_argument, 0, LONG_OPTION_SHIFT_PACKET},
-    {"shift-packets",  required_argument, 0, LONG_OPTION_SHIFT_PACKETS},
-    {"help",           no_argument,       0, LONG_OPTION_HELP},
-    {"version",        no_argument,       0, LONG_OPTION_VERSION},
-     {NULL, 0, NULL, 0}
-  };
-
-  /*
-   * Parsing command line
-   */
-  while ((option = getopt_long (argc, argv, "vhmc:s:d:f:F", long_options, NULL)) != -1) {
-    switch (option) {
-      case LONG_OPTION_ENB_CONF_FILE:
-      case 'c':
-        if (optarg) {
-          *enb_config_file_name = strdup(optarg);
-          printf("eNB config file name is %s\n", *enb_config_file_name);
-          rv |= PLAY_SCENARIO;
-        }
-        break;
-
-      case LONG_OPTION_SCENARIO_FILE:
-      case 's':
-        if (optarg) {
-          *scenario_file_name = strdup(optarg);
-          printf("Scenario file name is %s\n", *scenario_file_name);
-          rv |= PLAY_SCENARIO;
-        }
-        break;
-
-      case LONG_OPTION_TEST_DIR:
-      case 'd':
-        if (optarg) {
-          *et_dir_name = strdup(optarg);
-          if (is_file_exists(*et_dir_name, "test dirname") != GS_IS_DIR) {
-            fprintf(stderr, "Please provide a valid test dirname, %s is not a valid directory name\n", *et_dir_name);
-            exit(1);
-          }
-          printf("Test dir name is %s\n", *et_dir_name);
-        }
-        break;
-
-      case LONG_OPTION_DELAY_EXIT:
-      case 'D':
-        if (optarg) {
-          delay_on_exit = atoi(optarg);
-          if (0 > delay_on_exit) {
-            fprintf(stderr, "Please provide a valid -D/--delay-on-exit argument, %s is not a valid value\n", delay_on_exit);
-            exit(1);
-          }
-          printf("Delay on exit is %d\n", (int) delay_on_exit);
-        }
-        break;
-
-
-      case LONG_OPTION_SHIFT_PACKET:
-      case 'f':
-        if (optarg) {
-          if (NULL == *shifts) {
-            shift = calloc(1, sizeof (*shift));
-            *shifts = shift;
-          } else {
-            shift->next = calloc(1, sizeof (*shift));
-            shift = shift->next;
-          }
-          shift->single = 1;
-          printf("Arg Shift packet %s\n", optarg);
-          et_get_shift_arg(optarg, shift);
-        }
-        break;
-
-      case LONG_OPTION_SHIFT_PACKETS:
-      case 'F':
-        if (optarg) {
-          if (NULL == *shifts) {
-            shift = calloc(1, sizeof (*shift));
-            *shifts = shift;
-          } else {
-            shift->next = calloc(1, sizeof (*shift));
-            shift = shift->next;
-          }
-          et_get_shift_arg(optarg, shift);
-          printf("Arg Shift packets %s\n", optarg);
-        }
-        break;
-
-      case LONG_OPTION_MAX_SPEED:
-      case 'm':
-        g_max_speed = 1;
-        break;
-
-      case LONG_OPTION_VERSION:
-      case 'v':
-        printf("Version %s\n", PACKAGE_VERSION);
-        exit (0);
-        break;
-
-      case LONG_OPTION_HELP:
-      case 'h':
-      default:
-        et_usage (argc, argv);
-        exit (0);
-    }
-  }
-  if (NULL == *et_dir_name) {
-    fprintf(stderr, "Please provide a valid test dirname\n");
-    exit(1);
-  }
-  if (chdir(*et_dir_name) != 0) {
-    fprintf(stderr, "ERROR: chdir %s returned %s\n", *et_dir_name, strerror(errno));
-    exit(1);
-  }
-  if (rv & PLAY_SCENARIO) {
-    if (NULL == *enb_config_file_name) {
-      fprintf(stderr, "ERROR: please provide the original eNB config file name that should be in %s\n", *et_dir_name);
-    }
-    if (is_file_exists(*enb_config_file_name, "eNB config file") != GS_IS_FILE) {
-      fprintf(stderr, "ERROR: original eNB config file name %s is not found in dir %s\n", *enb_config_file_name, *et_dir_name);
-    }
-    et_enb_config_init(*enb_config_file_name);
-
-    if (NULL == *scenario_file_name) {
-      fprintf(stderr, "ERROR: please provide the scenario file name that should be in %s\n", *et_dir_name);
-    }
-    if (is_file_exists(*scenario_file_name, "Scenario file") != GS_IS_FILE) {
-      fprintf(stderr, "ERROR: Scenario file name %s is not found in dir %s\n", *scenario_file_name, *et_dir_name);
-    }
-  }
-  return rv;
-}
-
-//------------------------------------------------------------------------------
-int main( int argc, char **argv )
-//------------------------------------------------------------------------------
-{
-  int              actions              = 0;
-  char            *et_dir_name          = NULL;
-  char            *scenario_file_name   = NULL;
-  char            *enb_config_file_name = NULL;
-  struct shift_packet_s *shifts         = NULL;
-  int              ret                  = 0;
-  int              delay_on_exit        = 0;
-  et_scenario_t   *scenario             = NULL;
-  char             play_scenario_filename[NAME_MAX];
-
-  memset(play_scenario_filename, 0, sizeof(play_scenario_filename));
-
-  // logging
-  logInit();
-  set_glog(LOG_TRACE, LOG_MED);
-
-  itti_init(TASK_MAX, tasks_info);
-
-  set_comp_log(ENB_APP, LOG_TRACE, LOG_MED, 1);
-  set_comp_log(S1AP, LOG_TRACE, LOG_MED, 1);
-  set_comp_log(SCTP, LOG_TRACE, LOG_FULL, 1);
-  asn_debug      = 0;
-  asn1_xer_print = 1;
-
-  //parameters
-  actions = et_config_parse_opt_line (argc, argv, &et_dir_name, &scenario_file_name, &enb_config_file_name, &shifts, &delay_on_exit); //Command-line options
-  if  (actions & PLAY_SCENARIO) {
-    if (et_generate_xml_scenario(et_dir_name, scenario_file_name,enb_config_file_name, play_scenario_filename) == 0) {
-      if (NULL != (scenario = et_generate_scenario(play_scenario_filename))) {
-        ret = et_play_scenario(scenario, shifts);
-      } else {
-        fprintf(stderr, "ERROR: Could not generate scenario from tsml file\n");
-        ret = -1;
-      }
-    } else {
-      fprintf(stderr, "ERROR: Could not generate tsml scenario from xml file\n");
-      ret = -1;
-    }
-    et_free_pointer(et_dir_name);
-    et_free_pointer(scenario_file_name);
-    et_free_pointer(enb_config_file_name);
-  }
-  itti_wait_tasks_end();
-  if (0 < delay_on_exit) {
-    sleep(delay_on_exit);
-  }
-  return ret;
-}
-
-
diff --git a/openair3/TEST/EPC_TEST/play_scenario.h b/openair3/TEST/EPC_TEST/play_scenario.h
deleted file mode 100644
index 6a2264f8bada61664d660566db82e0022f634939..0000000000000000000000000000000000000000
--- a/openair3/TEST/EPC_TEST/play_scenario.h
+++ /dev/null
@@ -1,499 +0,0 @@
-/*
- * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The OpenAirInterface Software Alliance licenses this file to You under
- * the OAI Public License, Version 1.1  (the "License"); you may not use this file
- * except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.openairinterface.org/?page_id=698
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *-------------------------------------------------------------------------------
- * For more information about the OpenAirInterface (OAI) Software Alliance:
- *      contact@openairinterface.org
- */
-
-/*
-                                play_scenario.h
-                             -------------------
-  AUTHOR  : Lionel GAUTHIER
-  COMPANY : EURECOM
-  EMAIL   : Lionel.Gauthier@eurecom.fr
-*/
-
-#ifndef PLAY_SCENARIO_H_
-#define PLAY_SCENARIO_H_
-#  include <time.h>
-#  include <stdint.h>
-#  include <libxml/tree.h>
-#  include <libxml/xpath.h>
-#  include <netinet/in.h>
-
-#include "S1AP-PDU.h"
-#include "s1ap_ies_defs.h"
-#include "play_scenario_s1ap_eNB_defs.h"
-#include "hashtable.h"
-#include "asn_compare.h"
-
-#define ET_XPATH_EXPRESSION_MAX_LENGTH 400
-
-
-// powers of 2
-#define ET_BIT_MASK_MATCH_SCTP_STREAM 1
-#define ET_BIT_MASK_MATCH_SCTP_SSN    2
-//#define ET_BIT_MASK_MATCH_S1AP_    2
-
-#define MAX_ENB 16
-
-#define ENB_CONFIG_STRING_ACTIVE_ENBS                   "Active_eNBs"
-
-#define ENB_CONFIG_STRING_ENB_LIST                      "eNBs"
-#define ENB_CONFIG_STRING_ENB_ID                        "eNB_ID"
-#define ENB_CONFIG_STRING_CELL_TYPE                     "cell_type"
-#define ENB_CONFIG_STRING_ENB_NAME                      "eNB_name"
-
-#define ENB_CONFIG_STRING_TRACKING_AREA_CODE            "tracking_area_code"
-#define ENB_CONFIG_STRING_MOBILE_COUNTRY_CODE           "mobile_country_code"
-#define ENB_CONFIG_STRING_MOBILE_NETWORK_CODE           "mobile_network_code"
-
-
-#define ENB_CONFIG_STRING_MME_IP_ADDRESS                "mme_ip_address"
-#define ENB_CONFIG_STRING_MME_IPV4_ADDRESS              "ipv4"
-#define ENB_CONFIG_STRING_MME_IPV6_ADDRESS              "ipv6"
-#define ENB_CONFIG_STRING_MME_IP_ADDRESS_ACTIVE         "active"
-#define ENB_CONFIG_STRING_MME_IP_ADDRESS_PREFERENCE     "preference"
-
-#define ENB_CONFIG_STRING_SCTP_CONFIG                    "SCTP"
-#define ENB_CONFIG_STRING_SCTP_INSTREAMS                 "SCTP_INSTREAMS"
-#define ENB_CONFIG_STRING_SCTP_OUTSTREAMS                "SCTP_OUTSTREAMS"
-
-#define ENB_CONFIG_STRING_NETWORK_INTERFACES_CONFIG     "NETWORK_INTERFACES"
-#define ENB_CONFIG_STRING_ENB_INTERFACE_NAME_FOR_S1_MME "ENB_INTERFACE_NAME_FOR_S1_MME"
-#define ENB_CONFIG_STRING_ENB_IPV4_ADDRESS_FOR_S1_MME   "ENB_IPV4_ADDRESS_FOR_S1_MME"
-#define ENB_CONFIG_STRING_ENB_INTERFACE_NAME_FOR_S1U    "ENB_INTERFACE_NAME_FOR_S1U"
-#define ENB_CONFIG_STRING_ENB_IPV4_ADDR_FOR_S1U         "ENB_IPV4_ADDRESS_FOR_S1U"
-#define ENB_CONFIG_STRING_ENB_PORT_FOR_S1U              "ENB_PORT_FOR_S1U"
-
-
-typedef struct shift_packet_s {
-  unsigned int           frame_number;      // original frame number
-  int                    shift_seconds;
-  int                    shift_microseconds;
-  int                    single;            // shift timing only for this packet (not also following packets)
-  struct shift_packet_s *next;
-} shift_packet_t;
-
-
-typedef struct mme_ip_address_s {
-  unsigned  ipv4:1;
-  unsigned  ipv6:1;
-  unsigned  active:1;
-  char     *ipv4_address;
-  char     *ipv6_address;
-} mme_ip_address_t;
-
-#define IPV4_STR_ADDR_TO_INT_NWBO(AdDr_StR,NwBo,MeSsAgE ) do {\
-            struct in_addr inp;\
-            if ( inet_aton(AdDr_StR, &inp ) < 0 ) {\
-                AssertFatal (0, MeSsAgE);\
-            } else {\
-                NwBo = inp.s_addr;\
-            }\
-        } while (0);
-
-
-typedef struct Enb_properties_s {
-  /* Unique eNB_id to identify the eNB within EPC.
-   * For macro eNB ids this field should be 20 bits long.
-   * For home eNB ids this field should be 28 bits long.
-   */
-  uint32_t            eNB_id;
-
-  /* The type of the cell */
-  enum cell_type_e    cell_type;
-
-  /* Optional name for the cell
-   * NOTE: the name can be NULL (i.e no name) and will be cropped to 150
-   * characters.
-   */
-  char               *eNB_name;
-
-  /* Tracking area code */
-  uint16_t            tac;
-
-  /* Mobile Country Code
-   * Mobile Network Code
-   */
-  uint16_t            mcc;
-  uint16_t            mnc;
-  uint8_t             mnc_digit_length;
-
-
-
-  /* Physical parameters */
-
-  int16_t                 Nid_cell[1+MAX_NUM_CCs];// for testing, change later
-  /* Nb of MME to connect to */
-  uint8_t             nb_mme;
-  /* List of MME to connect to */
-  mme_ip_address_t    mme_ip_address[S1AP_MAX_NB_MME_IP_ADDRESS];
-
-  int                 sctp_in_streams;
-  int                 sctp_out_streams;
-
-  char               *enb_interface_name_for_S1U;
-  in_addr_t           enb_ipv4_address_for_S1U;
-  tcp_udp_port_t      enb_port_for_S1U;
-
-  char               *enb_interface_name_for_S1_MME;
-  in_addr_t           enb_ipv4_address_for_S1_MME;
-
-} Enb_properties_t;
-
-typedef struct Enb_properties_array_s {
-  int                  number;
-  Enb_properties_t    *properties[MAX_ENB];
-} Enb_properties_array_t;
-
-#  define ET_ENB_REGISTER_RETRY_DELAY 3
-#  define ET_FSM_STATE_WAITING_RX_EVENT_DELAY_SEC 15
-
-typedef enum {
-  ET_PACKET_STATUS_START = 0,
-  ET_PACKET_STATUS_NONE = ET_PACKET_STATUS_START,
-  ET_PACKET_STATUS_NOT_TAKEN_IN_ACCOUNT,
-  ET_PACKET_STATUS_SCHEDULED_FOR_SENDING,
-  ET_PACKET_STATUS_SENT,
-  ET_PACKET_STATUS_SCHEDULED_FOR_RECEIVING,
-  ET_PACKET_STATUS_RECEIVED,
-  ET_PACKET_STATUS_END
-} et_packet_status_t;
-
-typedef enum {
-  ET_FSM_STATE_START = 0,
-  ET_FSM_STATE_NULL = ET_FSM_STATE_START,
-  ET_FSM_STATE_CONNECTING_S1C,
-  ET_FSM_STATE_WAITING_RX_EVENT,
-  ET_FSM_STATE_WAITING_TX_EVENT,
-  ET_FSM_STATE_RUNNING,
-  ET_FSM_STATE_END
-} et_fsm_state_t;
-
-enum COMPARE_ERR_CODE_e;
-
-typedef enum {
-  ET_ERROR_MATCH_START = COMPARE_ERR_CODE_END,
-  ET_ERROR_MATCH_PACKET_SCTP_CHUNK_TYPE = ET_ERROR_MATCH_START,
-  ET_ERROR_MATCH_PACKET_SCTP_PPID,
-  ET_ERROR_MATCH_PACKET_SCTP_ASSOC_ID,
-  ET_ERROR_MATCH_PACKET_SCTP_STREAM_ID,
-  ET_ERROR_MATCH_PACKET_SCTP_SSN,
-  ET_ERROR_MATCH_PACKET_S1AP_PRESENT,
-  ET_ERROR_MATCH_PACKET_S1AP_PROCEDURE_CODE,
-  ET_ERROR_MATCH_PACKET_S1AP_CRITICALITY,
-  ET_ERROR_MATCH_END
-} et_error_match_code_t;
-
-
-
-
-typedef enum {
-  ET_PACKET_ACTION_S1C_START = 0,
-  ET_PACKET_ACTION_S1C_NULL  = ET_PACKET_ACTION_S1C_START,
-  ET_PACKET_ACTION_S1C_SEND,
-  ET_PACKET_ACTION_S1C_RECEIVE,
-  ET_PACKET_ACTION_S1C_END
-} et_packet_action_t;
-
-// from kernel source file 3.19/include/linux/sctp.h
-typedef enum {
-  SCTP_CID_DATA                   = 0,
-  SCTP_CID_INIT                   = 1,
-  SCTP_CID_INIT_ACK               = 2,
-  SCTP_CID_SACK                   = 3,
-  SCTP_CID_HEARTBEAT              = 4,
-  SCTP_CID_HEARTBEAT_ACK          = 5,
-  SCTP_CID_ABORT                  = 6,
-  SCTP_CID_SHUTDOWN               = 7,
-  SCTP_CID_SHUTDOWN_ACK           = 8,
-  SCTP_CID_ERROR                  = 9,
-  SCTP_CID_COOKIE_ECHO            = 10,
-  SCTP_CID_COOKIE_ACK             = 11,
-  SCTP_CID_ECN_ECNE               = 12,
-  SCTP_CID_ECN_CWR                = 13,
-  SCTP_CID_SHUTDOWN_COMPLETE      = 14,
-
-  /* AUTH Extension Section 4.1 */
-  SCTP_CID_AUTH                   = 0x0F,
-
-  /* PR-SCTP Sec 3.2 */
-  SCTP_CID_FWD_TSN                = 0xC0,
-
-  /* Use hex, as defined in ADDIP sec. 3.1 */
-  SCTP_CID_ASCONF                 = 0xC1,
-  SCTP_CID_ASCONF_ACK             = 0x80,
-} sctp_cid_t; /* enum */
-
-typedef enum {
-  TEST_S1AP_PDU_TYPE_START = 0,
-  TEST_S1AP_PDU_TYPE_UNKNOWN = TEST_S1AP_PDU_TYPE_START,
-  TEST_S1AP_PDU_TYPE_INITIATING,
-  TEST_S1AP_PDU_TYPE_SUCCESSFUL_OUTCOME,
-  TEST_S1AP_PDU_TYPE_UNSUCCESSFUL_OUTCOME,
-  TEST_S1AP_PDU_TYPE_END
-} et_s1ap_pdu_type_t;
-
-
-typedef struct et_s1ap_s {
-  //et_s1ap_pdu_type_t pdu_type;
-  S1AP_S1AP_PDU_t      pdu; // decoded ASN1 C type: choice of initiatingMessage, successfulOutcome, unsuccessfulOutcome
-  uint16_t             xml_stream_pos_offset;
-  uint16_t             binary_stream_pos;
-  uint16_t             binary_stream_allocated_size;
-  uint8_t             *binary_stream;
-  xmlDocPtr            doc; // XML representation of the S1AP PDU
-} et_s1ap_t;
-
-
-// from kernel source file 3.19/include/linux/sctp.h, Big Endians
-typedef struct sctp_datahdr_s {
-  uint32_t    tsn;
-  uint16_t    stream;
-  uint16_t    ssn;
-  uint32_t    ppid;
-  uint32_t    assoc_id; // filled when running scenario
-  et_s1ap_t   payload;
-} sctp_datahdr_t;
-
-// from kernel source file 3.19/include/linux/sctp.h, Big Endians
-typedef struct sctp_inithdr {
-  uint32_t init_tag;
-  uint32_t a_rwnd;
-  uint16_t num_outbound_streams;
-  uint16_t num_inbound_streams;
-  uint32_t initial_tsn;
-  uint8_t  params[0];
-}  sctp_inithdr_t;
-
-typedef sctp_inithdr_t sctp_initackhdr_t;
-
-typedef struct et_sctp_hdr_s {
-  unsigned int src_port;
-  unsigned int dst_port;
-  sctp_cid_t   chunk_type;
-  union {
-    sctp_datahdr_t    data_hdr;
-    sctp_inithdr_t    init_hdr;
-    sctp_initackhdr_t init_ack_hdr;
-  } u;
-} et_sctp_hdr_t;
-
-typedef struct et_ip_s {
-  unsigned int  address_family; // AF_INET, AF_INET6
-  union {
-    struct in6_addr  ipv6;
-    in_addr_t        ipv4;
-  } address;
-  char str[INET6_ADDRSTRLEN+1];
-} et_ip_t;
-
-typedef struct et_ip_hdr_s {
-  et_ip_t  src;
-  et_ip_t  dst;
-} et_ip_hdr_t;
-
-typedef struct et_packet_s {
-  et_packet_action_t   action;
-  struct timeval       time_relative_to_first_packet;
-  struct timeval       time_relative_to_last_sent_packet;
-  struct timeval       time_relative_to_last_received_packet;
-  unsigned int         original_frame_number;
-  unsigned int         packet_number;
-  instance_t           enb_instance;
-  et_ip_hdr_t          ip_hdr;
-  et_sctp_hdr_t        sctp_hdr;
-  struct et_packet_s  *next;
-
-  //scenario running vars
-  et_packet_status_t   status;
-  long                 timer_id;         // ITTI timer id for waiting rx packets
-  struct timeval       timestamp_packet; // timestamp when rx or tx packet
-} et_packet_t;
-
-
-typedef struct sctp_epoll_s {
-  /* Array of events monitored by the task.
-   * By default only one fd is monitored (the one used to received messages
-   * from other tasks).
-   * More events can be suscribed later by the task itself.
-   */
-  struct epoll_event *events;
-
-  int epoll_nb_events;
-
-} thread_desc_t;
-
-typedef struct et_scenario_s {
-  xmlChar                *name;
-  et_packet_t            *list_packet;
-  //--------------------------
-  // playing scenario
-  //--------------------------
-  Enb_properties_array_t *enb_properties;
-  uint32_t                register_enb_pending;
-  uint32_t                registered_enb;
-  long                    enb_register_retry_timer_id;
-
-
-  hash_table_t           *hash_mme2association_id;
-  hash_table_t           *hash_old_ue_mme_id2ue_mme_id;
-  struct timeval          time_last_tx_packet;    // Time last sent packet
-  struct timeval          time_last_rx_packet;    // Time last packet received with all previous scenario RX packet received.
-  et_packet_t            *last_rx_packet;         // Last packet received with all previous scenario RX packet received.
-  et_packet_t            *last_tx_packet;         // Last sent packet
-  et_packet_t            *next_packet;            // Next packet to be handled in the scenario (RX or TX packet)
-
-  int                     timer_count;
-} et_scenario_t;
-
-
-typedef enum {
-  ET_EVENT_START = 0,
-  ET_EVENT_INIT = ET_EVENT_START,
-  ET_EVENT_S1C_CONNECTED,
-  ET_EVENT_RX_SCTP_EVENT,
-  ET_EVENT_RX_S1AP,
-  ET_EVENT_RX_PACKET_TIME_OUT,
-  ET_EVENT_TX_TIMED_PACKET,
-  ET_EVENT_TICK,
-  ET_EVENT_END
-} et_event_code_t;
-
-typedef struct et_event_init_s {
-  et_scenario_t *scenario;
-} et_event_init_t;
-
-typedef struct et_event_s1ap_data_ind_s {
-  sctp_datahdr_t sctp_datahdr;
-} et_event_s1ap_data_ind_t;
-
-typedef struct et_event_s1ap_data_req_s {
-
-} et_event_s1ap_data_req_t;
-
-typedef struct et_event_s {
-  et_event_code_t code;
-  union {
-    et_event_init_t           init;
-    et_event_s1ap_data_ind_t  s1ap_data_ind;
-    et_packet_t               *tx_timed_packet;
-    et_packet_t               *rx_packet_time_out;
-  } u;
-} et_event_t;
-
-inline void et_free_pointer(void *p) {if (NULL != p) {free(p);}};
-
-//-------------------------
-void et_free_packet(et_packet_t *packet);
-void et_free_scenario(et_scenario_t *scenario);
-//-------------------------
-void et_display_packet_s1ap_data(const et_s1ap_t *const s1ap);
-void et_display_packet_sctp_init(const sctp_inithdr_t *const sctp);
-void et_display_packet_sctp_initack(const sctp_initackhdr_t *const sctp);
-void et_display_packet_sctp_data(const sctp_datahdr_t *const sctp);
-void et_display_packet_sctp(const et_sctp_hdr_t *const sctp);
-void et_display_packet_ip(const et_ip_hdr_t *const ip);
-void et_display_packet(const et_packet_t *const packet);
-void et_display_scenario(const et_scenario_t *const scenario);
-//-------------------------
-int et_s1ap_decode_initiating_message(s1ap_message *message, S1AP_InitiatingMessage_t *initiating_p);
-int et_s1ap_decode_successful_outcome(s1ap_message *message, S1AP_SuccessfulOutcome_t *successfullOutcome_p);
-int et_s1ap_decode_unsuccessful_outcome(s1ap_message *message, S1AP_UnsuccessfulOutcome_t *unSuccessfullOutcome_p);
-int et_s1ap_decode_pdu(S1AP_PDU_t *const pdu, s1ap_message *const message, const uint8_t *const buffer, const uint32_t length);
-void et_decode_s1ap(et_s1ap_t *const s1ap);
-//-------------------------
-int et_s1ap_eNB_compare_assoc_id( struct s1ap_eNB_mme_data_s *p1, struct s1ap_eNB_mme_data_s *p2);
-uint32_t et_s1ap_generate_eNB_id(void);
-uint16_t et_s1ap_eNB_fetch_add_global_cnx_id(void);
-void et_s1ap_eNB_prepare_internal_data(void);
-void et_s1ap_eNB_insert_new_instance(s1ap_eNB_instance_t *new_instance_p);
-struct s1ap_eNB_mme_data_s *et_s1ap_eNB_get_MME(s1ap_eNB_instance_t *instance_p,int32_t assoc_id, uint16_t cnx_id);
-s1ap_eNB_instance_t *et_s1ap_eNB_get_instance(instance_t instance);
-void et_s1ap_eNB_itti_send_sctp_data_req(instance_t instance, int32_t assoc_id, uint8_t *buffer,uint32_t buffer_length, uint16_t stream);
-int et_handle_s1ap_mismatch_mme_ue_s1ap_id(et_packet_t *const spacket, et_packet_t *const rx_packet);
-asn_comp_rval_t *et_s1ap_is_matching(et_s1ap_t *const s1ap1, et_s1ap_t *const s1ap2, const uint32_t constraints);
-et_packet_t *et_build_packet_from_s1ap_data_ind(et_event_s1ap_data_ind_t *const s1ap_data_ind);
-int et_scenario_set_packet_received(et_packet_t *const packet);
-int  et_s1ap_process_rx_packet(et_event_s1ap_data_ind_t *const sctp_data_ind);
-void et_s1ap_eNB_handle_sctp_data_ind(sctp_data_ind_t *const sctp_data_ind);
-void et_s1ap_eNB_register_mme(s1ap_eNB_instance_t *instance_p,
-                              net_ip_address_t    *mme_ip_address,
-                              net_ip_address_t    *local_ip_addr,
-                              uint16_t             in_streams,
-                              uint16_t             out_streams);
-void et_s1ap_handle_s1_setup_message(s1ap_eNB_mme_data_t *mme_desc_p, int sctp_shutdown);
-void et_s1ap_eNB_handle_register_eNB(instance_t instance, s1ap_register_enb_req_t *s1ap_register_eNB);
-void et_s1ap_eNB_handle_sctp_association_resp(instance_t instance, sctp_new_association_resp_t *sctp_new_association_resp);
-void *et_s1ap_eNB_task(void *arg);
-//-------------------------
-int et_generate_xml_scenario(
-  const char const *xml_in_dir_name,
-  const char const *xml_in_scenario_filename,
-  const char const *enb_config_filename,
-  char const *tsml_out_scenario_filename);
-//-------------------------
-void timeval_add (struct timeval *const result, const struct timeval *const a, const struct timeval *const b);
-int timeval_subtract (struct timeval *const result, struct timeval *const a, struct timeval *const b);
-void et_scenario_wait_rx_packet(et_packet_t *const packet);
-void et_scenario_schedule_tx_packet(et_packet_t *packet);
-et_fsm_state_t et_scenario_fsm_notify_event_state_running(et_event_t event);
-et_fsm_state_t et_scenario_fsm_notify_event_state_waiting_tx(et_event_t event);
-et_fsm_state_t et_scenario_fsm_notify_event_state_waiting_rx(et_event_t event);
-et_fsm_state_t et_scenario_fsm_notify_event_state_connecting_s1c(et_event_t event);
-et_fsm_state_t et_scenario_fsm_notify_event_state_null(et_event_t event);
-et_fsm_state_t et_scenario_fsm_notify_event(et_event_t event);
-//-------------------------
-void et_parse_s1ap(xmlDocPtr doc, const xmlNode const *s1ap_node, et_s1ap_t *const s1ap);
-void et_parse_sctp_data_chunk(xmlDocPtr doc, const xmlNode const *sctp_node, sctp_datahdr_t *const sctp_hdr);
-void et_parse_sctp_init_chunk(xmlDocPtr doc, const xmlNode const *sctp_node, sctp_inithdr_t *const sctp_hdr);
-void et_parse_sctp_init_ack_chunk(xmlDocPtr doc, const xmlNode const *sctp_node, sctp_initackhdr_t *const sctp_hdr);
-void et_parse_sctp(xmlDocPtr doc, const xmlNode const *sctp_node, et_sctp_hdr_t *const sctp_hdr);
-et_packet_t *et_parse_xml_packet(xmlDocPtr doc, xmlNodePtr node);
-et_scenario_t *et_generate_scenario(const char   *const et_scenario_filename);
-//-------------------------
-asn_comp_rval_t *et_s1ap_ies_is_matching(const S1AP_PDU_PR present, s1ap_message *const m1, s1ap_message *const m2, const uint32_t constraints);
-void update_xpath_node_mme_ue_s1ap_id(et_s1ap_t *const s1ap, xmlNode *node, const S1AP_MME_UE_S1AP_ID_t new_id);
-void update_xpath_nodes_mme_ue_s1ap_id(et_s1ap_t *const s1ap_payload, xmlNodeSetPtr nodes, const S1AP_MME_UE_S1AP_ID_t new_id);
-int et_s1ap_update_mme_ue_s1ap_id(et_packet_t *const packet, const S1AP_MME_UE_S1AP_ID_t old_id, const S1AP_MME_UE_S1AP_ID_t new_id);
-//-------------------------
-asn_comp_rval_t *et_sctp_data_is_matching(sctp_datahdr_t *const sctp1, sctp_datahdr_t *const sctp2, const uint32_t constraints);
-asn_comp_rval_t *et_sctp_is_matching(et_sctp_hdr_t *const sctp1, et_sctp_hdr_t *const sctp2, const uint32_t constraints);
-//------------------------------------------------------------------------------
-void et_print_hex_octets(const unsigned char *const byte_stream, const unsigned long int num);
-int  et_is_file_exists ( const char const *file_nameP, const char const *file_roleP);
-int  et_strip_extension( char *in_filename);
-void et_get_shift_arg( char *line_argument, shift_packet_t *const shift);
-int  et_split_path     ( char *pathP, char *** resP);
-void et_display_node   ( xmlNodePtr node, unsigned int indent);
-void et_display_tree   ( xmlNodePtr node, unsigned int indent);
-char *et_ip2ip_str(const et_ip_t *const ip);
-int et_compare_et_ip_to_net_ip_address(const et_ip_t *const ip, const net_ip_address_t *const net_ip);
-int et_hex2data(unsigned char *const data, const unsigned char *const hexstring, const unsigned int len);
-sctp_cid_t et_chunk_type_str2cid(const xmlChar *const chunk_type_str);
-const char *const et_chunk_type_cid2str(const sctp_cid_t chunk_type);
-const char *const et_error_match2str(const int err);
-et_packet_action_t et_action_str2et_action_t(const xmlChar *const action);
-void et_ip_str2et_ip(const xmlChar   *const ip_str, et_ip_t *const ip);
-void et_enb_config_init(const  char const *lib_config_file_name_pP);
-const Enb_properties_array_t *et_enb_config_get(void);
-void et_eNB_app_register(const Enb_properties_array_t *enb_properties);
-void *et_eNB_app_task(void *args_p);
-int et_play_scenario(et_scenario_t *const scenario, const struct shift_packet_s *shifts);
-
-#endif /* PLAY_SCENARIO_H_ */
diff --git a/openair3/TEST/EPC_TEST/play_scenario_decode.c b/openair3/TEST/EPC_TEST/play_scenario_decode.c
deleted file mode 100644
index f6b983bf73f6cd4971605be39b5b76c9491d9672..0000000000000000000000000000000000000000
--- a/openair3/TEST/EPC_TEST/play_scenario_decode.c
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The OpenAirInterface Software Alliance licenses this file to You under
- * the OAI Public License, Version 1.1  (the "License"); you may not use this file
- * except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.openairinterface.org/?page_id=698
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *-------------------------------------------------------------------------------
- * For more information about the OpenAirInterface (OAI) Software Alliance:
- *      contact@openairinterface.org
- */
-
-/*
-                                play_scenario_decode.c
-                                -------------------
-  AUTHOR  : Lionel GAUTHIER
-  COMPANY : EURECOM
-  EMAIL   : Lionel.Gauthier@eurecom.fr
- */
-
-#include "intertask_interface.h"
-#include "platform_types.h"
-#include "s1ap_eNB_decoder.h"
-#include "assertions.h"
-#include "play_scenario.h"
-
-//------------------------------------------------------------------------------
-int et_s1ap_decode_pdu(S1AP_PDU_t *const pdu, const uint8_t *const buffer, const uint32_t length)
-{
-  asn_dec_rval_t dec_ret;
-
-  DevAssert(buffer != NULL);
-
-  memset((void *)pdu, 0, sizeof(S1AP_S1AP_PDU_t));
-  dec_ret = aper_decode(NULL,
-                        &asn_DEF_S1AP_S1AP_PDU,
-                        (void **)&pdu,
-                        buffer,
-                        length,
-                        0,
-                        0);
-
-  if (dec_ret.code != RC_OK) {
-    S1AP_ERROR("Failed to decode pdu\n");
-    return -1;
-  }
-
-  return dec_ret.code;
-}
-
-//------------------------------------------------------------------------------
-void et_decode_s1ap(et_s1ap_t *const s1ap)
-{
-  if (NULL != s1ap) {
-    if (et_s1ap_decode_pdu(&s1ap->pdu, s1ap->binary_stream, s1ap->binary_stream_allocated_size) < 0) {
-      AssertFatal (0, "ERROR %s() Cannot decode S1AP message!\n", __FUNCTION__);
-    }
-  }
-}
diff --git a/openair3/TEST/EPC_TEST/play_scenario_display.c b/openair3/TEST/EPC_TEST/play_scenario_display.c
deleted file mode 100644
index b29c0758c4972d526c5c01bd9085d9983969d4d2..0000000000000000000000000000000000000000
--- a/openair3/TEST/EPC_TEST/play_scenario_display.c
+++ /dev/null
@@ -1,348 +0,0 @@
-/*
- * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The OpenAirInterface Software Alliance licenses this file to You under
- * the OAI Public License, Version 1.1  (the "License"); you may not use this file
- * except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.openairinterface.org/?page_id=698
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *-------------------------------------------------------------------------------
- * For more information about the OpenAirInterface (OAI) Software Alliance:
- *      contact@openairinterface.org
- */
-
-/*
-                                play_scenario_display.c
-                                -------------------
-  AUTHOR  : Lionel GAUTHIER
-  COMPANY : EURECOM
-  EMAIL   : Lionel.Gauthier@eurecom.fr
- */
-#include <string.h>
-#include <stdio.h>
-
-#include "intertask_interface.h"
-#include "platform_types.h"
-#include "assertions.h"
-#include "s1ap_eNB_decoder.h"
-#include "play_scenario.h"
-//-----------------------------------------------------------------------------
-void et_print_hex_octets(const unsigned char *const byte_stream, const unsigned long int num)
-{
-  unsigned long octet_index = 0;
-
-  if (byte_stream == NULL) {
-    return;
-  }
-
-  fprintf(stdout, "+-----+-------------------------------------------------+\n");
-  fprintf(stdout, "|     |  0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f |\n");
-  fprintf(stdout, "+-----+-------------------------------------------------+\n");
-
-  for (octet_index = 0; octet_index < num; octet_index++) {
-    if ((octet_index % 16) == 0) {
-      if (octet_index != 0) {
-        fprintf(stdout, " |\n");
-      }
-
-      fprintf(stdout, " %04lu |", octet_index);
-    }
-
-    /*
-     * Print every single octet in hexadecimal form
-     */
-    fprintf(stdout, " %02x", byte_stream[octet_index]);
-    /*
-     * Align newline and pipes according to the octets in groups of 2
-     */
-  }
-
-  /*
-   * Append enough spaces and put final pipe
-   */
-  unsigned char index;
-
-  for (index = octet_index; index < 16; ++index) {
-    fprintf(stdout, "   ");
-  }
-
-  fprintf(stdout, " |\n");
-}
-
-//------------------------------------------------------------------------------
-void et_display_node(xmlNodePtr node, unsigned int indent)
-{
-  int i = 0;
-
-  if (node->type == XML_ELEMENT_NODE) {
-    xmlChar *path = xmlGetNodePath(node);
-
-    for (i=0; i<indent; i++) {
-      printf("  ");
-    }
-
-    if (node->children != NULL && node->children->type == XML_TEXT_NODE) {
-      xmlChar *content = xmlNodeGetContent(node);
-      printf("%s -> %s\n", path, content);
-      xmlFree(content);
-    } else {
-      printf("%s\n", path);
-    }
-
-    xmlFree(path);
-  }
-}
-//------------------------------------------------------------------------------
-void et_display_tree(xmlNodePtr node, unsigned int indent)
-{
-  xmlNode *cur_node = NULL;
-
-  for (cur_node = node; cur_node; cur_node = cur_node->next) {
-    if (cur_node->type == XML_ELEMENT_NODE) {
-      et_display_node(cur_node, indent);
-    }
-
-    et_display_tree(cur_node->children, indent++);
-  }
-}
-//------------------------------------------------------------------------------
-void et_display_packet_S1AP_data(const et_S1AP_t *const s1ap)
-{
-  char       *message_string = NULL;
-
-  if (s1ap) {
-    message_string = calloc(20000, sizeof(char));
-    AssertFatal (NULL != message_string, "ERROR malloc()failed!\n");
-
-    switch(s1ap->pdu.present) {
-      case S1AP_S1AP_PDU_PR_initiatingMessage:
-        switch(s1ap->pdu.choice.initiatingMessage.procedureCode) {
-          case S1AP_ProcedureCode_id_downlinkNASTransport:      s1ap_xer_print_s1ap_downlinknastransport(s1ap_xer__print2sp, message_string, (S1AP_message *)&s1ap->message); break;
-
-          case S1AP_ProcedureCode_id_InitialContextSetup:       s1ap_xer_print_s1ap_initialcontextsetuprequest(s1ap_xer__print2sp, message_string, (S1AP_message *)&s1ap->message); break;
-
-          case S1AP_ProcedureCode_id_UEContextRelease:          s1ap_xer_print_s1ap_uecontextreleasecommand(s1ap_xer__print2sp, message_string, (S1AP_message *)&s1ap->message); break;
-
-          case S1AP_ProcedureCode_id_Paging:                    s1ap_xer_print_s1ap_paging(s1ap_xer__print2sp, message_string, (S1AP_message *)&s1ap->message); break;
-
-          case S1AP_ProcedureCode_id_uplinkNASTransport:        s1ap_xer_print_s1ap_uplinknastransport(s1ap_xer__print2sp, message_string, (S1AP_message *)&s1ap->message); break;
-
-          case S1AP_ProcedureCode_id_S1Setup:                   s1ap_xer_print_s1ap_s1setuprequest(s1ap_xer__print2sp, message_string, (S1AP_message *)&s1ap->message); break;
-
-          case S1AP_ProcedureCode_id_initialUEMessage:          s1ap_xer_print_s1ap_initialuemessage(s1ap_xer__print2sp, message_string, (S1AP_message *)&s1ap->message); break;
-
-          case S1AP_ProcedureCode_id_UEContextReleaseRequest:   s1ap_xer_print_s1ap_uecontextreleaserequest(s1ap_xer__print2sp, message_string, (S1AP_message *)&s1ap->message); break;
-
-          case S1AP_ProcedureCode_id_UECapabilityInfoIndication:s1ap_xer_print_s1ap_uecapabilityinfoindication(s1ap_xer__print2sp, message_string, (S1AP_message *)&s1ap->message); break;
-
-          case S1AP_ProcedureCode_id_NASNonDeliveryIndication:  s1ap_xer_print_s1ap_nasnondeliveryindication_(s1ap_xer__print2sp, message_string, (S1AP_message *)&s1ap->message); break;
-
-          default:
-            AssertFatal( 0, "Unknown procedure ID (%d) for initiating message\n",
-                         (int)s1ap->pdu.choice.initiatingMessage.procedureCode);
-        }
-
-        break;
-
-      case S1AP_S1AP_PDU_PR_successfulOutcome:
-        switch(s1ap->pdu.choice.successfulOutcome.procedureCode) {
-          case S1AP_ProcedureCode_id_S1Setup:                   s1ap_xer_print_s1ap_s1setupresponse(s1ap_xer__print2sp, message_string, (S1AP_message *)&s1ap->message); break;
-
-          case S1AP_ProcedureCode_id_InitialContextSetup:       s1ap_xer_print_s1ap_initialcontextsetupresponse(s1ap_xer__print2sp, message_string, (S1AP_message *)&s1ap->message); break;
-
-          case S1AP_ProcedureCode_id_UEContextRelease:          s1ap_xer_print_s1ap_uecontextreleasecomplete(s1ap_xer__print2sp, message_string, (S1AP_message *)&s1ap->message); break;
-
-          default:
-            AssertFatal(0, "Unknown procedure ID (%d) for successfull outcome message\n",
-                        (int)s1ap->pdu.choice.successfulOutcome.procedureCode);
-        }
-
-        break;
-
-      case S1AP_S1AP_PDU_PR_unsuccessfulOutcome:
-        switch(s1ap->pdu.choice.unsuccessfulOutcome.procedureCode) {
-          case S1AP_ProcedureCode_id_S1Setup:                   s1ap_xer_print_s1ap_s1setupfailure(s1ap_xer__print2sp, message_string, (S1AP_message *)&s1ap->message); break;
-
-          case S1AP_ProcedureCode_id_InitialContextSetup:       s1ap_xer_print_s1ap_initialcontextsetupfailure(s1ap_xer__print2sp, message_string, (S1AP_message *)&s1ap->message); break;
-
-          default:
-            et_free_pointer(message_string);
-            AssertFatal(0,"Unknown procedure ID (%d) for unsuccessfull outcome message\n",
-                        (int)s1ap->pdu.choice.unsuccessfulOutcome.procedureCode);
-            break;
-        }
-
-        break;
-
-      default:
-        AssertFatal(0, "Unknown presence (%d) or not implemented\n", (int)s1ap->pdu.present);
-        break;
-    }
-
-    fprintf(stdout, "\t\tSCTP.data XML dump:\n%s\n", message_string);
-    et_free_pointer(message_string);
-  }
-}
-//------------------------------------------------------------------------------
-void et_display_packet_sctp_init(const sctp_inithdr_t *const sctp)
-{
-  if (sctp) {
-    fprintf(stdout, "\t\tSCTP.init.init_tag               : %u\n", sctp->init_tag);
-    fprintf(stdout, "\t\tSCTP.init.a_rwnd                 : %u\n", sctp->a_rwnd);
-    fprintf(stdout, "\t\tSCTP.init.num_inbound_streams    : %u\n", sctp->num_inbound_streams);
-    fprintf(stdout, "\t\tSCTP.init.num_outbound_streams   : %u\n", sctp->num_outbound_streams);
-    fprintf(stdout, "\t\tSCTP.init.initial_tsn            : %u\n", sctp->initial_tsn);
-  }
-}
-//------------------------------------------------------------------------------
-void et_display_packet_sctp_initack(const sctp_initackhdr_t *const sctp)
-{
-  if (sctp) {
-    fprintf(stdout, "\t\tSCTP.initack.init_tag               : %u\n", sctp->init_tag);
-    fprintf(stdout, "\t\tSCTP.initack.a_rwnd                 : %u\n", sctp->a_rwnd);
-    fprintf(stdout, "\t\tSCTP.initack.num_inbound_streams    : %u\n", sctp->num_inbound_streams);
-    fprintf(stdout, "\t\tSCTP.initack.num_outbound_streams   : %u\n", sctp->num_outbound_streams);
-    fprintf(stdout, "\t\tSCTP.initack.initial_tsn            : %u\n", sctp->initial_tsn);
-  }
-}
-//------------------------------------------------------------------------------
-void et_display_packet_sctp_data(const sctp_datahdr_t *const sctp)
-{
-  if (sctp) {
-    fprintf(stdout, "\t\tSCTP.data.tsn                 : %u\n", sctp->tsn);
-    fprintf(stdout, "\t\tSCTP.data.stream              : %u\n", sctp->stream);
-    fprintf(stdout, "\t\tSCTP.data.ssn                 : %u\n", sctp->ssn);
-    fprintf(stdout, "\t\tSCTP.data.ppid                : %u\n", sctp->ppid);
-
-    if (sctp->ppid == 18) {
-      et_display_packet_s1ap_data(&sctp->payload);
-    }
-
-    fprintf(stdout, "\t\tSCTP.data.binary_stream_allocated_size : %u\n", sctp->payload.binary_stream_allocated_size);
-
-    if (NULL != sctp->payload.binary_stream) {
-      fprintf(stdout, "\t\tSCTP.data.binary_stream       :\n");
-      et_print_hex_octets(sctp->payload.binary_stream, sctp->payload.binary_stream_allocated_size);
-    } else {
-      fprintf(stdout, "\t\tSCTP.data.binary_stream       : NULL\n");
-    }
-  }
-}
-
-//------------------------------------------------------------------------------
-void et_display_packet_sctp(const et_sctp_hdr_t *const sctp)
-{
-  if (sctp) {
-    fprintf(stdout, "\t\tSCTP.src_port      : %u\n", sctp->src_port);
-    fprintf(stdout, "\t\tSCTP.dst_port      : %u\n", sctp->dst_port);
-    fprintf(stdout, "\t\tSCTP.chunk_type    : %s\n", et_chunk_type_cid2str(sctp->chunk_type));
-
-    switch (sctp->chunk_type) {
-      case SCTP_CID_DATA:
-        et_display_packet_sctp_data(&sctp->u.data_hdr);
-        break;
-
-      case SCTP_CID_INIT:
-        et_display_packet_sctp_initack(&sctp->u.init_hdr);
-        break;
-
-      case SCTP_CID_INIT_ACK:
-        et_display_packet_sctp_initack(&sctp->u.init_ack_hdr);
-        break;
-
-      default:
-        ;
-    }
-  }
-}
-//------------------------------------------------------------------------------
-void et_display_packet_ip(const et_ip_hdr_t *const ip)
-{
-  if (ip) {
-    fprintf(stdout, "\t\tSource address      : %s\n", et_ip2ip_str(&ip->src));
-    fprintf(stdout, "\t\tDestination address : %s\n", et_ip2ip_str(&ip->dst));
-  }
-}
-
-//------------------------------------------------------------------------------
-void et_display_packet(const et_packet_t *const packet)
-{
-  if (packet) {
-    fprintf(stdout, "-------------------------------------------------------------------------------\n");
-    fprintf(stdout, "\tPacket:\tnum %u  | original frame number %u \n", packet->packet_number, packet->original_frame_number);
-    fprintf(stdout, "\tPacket:\ttime relative to 1st packet           %ld.%06lu\n",
-            packet->time_relative_to_first_packet.tv_sec, packet->time_relative_to_first_packet.tv_usec);
-    fprintf(stdout, "\tPacket:\ttime relative to last tx packet       %ld.%06lu\n",
-            packet->time_relative_to_last_sent_packet.tv_sec, packet->time_relative_to_last_sent_packet.tv_usec);
-    fprintf(stdout, "\tPacket:\ttime relative to last_received packet %ld.%06lu\n",
-            packet->time_relative_to_last_received_packet.tv_sec, packet->time_relative_to_last_received_packet.tv_usec);
-
-    switch(packet->action) {
-      case   ET_PACKET_ACTION_S1C_SEND:
-        fprintf(stdout, "\tPacket:\tAction SEND\n");
-        break;
-
-      case   ET_PACKET_ACTION_S1C_RECEIVE:
-        fprintf(stdout, "\tPacket:\tAction RECEIVE\n");
-        break;
-
-      default:
-        fprintf(stdout, "\tPacket:\tAction UNKNOWN\n");
-    }
-
-    switch(packet->status) {
-      case   ET_PACKET_STATUS_NONE:
-        fprintf(stdout, "\tPacket:\tStatus NONE\n");
-        break;
-
-      case   ET_PACKET_STATUS_NOT_TAKEN_IN_ACCOUNT:
-        fprintf(stdout, "\tPacket:\tStatus NOT_TAKEN_IN_ACCOUNT\n");
-        break;
-
-      case   ET_PACKET_STATUS_SCHEDULED_FOR_SENDING:
-        fprintf(stdout, "\tPacket:\tStatus SCHEDULED_FOR_SENDING\n");
-        break;
-
-      case   ET_PACKET_STATUS_SENT:
-        fprintf(stdout, "\tPacket:\tStatus SENT\n");
-        break;
-
-      case   ET_PACKET_STATUS_SCHEDULED_FOR_RECEIVING:
-        fprintf(stdout, "\tPacket:\tStatus SCHEDULED_FOR_RECEIVING\n");
-        break;
-
-      case   ET_PACKET_STATUS_RECEIVED:
-        fprintf(stdout, "\tPacket:\tStatus RECEIVED\n");
-        break;
-
-      default:
-        fprintf(stdout, "\tPacket:\tStatus UNKNOWN\n");
-    }
-
-    et_display_packet_ip(&packet->ip_hdr);
-    et_display_packet_sctp(&packet->sctp_hdr);
-  }
-}
-//------------------------------------------------------------------------------
-void et_display_scenario(const et_scenario_t *const scenario)
-{
-  et_packet_t *packet = NULL;
-
-  if (scenario) {
-    fprintf(stdout, "Scenario: %s\n", (scenario->name != NULL) ? (char *)scenario->name:"UNKNOWN NAME");
-    packet = scenario->list_packet;
-
-    while (packet) {
-      et_display_packet(packet);
-      packet = packet->next;
-    }
-  }
-}
diff --git a/openair3/TEST/EPC_TEST/play_scenario_fsm.c b/openair3/TEST/EPC_TEST/play_scenario_fsm.c
deleted file mode 100644
index 0459f4d5dda450d51fc9434132ae198ea5b8c3f8..0000000000000000000000000000000000000000
--- a/openair3/TEST/EPC_TEST/play_scenario_fsm.c
+++ /dev/null
@@ -1,586 +0,0 @@
-/*
- * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The OpenAirInterface Software Alliance licenses this file to You under
- * the OAI Public License, Version 1.1  (the "License"); you may not use this file
- * except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.openairinterface.org/?page_id=698
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *-------------------------------------------------------------------------------
- * For more information about the OpenAirInterface (OAI) Software Alliance:
- *      contact@openairinterface.org
- */
-
-/*
-                                play_scenario_fsm.c
-                                -------------------
-  AUTHOR  : Lionel GAUTHIER
-  COMPANY : EURECOM
-  EMAIL   : Lionel.Gauthier@eurecom.fr
- */
-#include <stdio.h>
-#include <sys/time.h>
-#include <pthread.h>
-
-#include "intertask_interface.h"
-#include "platform_types.h"
-#include "assertions.h"
-#include "play_scenario.h"
-#include "play_scenario_s1ap_eNB_defs.h"
-
-//------------------------------------------------------------------------------
-extern int                    g_max_speed;
-//------------------------------------------------------------------------------
-et_scenario_t    *g_scenario  = NULL;
-pthread_mutex_t   g_fsm_lock  = PTHREAD_MUTEX_INITIALIZER;
-et_fsm_state_t    g_fsm_state = ET_FSM_STATE_NULL;
-uint32_t          g_constraints = ET_BIT_MASK_MATCH_SCTP_STREAM | ET_BIT_MASK_MATCH_SCTP_SSN;
-//------------------------------------------------------------------------------
-// it is assumed that if a time is negative tv_sec and tv_usec are both negative
-void timeval_add (struct timeval *const result, const struct timeval *const a, const struct timeval *const b)
-{
-  AssertFatal(((a->tv_sec <= 0) && (a->tv_usec <= 0)) || ((a->tv_sec >= 0) && (a->tv_usec >= 0)), " Bad time format arg a\n");
-  AssertFatal(((b->tv_sec <= 0) && (b->tv_usec <= 0)) || ((b->tv_sec >= 0) && (b->tv_usec >= 0)), " Bad time format arg b\n");
-  // may happen overflows but were are not dealing with very large timings
-  long long int r = a->tv_usec + b->tv_usec + (a->tv_sec + b->tv_sec) * 1000000;
-  result->tv_sec  = r / (long long int)1000000;
-  result->tv_usec = r % (long long int)1000000;
-
-  if ((result != a) && (result != b)) {
-    LOG_D(ENB_APP, "timeval_add(%ld.%06d, %ld.%06d)=%ld.%06d\n", a->tv_sec, a->tv_usec, b->tv_sec, b->tv_usec, result->tv_sec, result->tv_usec);
-  }
-}
-
-//------------------------------------------------------------------------------
-// it is assumed that if a time is negative tv_sec and tv_usec are both negative
-// return true if result is positive
-int timeval_subtract (struct timeval *const result, struct timeval *const a, struct timeval *const b)
-{
-  AssertFatal(((a->tv_sec <= 0) && (a->tv_usec <= 0)) || ((a->tv_sec >= 0) && (a->tv_usec >= 0)), " Bad time format arg a\n");
-  AssertFatal(((b->tv_sec <= 0) && (b->tv_usec <= 0)) || ((b->tv_sec >= 0) && (b->tv_usec >= 0)), " Bad time format arg b\n");
-  // may happen overflows but were are not dealing with very large timings
-  long long int r = a->tv_usec - b->tv_usec + (a->tv_sec - b->tv_sec) * 1000000;
-  result->tv_sec  = r / (long long int)1000000;
-  result->tv_usec = r % (long long int)1000000;
-
-  if ((result != a) && (result != b)) {
-    LOG_D(ENB_APP, "timeval_subtract(%ld.%06d, %ld.%06d)=%ld.%06d\n", a->tv_sec, a->tv_usec, b->tv_sec, b->tv_usec, result->tv_sec, result->tv_usec);
-  }
-
-  return (result->tv_sec >= 0) && (result->tv_usec >= 0);
-}
-
-//------------------------------------------------------------------------------
-void et_scenario_wait_rx_packet(et_packet_t *const packet)
-{
-  packet->status = ET_PACKET_STATUS_SCHEDULED_FOR_RECEIVING;
-  g_fsm_state    = ET_FSM_STATE_WAITING_RX_EVENT;
-
-  if (timer_setup (ET_FSM_STATE_WAITING_RX_EVENT_DELAY_SEC, 0, TASK_S1AP, INSTANCE_DEFAULT, TIMER_ONE_SHOT,
-                   packet, &packet->timer_id) < 0) {
-    AssertFatal(0, " Can not start waiting RX event timer\n");
-  }
-
-  g_scenario->timer_count++;
-  LOG_D(ENB_APP, "Waiting RX packet num %d original frame number %u\n", packet->packet_number, packet->original_frame_number);
-}
-//------------------------------------------------------------------------------
-void et_scenario_schedule_tx_packet(et_packet_t *packet)
-{
-  s1ap_eNB_instance_t *s1ap_eNB_instance = NULL;
-  struct timeval  now                   = { .tv_sec = 0, .tv_usec = 0 };
-  struct timeval  offset_last_tx_packet = { .tv_sec = 0, .tv_usec = 0 };
-  struct timeval  offset_last_rx_packet = { .tv_sec = 0, .tv_usec = 0 };
-  struct timeval  offset_tx_rx          = { .tv_sec = 0, .tv_usec = 0 };
-  struct timeval  offset                = { .tv_sec = 0, .tv_usec = 0 };
-  int             last_packet_was_rx    = 0;
-  int             we_are_too_late       = 0;
-  int             original_frame_number = -1;
-  AssertFatal(NULL != packet, "packet argument is NULL");
-  s1ap_eNB_instance = et_s1ap_eNB_get_instance(packet->enb_instance);
-  AssertFatal(NULL != s1ap_eNB_instance, "Cannot get s1ap_eNB_instance_t for eNB instance %d", packet->enb_instance);
-  LOG_D(ENB_APP, "%s\n", __FUNCTION__);
-  g_fsm_state = ET_FSM_STATE_WAITING_TX_EVENT;
-
-  switch (packet->sctp_hdr.chunk_type) {
-    case SCTP_CID_DATA:
-      // check if we can send it now
-      // TODO: BUG we have to discard in scenario all packets that cannot be processed (SACK, COOKIEs, etc)
-      AssertFatal(gettimeofday(&now, NULL) == 0, "gettimeofday failed");
-      timeval_subtract(&offset_last_tx_packet,&now,&g_scenario->time_last_tx_packet);
-      timeval_subtract(&offset_last_rx_packet,&now,&g_scenario->time_last_rx_packet);
-      LOG_D(ENB_APP, "offset_last_tx_packet=%ld.%06d\n", offset_last_tx_packet.tv_sec, offset_last_tx_packet.tv_usec);
-      LOG_D(ENB_APP, "offset_last_rx_packet=%ld.%06d\n", offset_last_rx_packet.tv_sec, offset_last_rx_packet.tv_usec);
-      last_packet_was_rx = timeval_subtract(&offset_tx_rx,&offset_last_tx_packet,&offset_last_rx_packet);
-
-      if (last_packet_was_rx) {
-        LOG_D(ENB_APP, "last_packet_was_rx\n");
-        we_are_too_late = timeval_subtract(&offset,&offset_last_rx_packet,&packet->time_relative_to_last_received_packet);
-        LOG_D(ENB_APP, "we_are_too_late=%d, offset=%ld.%06d\n", we_are_too_late, offset.tv_sec, offset.tv_usec);
-      } else {
-        LOG_D(ENB_APP, "last_packet_was_tx\n");
-        we_are_too_late = timeval_subtract(&offset,&offset_last_tx_packet,&packet->time_relative_to_last_sent_packet);
-        LOG_D(ENB_APP, "we_are_too_late=%d, offset=%ld.%06d\n", we_are_too_late, offset.tv_sec, offset.tv_usec);
-      }
-
-      if ((0 == we_are_too_late) && (0 == g_max_speed)) {
-        // set timer
-        if ((offset.tv_sec <= 0) || (offset.tv_usec <= 0)) {
-          offset.tv_sec = -offset.tv_sec;
-          offset.tv_usec = -offset.tv_usec;
-        }
-
-        LOG_D(ENB_APP, "Send packet num %u original frame number %u in %ld.%06d sec\n",
-              packet->packet_number, packet->original_frame_number, offset.tv_sec, offset.tv_usec);
-        packet->status = ET_PACKET_STATUS_SCHEDULED_FOR_SENDING;
-
-        if (timer_setup (offset.tv_sec, offset.tv_usec, TASK_S1AP, INSTANCE_DEFAULT, TIMER_ONE_SHOT,packet, &packet->timer_id) < 0) {
-          AssertFatal(0, " Can not start TX event timer\n");
-        }
-
-        g_scenario->timer_count++;
-        // Done g_fsm_state = ET_FSM_STATE_WAITING_TX_EVENT;
-      } else {
-        // send immediately
-        AssertFatal(0 == gettimeofday(&packet->timestamp_packet, NULL), "gettimeofday() Failed");
-        original_frame_number = packet->original_frame_number;
-
-        do {
-          g_scenario->time_last_tx_packet.tv_sec  = packet->timestamp_packet.tv_sec;
-          g_scenario->time_last_tx_packet.tv_usec = packet->timestamp_packet.tv_usec;
-          LOG_D(ENB_APP, "Sending packet num %d original frame number %u immediately\n",packet->packet_number, packet->original_frame_number);
-          et_s1ap_eNB_itti_send_sctp_data_req(
-            packet->enb_instance,
-            packet->sctp_hdr.u.data_hdr.assoc_id,
-            packet->sctp_hdr.u.data_hdr.payload.binary_stream,
-            packet->sctp_hdr.u.data_hdr.payload.binary_stream_allocated_size,
-            packet->sctp_hdr.u.data_hdr.stream);
-          packet->status = ET_PACKET_STATUS_SENT;
-          g_scenario->next_packet = g_scenario->next_packet->next;
-          packet = packet->next;
-        } while ((NULL != packet) && (packet->original_frame_number == original_frame_number));
-
-        g_fsm_state = ET_FSM_STATE_RUNNING;
-      }
-
-      break;
-
-    case SCTP_CID_INIT:
-    case SCTP_CID_INIT_ACK:
-      AssertFatal(0, "Invalid case TX packet SCTP_CID_INIT or SCTP_CID_INIT_ACK");
-      break;
-
-    default:
-      AssertFatal(0, "Invalid case TX packet SCTP_CID %d", packet->sctp_hdr.chunk_type);
-  }
-}
-//------------------------------------------------------------------------------
-et_fsm_state_t et_scenario_fsm_notify_event_state_running(et_event_t event)
-{
-  switch (event.code) {
-    case ET_EVENT_TICK:
-      while (NULL != g_scenario->next_packet) {
-        LOG_D(ENB_APP, "EVENT_TICK: Considering packet num %d original frame number %u\n", g_scenario->next_packet->packet_number, g_scenario->next_packet->original_frame_number);
-
-        switch (g_scenario->next_packet->sctp_hdr.chunk_type) {
-          case SCTP_CID_DATA :
-
-            // no init in this scenario, may be sub-scenario
-            if (g_scenario->next_packet->action == ET_PACKET_ACTION_S1C_SEND) {
-              if (g_scenario->next_packet->status == ET_PACKET_STATUS_NONE) {
-                et_scenario_schedule_tx_packet(g_scenario->next_packet);
-                pthread_mutex_unlock(&g_fsm_lock);
-                et_event_t continue_event;
-                continue_event.code = ET_EVENT_TICK;
-                et_scenario_fsm_notify_event(continue_event);
-                return g_fsm_state;
-              } else if (g_scenario->next_packet->status != ET_PACKET_STATUS_SCHEDULED_FOR_SENDING) {
-                AssertFatal(0, "Invalid packet status %d", g_scenario->next_packet->status);
-              }
-            } else if (g_scenario->next_packet->action == ET_PACKET_ACTION_S1C_RECEIVE) {
-              if (g_scenario->next_packet->status == ET_PACKET_STATUS_RECEIVED) {
-                g_scenario->next_packet    = g_scenario->next_packet->next;
-              } else if (g_scenario->next_packet->status == ET_PACKET_STATUS_NONE) {
-                et_scenario_wait_rx_packet(g_scenario->next_packet);
-                pthread_mutex_unlock(&g_fsm_lock);
-                return g_fsm_state;
-              } else {
-                AssertFatal(0, "Invalid packet status %d", g_scenario->next_packet->status);
-              }
-            } else {
-              AssertFatal(0, "Invalid packet action %d", g_scenario->next_packet->action);
-            }
-
-            break;
-
-          case SCTP_CID_INIT:
-          case SCTP_CID_INIT_ACK:
-          case SCTP_CID_HEARTBEAT:
-          case SCTP_CID_HEARTBEAT_ACK:
-          case SCTP_CID_COOKIE_ECHO:
-          case SCTP_CID_COOKIE_ACK:
-          case SCTP_CID_ECN_ECNE:
-          case SCTP_CID_ECN_CWR:
-            LOG_D(ENB_APP, "EVENT_TICK: Ignoring packet num %d SCTP CID %s\n",
-                  g_scenario->next_packet->packet_number,
-                  et_chunk_type_cid2str(g_scenario->next_packet->sctp_hdr.chunk_type));
-            g_scenario->next_packet->status = ET_PACKET_STATUS_NOT_TAKEN_IN_ACCOUNT;
-            g_scenario->next_packet = g_scenario->next_packet->next;
-            break;
-
-          case SCTP_CID_ABORT:
-          case SCTP_CID_SHUTDOWN:
-          case SCTP_CID_SHUTDOWN_ACK:
-          case SCTP_CID_ERROR:
-          case SCTP_CID_SHUTDOWN_COMPLETE:
-            AssertFatal(0, "The scenario should be cleaned (packet %s cannot be processed at this time)",
-                        et_chunk_type_cid2str(g_scenario->next_packet->sctp_hdr.chunk_type));
-            break;
-
-          default:
-            LOG_D(ENB_APP, "EVENT_TICK: Ignoring packet num %d SCTP CID %s\n",
-                  g_scenario->next_packet->packet_number,
-                  et_chunk_type_cid2str(g_scenario->next_packet->sctp_hdr.chunk_type));
-            g_scenario->next_packet->status = ET_PACKET_STATUS_NOT_TAKEN_IN_ACCOUNT;
-            g_scenario->next_packet = g_scenario->next_packet->next;
-        }
-      }
-
-      fprintf(stderr, "No Packet found in this scenario: %s\n", g_scenario->name);
-      g_fsm_state = ET_FSM_STATE_NULL;
-      pthread_mutex_unlock(&g_fsm_lock);
-
-      if (0 == g_scenario->timer_count) {
-        fprintf(stderr, "End of scenario: %s\n", g_scenario->name);
-        fflush(stderr);
-        fflush(stdout);
-        return 0;
-        //exit(0);
-      }
-
-      fprintf(stderr, "Remaining timers running: %d\n", g_scenario->timer_count);
-      return g_fsm_state;
-      break;
-
-    case ET_EVENT_RX_PACKET_TIME_OUT:
-      AssertFatal(0, "Event ET_EVENT_RX_PACKET_TIME_OUT not handled in FSM state ET_FSM_STATE_RUNNING");
-      break;
-
-    case ET_EVENT_TX_TIMED_PACKET:
-      AssertFatal(0, "Event ET_EVENT_TX_TIMED_PACKET not handled in FSM state ET_FSM_STATE_RUNNING");
-      break;
-
-    case ET_EVENT_RX_S1AP:
-      et_s1ap_process_rx_packet(&event.u.s1ap_data_ind);
-      break;
-
-    default:
-      AssertFatal(0, "Case event %d not handled in ET_FSM_STATE_RUNNING", event.code);
-  }
-
-  pthread_mutex_unlock(&g_fsm_lock);
-  return 0;
-}
-
-//------------------------------------------------------------------------------
-et_fsm_state_t et_scenario_fsm_notify_event_state_waiting_tx(et_event_t event)
-{
-  int           rv                    = 0;
-  int           original_frame_number = -1;
-  et_packet_t  *packet                = NULL;
-
-  switch (event.code) {
-    case ET_EVENT_TICK:
-      fprintf(stdout, "EVENT_TICK: waiting for tx event\n");
-      break;
-
-    case ET_EVENT_RX_S1AP:
-      rv = et_s1ap_process_rx_packet(&event.u.s1ap_data_ind);
-      break;
-
-    case ET_EVENT_TX_TIMED_PACKET:
-      // send immediately
-      packet = event.u.tx_timed_packet;
-      AssertFatal(0 == gettimeofday(&packet->timestamp_packet, NULL), "gettimeofday() Failed");
-      original_frame_number = packet->original_frame_number;
-
-      do {
-        g_scenario->time_last_tx_packet.tv_sec  = packet->timestamp_packet.tv_sec;
-        g_scenario->time_last_tx_packet.tv_usec = packet->timestamp_packet.tv_usec;
-        LOG_D(ENB_APP, "Sending packet num %d original frame number %u immediately\n",packet->packet_number, packet->original_frame_number);
-        et_s1ap_eNB_itti_send_sctp_data_req(
-          packet->enb_instance,
-          packet->sctp_hdr.u.data_hdr.assoc_id,
-          packet->sctp_hdr.u.data_hdr.payload.binary_stream,
-          packet->sctp_hdr.u.data_hdr.payload.binary_stream_allocated_size,
-          packet->sctp_hdr.u.data_hdr.stream);
-        packet->status = ET_PACKET_STATUS_SENT;
-        packet = packet->next;
-        g_scenario->next_packet    = packet;
-      } while ( (NULL != packet) && (packet->original_frame_number == original_frame_number));
-
-      g_fsm_state = ET_FSM_STATE_RUNNING;
-      break;
-
-    case ET_EVENT_RX_PACKET_TIME_OUT:
-    default:
-      AssertFatal(0, "Case event %d not handled in ET_FSM_STATE_WAITING_TX", event.code);
-  }
-
-  pthread_mutex_unlock(&g_fsm_lock);
-  return 0;
-}
-
-//------------------------------------------------------------------------------
-et_fsm_state_t et_scenario_fsm_notify_event_state_waiting_rx(et_event_t event)
-{
-  int rv = 0;
-
-  switch (event.code) {
-    case ET_EVENT_TICK:
-      fprintf(stdout, "EVENT_TICK: waiting for rx event\n");
-      break;
-
-    case ET_EVENT_RX_PACKET_TIME_OUT:
-      fprintf(stderr, "Error The following packet is not received:\n");
-      //et_display_packet(event.u.rx_packet_time_out);
-      AssertFatal(0, "Waited packet not received");
-      break;
-
-    case ET_EVENT_RX_S1AP:
-      rv = et_s1ap_process_rx_packet(&event.u.s1ap_data_ind);
-
-      // waited packet
-      if (rv == 0) {
-        g_fsm_state = ET_FSM_STATE_RUNNING;
-      }
-
-      break;
-
-    case ET_EVENT_TX_TIMED_PACKET:
-    default:
-      AssertFatal(0, "Case event %d not handled in ET_FSM_STATE_WAITING_RX", event.code);
-  }
-
-  pthread_mutex_unlock(&g_fsm_lock);
-  return 0;
-}
-
-//------------------------------------------------------------------------------
-et_fsm_state_t et_scenario_fsm_notify_event_state_connecting_s1c(et_event_t event)
-{
-  switch (event.code) {
-    case ET_EVENT_TICK:
-      break;
-
-    case ET_EVENT_S1C_CONNECTED:
-      // hack simulate we have been able to get the right timing values for STCP connect
-      AssertFatal(gettimeofday(&g_scenario->time_last_rx_packet, NULL) == 0, "gettimeofday failed");
-
-      while (NULL != g_scenario->next_packet) {
-        switch (g_scenario->next_packet->sctp_hdr.chunk_type) {
-          case SCTP_CID_DATA :
-
-            // no init in this scenario, may be sub-scenario
-            if (g_scenario->next_packet->action == ET_PACKET_ACTION_S1C_SEND) {
-              et_scenario_schedule_tx_packet(g_scenario->next_packet);
-              pthread_mutex_unlock(&g_fsm_lock);
-              et_event_t continue_event;
-              continue_event.code = ET_EVENT_TICK;
-              et_scenario_fsm_notify_event(continue_event);
-              return g_fsm_state;
-            } else if (g_scenario->next_packet->action == ET_PACKET_ACTION_S1C_RECEIVE) {
-              if (g_scenario->next_packet->status == ET_PACKET_STATUS_RECEIVED) {
-                g_scenario->last_rx_packet = g_scenario->next_packet;
-                g_scenario->time_last_rx_packet = g_scenario->last_rx_packet->timestamp_packet;
-                g_scenario->next_packet    = g_scenario->next_packet->next;
-              } else if (g_scenario->next_packet->status == ET_PACKET_STATUS_NONE) {
-                et_scenario_wait_rx_packet(g_scenario->next_packet);
-                pthread_mutex_unlock(&g_fsm_lock);
-                return g_fsm_state;
-              } else {
-                AssertFatal(0, "Invalid packet status %d", g_scenario->next_packet->status);
-              }
-            } else {
-              AssertFatal(0, "Invalid packet action %d", g_scenario->next_packet->action);
-            }
-
-            break;
-
-          case SCTP_CID_INIT:
-          case SCTP_CID_INIT_ACK:
-          case SCTP_CID_HEARTBEAT:
-          case SCTP_CID_HEARTBEAT_ACK:
-          case SCTP_CID_COOKIE_ECHO:
-          case SCTP_CID_COOKIE_ACK:
-          case SCTP_CID_ECN_ECNE:
-          case SCTP_CID_ECN_CWR:
-            g_scenario->next_packet->status = ET_PACKET_STATUS_NOT_TAKEN_IN_ACCOUNT;
-            g_scenario->next_packet = g_scenario->next_packet->next;
-            break;
-
-          case SCTP_CID_ABORT:
-          case SCTP_CID_SHUTDOWN:
-          case SCTP_CID_SHUTDOWN_ACK:
-          case SCTP_CID_ERROR:
-          case SCTP_CID_SHUTDOWN_COMPLETE:
-            AssertFatal(0, "The scenario should be cleaned (packet %s cannot be processed at this time)",
-                        et_chunk_type_cid2str(g_scenario->next_packet->sctp_hdr.chunk_type));
-            break;
-
-          default:
-            g_scenario->next_packet->status = ET_PACKET_STATUS_NOT_TAKEN_IN_ACCOUNT;
-            g_scenario->next_packet = g_scenario->next_packet->next;
-        }
-      }
-
-      fprintf(stderr, "No Packet found in this scenario: %s\n", g_scenario->name);
-      g_fsm_state = ET_FSM_STATE_NULL;
-      pthread_mutex_unlock(&g_fsm_lock);
-
-      if (0 == g_scenario->timer_count) {
-        fprintf(stderr, "End of scenario: %s\n", g_scenario->name);
-        fflush(stderr);
-        fflush(stdout);
-        exit(0);
-      }
-
-      fprintf(stderr, "Remaining timers running: %d\n", g_scenario->timer_count);
-      return g_fsm_state;
-      break;
-
-    default:
-      AssertFatal(0, "Case event %d not handled in ET_FSM_STATE_CONNECTING_S1C", event.code);
-  }
-
-  pthread_mutex_unlock(&g_fsm_lock);
-  return 0;
-}
-//------------------------------------------------------------------------------
-et_fsm_state_t et_scenario_fsm_notify_event_state_null(et_event_t event)
-{
-  switch (event.code) {
-    case ET_EVENT_TICK:
-      break;
-
-    case ET_EVENT_INIT:
-      AssertFatal(NULL == g_scenario, "Current scenario not ended");
-      g_scenario = event.u.init.scenario;
-      g_scenario->next_packet            = g_scenario->list_packet;
-      g_scenario->last_rx_packet         = NULL;
-      g_scenario->last_tx_packet         = NULL;
-
-      while (NULL != g_scenario->next_packet) {
-        switch (g_scenario->next_packet->sctp_hdr.chunk_type) {
-          case SCTP_CID_DATA :
-
-            // no init in this scenario, may be sub-scenario, ...
-            if (g_scenario->next_packet->action == ET_PACKET_ACTION_S1C_SEND) {
-              et_scenario_schedule_tx_packet(g_scenario->next_packet);
-              pthread_mutex_unlock(&g_fsm_lock);
-              et_event_t continue_event;
-              continue_event.code = ET_EVENT_TICK;
-              et_scenario_fsm_notify_event(continue_event);
-              return g_fsm_state;
-            } else if (g_scenario->next_packet->action == ET_PACKET_ACTION_S1C_RECEIVE) {
-              if (g_scenario->next_packet->status == ET_PACKET_STATUS_RECEIVED) {
-                g_scenario->last_rx_packet = g_scenario->next_packet;
-                g_scenario->time_last_rx_packet = g_scenario->last_rx_packet->timestamp_packet;
-                g_scenario->next_packet    = g_scenario->next_packet->next;
-              } else if (g_scenario->next_packet->status == ET_PACKET_STATUS_NONE) {
-                et_scenario_wait_rx_packet(g_scenario->next_packet);
-                pthread_mutex_unlock(&g_fsm_lock);
-                return g_fsm_state;
-              } else {
-                AssertFatal(0, "Invalid packet status %d", g_scenario->next_packet->status);
-              }
-            } else {
-              AssertFatal(0, "Invalid packet action %d", g_scenario->next_packet->action);
-            }
-
-            break;
-
-          case SCTP_CID_INIT:
-          case SCTP_CID_INIT_ACK:
-            g_scenario->enb_properties       = (Enb_properties_array_t *)et_enb_config_get();
-            g_scenario->hash_old_ue_mme_id2ue_mme_id = hashtable_create (256,NULL,NULL);
-            g_scenario->hash_mme2association_id      = hashtable_create (256,NULL,NULL);
-            // Try to register each eNB
-            g_scenario->registered_enb       = 0;
-            g_fsm_state            = ET_FSM_STATE_CONNECTING_S1C;
-            AssertFatal(gettimeofday(&g_scenario->time_last_tx_packet, NULL) == 0, "gettimeofday failed");
-            et_eNB_app_register (g_scenario->enb_properties);
-            pthread_mutex_unlock(&g_fsm_lock);
-            return g_fsm_state;
-            break;
-
-          case SCTP_CID_HEARTBEAT:
-          case SCTP_CID_HEARTBEAT_ACK:
-          case SCTP_CID_COOKIE_ECHO:
-          case SCTP_CID_COOKIE_ACK:
-          case SCTP_CID_ECN_ECNE:
-          case SCTP_CID_ECN_CWR:
-            g_scenario->next_packet->status = ET_PACKET_STATUS_NOT_TAKEN_IN_ACCOUNT;
-            g_scenario->next_packet = g_scenario->next_packet->next;
-            break;
-
-          case SCTP_CID_ABORT:
-          case SCTP_CID_SHUTDOWN:
-          case SCTP_CID_SHUTDOWN_ACK:
-          case SCTP_CID_ERROR:
-          case SCTP_CID_SHUTDOWN_COMPLETE:
-            AssertFatal(0, "The scenario should be cleaned (packet %s cannot be processed at this time)",
-                        et_chunk_type_cid2str(g_scenario->next_packet->sctp_hdr.chunk_type));
-            break;
-
-          default:
-            g_scenario->next_packet->status = ET_PACKET_STATUS_NOT_TAKEN_IN_ACCOUNT;
-            g_scenario->next_packet = g_scenario->next_packet->next;
-        }
-      }
-
-      fprintf(stderr, "No Useful packet found in this scenario: %s\n", g_scenario->name);
-      g_fsm_state = ET_FSM_STATE_NULL;
-      pthread_mutex_unlock(&g_fsm_lock);
-      return g_fsm_state;
-      break;
-
-    default:
-      AssertFatal(0, "Case event %d not handled in ET_FSM_STATE_NULL", event.code);
-  }
-
-  return 0;
-}
-
-//------------------------------------------------------------------------------
-et_fsm_state_t et_scenario_fsm_notify_event(et_event_t event)
-{
-  AssertFatal((event.code >= ET_EVENT_START) && (event.code < ET_EVENT_END), "Unknown et_event_t.code %d", event.code);
-  pthread_mutex_lock(&g_fsm_lock);
-
-  switch (g_fsm_state) {
-    case ET_FSM_STATE_NULL: return et_scenario_fsm_notify_event_state_null(event); break;
-
-    case ET_FSM_STATE_CONNECTING_S1C: return et_scenario_fsm_notify_event_state_connecting_s1c(event); break;
-
-    case ET_FSM_STATE_WAITING_TX_EVENT: return et_scenario_fsm_notify_event_state_waiting_tx(event); break;
-
-    case ET_FSM_STATE_WAITING_RX_EVENT: return et_scenario_fsm_notify_event_state_waiting_rx(event); break;
-
-    case ET_FSM_STATE_RUNNING: return et_scenario_fsm_notify_event_state_running(event); break;
-
-    default:
-      AssertFatal(0, "Case fsm_state %d not handled", g_fsm_state);
-  }
-
-  pthread_mutex_unlock(&g_fsm_lock);
-  return g_fsm_state;
-}
diff --git a/openair3/TEST/EPC_TEST/play_scenario_parse.c b/openair3/TEST/EPC_TEST/play_scenario_parse.c
deleted file mode 100644
index 607ec34dfc25daa20d14e13343f67c5a24ecb449..0000000000000000000000000000000000000000
--- a/openair3/TEST/EPC_TEST/play_scenario_parse.c
+++ /dev/null
@@ -1,592 +0,0 @@
-/*
- * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The OpenAirInterface Software Alliance licenses this file to You under
- * the OAI Public License, Version 1.1  (the "License"); you may not use this file
- * except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.openairinterface.org/?page_id=698
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *-------------------------------------------------------------------------------
- * For more information about the OpenAirInterface (OAI) Software Alliance:
- *      contact@openairinterface.org
- */
-
-/*
-                                play_scenario_parse.c
-                                -------------------
-  AUTHOR  : Lionel GAUTHIER
-  COMPANY : EURECOM
-  EMAIL   : Lionel.Gauthier@eurecom.fr
- */
-
-#include <libxml/xmlmemory.h>
-#include <libxml/debugXML.h>
-#include <libxml/xmlIO.h>
-#include <libxml/DOCBparser.h>
-#include <libxml/xinclude.h>
-#include <libxml/catalog.h>
-#include <libxml/xmlreader.h>
-#include <libxslt/xslt.h>
-#include <libxslt/xsltInternals.h>
-#include <libxslt/transform.h>
-#include <libxslt/xsltutils.h>
-#include <sys/time.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-
-#include "intertask_interface.h"
-#include "platform_types.h"
-#include "assertions.h"
-#include "play_scenario.h"
-//------------------------------------------------------------------------------
-#define ENB_CONFIG_MAX_XSLT_PARAMS 32
-//------------------------------------------------------------------------------
-extern Enb_properties_array_t g_enb_properties;
-//------------------------------------------------------------------------------
-void et_parse_s1ap(xmlDocPtr doc, const xmlNode const *s1ap_node, et_s1ap_t * const s1ap)
-{
-  xmlNodePtr            cur_node  = NULL;
-  xmlChar              *xml_char  = NULL;
-  xmlChar              *xml_char2  = NULL;
-  unsigned int          size = 0;
-  int                   rc = 0;
-  unsigned int          go_deeper_in_tree = 1;
-
-  if ((NULL != s1ap_node) && (NULL != s1ap)) {
-    // see http://www.xmlsoft.org/html/libxml-tree.html#xmlCopyNode
-    if (NULL == s1ap->doc) {
-      xmlUnlinkNode(s1ap_node);
-      //cur_node = xmlCopyNodeList(s1ap_node);
-      //  arg2: if 1 do a recursive copy (properties, namespaces and children when applicable) if 2 copy properties and namespaces (when applicable)
-      //cur_node = xmlCopyNode(s1ap_node, 1);
-      //AssertFatal(NULL != cur_node, "xmlCopyNode Failed");
-      s1ap->doc = xmlNewDoc(BAD_CAST "1.0");
-      xmlDocSetRootElement(s1ap->doc, s1ap_node);
-    }
-
-    for (cur_node = (xmlNode *)s1ap_node; cur_node; cur_node = cur_node->next) {
-      go_deeper_in_tree = 1;
-      if ((!xmlStrcmp(cur_node->name, (const xmlChar *)"field"))) {
-        // do not get hidden fields
-        xml_char = xmlGetProp((xmlNode *)cur_node, (const xmlChar *)"hide");
-        if (NULL != xml_char) {
-          if ((!xmlStrcmp(xml_char, (const xmlChar *)"yes"))) {
-            go_deeper_in_tree = 0;
-          }
-          xmlFree(xml_char);
-        }
-        if (0 < go_deeper_in_tree) {
-          // first get size
-          xml_char = xmlGetProp((xmlNode *)cur_node, (const xmlChar *)"size");
-          if (NULL != xml_char) {
-            size = strtoul((const char *)xml_char, NULL, 0);
-            xmlFree(xml_char);
-            // second: try to get value (always hex)
-            xml_char = xmlGetProp((xmlNode *)cur_node, (const xmlChar *)"value");
-            if (NULL != xml_char) {
-              xml_char2 = xmlGetProp((xmlNode *)cur_node, (const xmlChar *)"name");
-              fprintf(stdout, "s1ap %p field name %s  size %u value %s\n",s1ap, xml_char2, size, xml_char);
-              xmlFree(xml_char2);
-              // if success to get value, do not parse children
-              //AssertFatal ((xmlStrlen(xml_char) == size), "ERROR %s() mismatch in size %d and strlen %d\n", __FUNCTION__, size, xmlStrlen(xml_char));
-              //if (xmlStrlen(xml_char) == size) {
-              AssertFatal ((s1ap->binary_stream_pos+xmlStrlen(xml_char)/2) <= s1ap->binary_stream_allocated_size,
-                "ERROR in buffer size: binary_stream_pos %d xmlStrlen(xml_char)/2=%d\n", s1ap->binary_stream_pos, xmlStrlen(xml_char)/2);
-              rc = et_hex2data( &s1ap->binary_stream[s1ap->binary_stream_pos], xml_char, xmlStrlen(xml_char));
-              s1ap->binary_stream_pos += xmlStrlen(xml_char)/2;
-              //et_display_node(cur_node, 0);
-              AssertFatal (rc >= 0, "ERROR in converting hex string %s len %d size %u rc %d\n", xml_char, xmlStrlen(xml_char), size, rc);
-              go_deeper_in_tree = 0;
-              //}
-              xmlFree(xml_char);
-            }
-          }
-        }
-      }
-      if (0 < go_deeper_in_tree) {
-        et_parse_s1ap(doc, cur_node->children, s1ap);
-      }
-    }
-  }
-}
-
-//------------------------------------------------------------------------------
-void et_parse_sctp_data_chunk(xmlDocPtr doc, const xmlNode const *sctp_node, sctp_datahdr_t * const sctp_hdr)
-{
-  xmlNode              *cur_node  = NULL;
-  xmlChar              *xml_char  = NULL;
-  xmlChar              *xml_char2 = NULL;
-
-  if ((NULL != sctp_node) && (NULL != sctp_hdr)) {
-    xml_char = xmlGetProp((xmlNode *)sctp_node, (const xmlChar *)"name");
-    if (NULL != xml_char) {
-      if ((!xmlStrcmp(xml_char, (const xmlChar *)"sctp.data_payload_proto_id"))) {
-        xml_char2 = xmlGetProp((xmlNode *)sctp_node, (const xmlChar *)"show");
-        if (NULL != xml_char2) {
-          sctp_hdr->ppid = strtoul((const char *)xml_char2, NULL, 0);
-          xmlFree(xml_char2);
-        }
-      } else if ((!xmlStrcmp(xml_char, (const xmlChar *)"sctp.data_sid"))) {
-        xml_char2 = xmlGetProp((xmlNode *)sctp_node, (const xmlChar *)"show");
-        if (NULL != xml_char2) {
-          sctp_hdr->stream = strtoul((const char *)xml_char2, NULL, 16);
-          xmlFree(xml_char2);
-        }
-      } else if ((!xmlStrcmp(xml_char, (const xmlChar *)"sctp.data_tsn"))) {
-        xml_char2 = xmlGetProp((xmlNode *)sctp_node, (const xmlChar *)"show");
-        if (NULL != xml_char2) {
-          sctp_hdr->tsn = strtoul((const char *)xml_char2, NULL, 0);
-          xmlFree(xml_char2);
-        }
-      } else if ((!xmlStrcmp(xml_char, (const xmlChar *)"sctp.data_ssn"))) {
-        xml_char2 = xmlGetProp((xmlNode *)sctp_node, (const xmlChar *)"show");
-        if (NULL != xml_char2) {
-          sctp_hdr->ssn = strtoul((const char *)xml_char2, NULL, 0);
-          xmlFree(xml_char2);
-        }
-      }
-      xmlFree(xml_char);
-    }
-    for (cur_node = sctp_node->children; cur_node; cur_node = cur_node->next) {
-      et_parse_sctp_data_chunk(doc, cur_node, sctp_hdr);
-    }
-  }
-
-}
-//------------------------------------------------------------------------------
-void et_parse_sctp_init_chunk(xmlDocPtr doc, const xmlNode const *sctp_node, sctp_inithdr_t * const sctp_hdr)
-{
-  xmlNode              *cur_node  = NULL;
-  xmlChar              *xml_char  = NULL;
-  xmlChar              *xml_char2 = NULL;
-
-  if ((NULL != sctp_node) && (NULL != sctp_hdr)) {
-    xml_char = xmlGetProp((xmlNode *)sctp_node, (const xmlChar *)"name");
-    if (NULL != xml_char) {
-      if ((!xmlStrcmp(xml_char, (const xmlChar *)"sctp.init_nr_out_streams"))) {
-        xml_char2 = xmlGetProp((xmlNode *)sctp_node, (const xmlChar *)"value");
-        if (NULL != xml_char2) {
-          sctp_hdr->num_outbound_streams = strtoul((const char *)xml_char2, NULL, 0);
-          xmlFree(xml_char2);
-        }
-      } else if ((!xmlStrcmp(xml_char, (const xmlChar *)"sctp.init_nr_in_streams"))) {
-        xml_char2 = xmlGetProp((xmlNode *)sctp_node, (const xmlChar *)"value");
-        if (NULL != xml_char2) {
-          sctp_hdr->num_inbound_streams = strtoul((const char *)xml_char2, NULL, 0);
-          xmlFree(xml_char2);
-        }
-      } else if ((!xmlStrcmp(xml_char, (const xmlChar *)"sctp.init_credit"))) {
-        xml_char2 = xmlGetProp((xmlNode *)sctp_node, (const xmlChar *)"value");
-        if (NULL != xml_char2) {
-          sctp_hdr->a_rwnd = strtoul((const char *)xml_char2, NULL, 0);
-          xmlFree(xml_char2);
-        }
-      } else if ((!xmlStrcmp(xml_char, (const xmlChar *)"sctp.init_initial_tsn"))) {
-        xml_char2 = xmlGetProp((xmlNode *)sctp_node, (const xmlChar *)"show");
-        if (NULL != xml_char2) {
-          sctp_hdr->initial_tsn = strtoul((const char *)xml_char2, NULL, 0);
-          xmlFree(xml_char2);
-        }
-      } else if ((!xmlStrcmp(xml_char, (const xmlChar *)"sctp.init_initiate_tag"))) {
-        xml_char2 = xmlGetProp((xmlNode *)sctp_node, (const xmlChar *)"show");
-        if (NULL != xml_char2) {
-          sctp_hdr->init_tag = strtoul((const char *)xml_char2, NULL, 16);
-          xmlFree(xml_char2);
-        }
-      }
-      xmlFree(xml_char);
-    }
-    for (cur_node = sctp_node->children; cur_node; cur_node = cur_node->next) {
-      et_parse_sctp_init_chunk(doc, cur_node, sctp_hdr);
-    }
-  }
-}
-//------------------------------------------------------------------------------
-void et_parse_sctp_init_ack_chunk(xmlDocPtr doc, const xmlNode const *sctp_node, sctp_initackhdr_t * const sctp_hdr)
-{
-  xmlNode              *cur_node  = NULL;
-  xmlChar              *xml_char  = NULL;
-  xmlChar              *xml_char2 = NULL;
-
-  if ((NULL != sctp_node) && (NULL != sctp_hdr)) {
-    xml_char = xmlGetProp((xmlNode *)sctp_node, (const xmlChar *)"name");
-    if (NULL != xml_char) {
-      if ((!xmlStrcmp(xml_char, (const xmlChar *)"sctp.initack_nr_out_streams"))) {
-        xml_char2 = xmlGetProp((xmlNode *)sctp_node, (const xmlChar *)"value");
-        if (NULL != xml_char2) {
-          sctp_hdr->num_outbound_streams = strtoul((const char *)xml_char2, NULL, 0);
-          xmlFree(xml_char2);
-        }
-      } else if ((!xmlStrcmp(xml_char, (const xmlChar *)"sctp.initack_nr_in_streams"))) {
-        xml_char2 = xmlGetProp((xmlNode *)(xmlNode *)sctp_node, (const xmlChar *)"value");
-        if (NULL != xml_char2) {
-          sctp_hdr->num_inbound_streams = strtoul((const char *)xml_char2, NULL, 0);
-          xmlFree(xml_char2);
-        }
-      } else if ((!xmlStrcmp(xml_char, (const xmlChar *)"sctp.initack_credit"))) {
-        xml_char2 = xmlGetProp((xmlNode *)sctp_node, (const xmlChar *)"value");
-        if (NULL != xml_char2) {
-          sctp_hdr->a_rwnd = strtoul((const char *)xml_char2, NULL, 0);
-          xmlFree(xml_char2);
-        }
-      } else if ((!xmlStrcmp(xml_char, (const xmlChar *)"sctp.initack_initial_tsn"))) {
-        xml_char2 = xmlGetProp((xmlNode *)sctp_node, (const xmlChar *)"show");
-        if (NULL != xml_char2) {
-          sctp_hdr->initial_tsn = strtoul((const char *)xml_char2, NULL, 0);
-          xmlFree(xml_char2);
-        }
-      } else if ((!xmlStrcmp(xml_char, (const xmlChar *)"sctp.initack_initiate_tag"))) {
-        xml_char2 = xmlGetProp((xmlNode *)sctp_node, (const xmlChar *)"show");
-        if (NULL != xml_char2) {
-          sctp_hdr->init_tag = strtoul((const char *)xml_char2, NULL, 16);
-          xmlFree(xml_char2);
-        }
-      }
-      xmlFree(xml_char);
-    }
-    for (cur_node = sctp_node->children; cur_node; cur_node = cur_node->next) {
-      et_parse_sctp_init_ack_chunk(doc, cur_node, sctp_hdr);
-    }
-  }
-}
-//------------------------------------------------------------------------------
-void et_parse_sctp(xmlDocPtr doc, const xmlNode const *sctp_node, et_sctp_hdr_t * const sctp_hdr)
-{
-  xmlNode              *cur_node  = NULL;
-  xmlChar              *xml_char  = NULL;
-  xmlChar              *xml_char2 = NULL;
-
-  if ((NULL != sctp_node) && (NULL != sctp_hdr)) {
-    if ((!xmlStrcmp(sctp_node->name, (const xmlChar *)"proto"))) {
-      xml_char = xmlGetProp((xmlNode *)sctp_node, (const xmlChar *)"name");
-      if (NULL != xml_char) {
-        if ((!xmlStrcmp(xml_char, (const xmlChar *)"s1ap"))) {
-          xmlFree(xml_char);
-          xml_char = xmlGetProp((xmlNode *)sctp_node, (const xmlChar *)"pos");
-          if (NULL != xml_char) {
-            sctp_hdr->u.data_hdr.payload.xml_stream_pos_offset = strtoul((const char *)xml_char, NULL, 0);
-            xmlFree(xml_char);
-
-            xml_char2 = xmlGetProp((xmlNode *)sctp_node, (const xmlChar *)"size");
-            if (NULL != xml_char2) {
-              sctp_hdr->u.data_hdr.payload.binary_stream_allocated_size = strtoul((const char *)xml_char2, NULL, 0);
-              sctp_hdr->u.data_hdr.payload.binary_stream     = calloc(1, sctp_hdr->u.data_hdr.payload.binary_stream_allocated_size);
-              sctp_hdr->u.data_hdr.payload.binary_stream_pos = 0;
-              fprintf(stdout, "Allocating payload of sctp_hdr %p %u bytes\n", sctp_hdr, sctp_hdr->u.data_hdr.payload.binary_stream_allocated_size);
-              xmlFree(xml_char2);
-            }
-            et_parse_s1ap(doc, sctp_node, &sctp_hdr->u.data_hdr.payload);
-            et_decode_s1ap(&sctp_hdr->u.data_hdr.payload);
-            return;
-          }
-        }
-        xmlFree(xml_char);
-      }
-    }
-    //if ((cur_node->type == XML_ATTRIBUTE_NODE) || (cur_node->type == XML_ELEMENT_NODE)) {
-    xml_char = xmlGetProp((xmlNode *)sctp_node, (const xmlChar *)"name");
-    if (NULL != xml_char) {
-      if ((!xmlStrcmp(xml_char, (const xmlChar *)"sctp.srcport"))) {
-        xml_char2 = xmlGetProp((xmlNode *)sctp_node, (const xmlChar *)"value");
-        if (NULL != xml_char2) {
-          sctp_hdr->src_port = strtoul((const char *)xml_char2, NULL, 16);
-          xmlFree(xml_char2);
-        }
-      } else if ((!xmlStrcmp(xml_char, (const xmlChar *)"sctp.dstport"))) {
-        xml_char2 = xmlGetProp((xmlNode *)sctp_node, (const xmlChar *)"value");
-        if (NULL != xml_char2) {
-          sctp_hdr->dst_port = strtoul((const char *)xml_char2, NULL, 16);
-          xmlFree(xml_char2);
-        }
-      } else  if ((!xmlStrcmp(xml_char, (const xmlChar *)"sctp.chunk_type"))) {
-        xml_char2 = xmlGetProp((xmlNode *)sctp_node, (const xmlChar *)"value");
-        if (NULL != xml_char2) {
-          sctp_hdr->chunk_type = strtoul((const char *)xml_char2, NULL, 0);
-          xmlFree(xml_char2);
-          switch (sctp_hdr->chunk_type) {
-            case SCTP_CID_DATA:
-              et_parse_sctp_data_chunk(doc, sctp_node->parent, &sctp_hdr->u.data_hdr);
-              break;
-            case SCTP_CID_INIT:
-              et_parse_sctp_init_chunk(doc, sctp_node->parent, &sctp_hdr->u.init_hdr);
-              break;
-            case SCTP_CID_INIT_ACK:
-              et_parse_sctp_init_ack_chunk(doc, sctp_node->parent, &sctp_hdr->u.init_ack_hdr);
-              break;
-            default:
-              ;
-          }
-        }
-      }
-    }
-    for (cur_node = sctp_node->children; cur_node; cur_node = cur_node->next) {
-      et_parse_sctp(doc, cur_node, sctp_hdr);
-    }
-  }
-}
-//------------------------------------------------------------------------------
-void et_packet_shift_timing(et_packet_t * const packet, const struct timeval * const shift)
-{
-  timeval_add(&packet->time_relative_to_first_packet, &packet->time_relative_to_first_packet, shift);
-  AssertFatal((packet->time_relative_to_first_packet.tv_sec >= 0) && (packet->time_relative_to_first_packet.tv_usec >= 0),
-      "Bad timing result time_relative_to_first_packet=%d.%d packet num %u, original frame number %u",
-      packet->time_relative_to_first_packet.tv_sec,
-      packet->time_relative_to_first_packet.tv_usec,
-      packet->packet_number,
-      packet->original_frame_number);
-
-  timeval_add(&packet->time_relative_to_last_received_packet, &packet->time_relative_to_last_received_packet, shift);
-  AssertFatal((packet->time_relative_to_last_received_packet.tv_sec >= 0) && (packet->time_relative_to_last_received_packet.tv_usec >= 0),
-      "Bad timing result time_relative_to_last_received_packet=%d.%d packet num %u, original frame number %u",
-      packet->time_relative_to_last_received_packet.tv_sec,
-      packet->time_relative_to_last_received_packet.tv_usec,
-      packet->packet_number,
-      packet->original_frame_number);
-
-  timeval_add(&packet->time_relative_to_last_sent_packet, &packet->time_relative_to_last_sent_packet, shift);
-  AssertFatal((packet->time_relative_to_last_sent_packet.tv_sec >= 0) && (packet->time_relative_to_last_sent_packet.tv_usec >= 0),
-      "Bad timing result time_relative_to_last_sent_packet=%d.%d packet num %u, original frame number %u",
-      packet->time_relative_to_last_sent_packet.tv_sec,
-      packet->time_relative_to_last_sent_packet.tv_usec,
-      packet->packet_number,
-      packet->original_frame_number);
-}
-
-//------------------------------------------------------------------------------
-et_packet_t* et_parse_xml_packet(xmlDocPtr doc, xmlNodePtr node)
-{
-
-  et_packet_t          *packet   = NULL;
-  xmlNode              *cur_node = NULL;
-  xmlChar              *xml_char = NULL;
-  float                 afloat    = (float)0.0;
-  static struct timeval initial_time         = { .tv_sec = 0, .tv_usec = 0 };
-  static struct timeval relative_last_sent_packet     = { .tv_sec = 0, .tv_usec = 0 };
-  static struct timeval relative_last_received_packet = { .tv_sec = 0, .tv_usec = 0 };
-  static char           first_packet          = 1;
-  static char           first_sent_packet     = 1;
-  static char           first_received_packet = 1;
-  static unsigned int   packet_number = 1;
-
-
-  if (NULL != node) {
-    packet = calloc(1, sizeof(*packet));
-
-    xml_char = xmlGetProp(node, (const xmlChar *)"action");
-    packet->action = et_action_str2et_action_t(xml_char);
-    packet->status = ET_PACKET_STATUS_NONE;
-    xmlFree(xml_char);
-    packet->packet_number = packet_number++;
-
-    for (cur_node = node->children; cur_node; cur_node = cur_node->next) {
-      //if (cur_node->type == XML_ELEMENT_NODE) {
-        if ((!xmlStrcmp(cur_node->name, (const xmlChar *)"frame.time_relative"))) {
-          xml_char = xmlGetProp((xmlNode *)cur_node, (const xmlChar *)"value");
-          afloat = atof((const char*)xml_char);
-          xmlFree(xml_char);
-          fprintf(stdout, "Parsing packet frame.time_relative: %f\n", afloat);
-          packet->time_relative_to_first_packet.tv_sec   = (int)afloat;
-          packet->time_relative_to_first_packet.tv_usec  = (int)((afloat - packet->time_relative_to_first_packet.tv_sec)*1000000.0);
-
-          if (first_packet > 0) {
-            initial_time = packet->time_relative_to_first_packet;
-            packet->time_relative_to_first_packet.tv_sec  = 0;
-            packet->time_relative_to_first_packet.tv_usec = 0;
-            first_packet = 0;
-          } else {
-            timersub(&packet->time_relative_to_first_packet, &initial_time,
-                &packet->time_relative_to_first_packet);
-          }
-        } else if ((!xmlStrcmp(cur_node->name, (const xmlChar *)"frame.number"))) {
-          xml_char = xmlGetProp((xmlNode *)cur_node, (const xmlChar *)"value");
-          packet->original_frame_number = strtoul((const char *)xml_char, NULL, 0);
-          fprintf(stdout, "Parsing packet frame.number: %u\n", packet->original_frame_number);
-          xmlFree(xml_char);
-        } else if ((!xmlStrcmp(cur_node->name, (const xmlChar *)"ip.src"))) {
-          xml_char = xmlNodeListGetString(doc, cur_node->xmlChildrenNode, 1);
-          et_ip_str2et_ip(xml_char, &packet->ip_hdr.src);
-          xmlFree(xml_char);
-        } else if ((!xmlStrcmp(cur_node->name, (const xmlChar *)"ip.dst"))) {
-          xml_char = xmlNodeListGetString(doc, cur_node->xmlChildrenNode, 1);
-          et_ip_str2et_ip(xml_char, &packet->ip_hdr.dst);
-          xmlFree(xml_char);
-        } else if ((!xmlStrcmp(cur_node->name, (const xmlChar *)"proto"))) {
-          xml_char = xmlGetProp((xmlNode *)cur_node, (const xmlChar *)"name");
-          if (NULL != xml_char) {
-            if ((!xmlStrcmp(xml_char, (const xmlChar *)"sctp"))) {
-              et_parse_sctp(doc, cur_node, &packet->sctp_hdr);
-            }
-            xmlFree(xml_char);
-          }
-        } else if ((!xmlStrcmp(cur_node->name, (const xmlChar *)"eNB.instance"))) {
-          xml_char = xmlGetProp((xmlNode *)cur_node, (const xmlChar *)"value");
-          packet->enb_instance = strtoul((const char *)xml_char, NULL, 0);
-          xmlFree(xml_char);
-        }
-      //}
-    }
-  }
-  return packet;
-}
-//------------------------------------------------------------------------------
-et_scenario_t* et_generate_scenario(
-    const char  * const tsml_out_scenario_filename)
-{
-  xmlDocPtr            doc           = NULL;
-  xmlNodePtr           root          = NULL;
-  xmlNodePtr           node          = NULL;
-  xmlChar             *xml_char      = NULL;
-  et_scenario_t       *scenario      = NULL;
-  et_packet_t          *last_packet  = NULL;
-  et_packet_t          *packet       = NULL;
-  et_packet_t         **next_packet  = NULL;
-
-  doc = xmlParseFile(tsml_out_scenario_filename);
-  if (NULL == doc) {
-    AssertFatal (0, "Could not parse scenario xml file %s!\n", tsml_out_scenario_filename);
-  } else {
-    fprintf(stdout, "Test scenario file to play: %s\n", tsml_out_scenario_filename);
-    //xmlDebugDumpDocument(NULL, doc);
-  }
-
-  // Get root
-  root = xmlDocGetRootElement(doc);
-  if (NULL != root) {
-    if ((!xmlStrcmp(root->name, (const xmlChar *)"scenario"))) {
-      xml_char = xmlGetProp(root, (const xmlChar *)"name");
-      printf("scenario name: %s\n", xml_char);
-      scenario            = calloc(1, sizeof(*scenario));
-      scenario->name      = xml_char; // nodup nofree
-
-      next_packet = &scenario->list_packet;
-      for (node = root->children; node != NULL; node = node->next) {
-        if ((!xmlStrcmp(node->name, (const xmlChar *)"packet"))) {
-          packet = et_parse_xml_packet(doc, node);
-          if (NULL != packet) {
-            // special case: S1AP same frame for 2 packets
-            if (NULL != last_packet) {
-              if (last_packet->original_frame_number == packet->original_frame_number) {
-                // updating because these informations are not in 2nd sctp header (same IP packet)
-                packet->sctp_hdr.dst_port = last_packet->sctp_hdr.dst_port;
-                packet->sctp_hdr.src_port = last_packet->sctp_hdr.src_port;
-              }
-            }
-            *next_packet = packet;
-            next_packet = &packet->next;
-          } else {
-            fprintf(stdout, "WARNING omitted packet\n");
-          }
-        }
-        last_packet = packet;
-      }
-    }
-  } else {
-    fprintf(stderr, "Empty xml document\n");
-  }
-  xmlFreeDoc(doc);
-  xmlCleanupParser();
-  return scenario;
-}
-//------------------------------------------------------------------------------
-int et_generate_xml_scenario(
-    const char const * xml_in_dir_name,
-    const char const * xml_in_scenario_filename,
-    const char const * enb_config_filename,
-          char const * tsml_out_scenario_filename)
-//------------------------------------------------------------------------------
-{
-  //int fd_pdml_in;
-  xsltStylesheetPtr cur = NULL;
-  xmlDocPtr         doc, res;
-  FILE             *play_scenario_file = NULL;
-  const char       *params[2*ENB_CONFIG_MAX_XSLT_PARAMS];
-  int               nb_params = 0;
-  int               i,j;
-  char              astring[1024];
-  struct in_addr    addr;
-  int               ret      = 0;
-
-  memset(astring, 0, sizeof(astring));
-  if (getcwd(astring, sizeof(astring)) != NULL) {
-    fprintf(stdout, "working in %s directory\n", astring);
-  } else {
-    perror("getcwd() ERROR");
-    exit(1);
-  }
-
-
-  xmlSubstituteEntitiesDefault(1);
-  xmlLoadExtDtdDefaultValue = 1;
-  cur = xsltParseStylesheetFile((const xmlChar *)"/usr/share/oai/xsl/play_scenario.xsl");
-  if (NULL == cur) {
-    AssertFatal (0, "Could not parse stylesheet file /usr/share/oai/xsl/play_scenario.xsl!\n");
-  } else {
-    fprintf(stdout, "XSLT style sheet: /usr/share/oai/xsl/play_scenario.xsl\n");
-  }
-
-  doc = xmlParseFile(xml_in_scenario_filename);
-  if (NULL == doc) {
-    AssertFatal (0, "Could not parse scenario xml file %s!\n", xml_in_scenario_filename);
-  } else {
-    fprintf(stdout, "Test scenario file: %s\n", xml_in_scenario_filename);
-  }
-
-  for (i = 0; i < g_enb_properties.number; i++) {
-    // eNB S1-C IPv4 address
-    sprintf(astring, "enb%d_s1c", i);
-    params[nb_params++] = strdup(astring);
-    addr.s_addr = g_enb_properties.properties[i]->enb_ipv4_address_for_S1_MME;
-    sprintf(astring, "\"%s\"", inet_ntoa(addr));
-    params[nb_params++] = strdup(astring);
-
-    // MME S1-C IPv4 address
-    for (j = 0; j < g_enb_properties.properties[i]->nb_mme; j++) {
-      sprintf(astring, "mme%d_s1c_%d", i, j);
-      params[nb_params++] = strdup(astring);
-      AssertFatal (g_enb_properties.properties[i]->mme_ip_address[j].ipv4_address,
-          "Only support MME IPv4 address\n");
-      sprintf(astring, "\"%s\"", g_enb_properties.properties[i]->mme_ip_address[j].ipv4_address);
-      params[nb_params++] = strdup(astring);
-    }
-  }
-  params[nb_params] = NULL;
-  res = xsltApplyStylesheet(cur, doc, params);
-  if (NULL != res) {
-    sprintf((char *)tsml_out_scenario_filename,"%s",xml_in_scenario_filename);
-    if (et_strip_extension((char *)tsml_out_scenario_filename) > 0) {
-      strcat((char *)tsml_out_scenario_filename, ".tsml");
-      play_scenario_file = fopen( tsml_out_scenario_filename, "w+");
-      if (NULL != play_scenario_file) {
-        xsltSaveResultToFile(play_scenario_file, res, cur);
-        fclose(play_scenario_file);
-        fprintf(stdout, "Wrote test scenario to %s\n", tsml_out_scenario_filename);
-      } else {
-        fprintf(stderr, "ERROR in fopen(%s)\n", tsml_out_scenario_filename);
-        ret = -1;
-      }
-    } else {
-      fprintf(stderr, "ERROR in strip_extension()\n");
-      ret = -1;
-    }
-  } else {
-    fprintf(stderr, "ERROR in xsltApplyStylesheet()\n");
-    ret = -1;
-  }
-  xsltFreeStylesheet(cur);
-  xmlFreeDoc(doc);
-  xmlFreeDoc(res);
-
-  xsltCleanupGlobals();
-  xmlCleanupParser();
-  return ret;
-}
-
diff --git a/openair3/TEST/EPC_TEST/play_scenario_s1ap.c b/openair3/TEST/EPC_TEST/play_scenario_s1ap.c
deleted file mode 100644
index fe132fd2f5d270adf407956cc2836d0a8e398e1f..0000000000000000000000000000000000000000
--- a/openair3/TEST/EPC_TEST/play_scenario_s1ap.c
+++ /dev/null
@@ -1,1168 +0,0 @@
-/*
- * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The OpenAirInterface Software Alliance licenses this file to You under
- * the OAI Public License, Version 1.1  (the "License"); you may not use this file
- * except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.openairinterface.org/?page_id=698
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *-------------------------------------------------------------------------------
- * For more information about the OpenAirInterface (OAI) Software Alliance:
- *      contact@openairinterface.org
- */
-
-/*
-                                play_scenario_s1ap.c
-                                -------------------
-  AUTHOR  : Lionel GAUTHIER
-  COMPANY : EURECOM
-  EMAIL   : Lionel.Gauthier@eurecom.fr
- */
-#include <pthread.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <stdint.h>
-#include <unistd.h>
-#include <crypt.h>
-#include <sys/time.h>
-#include "tree.h"
-#include "queue.h"
-
-
-#include "intertask_interface.h"
-#include "platform_types.h"
-#include "assertions.h"
-#include "conversions.h"
-#include "s1ap_common.h"
-#include "play_scenario_s1ap_eNB_defs.h"
-#include "play_scenario.h"
-//------------------------------------------------------------------------------
-s1ap_eNB_internal_data_t s1ap_eNB_internal_data;
-RB_GENERATE(s1ap_mme_map, s1ap_eNB_mme_data_s, entry, et_s1ap_eNB_compare_assoc_id);
-//------------------------------------------------------------------------------
-extern et_scenario_t  *g_scenario;
-extern uint32_t        g_constraints;
-//------------------------------------------------------------------------------
-int et_s1ap_eNB_compare_assoc_id(
-  struct s1ap_eNB_mme_data_s *p1, struct s1ap_eNB_mme_data_s *p2)
-{
-  if (p1->assoc_id == -1) {
-    if (p1->cnx_id < p2->cnx_id) {
-      return -1;
-    }
-    if (p1->cnx_id > p2->cnx_id) {
-      return 1;
-    }
-  } else {
-    if (p1->assoc_id < p2->assoc_id) {
-      return -1;
-    }
-    if (p1->assoc_id > p2->assoc_id) {
-      return 1;
-    }
-  }
-
-  /* Matching reference */
-  return 0;
-}
-//------------------------------------------------------------------------------
-uint32_t et_s1ap_generate_eNB_id(void)
-{
-  char    *out;
-  char     hostname[50];
-  int      ret;
-  uint32_t eNB_id;
-
-  /* Retrieve the host name */
-  ret = gethostname(hostname, sizeof(hostname));
-  DevAssert(ret == 0);
-
-  out = crypt(hostname, "eurecom");
-  DevAssert(out != NULL);
-
-  eNB_id = ((out[0] << 24) | (out[1] << 16) | (out[2] << 8) | out[3]);
-
-  return eNB_id;
-}
-//------------------------------------------------------------------------------
-uint16_t et_s1ap_eNB_fetch_add_global_cnx_id(void)
-{
-  return ++s1ap_eNB_internal_data.global_cnx_id;
-}
-
-//------------------------------------------------------------------------------
-void et_s1ap_eNB_prepare_internal_data(void)
-{
-  memset(&s1ap_eNB_internal_data, 0, sizeof(s1ap_eNB_internal_data));
-  STAILQ_INIT(&s1ap_eNB_internal_data.s1ap_eNB_instances_head);
-}
-
-//------------------------------------------------------------------------------
-void et_s1ap_eNB_insert_new_instance(s1ap_eNB_instance_t *new_instance_p)
-{
-  DevAssert(new_instance_p != NULL);
-
-  STAILQ_INSERT_TAIL(&s1ap_eNB_internal_data.s1ap_eNB_instances_head,
-                     new_instance_p, s1ap_eNB_entries);
-}
-
-//------------------------------------------------------------------------------
-struct s1ap_eNB_mme_data_s *et_s1ap_eNB_get_MME(
-  s1ap_eNB_instance_t *instance_p,
-  int32_t assoc_id, uint16_t cnx_id)
-{
-  struct s1ap_eNB_mme_data_s  temp;
-  struct s1ap_eNB_mme_data_s *found;
-
-  memset(&temp, 0, sizeof(struct s1ap_eNB_mme_data_s));
-
-  temp.assoc_id = assoc_id;
-  temp.cnx_id   = cnx_id;
-
-  if (instance_p == NULL) {
-    STAILQ_FOREACH(instance_p, &s1ap_eNB_internal_data.s1ap_eNB_instances_head,
-                   s1ap_eNB_entries) {
-      found = RB_FIND(s1ap_mme_map, &instance_p->s1ap_mme_head, &temp);
-
-      if (found != NULL) {
-        return found;
-      }
-    }
-  } else {
-    return RB_FIND(s1ap_mme_map, &instance_p->s1ap_mme_head, &temp);
-  }
-
-  return NULL;
-}
-
-//------------------------------------------------------------------------------
-s1ap_eNB_instance_t *et_s1ap_eNB_get_instance(instance_t instance)
-{
-  s1ap_eNB_instance_t *temp = NULL;
-
-  STAILQ_FOREACH(temp, &s1ap_eNB_internal_data.s1ap_eNB_instances_head,
-                 s1ap_eNB_entries) {
-    if (temp->instance == instance) {
-      /* Matching occurence */
-      return temp;
-    }
-  }
-
-  return NULL;
-}
-//------------------------------------------------------------------------------
-void et_s1ap_eNB_itti_send_sctp_data_req(instance_t instance, int32_t assoc_id, uint8_t *buffer,
-                                      uint32_t buffer_length, uint16_t stream)
-{
-  MessageDef      *message_p;
-  sctp_data_req_t *sctp_data_req;
-
-  message_p = itti_alloc_new_message(TASK_S1AP, SCTP_DATA_REQ);
-
-  sctp_data_req = &message_p->ittiMsg.sctp_data_req;
-
-  sctp_data_req->assoc_id      = assoc_id;
-  sctp_data_req->buffer        = buffer;
-  sctp_data_req->buffer_length = buffer_length;
-  sctp_data_req->stream        = stream;
-
-  itti_send_msg_to_task(TASK_SCTP, instance, message_p);
-}
-//------------------------------------------------------------------------------
-int et_handle_s1ap_mismatch_mme_ue_s1ap_id(et_packet_t * const spacket, et_packet_t * const rx_packet)
-{
-  S1AP_MME_UE_S1AP_ID_t scenario_mme_ue_s1ap_id = 0;
-  S1AP_MME_UE_S1AP_ID_t rx_mme_ue_s1ap_id       = 0;
-  S1AP_PDU_PR           present;
-
-  present = rx_packet->sctp_hdr.u.data_hdr.payload.pdu.present;
-
-  switch (rx_packet->sctp_hdr.u.data_hdr.payload.message.procedureCode) {
-    case S1AP_ProcedureCode_id_HandoverPreparation:
-      if (present == S1AP_S1AP_PDU_PR_initiatingMessage) {
-        rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_HandoverRequiredIEs.mme_ue_s1ap_id;
-        scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_HandoverRequiredIEs.mme_ue_s1ap_id;
-      } else {
-        rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_HandoverCommandIEs.mme_ue_s1ap_id;
-        scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_HandoverCommandIEs.mme_ue_s1ap_id;
-      }
-      break;
-
-    case S1AP_ProcedureCode_id_HandoverResourceAllocation:
-      if (present == S1AP_S1AP_PDU_PR_initiatingMessage) {
-        rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_HandoverRequestIEs.mme_ue_s1ap_id;
-        scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_HandoverRequestIEs.mme_ue_s1ap_id;
-      } else if (present == S1AP_S1AP_PDU_PR_successfulOutcome) {
-        rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_HandoverRequestAcknowledgeIEs.mme_ue_s1ap_id;
-        scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_HandoverRequestAcknowledgeIEs.mme_ue_s1ap_id;
-      } else if (present == S1AP_S1AP_PDU_PR_unsuccessfulOutcome) {
-        rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_HandoverFailureIEs.mme_ue_s1ap_id;
-        scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_HandoverFailureIEs.mme_ue_s1ap_id;
-      }
-      break;
-
-    case S1AP_ProcedureCode_id_HandoverNotification:
-      rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_HandoverNotifyIEs.mme_ue_s1ap_id;
-      scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_HandoverNotifyIEs.mme_ue_s1ap_id;
-      break;
-
-    case S1AP_ProcedureCode_id_PathSwitchRequest:
-      //rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_PathSwitchRequestIEs.mme_ue_s1ap_id;
-      //scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_PathSwitchRequestIEs.mme_ue_s1ap_id;
-      break;
-
-    case S1AP_ProcedureCode_id_HandoverCancel:
-      rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_HandoverCancelIEs.mme_ue_s1ap_id;
-      scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_HandoverCancelIEs.mme_ue_s1ap_id;
-      break;
-
-    case  S1AP_ProcedureCode_id_E_RABSetup:
-      if (present == S1AP_S1AP_PDU_PR_initiatingMessage) {
-        rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_E_RABSetupRequestIEs.mme_ue_s1ap_id;
-        scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_E_RABSetupRequestIEs.mme_ue_s1ap_id;
-      } else  {
-        rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_E_RABSetupResponseIEs.mme_ue_s1ap_id;
-        scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_E_RABSetupResponseIEs.mme_ue_s1ap_id;
-      }
-      break;
-
-    case  S1ap_ProcedureCode_id_E_RABModify:
-      if (present == S1AP_PDU_PR_initiatingMessage) {
-        rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_E_RABModifyRequestIEs.mme_ue_s1ap_id;
-        scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_E_RABModifyRequestIEs.mme_ue_s1ap_id;
-      } else  {
-        rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_E_RABModifyResponseIEs.mme_ue_s1ap_id;
-        scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_E_RABModifyResponseIEs.mme_ue_s1ap_id;
-      }
-      break;
-
-    case  S1ap_ProcedureCode_id_E_RABRelease:
-      if (present == S1AP_PDU_PR_initiatingMessage) {
-        rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_E_RABReleaseCommandIEs.mme_ue_s1ap_id;
-        scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_E_RABReleaseCommandIEs.mme_ue_s1ap_id;
-      } else  {
-        rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_E_RABReleaseResponseIEs.mme_ue_s1ap_id;
-        scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_E_RABReleaseResponseIEs.mme_ue_s1ap_id;
-      }
-      break;
-
-    case  S1ap_ProcedureCode_id_E_RABReleaseIndication:
-      rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_E_RABReleaseIndicationIEs.mme_ue_s1ap_id;
-      scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_E_RABReleaseIndicationIEs.mme_ue_s1ap_id;
-      break;
-
-    case  S1ap_ProcedureCode_id_InitialContextSetup:
-      if (present == S1AP_PDU_PR_initiatingMessage) {
-        rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_InitialContextSetupRequestIEs.mme_ue_s1ap_id;
-        scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_InitialContextSetupRequestIEs.mme_ue_s1ap_id;
-      } else  {
-        rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_InitialContextSetupResponseIEs.mme_ue_s1ap_id;
-        scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_InitialContextSetupResponseIEs.mme_ue_s1ap_id;
-      }
-      break;
-
-    case  S1ap_ProcedureCode_id_Paging:
-      //rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_PagingIEs.mme_ue_s1ap_id;
-      //scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_PagingIEs.mme_ue_s1ap_id;
-      break;
-
-    case  S1ap_ProcedureCode_id_downlinkNASTransport:
-      rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_DownlinkNASTransportIEs.mme_ue_s1ap_id;
-      scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_DownlinkNASTransportIEs.mme_ue_s1ap_id;
-      break;
-
-    case  S1ap_ProcedureCode_id_initialUEMessage:
-      //rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_InitialUEMessageIEs.mme_ue_s1ap_id;
-      //scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_InitialUEMessageIEs.mme_ue_s1ap_id;
-      break;
-
-    case  S1ap_ProcedureCode_id_uplinkNASTransport:
-      rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_UplinkNASTransportIEs.mme_ue_s1ap_id;
-      scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_UplinkNASTransportIEs.mme_ue_s1ap_id;
-      break;
-
-    case  S1ap_ProcedureCode_id_Reset:
-      //rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_ResetIEs.mme_ue_s1ap_id;
-      //scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_ResetIEs.mme_ue_s1ap_id;
-      break;
-
-    case  S1ap_ProcedureCode_id_ErrorIndication:
-      rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_ErrorIndicationIEs.mme_ue_s1ap_id;
-      scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_ErrorIndicationIEs.mme_ue_s1ap_id;
-      break;
-
-    case  S1ap_ProcedureCode_id_NASNonDeliveryIndication:
-      rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_NASNonDeliveryIndication_IEs.mme_ue_s1ap_id;
-      scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_NASNonDeliveryIndication_IEs.mme_ue_s1ap_id;
-      break;
-
-    case  S1ap_ProcedureCode_id_S1Setup:
-      /*if (present == S1AP_PDU_PR_initiatingMessage) {
-        rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_S1SetupRequestIEs.mme_ue_s1ap_id;
-        scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_S1SetupRequestIEs.mme_ue_s1ap_id;
-      } else if (present == S1AP_PDU_PR_successfulOutcome) {
-        rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_S1SetupResponseIEs.mme_ue_s1ap_id;
-        scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_S1SetupResponseIEs.mme_ue_s1ap_id;
-      } else if (present == S1AP_PDU_PR_unsuccessfulOutcome) {
-        rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_S1SetupFailureIEs.mme_ue_s1ap_id;
-        scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_S1SetupFailureIEs.mme_ue_s1ap_id;
-      }*/
-      break;
-
-    case  S1ap_ProcedureCode_id_UEContextReleaseRequest:
-      rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_UEContextReleaseRequestIEs.mme_ue_s1ap_id;
-      scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_UEContextReleaseRequestIEs.mme_ue_s1ap_id;
-      break;
-
-    case  S1ap_ProcedureCode_id_DownlinkS1cdma2000tunneling:
-      rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_DownlinkS1cdma2000tunnelingIEs.mme_ue_s1ap_id;
-      scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_DownlinkS1cdma2000tunnelingIEs.mme_ue_s1ap_id;
-      break;
-
-    case  S1ap_ProcedureCode_id_UplinkS1cdma2000tunneling:
-      rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_UplinkS1cdma2000tunnelingIEs.mme_ue_s1ap_id;
-      scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_UplinkS1cdma2000tunnelingIEs.mme_ue_s1ap_id;
-      break;
-
-    case  S1ap_ProcedureCode_id_UEContextModification:
-      if (present == S1AP_PDU_PR_initiatingMessage) {
-        rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_UEContextModificationRequestIEs.mme_ue_s1ap_id;
-        scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_UEContextModificationRequestIEs.mme_ue_s1ap_id;
-      } else if (present == S1AP_PDU_PR_successfulOutcome) {
-        rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_UEContextModificationResponseIEs.mme_ue_s1ap_id;
-        scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_UEContextModificationResponseIEs.mme_ue_s1ap_id;
-      } else if (present == S1AP_PDU_PR_unsuccessfulOutcome) {
-        rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_UEContextModificationFailureIEs.mme_ue_s1ap_id;
-        scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_UEContextModificationFailureIEs.mme_ue_s1ap_id;
-      }
-      break;
-
-    case  S1ap_ProcedureCode_id_UECapabilityInfoIndication:
-      rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_UECapabilityInfoIndicationIEs.mme_ue_s1ap_id;
-      scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_UECapabilityInfoIndicationIEs.mme_ue_s1ap_id;
-      break;
-
-    case  S1ap_ProcedureCode_id_UEContextRelease:
-      if (present == S1AP_PDU_PR_initiatingMessage) {
-        switch (rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_UEContextReleaseCommandIEs.uE_S1AP_IDs.present) {
-          case S1ap_UE_S1AP_IDs_PR_uE_S1AP_ID_pair:
-            rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_UEContextReleaseCommandIEs.uE_S1AP_IDs.choice.uE_S1AP_ID_pair.mME_UE_S1AP_ID;
-            scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_UEContextReleaseCommandIEs.uE_S1AP_IDs.choice.uE_S1AP_ID_pair.mME_UE_S1AP_ID;
-            break;
-          case S1ap_UE_S1AP_IDs_PR_mME_UE_S1AP_ID:
-            rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_UEContextReleaseCommandIEs.uE_S1AP_IDs.choice.mME_UE_S1AP_ID;
-            scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_UEContextReleaseCommandIEs.uE_S1AP_IDs.choice.mME_UE_S1AP_ID;
-            break;
-        }
-      } else  {
-        rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_UEContextReleaseCompleteIEs.mme_ue_s1ap_id;
-        scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_UEContextReleaseCompleteIEs.mme_ue_s1ap_id;
-      }
-      break;
-
-    case  S1ap_ProcedureCode_id_eNBStatusTransfer:
-      rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_ENBStatusTransferIEs.mme_ue_s1ap_id;
-      scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_ENBStatusTransferIEs.mme_ue_s1ap_id;
-      break;
-
-    case  S1ap_ProcedureCode_id_MMEStatusTransfer:
-      rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_MMEStatusTransferIEs.mme_ue_s1ap_id;
-      scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_MMEStatusTransferIEs.mme_ue_s1ap_id;
-      break;
-
-    case  S1ap_ProcedureCode_id_DeactivateTrace:
-      rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_DeactivateTraceIEs.mme_ue_s1ap_id;
-      scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_DeactivateTraceIEs.mme_ue_s1ap_id;
-      break;
-
-    case  S1ap_ProcedureCode_id_TraceStart:
-      rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_TraceStartIEs.mme_ue_s1ap_id;
-      scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_TraceStartIEs.mme_ue_s1ap_id;
-      break;
-
-    case  S1ap_ProcedureCode_id_TraceFailureIndication:
-      rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_TraceFailureIndicationIEs.mme_ue_s1ap_id;
-      scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_TraceFailureIndicationIEs.mme_ue_s1ap_id;
-      break;
-
-    case  S1ap_ProcedureCode_id_ENBConfigurationUpdate:
-      /*if (present == S1AP_PDU_PR_initiatingMessage) {
-        rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_ENBConfigurationUpdateIEs.mme_ue_s1ap_id;
-        scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_ENBConfigurationUpdateIEs.mme_ue_s1ap_id;
-      } else if (present == S1AP_PDU_PR_successfulOutcome) {
-        rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_ENBConfigurationUpdateAcknowledgeIEs.mme_ue_s1ap_id;
-        scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_ENBConfigurationUpdateAcknowledgeIEs.mme_ue_s1ap_id;
-      } else {
-        rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_ENBConfigurationUpdateFailureIEs.mme_ue_s1ap_id;
-        scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_ENBConfigurationUpdateFailureIEs.mme_ue_s1ap_id;
-      }*/
-      break;
-
-    case  S1ap_ProcedureCode_id_MMEConfigurationUpdate:
-      /*if (present == S1AP_PDU_PR_initiatingMessage) {
-        rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_MMEConfigurationUpdateIEs.mme_ue_s1ap_id;
-        scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_MMEConfigurationUpdateIEs.mme_ue_s1ap_id;
-      } else if (present == S1AP_PDU_PR_successfulOutcome) {
-        rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_MMEConfigurationUpdateAcknowledgeIEs.mme_ue_s1ap_id;
-        scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_MMEConfigurationUpdateAcknowledgeIEs.mme_ue_s1ap_id;
-      } else {
-        rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_MMEConfigurationUpdateFailureIEs.mme_ue_s1ap_id;
-        scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_MMEConfigurationUpdateFailureIEs.mme_ue_s1ap_id;
-      }*/
-      break;
-
-    case  S1ap_ProcedureCode_id_LocationReportingControl:
-      rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_LocationReportingControlIEs.mme_ue_s1ap_id;
-      scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_LocationReportingControlIEs.mme_ue_s1ap_id;
-      break;
-
-    case  S1ap_ProcedureCode_id_LocationReportingFailureIndication:
-      rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_LocationReportingFailureIndicationIEs.mme_ue_s1ap_id;
-      scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_LocationReportingFailureIndicationIEs.mme_ue_s1ap_id;
-      break;
-
-    case  S1ap_ProcedureCode_id_LocationReport:
-      rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_LocationReportIEs.mme_ue_s1ap_id;
-      scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_LocationReportIEs.mme_ue_s1ap_id;
-      break;
-
-    case  S1ap_ProcedureCode_id_OverloadStart:
-      //rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_OverloadStartIEs.mme_ue_s1ap_id;
-      //scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_OverloadStartIEs.mme_ue_s1ap_id;
-      break;
-
-    case  S1ap_ProcedureCode_id_OverloadStop:
-      //rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_OverloadStopIEs.mme_ue_s1ap_id;
-      //scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_OverloadStopIEs.mme_ue_s1ap_id;
-      break;
-
-    case  S1ap_ProcedureCode_id_WriteReplaceWarning:
-      /*if (present == S1AP_PDU_PR_initiatingMessage) {
-        rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_WriteReplaceWarningRequestIEs.mme_ue_s1ap_id;
-        scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_WriteReplaceWarningRequestIEs.mme_ue_s1ap_id;
-      } else  {
-        rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_WriteReplaceWarningResponseIEs.mme_ue_s1ap_id;
-        scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_WriteReplaceWarningResponseIEs.mme_ue_s1ap_id;
-      }*/
-      break;
-
-    case S1AP_ProcedureCode_id_eNBDirectInformationTransfer:
-      //rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_ENBDirectInformationTransferIEs.mme_ue_s1ap_id;
-      //scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_ENBDirectInformationTransferIEs.mme_ue_s1ap_id;
-      break;
-
-    case S1AP_ProcedureCode_id_MMEDirectInformationTransfer:
-      //rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_MMEDirectInformationTransferIEs.mme_ue_s1ap_id;
-      //scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_MMEDirectInformationTransferIEs.mme_ue_s1ap_id;
-      break;
-
-    case S1AP_ProcedureCode_id_PrivateMessage:
-    case S1AP_ProcedureCode_id_eNBConfigurationTransfer:
-    case S1AP_ProcedureCode_id_MMEConfigurationTransfer:
-      AssertFatal(0, "TODO");
-      break;
-
-    case S1AP_ProcedureCode_id_CellTrafficTrace:
-      rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_CellTrafficTraceIEs.mme_ue_s1ap_id;
-      scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_CellTrafficTraceIEs.mme_ue_s1ap_id;
-      break;
-
-    case S1AP_ProcedureCode_id_Kill:
-      /*if (present == S1AP_S1AP_PDU_PR_initiatingMessage) {
-        rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_KillRequestIEs.mme_ue_s1ap_id;
-        scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_KillRequestIEs.mme_ue_s1ap_id;
-      } else  {
-        rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_KillResponseIEs.mme_ue_s1ap_id;
-        scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_KillResponseIEs.mme_ue_s1ap_id;
-      }*/
-      break;
-
-    case S1AP_ProcedureCode_id_downlinkUEAssociatedLPPaTransport:
-      rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_DownlinkUEAssociatedLPPaTransport_IEs.mme_ue_s1ap_id;
-      scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_DownlinkUEAssociatedLPPaTransport_IEs.mme_ue_s1ap_id;
-      break;
-
-    case S1AP_ProcedureCode_id_uplinkUEAssociatedLPPaTransport:
-      rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_UplinkUEAssociatedLPPaTransport_IEs.mme_ue_s1ap_id;
-      scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_UplinkUEAssociatedLPPaTransport_IEs.mme_ue_s1ap_id;
-      break;
-
-    case S1AP_ProcedureCode_id_downlinkNonUEAssociatedLPPaTransport:
-      //rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_DownlinkNonUEAssociatedLPPaTransport_IEs.mme_ue_s1ap_id;
-      //scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_DownlinkNonUEAssociatedLPPaTransport_IEs.mme_ue_s1ap_id;
-      break;
-
-    case S1AP_ProcedureCode_id_uplinkNonUEAssociatedLPPaTransport:
-      //rx_mme_ue_s1ap_id       = rx_packet->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_UplinkNonUEAssociatedLPPaTransport_IEs.mme_ue_s1ap_id;
-      //scenario_mme_ue_s1ap_id = spacket->sctp_hdr.u.data_hdr.payload.message.msg.s1ap_UplinkNonUEAssociatedLPPaTransport_IEs.mme_ue_s1ap_id;
-      break;
-
-    default:
-      AssertFatal(0, "Unknown procedure code %ld", rx_packet->sctp_hdr.u.data_hdr.payload.message.procedureCode);
-  }
-
-  if (scenario_mme_ue_s1ap_id != rx_mme_ue_s1ap_id) {
-    S1AP_DEBUG("%s() Updating  mme_ue_s1ap_id %u -> %u \n", __FUNCTION__, scenario_mme_ue_s1ap_id, rx_mme_ue_s1ap_id);
-    et_packet_t *p = spacket;
-
-    while (p) {
-      et_s1ap_update_mme_ue_s1ap_id(p, scenario_mme_ue_s1ap_id, rx_mme_ue_s1ap_id);
-      p = p->next;
-    }
-    return 0;
-  }
-  return 1;
-}
-//------------------------------------------------------------------------------
-asn_comp_rval_t * et_s1ap_is_matching(et_s1ap_t * const s1ap1, et_s1ap_t * const s1ap2, const uint32_t constraints)
-{
-  asn_comp_rval_t *rv = NULL;
-  if (s1ap1->pdu.present != s1ap2->pdu.present)  {rv  = calloc(1, sizeof(asn_comp_rval_t)); rv->err_code = ET_ERROR_MATCH_PACKET_S1AP_PRESENT; return rv;}
-  switch (s1ap1->pdu.present) {
-    case  S1AP_PDU_PR_NOTHING:
-      break;
-    case  S1AP_PDU_PR_initiatingMessage:
-      if (s1ap1->pdu.choice.initiatingMessage.procedureCode != s1ap2->pdu.choice.initiatingMessage.procedureCode)
-        {rv  = calloc(1, sizeof(asn_comp_rval_t)); rv->err_code = ET_ERROR_MATCH_PACKET_S1AP_PROCEDURE_CODE; return rv;}
-      if (s1ap1->pdu.choice.initiatingMessage.criticality != s1ap2->pdu.choice.initiatingMessage.criticality)
-        {rv  = calloc(1, sizeof(asn_comp_rval_t)); rv->err_code = ET_ERROR_MATCH_PACKET_S1AP_CRITICALITY; return rv;}
-      break;
-    case  S1AP_PDU_PR_successfulOutcome:
-      if (s1ap1->pdu.choice.successfulOutcome.procedureCode != s1ap2->pdu.choice.successfulOutcome.procedureCode)
-        {rv  = calloc(1, sizeof(asn_comp_rval_t)); rv->err_code = ET_ERROR_MATCH_PACKET_S1AP_PROCEDURE_CODE; return rv;}
-      if (s1ap1->pdu.choice.successfulOutcome.criticality != s1ap2->pdu.choice.successfulOutcome.criticality)
-        {rv  = calloc(1, sizeof(asn_comp_rval_t)); rv->err_code = ET_ERROR_MATCH_PACKET_S1AP_CRITICALITY; return rv;}
-      break;
-    case  S1AP_PDU_PR_unsuccessfulOutcome:
-      if (s1ap1->pdu.choice.unsuccessfulOutcome.procedureCode != s1ap2->pdu.choice.unsuccessfulOutcome.procedureCode)
-        {rv  = calloc(1, sizeof(asn_comp_rval_t)); rv->err_code = ET_ERROR_MATCH_PACKET_S1AP_PROCEDURE_CODE; return rv;}
-      if (s1ap1->pdu.choice.unsuccessfulOutcome.criticality != s1ap2->pdu.choice.unsuccessfulOutcome.criticality)
-        {rv  = calloc(1, sizeof(asn_comp_rval_t)); rv->err_code = ET_ERROR_MATCH_PACKET_S1AP_CRITICALITY; return rv;}
-      break;
-    default:
-      AssertFatal(0, "Unknown pdu.present %d", s1ap1->pdu.present);
-  }
-
-  if (s1ap1->binary_stream_allocated_size == s1ap2->binary_stream_allocated_size) {
-    if (memcmp((void*)s1ap1->binary_stream, (void*)s1ap2->binary_stream, s1ap1->binary_stream_allocated_size) ==  0) return NULL;
-  }
-  // if no matching, may be the scenario need minor corrections (same enb_ue_s1ap_id but need to update mme_ue_s1ap_id)
-  return et_s1ap_ies_is_matching(s1ap1->pdu.present, &s1ap1->message, &s1ap2->message, constraints);
-}
-
-//------------------------------------------------------------------------------
-et_packet_t* et_build_packet_from_s1ap_data_ind(et_event_s1ap_data_ind_t * const s1ap_data_ind)
-{
-  et_packet_t     * packet    = NULL;
-  AssertFatal (NULL != s1ap_data_ind, "Bad parameter sctp_data_ind\n");
-  packet = calloc(1, sizeof(*packet));
-  packet->action                                        = ET_PACKET_ACTION_S1C_NULL;
-  //packet->time_relative_to_first_packet.tv_sec          = 0;
-  //packet->time_relative_to_first_packet.tv_usec         = 0;
-  //packet->time_relative_to_last_sent_packet.tv_sec      = 0;
-  //packet->time_relative_to_last_sent_packet.tv_usec     = 0;
-  //packet->time_relative_to_last_received_packet.tv_sec  = 0;
-  //packet->time_relative_to_last_received_packet.tv_usec = 0;
-  //packet->original_frame_number                         = 0;
-  //packet->packet_number                                 = 0;
-  packet->enb_instance = 0; //TODO
-  //packet->ip_hdr;
-  // keep in mind: allocated buffer: sctp_datahdr.payload.binary_stream
-  packet->sctp_hdr.chunk_type = SCTP_CID_DATA;
-  memcpy((void*)&packet->sctp_hdr.u.data_hdr, (void*)&s1ap_data_ind->sctp_datahdr, sizeof(packet->sctp_hdr));
-  //packet->next = NULL;
-  packet->status = ET_PACKET_STATUS_RECEIVED;
-  //packet->timer_id = 0;
-  AssertFatal(0 == gettimeofday(&packet->timestamp_packet, NULL), "gettimeofday() Failed");
-  return packet;
-}
-
-
-//------------------------------------------------------------------------------
-// return 0 if packet was waited
-int et_scenario_set_packet_received(et_packet_t * const packet)
-{
-  et_packet_t * p = NULL;
-  int           rc = 0;
-
-  packet->status = ET_PACKET_STATUS_RECEIVED;
-  S1AP_DEBUG("Packet received:          num %u  | original frame number %u \n", packet->packet_number, packet->original_frame_number);
-  S1AP_DEBUG("Last Packet received:     num %u  | original frame number %u \n", g_scenario->last_rx_packet->packet_number, g_scenario->last_rx_packet->original_frame_number);
-
-  p = g_scenario->last_rx_packet;
-  while (NULL != p) {
-    if (ET_PACKET_ACTION_S1C_RECEIVE == p->action) {
-      if ((ET_PACKET_STATUS_RECEIVED == p->status) || (ET_PACKET_STATUS_NOT_TAKEN_IN_ACCOUNT == p->status)) {
-        g_scenario->last_rx_packet = p;
-        g_scenario->time_last_rx_packet.tv_sec   = p->timestamp_packet.tv_sec;
-        g_scenario->time_last_rx_packet.tv_usec  = p->timestamp_packet.tv_usec;
-        S1AP_DEBUG("Set Last Packet received: num %u  | original frame number %u \n", g_scenario->last_rx_packet->packet_number, g_scenario->last_rx_packet->original_frame_number);
-        S1AP_DEBUG("Set time_last_rx_packet %ld.%06d\n", g_scenario->time_last_rx_packet.tv_sec, g_scenario->time_last_rx_packet.tv_usec);
-      } else {
-        break;
-      }
-    }
-    p = p->next;
-  }
-
-  if (0 != packet->timer_id) {
-    rc = timer_remove(packet->timer_id);
-    AssertFatal(rc == 0, "TODO: Debug Timer on Rx packet num %u unknown", packet->packet_number);
-    g_scenario->timer_count--;
-    return rc;
-  }
-  return 1;
-}
-
-//------------------------------------------------------------------------------
-int et_s1ap_process_rx_packet(et_event_s1ap_data_ind_t * const s1ap_data_ind)
-{
-  et_packet_t      *packet       = NULL;
-  et_packet_t      *rx_packet    = NULL;
-  unsigned long int not_found    = 1;
-  asn_comp_rval_t  *comp_results = NULL;
-  asn_comp_rval_t  *comp_results2 = NULL;
-  unsigned char     error_code   = 0;
-
-  AssertFatal (NULL != s1ap_data_ind, "Bad parameter sctp_data_ind\n");
-  rx_packet = et_build_packet_from_s1ap_data_ind(s1ap_data_ind);
-
-  if (NULL == g_scenario->last_rx_packet) {
-    packet = g_scenario->list_packet;
-    while (NULL != packet) {
-      if (packet->action == ET_PACKET_ACTION_S1C_RECEIVE) {
-        if ((ET_PACKET_STATUS_RECEIVED == packet->status) || (ET_PACKET_STATUS_NOT_TAKEN_IN_ACCOUNT == packet->status)) {
-          g_scenario->last_rx_packet = packet;
-          if  (ET_PACKET_STATUS_NOT_TAKEN_IN_ACCOUNT != packet->status) {
-            g_scenario->time_last_rx_packet.tv_sec  = packet->timestamp_packet.tv_sec;
-            g_scenario->time_last_rx_packet.tv_usec = packet->timestamp_packet.tv_usec;
-          }
-          S1AP_DEBUG("Set Last Packet received: num %u  | original frame number %u \n", g_scenario->last_rx_packet->packet_number, g_scenario->last_rx_packet->original_frame_number);
-          S1AP_DEBUG("Set time_last_rx_packet %ld.%06d\n", g_scenario->time_last_rx_packet.tv_sec, g_scenario->time_last_rx_packet.tv_usec);
-        } else {
-          break;
-        }
-      }
-      packet = packet->next;
-    }
-    packet = g_scenario->list_packet;
-  } else {
-    packet = g_scenario->last_rx_packet->next;
-  }
-  // not_found threshold may sure depend on number of mme, may be not sure on number of UE
-  while ((NULL != packet) && (not_found < 9)) {
-    S1AP_DEBUG("%s() Considering packet num %d original frame number %u\n", __FUNCTION__, packet->packet_number, packet->original_frame_number);
-    if (packet->action == ET_PACKET_ACTION_S1C_RECEIVE) {
-      comp_results = et_sctp_is_matching(&packet->sctp_hdr, &rx_packet->sctp_hdr, g_constraints);
-      if (NULL == comp_results) {
-        S1AP_DEBUG("Compare RX packet with packet: num %u  | original frame number %u \n", packet->packet_number, packet->original_frame_number);
-        packet->timestamp_packet.tv_sec = rx_packet->timestamp_packet.tv_sec;
-        packet->timestamp_packet.tv_usec = rx_packet->timestamp_packet.tv_usec;
-        return et_scenario_set_packet_received(packet);
-      } else {
-        S1AP_DEBUG("Compare RX packet with packet: num %u  | original frame number %u failed\n",
-          packet->packet_number, packet->original_frame_number);
-        while (comp_results) {
-          S1AP_DEBUG("Result err code %s(%u) ASN1 struct name %s\n",
-                     et_error_match2str(comp_results->err_code), comp_results->err_code, comp_results->name);
-
-          // (each asn1 rc <= 166 (enum e_S1AP_ProtocolIE_ID, in generated file S1AP_ProtocolIE_ID.h))
-          if (comp_results->err_code == COMPARE_ERR_CODE_NO_MATCH) {
-            //TODO MME_UE_S1AP_ID, etc.
-            // get latest error code
-            if (strcmp(comp_results->name, "S1ap-MME-UE-S1AP-ID") == 0) {
-              if (0 == et_handle_s1ap_mismatch_mme_ue_s1ap_id((et_packet_t *const)packet, (et_packet_t *const)rx_packet)) {
-                packet->timestamp_packet.tv_sec = rx_packet->timestamp_packet.tv_sec;
-                packet->timestamp_packet.tv_usec = rx_packet->timestamp_packet.tv_usec;
-                return et_scenario_set_packet_received(packet);
-              }
-            } else if (strcmp(comp_results->name, "S1ap-TransportLayerAddress") == 0) {
-              S1AP_WARN("Some work needed there for %s, TODO in generic_scenario.xsl, add sgw conf file in the process, anyway continuing...\n",comp_results->name);
-              packet->timestamp_packet.tv_sec = rx_packet->timestamp_packet.tv_sec;
-              packet->timestamp_packet.tv_usec = rx_packet->timestamp_packet.tv_usec;
-              return et_scenario_set_packet_received(packet);
-            } else {
-              S1AP_WARN("\n\nRX PACKET:\n");
-              et_display_packet_sctp(&rx_packet->sctp_hdr);
-              S1AP_WARN("\n\nWAITED PACKET:\n");
-              et_display_packet_sctp(&packet->sctp_hdr);
-              AssertFatal(0,"Some work needed there");
-            }
-          }
-          comp_results2 = comp_results;
-          comp_results = comp_results2->next;
-          et_free_pointer(comp_results2);
-        }
-      }
-    }
-    not_found += 1;
-    packet = packet->next;
-  }
-  et_display_packet_sctp(&rx_packet->sctp_hdr);
-  AssertFatal(0, "Rx packet not found in scenario (see dump above)");
-  return -1;
-}
-
-//------------------------------------------------------------------------------
-void et_s1ap_eNB_handle_sctp_data_ind(sctp_data_ind_t * const sctp_data_ind)
-{
-  int            result = 0;
-  et_event_t     event;
-
-  DevAssert(sctp_data_ind != NULL);
-
-  memset((void*)&event, 0, sizeof(event));
-
-  event.code = ET_EVENT_RX_S1AP;
-  event.u.s1ap_data_ind.sctp_datahdr.tsn                       = 0;
-  event.u.s1ap_data_ind.sctp_datahdr.stream                    = sctp_data_ind->stream;
-  event.u.s1ap_data_ind.sctp_datahdr.ssn                       = 0;
-  event.u.s1ap_data_ind.sctp_datahdr.ppid                      = S1AP_SCTP_PPID;
-  event.u.s1ap_data_ind.sctp_datahdr.assoc_id                  = sctp_data_ind->assoc_id;
-
-  event.u.s1ap_data_ind.sctp_datahdr.payload.binary_stream_pos = 0;
-  event.u.s1ap_data_ind.sctp_datahdr.payload.binary_stream_allocated_size = sctp_data_ind->buffer_length;
-  event.u.s1ap_data_ind.sctp_datahdr.payload.binary_stream = NULL;
-  if ((sctp_data_ind->buffer_length > 0) && (NULL != sctp_data_ind->buffer)) {
-    event.u.s1ap_data_ind.sctp_datahdr.payload.binary_stream   = calloc(1, sctp_data_ind->buffer_length);
-    memcpy(event.u.s1ap_data_ind.sctp_datahdr.payload.binary_stream,
-           sctp_data_ind->buffer,
-           sctp_data_ind->buffer_length);
-
-    if (et_s1ap_decode_pdu(
-           &event.u.s1ap_data_ind.sctp_datahdr.payload.pdu,
-           &event.u.s1ap_data_ind.sctp_datahdr.payload.message,
-           event.u.s1ap_data_ind.sctp_datahdr.payload.binary_stream,
-           event.u.s1ap_data_ind.sctp_datahdr.payload.binary_stream_allocated_size) < 0) {
-      AssertFatal (0, "ERROR Cannot decode RX S1AP message!\n");
-    }
-
-  }
-
-  result = itti_free(TASK_UNKNOWN, sctp_data_ind->buffer);
-  AssertFatal (result == EXIT_SUCCESS, "Failed to free memory (%d)!\n", result);
-
-  et_scenario_fsm_notify_event(event);
-
-  memset((void*)&event, 0, sizeof(event));
-  event.code = ET_EVENT_TICK;
-  et_scenario_fsm_notify_event(event);
-
-}
-//------------------------------------------------------------------------------
-void et_s1ap_eNB_register_mme(s1ap_eNB_instance_t *instance_p,
-                                  net_ip_address_t    *mme_ip_address,
-                                  net_ip_address_t    *local_ip_addr,
-                                  uint16_t             in_streams,
-                                  uint16_t             out_streams)
-{
-  MessageDef                 *message_p                   = NULL;
-  sctp_new_association_req_t *sctp_new_association_req_p  = NULL;
-  s1ap_eNB_mme_data_t        *s1ap_mme_data_p             = NULL;
-
-  DevAssert(instance_p != NULL);
-  DevAssert(mme_ip_address != NULL);
-
-  message_p = itti_alloc_new_message(TASK_S1AP, SCTP_NEW_ASSOCIATION_REQ);
-
-  sctp_new_association_req_p = &message_p->ittiMsg.sctp_new_association_req;
-
-  sctp_new_association_req_p->port = S1AP_PORT_NUMBER;
-  sctp_new_association_req_p->ppid = S1AP_SCTP_PPID;
-
-  sctp_new_association_req_p->in_streams  = in_streams;
-  sctp_new_association_req_p->out_streams = out_streams;
-
-  memcpy(&sctp_new_association_req_p->remote_address,
-         mme_ip_address,
-         sizeof(*mme_ip_address));
-
-  memcpy(&sctp_new_association_req_p->local_address,
-         local_ip_addr,
-         sizeof(*local_ip_addr));
-
-  /* Create new MME descriptor */
-  s1ap_mme_data_p = calloc(1, sizeof(*s1ap_mme_data_p));
-  DevAssert(s1ap_mme_data_p != NULL);
-
-  s1ap_mme_data_p->cnx_id                = et_s1ap_eNB_fetch_add_global_cnx_id();
-  sctp_new_association_req_p->ulp_cnx_id = s1ap_mme_data_p->cnx_id;
-
-  s1ap_mme_data_p->assoc_id          = -1;
-  s1ap_mme_data_p->s1ap_eNB_instance = instance_p;
-
-  memcpy((void*)&s1ap_mme_data_p->mme_net_ip_address, mme_ip_address, sizeof(*mme_ip_address));
-
-
-  STAILQ_INIT(&s1ap_mme_data_p->served_gummei);
-
-  /* Insert the new descriptor in list of known MME
-   * but not yet associated.
-   */
-  RB_INSERT(s1ap_mme_map, &instance_p->s1ap_mme_head, s1ap_mme_data_p);
-  s1ap_mme_data_p->state = S1AP_ENB_STATE_WAITING;
-  instance_p->s1ap_mme_nb ++;
-  instance_p->s1ap_mme_pending_nb ++;
-
-  itti_send_msg_to_task(TASK_SCTP, instance_p->instance, message_p);
-}
-//------------------------------------------------------------------------------
-void et_s1ap_update_assoc_id_of_packets(const int32_t assoc_id,
-                                        struct s1ap_eNB_instance_s * const s1ap_eNB_instance,
-                                        s1ap_eNB_mme_data_t        * const mme_desc_p)
-{
-  et_packet_t     *packet = NULL;
-  int              ret;
-  unsigned int     old_enb_port = 0;
-  unsigned int     old_mme_port = 0;
-
-  S1AP_DEBUG("%s for SCTP association (%u)\n",__FUNCTION__,assoc_id);
-
-  packet = g_scenario->list_packet;
-  while (NULL != packet) {
-    switch (packet->sctp_hdr.chunk_type) {
-
-      case SCTP_CID_DATA :
-        S1AP_DEBUG("%s for SCTP association (%u) SCTP_CID_DATA\n",__FUNCTION__,assoc_id);
-        if ((ET_PACKET_STATUS_NONE == packet->status) || (ET_PACKET_STATUS_SCHEDULED_FOR_RECEIVING == packet->status)) {
-          if (0 < old_mme_port) {
-            if (packet->action == ET_PACKET_ACTION_S1C_SEND) {
-              ret = et_compare_et_ip_to_net_ip_address(&packet->ip_hdr.dst, &mme_desc_p->mme_net_ip_address);
-              if (0 == ret) {
-                ret = et_compare_et_ip_to_net_ip_address(&packet->ip_hdr.src, &s1ap_eNB_instance->s1c_net_ip_address);
-                if (0 == ret) {
-                  // same IP src, same IP dst
-                  if ((packet->sctp_hdr.dst_port == old_mme_port) && (packet->sctp_hdr.src_port == old_enb_port)) {
-                    packet->sctp_hdr.u.data_hdr.assoc_id = assoc_id;
-                    S1AP_DEBUG("tPacket:\tnum %u  | original frame number %u \n", packet->packet_number, packet->original_frame_number);
-                    S1AP_DEBUG("\tUpdated assoc id: %u\n", assoc_id);
-                  }
-                }
-              }
-            } else if (packet->action == ET_PACKET_ACTION_S1C_RECEIVE) {
-              ret = et_compare_et_ip_to_net_ip_address(&packet->ip_hdr.src, &mme_desc_p->mme_net_ip_address);
-              if (0 == ret) {
-                ret = et_compare_et_ip_to_net_ip_address(&packet->ip_hdr.dst, &s1ap_eNB_instance->s1c_net_ip_address);
-                if (0 == ret) {
-                  // same IP src, same IP dst
-                  if ((packet->sctp_hdr.src_port == old_mme_port) && (packet->sctp_hdr.dst_port == old_enb_port)) {
-                    packet->sctp_hdr.u.data_hdr.assoc_id = assoc_id;
-                    S1AP_DEBUG("tPacket:\tnum %u  | original frame number %u \n", packet->packet_number, packet->original_frame_number);
-                    S1AP_DEBUG("\tUpdated assoc id: %u\n", assoc_id);
-                  }
-                }
-              }
-            }
-          }
-        }
-        break;
-
-        // Strong assumption
-        // in replayed scenario, the order of SCTP INIT packets is supposed to be the same as in the catched scenario
-      case SCTP_CID_INIT:
-        S1AP_DEBUG("%s for SCTP association (%u) SCTP_CID_INIT\n",__FUNCTION__,assoc_id);
-        ret = et_compare_et_ip_to_net_ip_address(&packet->ip_hdr.dst, &mme_desc_p->mme_net_ip_address);
-        if (0 == ret) {
-          ret = et_compare_et_ip_to_net_ip_address(&packet->ip_hdr.src, &s1ap_eNB_instance->s1c_net_ip_address);
-          if (0 == ret) {
-            if (0 == old_enb_port) {
-              if (ET_PACKET_STATUS_NONE == packet->status) {
-                packet->status = ET_PACKET_STATUS_SENT;
-                old_enb_port = packet->sctp_hdr.src_port;
-                S1AP_DEBUG("%s for SCTP association (%u) SCTP_CID_INIT SUCCESS\n",__FUNCTION__,assoc_id);
-              }
-            }
-          }
-        }
-        break;
-
-      case SCTP_CID_INIT_ACK:
-        S1AP_DEBUG("%s for SCTP association (%u) SCTP_CID_INIT_ACK\n",__FUNCTION__,assoc_id);
-        ret = et_compare_et_ip_to_net_ip_address(&packet->ip_hdr.src, &mme_desc_p->mme_net_ip_address);
-        if (0 == ret) {
-          ret = et_compare_et_ip_to_net_ip_address(&packet->ip_hdr.dst, &s1ap_eNB_instance->s1c_net_ip_address);
-          if (0 == ret) {
-            if (old_enb_port == packet->sctp_hdr.dst_port) {
-              if (ET_PACKET_STATUS_NONE == packet->status) {
-                packet->status = ET_PACKET_STATUS_RECEIVED;
-                old_mme_port = packet->sctp_hdr.dst_port;
-                S1AP_DEBUG("%s for SCTP association (%u) SCTP_CID_INIT_ACK SUCCESS\n",__FUNCTION__,assoc_id);
-              }
-            }
-          }
-        }
-        break;
-
-      case SCTP_CID_HEARTBEAT:
-      case SCTP_CID_HEARTBEAT_ACK:
-      case SCTP_CID_COOKIE_ECHO:
-      case SCTP_CID_COOKIE_ACK:
-      case SCTP_CID_ECN_ECNE:
-      case SCTP_CID_ECN_CWR:
-        break;
-
-      case SCTP_CID_ABORT:
-      case SCTP_CID_SHUTDOWN:
-      case SCTP_CID_SHUTDOWN_ACK:
-      case SCTP_CID_ERROR:
-      case SCTP_CID_SHUTDOWN_COMPLETE:
-        //TODO
-        break;
-
-      default:
-        AssertFatal(0, "Unknown chunk_type %d packet num %u", packet->sctp_hdr.chunk_type, packet->packet_number);
-        ;
-    }
-    packet = packet->next;
-  }
-}
-//------------------------------------------------------------------------------
-void et_s1ap_handle_s1_setup_message(s1ap_eNB_mme_data_t *mme_desc_p, int sctp_shutdown)
-{
-  if (sctp_shutdown) {
-    /* A previously connected MME has been shutdown */
-
-    /* TODO check if it was used by some eNB and send a message to inform these eNB if there is no more associated MME */
-    if (mme_desc_p->state == S1AP_ENB_STATE_CONNECTED) {
-      mme_desc_p->state = S1AP_ENB_STATE_DISCONNECTED;
-
-      if (mme_desc_p->s1ap_eNB_instance->s1ap_mme_associated_nb > 0) {
-        /* Decrease associated MME number */
-        mme_desc_p->s1ap_eNB_instance->s1ap_mme_associated_nb --;
-      }
-
-      /* If there are no more associated MME, inform eNB app */
-      if (mme_desc_p->s1ap_eNB_instance->s1ap_mme_associated_nb == 0) {
-        MessageDef                 *message_p;
-
-        message_p = itti_alloc_new_message(TASK_S1AP, S1AP_DEREGISTERED_ENB_IND);
-        S1AP_DEREGISTERED_ENB_IND(message_p).nb_mme = 0;
-        itti_send_msg_to_task(TASK_ENB_APP, mme_desc_p->s1ap_eNB_instance->instance, message_p);
-      }
-    }
-  } else {
-    /* Check that at least one setup message is pending */
-    DevCheck(mme_desc_p->s1ap_eNB_instance->s1ap_mme_pending_nb > 0, mme_desc_p->s1ap_eNB_instance->instance,
-             mme_desc_p->s1ap_eNB_instance->s1ap_mme_pending_nb, 0);
-
-    if (mme_desc_p->s1ap_eNB_instance->s1ap_mme_pending_nb > 0) {
-      /* Decrease pending messages number */
-      mme_desc_p->s1ap_eNB_instance->s1ap_mme_pending_nb --;
-      mme_desc_p->s1ap_eNB_instance->s1ap_mme_associated_nb++;
-    }
-
-    et_s1ap_update_assoc_id_of_packets(mme_desc_p->assoc_id,
-        mme_desc_p->s1ap_eNB_instance,
-        mme_desc_p);
-
-
-    /* If there are no more pending messages, inform eNB app */
-    if (mme_desc_p->s1ap_eNB_instance->s1ap_mme_pending_nb == 0) {
-      MessageDef                 *message_p;
-
-      message_p = itti_alloc_new_message(TASK_S1AP, S1AP_REGISTER_ENB_CNF);
-      S1AP_REGISTER_ENB_CNF(message_p).nb_mme = mme_desc_p->s1ap_eNB_instance->s1ap_mme_associated_nb;
-      itti_send_msg_to_task(TASK_ENB_APP, mme_desc_p->s1ap_eNB_instance->instance, message_p);
-    }
-  }
-}
-//------------------------------------------------------------------------------
-void et_s1ap_eNB_handle_register_eNB(instance_t instance, s1ap_register_enb_req_t *s1ap_register_eNB)
-{
-  s1ap_eNB_instance_t *new_instance;
-  uint8_t index;
-
-  DevAssert(s1ap_register_eNB != NULL);
-
-  /* Look if the provided instance already exists */
-  new_instance = et_s1ap_eNB_get_instance(instance);
-
-  if (new_instance != NULL) {
-    /* Checks if it is a retry on the same eNB */
-    DevCheck(new_instance->eNB_id == s1ap_register_eNB->eNB_id, new_instance->eNB_id, s1ap_register_eNB->eNB_id, 0);
-    DevCheck(new_instance->cell_type == s1ap_register_eNB->cell_type, new_instance->cell_type, s1ap_register_eNB->cell_type, 0);
-    DevCheck(new_instance->tac == s1ap_register_eNB->tac, new_instance->tac, s1ap_register_eNB->tac, 0);
-    DevCheck(new_instance->mcc == s1ap_register_eNB->mcc, new_instance->mcc, s1ap_register_eNB->mcc, 0);
-    DevCheck(new_instance->mnc == s1ap_register_eNB->mnc, new_instance->mnc, s1ap_register_eNB->mnc, 0);
-    DevCheck(new_instance->mnc_digit_length == s1ap_register_eNB->mnc_digit_length, new_instance->mnc_digit_length, s1ap_register_eNB->mnc_digit_length, 0);
-    DevCheck(memcmp((void*)&new_instance->s1c_net_ip_address, (void*)&s1ap_register_eNB->enb_ip_address, sizeof(new_instance->s1c_net_ip_address)) == 0, 0,0,0);
-  } else {
-    new_instance = calloc(1, sizeof(s1ap_eNB_instance_t));
-    DevAssert(new_instance != NULL);
-
-    RB_INIT(&new_instance->s1ap_ue_head);
-    RB_INIT(&new_instance->s1ap_mme_head);
-
-    /* Copy usefull parameters */
-    new_instance->instance         = instance;
-    new_instance->eNB_name         = s1ap_register_eNB->eNB_name;
-    new_instance->eNB_id           = s1ap_register_eNB->eNB_id;
-    new_instance->cell_type        = s1ap_register_eNB->cell_type;
-    new_instance->tac              = s1ap_register_eNB->tac;
-    new_instance->mcc              = s1ap_register_eNB->mcc;
-    new_instance->mnc              = s1ap_register_eNB->mnc;
-    new_instance->mnc_digit_length = s1ap_register_eNB->mnc_digit_length;
-    memcpy((void*)&new_instance->s1c_net_ip_address, (void*)&s1ap_register_eNB->enb_ip_address, sizeof(new_instance->s1c_net_ip_address));
-
-    /* Add the new instance to the list of eNB (meaningfull in virtual mode) */
-    et_s1ap_eNB_insert_new_instance(new_instance);
-
-    S1AP_DEBUG("Registered new eNB[%d] and %s eNB id %u\n",
-               instance,
-               s1ap_register_eNB->cell_type == CELL_MACRO_ENB ? "macro" : "home",
-               s1ap_register_eNB->eNB_id);
-  }
-
-  DevCheck(s1ap_register_eNB->nb_mme <= S1AP_MAX_NB_MME_IP_ADDRESS,
-           S1AP_MAX_NB_MME_IP_ADDRESS, s1ap_register_eNB->nb_mme, 0);
-
-  /* Trying to connect to provided list of MME ip address */
-  for (index = 0; index < s1ap_register_eNB->nb_mme; index++) {
-    et_s1ap_eNB_register_mme(new_instance,
-                      &s1ap_register_eNB->mme_ip_address[index],
-                          &s1ap_register_eNB->enb_ip_address,
-                          s1ap_register_eNB->sctp_in_streams,
-                          s1ap_register_eNB->sctp_out_streams);
-  }
-}
-
-//------------------------------------------------------------------------------
-void et_s1ap_eNB_handle_sctp_association_resp(instance_t instance, sctp_new_association_resp_t *sctp_new_association_resp)
-{
-  s1ap_eNB_instance_t *instance_p      = NULL;
-  s1ap_eNB_mme_data_t *s1ap_mme_data_p = NULL;
-
-  DevAssert(sctp_new_association_resp != NULL);
-
-  instance_p = et_s1ap_eNB_get_instance(instance);
-  DevAssert(instance_p != NULL);
-
-  s1ap_mme_data_p = et_s1ap_eNB_get_MME(instance_p, -1,
-                                     sctp_new_association_resp->ulp_cnx_id);
-  DevAssert(s1ap_mme_data_p != NULL);
-
-  if (sctp_new_association_resp->sctp_state != SCTP_STATE_ESTABLISHED) {
-    S1AP_WARN("Received unsuccessful result for SCTP association (%u), instance %d, cnx_id %u\n",
-              sctp_new_association_resp->sctp_state,
-              instance,
-              sctp_new_association_resp->ulp_cnx_id);
-
-    et_s1ap_handle_s1_setup_message(s1ap_mme_data_p, sctp_new_association_resp->sctp_state == SCTP_STATE_SHUTDOWN);
-
-    return;
-  }
-
-  S1AP_DEBUG("Received successful result for SCTP association (%u), instance %d, cnx_id %u\n",
-             sctp_new_association_resp->sctp_state,
-             instance,
-             sctp_new_association_resp->ulp_cnx_id);
-  /* Update parameters */
-  s1ap_mme_data_p->assoc_id    = sctp_new_association_resp->assoc_id;
-  s1ap_mme_data_p->in_streams  = sctp_new_association_resp->in_streams;
-  s1ap_mme_data_p->out_streams = sctp_new_association_resp->out_streams;
-
-  et_s1ap_handle_s1_setup_message(s1ap_mme_data_p, sctp_new_association_resp->sctp_state == SCTP_STATE_SHUTDOWN);
-}
-
-//------------------------------------------------------------------------------
-void *et_s1ap_eNB_task(void *arg)
-{
-  MessageDef *received_msg = NULL;
-  int         result;
-
-  S1AP_DEBUG("Starting S1AP layer\n");
-
-  et_s1ap_eNB_prepare_internal_data();
-
-  itti_mark_task_ready(TASK_S1AP);
-
-  while (1) {
-    itti_receive_msg(TASK_S1AP, &received_msg);
-
-    switch (ITTI_MSG_ID(received_msg)) {
-    case TERMINATE_MESSAGE:
-      S1AP_WARN("*** Exiting S1AP thread\n");
-      itti_exit_task();
-      break;
-
-    case S1AP_REGISTER_ENB_REQ: {
-      /* Register a new eNB.
-       * in Virtual mode eNBs will be distinguished using the mod_id/
-       * Each eNB has to send an S1AP_REGISTER_ENB message with its
-       * own parameters.
-       */
-      et_s1ap_eNB_handle_register_eNB(ITTI_MSG_DESTINATION_INSTANCE(received_msg),
-                                   &S1AP_REGISTER_ENB_REQ(received_msg));
-    }
-    break;
-
-    case SCTP_NEW_ASSOCIATION_RESP: {
-      et_s1ap_eNB_handle_sctp_association_resp(ITTI_MSG_DESTINATION_INSTANCE(received_msg),
-                                            &received_msg->ittiMsg.sctp_new_association_resp);
-    }
-    break;
-
-    case SCTP_DATA_IND: {
-      et_s1ap_eNB_handle_sctp_data_ind(&received_msg->ittiMsg.sctp_data_ind);
-    }
-    break;
-
-    case TIMER_HAS_EXPIRED:
-      LOG_I(S1AP, " Received TIMER_HAS_EXPIRED: timer_id %d\n", TIMER_HAS_EXPIRED(received_msg).timer_id);
-      {
-        et_packet_t * packet = (et_packet_t*)TIMER_HAS_EXPIRED (received_msg).arg;
-        et_event_t    event;
-        g_scenario->timer_count--;
-        if (NULL != packet) {
-          if (packet->status == ET_PACKET_STATUS_SCHEDULED_FOR_RECEIVING) {
-            memset((void*)&event, 0, sizeof(event));
-            event.code = ET_EVENT_RX_PACKET_TIME_OUT;
-            event.u.rx_packet_time_out = packet;
-            et_scenario_fsm_notify_event(event);
-          } else if (packet->status == ET_PACKET_STATUS_SCHEDULED_FOR_SENDING) {
-            memset((void*)&event, 0, sizeof(event));
-            event.code = ET_EVENT_TX_TIMED_PACKET;
-            event.u.tx_timed_packet = packet;
-            et_scenario_fsm_notify_event(event);
-
-            et_event_t continue_event;
-            continue_event.code = ET_EVENT_TICK;
-            et_scenario_fsm_notify_event(continue_event);
-          } else if ((packet->status != ET_PACKET_STATUS_SENT) && ((packet->status != ET_PACKET_STATUS_RECEIVED))) {
-            AssertFatal (0, "Bad status %d of packet timed out!\n", packet->status);
-          }
-        } else {
-          LOG_W(S1AP, " Received TIMER_HAS_EXPIRED: timer_id %d, no packet attached to timer\n", TIMER_HAS_EXPIRED(received_msg).timer_id);
-        }
-      }
-      if (TIMER_HAS_EXPIRED (received_msg).timer_id == g_scenario->enb_register_retry_timer_id) {
-        /* Restart the registration process */
-        g_scenario->registered_enb = 0;
-        et_eNB_app_register (g_scenario->enb_properties);
-      }
-      break;
-
-    default:
-      S1AP_ERROR("Received unhandled message: %d:%s\n",
-                 ITTI_MSG_ID(received_msg), ITTI_MSG_NAME(received_msg));
-      break;
-    }
-
-    result = itti_free (ITTI_MSG_ORIGIN_ID(received_msg), received_msg);
-    AssertFatal (result == EXIT_SUCCESS, "Failed to free memory (%d)!\n", result);
-
-    received_msg = NULL;
-  }
-
-  return NULL;
-}
-
-
diff --git a/openair3/TEST/EPC_TEST/play_scenario_s1ap_compare_ie.c b/openair3/TEST/EPC_TEST/play_scenario_s1ap_compare_ie.c
deleted file mode 100644
index 40654fc77159b32e5773d52112057da45217b2a9..0000000000000000000000000000000000000000
--- a/openair3/TEST/EPC_TEST/play_scenario_s1ap_compare_ie.c
+++ /dev/null
@@ -1,231 +0,0 @@
-/*
- * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The OpenAirInterface Software Alliance licenses this file to You under
- * the OAI Public License, Version 1.1  (the "License"); you may not use this file
- * except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.openairinterface.org/?page_id=698
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *-------------------------------------------------------------------------------
- * For more information about the OpenAirInterface (OAI) Software Alliance:
- *      contact@openairinterface.org
- */
-
-/*
-                                play_scenario_s1ap_compare_ie.c
-                                -------------------
-  AUTHOR  : Lionel GAUTHIER
-  COMPANY : EURECOM
-  EMAIL   : Lionel.Gauthier@eurecom.fr
- */
-#include <pthread.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <stdint.h>
-#include <stdarg.h>
-#include <unistd.h>
-#include <crypt.h>
-#include <errno.h>
-#include <libxml/tree.h>
-#include <libxml/parser.h>
-#include <libxml/xpath.h>
-#include <libxml/xpathInternals.h>
-#include "tree.h"
-#include "queue.h"
-
-
-#include "intertask_interface.h"
-#include "platform_types.h"
-#include "assertions.h"
-#include "conversions.h"
-#include "s1ap_common.h"
-#include "play_scenario_s1ap_eNB_defs.h"
-#include "play_scenario.h"
-//------------------------------------------------------------------------------
-extern et_scenario_t  *g_scenario;
-extern uint32_t        g_constraints;
-//------------------------------------------------------------------------------
-
-//asn_comp_rval_t * et_s1ap_ies_is_matching(const S1AP_PDU_PR present, s1ap_message * const m1, s1ap_message * const m2, const uint32_t constraints)
-//{
-//}
-
-void update_xpath_node_mme_ue_s1ap_id(et_s1ap_t * const s1ap, xmlNode *node, const S1ap_MME_UE_S1AP_ID_t new_id)
-{
-  xmlNode       *cur_node = NULL;
-  xmlAttrPtr     attr     = NULL;
-  xmlChar       *xml_char = NULL;
-  int            size     = 0;
-  int            pos      = 0;
-  int            go_deeper_in_tree = 1;
-  //S1AP_INFO("%s() mme_ue_s1ap_id %u\n", __FUNCTION__, new_id);
-
-  // modify
-  for (cur_node = (xmlNode *)node; cur_node; cur_node = cur_node->next) {
-    go_deeper_in_tree = 1;
-    if ((!xmlStrcmp(cur_node->name, (const xmlChar *)"field"))) {
-      // do not get hidden fields
-      xml_char = xmlGetProp((xmlNode *)cur_node, (const xmlChar *)"hide");
-      if (NULL != xml_char) {
-        if ((!xmlStrcmp(xml_char, (const xmlChar *)"yes"))) {
-          go_deeper_in_tree = 0;
-        }
-        xmlFree(xml_char);
-      }
-      if (0 < go_deeper_in_tree) {
-        // first get size
-        xml_char = xmlGetProp((xmlNode *)cur_node, (const xmlChar *)"pos");
-        if (NULL != xml_char) {
-          pos = strtoul((const char *)xml_char, NULL, 0);
-          pos -= s1ap->xml_stream_pos_offset;
-          AssertFatal(pos >= 0, "Bad pos %d xml_stream_pos_offset %d", pos, s1ap->xml_stream_pos_offset);
-          xmlFree(xml_char);
-          xml_char = xmlGetProp((xmlNode *)cur_node, (const xmlChar *)"size");
-          if (NULL != xml_char) {
-            const xmlChar value_d[32];
-            const xmlChar value_h[20];
-            const xmlChar showname[64];
-            int           ret     = 0;
-            int           pos2    = 0;
-            unsigned long int uli = 0;
-            char          hex[3]  = {0,0,0};
-            char         *end_ptr = NULL;
-
-            size = strtoul((const char *)xml_char, NULL, 0);
-            xmlFree(xml_char);
-            // second: try to set value (always hex)
-            ret = snprintf((char *)value_d, 32, "%ld", new_id);
-            AssertFatal((ret > 0) && (ret < 32), "Could not convert int to dec str");
-            ret = snprintf((char *)value_h, 20, "C0%08X", new_id);
-            AssertFatal((ret > 0) && (ret < 20), "Could not convert int to hex str");
-            ret = snprintf((char *)showname, 64, "MME-UE-S1AP-ID: %d", new_id);
-            AssertFatal((ret > 0) && (ret < 64), "Could not convert int to dec str");
-
-            attr = xmlSetProp((xmlNode *)cur_node, (const xmlChar *)"value", value_h);
-            attr = xmlSetProp((xmlNode *)cur_node, (const xmlChar *)"show", value_d);
-            attr = xmlSetProp((xmlNode *)cur_node, (const xmlChar *)"showname", showname);
-            //TODO update s1ap->binary_stream @pos with new_id_hex, size
-            AssertFatal((pos+size) < s1ap->binary_stream_allocated_size, "Rewrite of mme_ue_s1ap_id out of bounds of binary_stream");
-            //avoid endianess issues
-            do {
-              hex[0] = value_h[pos2++];
-              hex[1] = value_h[pos2++];
-              hex[2] = '\0';
-              end_ptr = hex;
-              uli = strtoul(hex, &end_ptr, 16);
-              AssertFatal((uli != ULONG_MAX) && (end_ptr != NULL) && (*end_ptr == '\0'), "Conversion of hexstring %s failed returned %lu errno %d", hex, uli, errno);
-              s1ap->binary_stream[pos++] = (unsigned char)uli;
-            } while (pos2 < (2*5));
-            // update ASN1
-            et_decode_s1ap(s1ap);
-            //S1AP_INFO("Updated ASN1 for %s\n", showname);
-          }
-        }
-      }
-    }
-    if (0 < go_deeper_in_tree) {
-      update_xpath_node_mme_ue_s1ap_id(s1ap, cur_node->children, new_id);
-    }
-  }
-}
-
-/**
- * update_xpath_nodes:
- * @nodes:    the nodes set.
- * @value:    the new value for the node(s)
- *
- * Prints the @nodes content to @output.
- * From http://www.xmlsoft.org/examples/#xpath2.c
- */
-void update_xpath_nodes_mme_ue_s1ap_id(et_s1ap_t * const s1ap_payload, xmlNodeSetPtr nodes, const S1ap_MME_UE_S1AP_ID_t new_id)
-{
-  int           size = 0;
-  int           i    = 0;
-  xmlNode      *s1ap_node = NULL;
-
-  size = (nodes) ? nodes->nodeNr : 0;
-  //S1AP_DEBUG("%s() num nodes %u\n", __FUNCTION__, size);
-
-  /*
-   * NOTE: the nodes are processed in reverse order, i.e. reverse document
-   *       order because xmlNodeSetContent can actually free up descendant
-   *       of the node and such nodes may have been selected too ! Handling
-   *       in reverse order ensure that descendant are accessed first, before
-   *       they get removed. Mixing XPath and modifications on a tree must be
-   *       done carefully !
-   */
-  for(i = size - 1; i >= 0; i--) {
-    s1ap_node = nodes->nodeTab[i];
-    AssertFatal(NULL != s1ap_node, "One element of resultset of XPATH expression is NULL\n");
-    update_xpath_node_mme_ue_s1ap_id(s1ap_payload, s1ap_node, new_id);
-    /*
-     * All the elements returned by an XPath query are pointers to
-     * elements from the tree *except* namespace nodes where the XPath
-     * semantic is different from the implementation in libxml2 tree.
-     * As a result when a returned node set is freed when
-     * xmlXPathFreeObject() is called, that routine must check the
-     * element type. But node from the returned set may have been removed
-     * by xmlNodeSetContent() resulting in access to freed data.
-     * This can be exercised by running valgrind
-     * There is 2 ways around it:
-     *   - make a copy of the pointers to the nodes from the result set
-     *     then call xmlXPathFreeObject() and then modify the nodes
-     * or
-     *   - remove the reference to the modified nodes from the node set
-     *     as they are processed, if they are not namespace nodes.
-     */
-    if (nodes->nodeTab[i]->type != XML_NAMESPACE_DECL) {
-      nodes->nodeTab[i] = NULL;
-    }
-  }
-}
-//------------------------------------------------------------------------------
-int et_s1ap_update_mme_ue_s1ap_id(et_packet_t * const packet, const S1ap_MME_UE_S1AP_ID_t old_id, const S1ap_MME_UE_S1AP_ID_t new_id)
-{
-  xmlChar              xpath_expression[ET_XPATH_EXPRESSION_MAX_LENGTH];
-  int                  ret       = 0;
-  xmlDocPtr            doc       = NULL;
-  xmlXPathContextPtr   xpath_ctx = NULL;
-  xmlXPathObjectPtr    xpath_obj = NULL;
-
-  //S1AP_DEBUG("%s() packet num %u original frame number %u, mme_ue_s1ap_id %u -> %u\n", __FUNCTION__, packet->packet_number, packet->original_frame_number, old_id, new_id);
-
-  ret = snprintf(xpath_expression, ET_XPATH_EXPRESSION_MAX_LENGTH, "//field[@name=\"s1ap.MME_UE_S1AP_ID\"][@show=\"%u\"]", old_id);
-  AssertFatal((ret > 0) && (ret < ET_XPATH_EXPRESSION_MAX_LENGTH), "Could not build XPATH expression err=%d", ret);
-
-  doc = packet->sctp_hdr.u.data_hdr.payload.doc;
-  // Create xpath evaluation context
-  xpath_ctx = xmlXPathNewContext(doc);
-  if(xpath_ctx == NULL) {
-      fprintf(stderr,"Error: unable to create new XPath context\n");
-      xmlFreeDoc(doc);
-      return(-1);
-  }
-
-  // Evaluate xpath expression
-  xpath_obj = xmlXPathEvalExpression(xpath_expression, xpath_ctx);
-  xmlXPathFreeContext(xpath_ctx);
-  AssertFatal(xpath_obj != NULL, "Unable to evaluate XPATH expression \"%s\"\n", xpath_expression);
-
-  if(xmlXPathNodeSetIsEmpty(xpath_obj->nodesetval)){
-    xmlXPathFreeObject(xpath_obj);
-    S1AP_DEBUG("%s() No match \"%s\"packet num %u original frame number %u, mme_ue_s1ap_id %u -> %u\n",
-        __FUNCTION__, xpath_expression, packet->packet_number, packet->original_frame_number, old_id, new_id);
-    return -1;
-  }
-  // update selected nodes
-  update_xpath_nodes_mme_ue_s1ap_id(&packet->sctp_hdr.u.data_hdr.payload, xpath_obj->nodesetval, new_id);
-
-  // Cleanup of XPath data
-  xmlXPathFreeObject(xpath_obj);
-
-  return 0;
-}
diff --git a/openair3/TEST/EPC_TEST/play_scenario_s1ap_eNB_defs.h b/openair3/TEST/EPC_TEST/play_scenario_s1ap_eNB_defs.h
deleted file mode 100644
index 532e14bb1d382c00b23cc6557c64453c59be1672..0000000000000000000000000000000000000000
--- a/openair3/TEST/EPC_TEST/play_scenario_s1ap_eNB_defs.h
+++ /dev/null
@@ -1,242 +0,0 @@
-/*
- * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The OpenAirInterface Software Alliance licenses this file to You under
- * the OAI Public License, Version 1.1  (the "License"); you may not use this file
- * except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.openairinterface.org/?page_id=698
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *-------------------------------------------------------------------------------
- * For more information about the OpenAirInterface (OAI) Software Alliance:
- *      contact@openairinterface.org
- */
-
-#include <stdint.h>
-
-#include "queue.h"
-#include "tree.h"
-
-#include "sctp_eNB_defs.h"
-
-#ifndef PLAY_SCENARIO_S1AP_ENB_DEFS_H_
-#define PLAY_SCENARIO_S1AP_ENB_DEFS_H_
-
-#define ENB_TAC (1)
-#define ENB_MCC (208)
-#define ENB_MNC (92)
-
-#define ENB_NAME        "Eurecom ENB"
-#define ENB_NAME_FORMAT (ENB_NAME" %u")
-
-#define S1AP_PORT_NUMBER        (36412)
-#define S1AP_SCTP_PPID          (18)
-
-#define X2AP_PORT_NUMBER        (36422)
-#define X2AP_SCTP_PPID          (27)
-
-#define S1AP_ENB_NAME_LENGTH_MAX    (150)
-
-typedef enum {
-  /* Disconnected state: initial state for any association. */
-  S1AP_ENB_STATE_DISCONNECTED = 0x0,
-  /* State waiting for S1 Setup response message if eNB is MME accepted or
-   * S1 Setup failure if MME rejects the eNB.
-   */
-  S1AP_ENB_STATE_WAITING     = 0x1,
-  /* The eNB is successfully connected to MME, UE contexts can be created. */
-  S1AP_ENB_STATE_CONNECTED   = 0x2,
-  /* The MME has sent an overload start message. Once the MME disables the
-   * OVERLOAD marker, the state of the association will be
-   * S1AP_ENB_STATE_CONNECTED.
-   */
-  S1AP_ENB_OVERLOAD          = 0x3,
-  /* Max number of states available */
-  S1AP_ENB_STATE_MAX,
-} s1ap_eNB_state_t;
-
-
-/* If the Overload Action IE in the OVERLOAD START message is set to
- * - “reject all RRC connection establishments for non-emergency mobile
- *    originated data transfer “ (i.e. reject traffic corresponding to RRC cause
- *    “mo-data “ (TS 36.331 [16])), or
- * - “reject all RRC connection establishments for signalling “ (i.e. reject
- *    traffic corresponding to RRC cause “modata” and “mo-signalling”
- *    (TS 36.331 [16])),or
- * - “only permit RRC connection establishments for emergency sessions and
- *    mobile terminated services” (i.e. only permit traffic corresponding to RRC
- *    cause “emergency” and “mt-Access” (TS 36.331 [16])).
- *
- * NOTE: When the Overload Action IE is set to “only permit RRC connection
- * establishments for emergency sessions and mobile terminated services”,
- * emergency calls with RRC cause “highPriorityAcess” from high priority users
- * are rejected (TS 24.301 [24]).
- */
-typedef enum {
-  S1AP_OVERLOAD_REJECT_MO_DATA        = 0x0,
-  S1AP_OVERLOAD_REJECT_ALL_SIGNALLING = 0x1,
-  S1AP_OVERLOAD_ONLY_EMERGENCY_AND_MT = 0x2,
-  S1AP_NO_OVERLOAD                    = 0x3,
-  S1AP_OVERLOAD_MAX,
-} s1ap_overload_state_t;
-
-/* Served PLMN identity element */
-struct plmn_identity_s {
-  uint16_t mcc;
-  uint16_t mnc;
-  uint8_t  mnc_digit_length;
-  STAILQ_ENTRY(plmn_identity_s) next;
-};
-
-/* Served group id element */
-struct served_group_id_s {
-  uint16_t mme_group_id;
-  STAILQ_ENTRY(served_group_id_s) next;
-};
-
-/* Served mme code for a particular MME */
-struct mme_code_s {
-  uint8_t mme_code;
-  STAILQ_ENTRY(mme_code_s) next;
-};
-
-/* Served gummei element */
-struct served_gummei_s {
-  /* Number of MME served PLMNs */
-  uint8_t nb_served_plmns;
-  /* List of served PLMNs by MME */
-  STAILQ_HEAD(served_plmns_s, plmn_identity_s) served_plmns;
-
-  /* Number of group id in list */
-  uint8_t nb_group_id;
-  /* Served group id list */
-  STAILQ_HEAD(served_group_ids_s, served_group_id_s) served_group_ids;
-
-  /* Number of MME code */
-  uint8_t nb_mme_code;
-  /* MME Code to uniquely identify an MME within an MME pool area */
-  STAILQ_HEAD(mme_codes_s, mme_code_s) mme_codes;
-
-  /* Next GUMMEI element */
-  STAILQ_ENTRY(served_gummei_s) next;
-};
-
-struct s1ap_eNB_instance_s;
-
-/* This structure describes association of a eNB to a MME */
-typedef struct s1ap_eNB_mme_data_s {
-  /* MME descriptors tree, ordered by sctp assoc id */
-  RB_ENTRY(s1ap_eNB_mme_data_s) entry;
-
-  /* This is the optional name provided by the MME */
-  char *mme_name;
-  net_ip_address_t    mme_net_ip_address; // useful for joining assoc_id and ip address of packets
-
-  /* List of served GUMMEI per MME. There is one GUMMEI per RAT with a max
-   * number of 8 RATs but in our case only one is used. The LTE related pool
-   * configuration is included on the first place in the list.
-   */
-  STAILQ_HEAD(served_gummeis_s, served_gummei_s) served_gummei;
-
-  /* Relative processing capacity of an MME with respect to the other MMEs
-   * in the pool in order to load-balance MMEs within a pool as defined
-   * in TS 23.401.
-   */
-  uint8_t relative_mme_capacity;
-
-  /* Current MME overload information (if any). */
-  s1ap_overload_state_t overload_state;
-  /* Current eNB->MME S1AP association state */
-  s1ap_eNB_state_t state;
-
-  /* Next usable stream for UE signalling */
-  int32_t nextstream;
-
-  /* Number of input/ouput streams */
-  uint16_t in_streams;
-  uint16_t out_streams;
-
-  /* Connexion id used between SCTP/S1AP */
-  uint16_t cnx_id;
-
-  /* SCTP association id */
-  int32_t  assoc_id;
-
-  /* Only meaningfull in virtual mode */
-  struct s1ap_eNB_instance_s *s1ap_eNB_instance;
-} s1ap_eNB_mme_data_t;
-
-typedef struct s1ap_eNB_instance_s {
-  /* Next s1ap eNB association.
-   * Only used for virtual mode.
-   */
-  STAILQ_ENTRY(s1ap_eNB_instance_s) s1ap_eNB_entries;
-
-  /* Number of MME requested by eNB (tree size) */
-  uint32_t s1ap_mme_nb;
-  /* Number of MME for which association is pending */
-  uint32_t s1ap_mme_pending_nb;
-  /* Number of MME successfully associated to eNB */
-  uint32_t s1ap_mme_associated_nb;
-  /* Tree of S1AP MME associations ordered by association ID */
-  RB_HEAD(s1ap_mme_map, s1ap_eNB_mme_data_s) s1ap_mme_head;
-
-  /* TODO: add a map ordered by relative MME capacity */
-
-  /* Tree of UE ordered by eNB_ue_s1ap_id's */
-  RB_HEAD(s1ap_ue_map, s1ap_eNB_ue_context_s) s1ap_ue_head;
-
-  /* For virtual mode, mod_id as defined in the rest of the L1/L2 stack */
-  instance_t instance;
-
-  /* Displayable name of eNB */
-  char *eNB_name;
-  net_ip_address_t    s1c_net_ip_address;
-
-  /* Unique eNB_id to identify the eNB within EPC.
-   * In our case the eNB is a macro eNB so the id will be 20 bits long.
-   * For Home eNB id, this field should be 28 bits long.
-   */
-  uint32_t eNB_id;
-  /* The type of the cell */
-  enum cell_type_e cell_type;
-
-  /* Tracking area code */
-  uint16_t tac;
-
-  /* Mobile Country Code
-   * Mobile Network Code
-   */
-  uint16_t  mcc;
-  uint16_t  mnc;
-  uint8_t   mnc_digit_length;
-
-} s1ap_eNB_instance_t;
-
-typedef struct {
-  /* List of served eNBs
-   * Only used for virtual mode
-   */
-  STAILQ_HEAD(s1ap_eNB_instances_head_s, s1ap_eNB_instance_s) s1ap_eNB_instances_head;
-  /* Nb of registered eNBs */
-  uint8_t nb_registered_eNBs;
-
-  /* Generate a unique connexion id used between S1AP and SCTP */
-  uint16_t global_cnx_id;
-} s1ap_eNB_internal_data_t;
-
-int s1ap_eNB_compare_assoc_id(
-  struct s1ap_eNB_mme_data_s *p1, struct s1ap_eNB_mme_data_s *p2);
-
-/* Generate the tree management functions */
-RB_PROTOTYPE(s1ap_mme_map, s1ap_eNB_mme_data_s, entry,
-             s1ap_eNB_compare_assoc_id);
-
-#endif /* PLAY_SCENARIO_S1AP_ENB_DEFS_H_ */
diff --git a/openair3/TEST/EPC_TEST/play_scenario_sctp.c b/openair3/TEST/EPC_TEST/play_scenario_sctp.c
deleted file mode 100644
index c126608598bdb62d6aeee08a3d05335941f2c863..0000000000000000000000000000000000000000
--- a/openair3/TEST/EPC_TEST/play_scenario_sctp.c
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The OpenAirInterface Software Alliance licenses this file to You under
- * the OAI Public License, Version 1.1  (the "License"); you may not use this file
- * except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.openairinterface.org/?page_id=698
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *-------------------------------------------------------------------------------
- * For more information about the OpenAirInterface (OAI) Software Alliance:
- *      contact@openairinterface.org
- */
-
-/*
-                                play_scenario_sctp.c
-                                -------------------
-  AUTHOR  : Lionel GAUTHIER
-  COMPANY : EURECOM
-  EMAIL   : Lionel.Gauthier@eurecom.fr
- */
-
-
-#include <errno.h>
-
-#include "intertask_interface.h"
-#include "platform_types.h"
-#include "assertions.h"
-#include "play_scenario.h"
-
-//------------------------------------------------------------------------------
-asn_comp_rval_t *et_sctp_data_is_matching(sctp_datahdr_t *const sctp1, sctp_datahdr_t *const sctp2, const uint32_t constraints)
-{
-  asn_comp_rval_t *rv = NULL;
-
-  // no comparison for ports
-  if (sctp1->ppid != sctp2->ppid) {
-    S1AP_WARN("No Matching SCTP PPID %u %u\n", sctp1->ppid, sctp2->ppid);
-    rv  = calloc(1, sizeof(asn_comp_rval_t));
-    rv->err_code = ET_ERROR_MATCH_PACKET_SCTP_PPID;
-    return rv;
-  }
-
-  if (sctp1->assoc_id != sctp2->assoc_id) {
-    S1AP_WARN("No Matching SCTP assoc id %u %u\n", sctp1->assoc_id, sctp2->assoc_id);
-    rv  = calloc(1, sizeof(asn_comp_rval_t));
-    rv->err_code = ET_ERROR_MATCH_PACKET_SCTP_ASSOC_ID;
-    return rv;
-  }
-
-  if (sctp1->stream != sctp2->stream) {
-    if (constraints & ET_BIT_MASK_MATCH_SCTP_STREAM) {
-      rv  = calloc(1, sizeof(asn_comp_rval_t));
-      rv->err_code = ET_ERROR_MATCH_PACKET_SCTP_STREAM_ID;
-      return rv;
-    } else {
-      S1AP_WARN("No Matching SCTP stream %u %u\n", sctp1->stream, sctp2->stream);
-    }
-  }
-
-  // We do not have SSN from lower layers
-  //  if (sctp1->ssn != sctp2->ssn) {
-  //    if (constraints & ET_BIT_MASK_MATCH_SCTP_SSN) {
-  //      rv  = calloc(1, sizeof(asn_comp_rval_t));
-  //      rv->err_code = ET_ERROR_MATCH_PACKET_SCTP_SSN;
-  //      return rv;
-  //    } else {
-  //      S1AP_WARN("No Matching SCTP STREAM SN %u %u\n", sctp1->ssn, sctp2->ssn);
-  //    }
-  //  }
-  return et_s1ap_is_matching(&sctp1->payload, &sctp2->payload,  constraints);
-}
-
-//------------------------------------------------------------------------------
-asn_comp_rval_t *et_sctp_is_matching(et_sctp_hdr_t *const sctp1, et_sctp_hdr_t *const sctp2, const uint32_t constraints)
-{
-  // no comparison for ports
-  asn_comp_rval_t *rv = NULL;
-
-  if (sctp1->chunk_type != sctp2->chunk_type) {
-    S1AP_WARN("No Matching chunk_type %u %u\n", sctp1->chunk_type, sctp2->chunk_type);
-    rv  = calloc(1, sizeof(asn_comp_rval_t));
-    rv->err_code = ET_ERROR_MATCH_PACKET_SCTP_CHUNK_TYPE;
-    return rv;
-  }
-
-  switch (sctp1->chunk_type) {
-    case SCTP_CID_DATA:
-      return et_sctp_data_is_matching(&sctp1->u.data_hdr, &sctp2->u.data_hdr, constraints);
-      break;
-
-    case SCTP_CID_INIT:
-      AssertFatal(0, "Not needed now");
-      break;
-
-    case SCTP_CID_INIT_ACK:
-      AssertFatal(0, "Not needed now");
-      break;
-
-    default:
-      AssertFatal(0, "Not needed now cid %d", sctp1->chunk_type);
-  }
-
-  return NULL;
-}
diff --git a/openair3/TEST/oaisim_mme_client_test.c b/openair3/TEST/oaisim_mme_client_test.c
deleted file mode 100644
index 8fcda8a5ad01f5539d6511c022425ee5fb59d679..0000000000000000000000000000000000000000
--- a/openair3/TEST/oaisim_mme_client_test.c
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The OpenAirInterface Software Alliance licenses this file to You under
- * the OAI Public License, Version 1.1  (the "License"); you may not use this file
- * except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.openairinterface.org/?page_id=698
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *-------------------------------------------------------------------------------
- * For more information about the OpenAirInterface (OAI) Software Alliance:
- *      contact@openairinterface.org
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <unistd.h>
-#include <pthread.h>
-
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <netinet/sctp.h>
-#include <arpa/inet.h>
-
-#include "sctp_primitives_client.h"
-
-#include "s1ap_common.h"
-#include "s1ap_eNB.h"
-#include "s1ap_mme.h"
-
-char ip_addr[] = "127.0.0.1";
-
-int assoc[2];
-uint8_t id[] = { 0x03, 0x56, 0xf0, 0xd8 };
-char identity[] = { 0x02, 0x08, 0x34 };
-char tac[] = { 0x00, 0x01 };
-char infoNAS[] = { 0x07, 0x42, 0x01, 0xE0, 0x06, 0x00, 0x00, 0xF1, 0x10, 0x00, 0x01, 0x00, 0x2C,
-                   0x52, 0x01, 0xC1, 0x01, 0x09, 0x10, 0x03, 0x77, 0x77, 0x77, 0x07, 0x61, 0x6E, 0x72, 0x69, 0x74,
-                   0x73, 0x75, 0x03, 0x63, 0x6F, 0x6D, 0x05, 0x01, 0x0A, 0x01, 0x20, 0x37, 0x27, 0x0E, 0x80, 0x80,
-                   0x21, 0x0A, 0x03, 0x00, 0x00, 0x0A, 0x81, 0x06, 0x0A, 0x00, 0x00, 0x01, 0x50, 0x0B, 0xF6,
-                   0x00, 0xF1, 0x10, 0x80, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01
-                 };
-
-uint32_t eNB_UE_S1AP_ID = 0;
-
-int s1ap_eNB_generate_initial_ue_message(uint8_t **buffer,
-    uint32_t *length);
-
-int s1ap_eNB_generate_initial_ue_message(uint8_t **buffer,
-    uint32_t *length)
-{
-  InitialUEMessageIEs  initialUEmessageIEs;
-  InitialUEMessageIEs *initialUEmessageIEs_p = &initialUEmessageIEs;
-  memset(initialUEmessageIEs_p, 0, sizeof(InitialUEMessageIEs));
-  initialUEmessageIEs.eNB_UE_S1AP_ID = eNB_UE_S1AP_ID;
-  initialUEmessageIEs.nas_pdu.buf = infoNAS;
-  initialUEmessageIEs.nas_pdu.size = sizeof(infoNAS);
-  initialUEmessageIEs.tai.tAC.buf = tac;
-  initialUEmessageIEs.tai.tAC.size = 2;
-  initialUEmessageIEs.tai.pLMNidentity.buf = identity;
-  initialUEmessageIEs.tai.pLMNidentity.size = 3;
-  initialUEmessageIEs.eutran_cgi.pLMNidentity.buf = identity;
-  initialUEmessageIEs.eutran_cgi.pLMNidentity.size = 3;
-  initialUEmessageIEs.eutran_cgi.cell_ID.buf = id;
-  initialUEmessageIEs.eutran_cgi.cell_ID.size = 4;
-  initialUEmessageIEs.eutran_cgi.cell_ID.bits_unused = 4;
-  initialUEmessageIEs.rrC_Establishment_Cause = RRC_Establishment_Cause_mo_Data;
-  return s1ap_eNB_encode_initial_ue_message(initialUEmessageIEs_p, buffer, length);
-}
-
-void recv_callback(uint8_t *buffer, uint32_t length)
-{
-  uint8_t *bufferS;
-  uint32_t len;
-  s1ap_eNB_generate_initial_ue_message(&bufferS, &len);
-  sctp_send_msg(assoc[0], 1, bufferS, len);
-}
-
-int main(int argc, char *argv[])
-{
-  asn_enc_rval_t retVal;
-  uint8_t *buffer;
-  uint32_t len;
-  SupportedTAs_Item_t ta;
-  PLMNidentity_t plmnIdentity;
-  asn_debug = 0;
-  asn1_xer_print = 0;
-  S1SetupRequestIEs s1SetupRequest;
-  memset(&s1SetupRequest, 0, sizeof(S1SetupRequestIEs));
-  s1SetupRequest.global_ENB_ID.eNB_ID.present = ENB_ID_PR_macroENB_ID;
-  s1SetupRequest.global_ENB_ID.eNB_ID.choice.macroENB_ID.buf = id;
-  s1SetupRequest.global_ENB_ID.eNB_ID.choice.macroENB_ID.size = 3;
-  s1SetupRequest.global_ENB_ID.eNB_ID.choice.macroENB_ID.bits_unused = 4;
-  OCTET_STRING_fromBuf(&s1SetupRequest.global_ENB_ID.pLMNidentity, identity, 3);
-  s1SetupRequest.presenceMask |= S1SETUPREQUESTIES_ENBNAME_PRESENT;
-  OCTET_STRING_fromBuf(&s1SetupRequest.eNBname, "ENB 1 eurecom",
-                       strlen("ENB 1 eurecom"));
-  memset(&ta, 0, sizeof(SupportedTAs_Item_t));
-  memset(&plmnIdentity, 0, sizeof(PLMNidentity_t));
-  OCTET_STRING_fromBuf(&ta.tAC, tac, 2);
-  OCTET_STRING_fromBuf(&plmnIdentity, identity, 3);
-  ASN_SEQUENCE_ADD(&ta.broadcastPLMNs, &plmnIdentity);
-  ASN_SEQUENCE_ADD(&s1SetupRequest.supportedTAs, &ta);
-  s1SetupRequest.defaultPagingDRX = PagingDRX_v64;
-  s1ap_eNB_encode_s1setuprequest(&s1SetupRequest, &buffer, &len);
-  assoc[0] = sctp_connect_to_remote_host(ip_addr, 36412, &recv_callback);
-  sctp_send_msg(0, 0, buffer, len);
-  free(buffer);
-  //     generateUplinkNASTransport(&buffer, &len);
-  //     sctp_send_msg(assoc[0], 0, buffer, len);
-  //     s1ap_mme_decode_pdu(buffer, len);
-  pthread_join(sctp_get_receiver_thread(assoc[0]), NULL);
-  return(0);
-}
diff --git a/openair3/TEST/oaisim_mme_itti_test.c b/openair3/TEST/oaisim_mme_itti_test.c
deleted file mode 100644
index ecfbdb0acb63e02d5a8c45ca6c22b84997668910..0000000000000000000000000000000000000000
--- a/openair3/TEST/oaisim_mme_itti_test.c
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The OpenAirInterface Software Alliance licenses this file to You under
- * the OAI Public License, Version 1.1  (the "License"); you may not use this file
- * except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.openairinterface.org/?page_id=698
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *-------------------------------------------------------------------------------
- * For more information about the OpenAirInterface (OAI) Software Alliance:
- *      contact@openairinterface.org
- */
-
-#include <stdio.h>
-#include <stdint.h>
-#include <string.h>
-#include <errno.h>
-
-#include <sys/time.h>
-#include <sys/resource.h>
-
-#include <sched.h>
-
-#include "mme_config.h"
-#include "gtpv1u_sgw_defs.h"
-
-#include "intertask_interface.h"
-
-#include "sctp_primitives_server.h"
-#include "udp_primitives_server.h"
-#include "s1ap_mme.h"
-#include "log.h"
-#include "sgw_lite_defs.h"
-#include "ipv4_defs.h"
-
-int main(int argc, char *argv[])
-{
-  int i = 0;
-  int prio = 0;
-  mme_config_t mme_config;
-  MessageDef *message_p;
-  struct sched_param param = {
-    .sched_priority = 10,
-  };
-
-  config_parse_opt_line(argc, argv, &mme_config);
-  fprintf(stdout, "Starting %s ITTI test\n", PACKAGE_STRING);
-
-  if (setpriority(PRIO_PROCESS, 0, prio) < 0) {
-    fprintf(stderr, "Cannot assign requested prio: %d\n"
-            "%d:%s\n", prio, errno, strerror(errno));
-    return -1;
-  }
-
-  if (sched_setscheduler(0, SCHED_RR, &param) < 0) {
-    fprintf(stderr, "Cannot assign requested scheduler policy\n"
-            "%d:%s\n", errno, strerror(errno));
-    return -1;
-  }
-
-  /* Calling each layer init function */
-  log_init(&mme_config);
-  itti_init(TASK_MAX, tasks_info);
-  sctp_init(&mme_config);
-  udp_init(&mme_config);
-  s1ap_mme_init(&mme_config);
-  gtpv1u_init(&mme_config);
-  ipv4_init(&mme_config);
-
-  sgw_lite_init(&mme_config);
-
-  message_p = itti_alloc_new_message(TASK_S1AP, MESSAGE_TEST);
-
-  while(i < (1 << 15)) {
-    if (send_broadcast_message(message_p) < 0) {
-      fprintf(stderr, "Failed to send broadcast message %d\n", i);
-    }
-
-    i++;
-  }
-
-  fprintf(stderr, "Successfully sent %lu messages", get_current_message_number());
-
-  return 0;
-}
diff --git a/openair3/TEST/oaisim_mme_list_benchmark.c b/openair3/TEST/oaisim_mme_list_benchmark.c
deleted file mode 100644
index 633e83aace9e37786af3b96ad2820ee0ca2868f3..0000000000000000000000000000000000000000
--- a/openair3/TEST/oaisim_mme_list_benchmark.c
+++ /dev/null
@@ -1,261 +0,0 @@
-/*
- * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The OpenAirInterface Software Alliance licenses this file to You under
- * the OAI Public License, Version 1.1  (the "License"); you may not use this file
- * except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.openairinterface.org/?page_id=698
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *-------------------------------------------------------------------------------
- * For more information about the OpenAirInterface (OAI) Software Alliance:
- *      contact@openairinterface.org
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <unistd.h>
-#include <pthread.h>
-
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <netinet/sctp.h>
-#include <arpa/inet.h>
-
-#include "sctp_primitives_client.h"
-
-#include "s1ap_common.h"
-#include "s1ap_eNB.h"
-#include "s1ap_mme.h"
-
-#include "s1ap_eNB_encoder.h"
-#include "s1ap_eNB_decoder.h"
-
-#define NB_OF_ENB 10
-#define NB_OF_UES 100
-
-static int connected_eNB = 0;
-static char ip_addr[] = "127.0.0.1";
-uint32_t ipv4_local = 0x7F000001;
-static uint8_t id[] = { 0x03, 0x56, 0xf0, 0xd8 };
-static char identity[] = { 0x02, 0x08, 0x34 };
-static char tac[] = { 0x00, 0x01 };
-static char infoNAS[] = { 0x07, 0x42, 0x01, 0xE0, 0x06, 0x00, 0x00, 0xF1, 0x10, 0x00, 0x01, 0x00, 0x2C,
-                          0x52, 0x01, 0xC1, 0x01, 0x09, 0x10, 0x03, 0x77, 0x77, 0x77, 0x07, 0x61, 0x6E, 0x72, 0x69, 0x74,
-                          0x73, 0x75, 0x03, 0x63, 0x6F, 0x6D, 0x05, 0x01, 0x0A, 0x01, 0x20, 0x37, 0x27, 0x0E, 0x80, 0x80,
-                          0x21, 0x0A, 0x03, 0x00, 0x00, 0x0A, 0x81, 0x06, 0x0A, 0x00, 0x00, 0x01, 0x50, 0x0B, 0xF6,
-                          0x00, 0xF1, 0x10, 0x80, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01
-                        };
-uint32_t nb_eNB = NB_OF_ENB;
-uint32_t nb_ue  = NB_OF_UES;
-
-void s1ap_test_generate_s1_setup_request(uint32_t eNB_id, uint8_t **buffer,
-    uint32_t *length);
-int s1ap_test_generate_initial_ue_message(uint32_t eNB_UE_S1AP_ID,
-    uint8_t **buffer,
-    uint32_t *length);
-int recv_callback(uint32_t assocId,
-                  uint32_t stream,
-                  uint8_t *buffer,
-                  uint32_t length);
-int sctp_connected(void *args,
-                   uint32_t assocId,
-                   uint32_t instreams,
-                   uint32_t outstreams);
-
-void s1ap_test_generate_s1_setup_request(uint32_t eNB_id, uint8_t **buffer,
-    uint32_t *length)
-{
-  S1SetupRequestIEs_t s1SetupRequest;
-  SupportedTAs_Item_t ta;
-  PLMNidentity_t plmnIdentity;
-  uint8_t *id_p = (uint8_t *)(&eNB_id + 1);
-  memset(&s1SetupRequest, 0, sizeof(S1SetupRequestIEs_t));
-  s1SetupRequest.global_ENB_ID.eNB_ID.present = ENB_ID_PR_macroENB_ID;
-  s1SetupRequest.global_ENB_ID.eNB_ID.choice.macroENB_ID.buf = id_p;
-  s1SetupRequest.global_ENB_ID.eNB_ID.choice.macroENB_ID.size = 3;
-  s1SetupRequest.global_ENB_ID.eNB_ID.choice.macroENB_ID.bits_unused = 4;
-  OCTET_STRING_fromBuf(&s1SetupRequest.global_ENB_ID.pLMNidentity, identity, 3);
-  s1SetupRequest.presenceMask |= S1SETUPREQUESTIES_ENBNAME_PRESENT;
-  OCTET_STRING_fromBuf(&s1SetupRequest.eNBname, "ENB 1 eurecom",
-                       strlen("ENB 1 eurecom"));
-  memset(&ta, 0, sizeof(SupportedTAs_Item_t));
-  memset(&plmnIdentity, 0, sizeof(PLMNidentity_t));
-  OCTET_STRING_fromBuf(&ta.tAC, tac, 2);
-  OCTET_STRING_fromBuf(&plmnIdentity, identity, 3);
-  ASN_SEQUENCE_ADD(&ta.broadcastPLMNs, &plmnIdentity);
-  ASN_SEQUENCE_ADD(&s1SetupRequest.supportedTAs, &ta);
-  s1SetupRequest.defaultPagingDRX = PagingDRX_v64;
-  s1ap_eNB_encode_s1_setup_request(&s1SetupRequest, buffer, length);
-}
-
-int s1ap_test_generate_initial_ue_message(uint32_t eNB_UE_S1AP_ID,
-    uint8_t **buffer,
-    uint32_t *length)
-{
-  InitialUEMessageIEs_t  initialUEmessageIEs;
-  InitialUEMessageIEs_t *initialUEmessageIEs_p = &initialUEmessageIEs;
-  memset(initialUEmessageIEs_p, 0, sizeof(InitialUEMessageIEs_t));
-  initialUEmessageIEs.eNB_UE_S1AP_ID = eNB_UE_S1AP_ID & 0x00ffffff;
-  initialUEmessageIEs.nas_pdu.buf = (uint8_t *)infoNAS;
-  initialUEmessageIEs.nas_pdu.size = sizeof(infoNAS);
-  initialUEmessageIEs.tai.tAC.buf = (uint8_t *)tac;
-  initialUEmessageIEs.tai.tAC.size = 2;
-  initialUEmessageIEs.tai.pLMNidentity.buf = (uint8_t *)identity;
-  initialUEmessageIEs.tai.pLMNidentity.size = 3;
-  initialUEmessageIEs.eutran_cgi.pLMNidentity.buf = (uint8_t *)identity;
-  initialUEmessageIEs.eutran_cgi.pLMNidentity.size = 3;
-  initialUEmessageIEs.eutran_cgi.cell_ID.buf = (uint8_t *)id;
-  initialUEmessageIEs.eutran_cgi.cell_ID.size = 4;
-  initialUEmessageIEs.eutran_cgi.cell_ID.bits_unused = 4;
-  initialUEmessageIEs.rrC_Establishment_Cause = RRC_Establishment_Cause_mo_Data;
-  return s1ap_eNB_encode_initial_ue_message(initialUEmessageIEs_p, buffer, length);
-}
-
-int s1ap_test_generate_initial_setup_resp(uint32_t eNB_UE_S1AP_ID,
-    uint32_t mme_UE_S1AP_ID,
-    uint8_t  eRAB_id,
-    uint32_t teid,
-    uint8_t **buffer,
-    uint32_t *length)
-{
-  InitialContextSetupResponseIEs_t  initialResponseIEs;
-  InitialContextSetupResponseIEs_t *initialResponseIEs_p = &initialResponseIEs;
-  E_RABSetupItemCtxtSURes_t e_RABSetupItemCtxtSURes;
-  memset(initialResponseIEs_p, 0, sizeof(InitialContextSetupResponseIEs_t));
-  memset(&e_RABSetupItemCtxtSURes, 0, sizeof(E_RABSetupItemCtxtSURes_t));
-  initialResponseIEs_p->mme_ue_s1ap_id = mme_UE_S1AP_ID;
-  initialResponseIEs_p->eNB_UE_S1AP_ID = eNB_UE_S1AP_ID;
-  e_RABSetupItemCtxtSURes.e_RAB_ID = eRAB_id;
-  e_RABSetupItemCtxtSURes.transportLayerAddress.buf = (uint8_t *)&ipv4_local;
-  e_RABSetupItemCtxtSURes.transportLayerAddress.size = 4;
-  e_RABSetupItemCtxtSURes.gTP_TEID.buf = (uint8_t *)&teid;
-  e_RABSetupItemCtxtSURes.gTP_TEID.size = 4;
-  ASN_SEQUENCE_ADD(
-    &initialResponseIEs_p->e_RABSetupListCtxtSURes.e_RABSetupItemCtxtSURes,
-    &e_RABSetupItemCtxtSURes);
-  return s1ap_eNB_encode_initial_context_setup_response(initialResponseIEs_p,
-         buffer, length);
-}
-
-int recv_callback(uint32_t  assocId,
-                  uint32_t  stream,
-                  uint8_t  *buffer,
-                  uint32_t  length)
-{
-  S1AP_S1AP_PDU_t pdu;
-  uint8_t *buffer2;
-  uint32_t len;
-  int j;
-
-  if (s1ap_eNB_decode_pdu(&pdu, buffer, length) < 0) {
-    fprintf(stderr, "s1ap_eNB_decode_pdu returned status < 0\n");
-    free(buffer);
-    return -1;
-  }
-
-  if (pdu.initiatingMessage.procedureCode == S1AP_ProcedureCode_id_S1Setup
-      && pdu.present == S1AP_S1AP_PDU_PR_successfulOutcome) {
-    for (j = 0; j < nb_ue; j++) {
-      s1ap_test_generate_initial_ue_message(j, &buffer2, &len);
-
-      if (sctp_send_msg(assocId, j % 64 + 1, buffer2, len) < 0) {
-        fprintf(stderr,
-                "sctp_send_msg returned status < 0\nSomething bad happened on SCTP layer\n");
-        free(buffer2);
-        break;
-      }
-
-      free(buffer2);
-    }
-  } else if (pdu.initiatingMessage.procedureCode == S1AP_ProcedureCode_id_InitialContextSetup
-             && pdu.present == S1AP_PDU_PR_initiatingMessage) {
-    fprintf(stdout, "Received InitialContextSetup request\n");
-    s1ap_test_generate_initial_setup_resp(
-      message.msg.initialContextSetupRequestIEs.eNB_UE_S1AP_ID,
-      message.msg.initialContextSetupRequestIEs.mme_ue_s1ap_id,
-      0x5,
-      0x1,
-      &buffer2,
-      &len);
-
-    if (sctp_send_msg(assocId, stream, buffer2, len) < 0) {
-      fprintf(stderr,
-              "sctp_send_msg returned status < 0\nSomething bad happened on SCTP layer\n");
-      free(buffer2);
-    }
-
-    free(buffer2);
-  } else {
-    fprintf(stderr, "Received unexpected message %d %d\n", message.procedureCode,
-            message.direction);
-    free(buffer);
-    return -1;
-  }
-
-  free(buffer);
-  return 0;
-}
-
-int sctp_connected(void     *args,
-                   uint32_t  assocId,
-                   uint32_t  instreams,
-                   uint32_t  outstreams)
-{
-  uint8_t *buffer;
-  uint32_t len;
-  fprintf(stdout, "New association %d\n", assocId);
-  s1ap_test_generate_s1_setup_request(assocId * nb_eNB, &buffer, &len);
-
-  if (sctp_send_msg(assocId, 0, buffer, len) < 0) {
-    free(buffer);
-    fprintf(stderr,
-            "sctp_send_msg returned status < 0. Something bad happened on SCTP layer\n");
-    exit(0);
-  }
-
-  free(buffer);
-  connected_eNB++;
-  return 0;
-}
-
-int main(int argc, char *argv[])
-{
-  asn_enc_rval_t retVal;
-  int i;
-  SupportedTAs_Item_t ta;
-  PLMNidentity_t plmnIdentity;
-  asn_debug = 0;
-  asn1_xer_print = 0;
-
-  if (argc > 1) {
-    nb_eNB = atoi(argv[1]);
-
-    if (argc > 2) {
-      nb_ue = atoi(argv[2]);
-    }
-  }
-
-  for (i = 0; i < nb_eNB; i++) {
-    sctp_connect_to_remote_host(ip_addr, 36412, 18, NULL, sctp_connected,
-                                recv_callback);
-  }
-
-  while (1) {
-    sleep(1);
-  }
-
-  //     generateUplinkNASTransport(&buffer, &len);
-  //     sctp_send_msg(assoc[0], 0, buffer, len);
-  //     s1ap_mme_decode_pdu(buffer, len);
-  sctp_terminate();
-  return(0);
-}
diff --git a/openair3/TEST/oaisim_mme_s1ap_test.c b/openair3/TEST/oaisim_mme_s1ap_test.c
deleted file mode 100644
index aa8f92aee128750cffa67e06f3db364f5e0e2b7f..0000000000000000000000000000000000000000
--- a/openair3/TEST/oaisim_mme_s1ap_test.c
+++ /dev/null
@@ -1,179 +0,0 @@
-/*
- * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The OpenAirInterface Software Alliance licenses this file to You under
- * the OAI Public License, Version 1.1  (the "License"); you may not use this file
- * except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.openairinterface.org/?page_id=698
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *-------------------------------------------------------------------------------
- * For more information about the OpenAirInterface (OAI) Software Alliance:
- *      contact@openairinterface.org
- */
-
-#include <stdio.h>
-#include <stdint.h>
-#include <string.h>
-
-#include "s1ap_common.h"
-#include "s1ap_eNB_decoder.h"
-#include "s1ap_mme_decoder.h"
-#include "s1ap_eNB_encoder.h"
-
-#define MAX_BUF_LENGTH (1024)
-
-typedef struct {
-  char    *procedure_name;
-  uint8_t  buffer[MAX_BUF_LENGTH];
-  uint32_t buf_len;
-} s1ap_test_t;
-
-s1ap_test_t s1ap_test[] = {
-  //     {
-  //         .procedure_name = "Downlink NAS transport",
-  //         .buffer = {
-  //             0x00, 0x0B, 0x40, 0x21, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
-  //             0x05, 0xC0, 0x01, 0x10, 0xCE, 0xCC, 0x00, 0x08, 0x00, 0x03,
-  //             0x40, 0x01, 0xB3, 0x00, 0x1A, 0x00, 0x0A, 0x09, 0x27, 0xAB,
-  //             0x1F, 0x7C, 0xEC, 0x01, 0x02, 0x01, 0xD9
-  //         },
-  //         .buf_len = 37,
-  //     },
-  {
-    .procedure_name = "Uplink NAS transport",
-    .buffer = {
-      0x00, 0x0D, 0x40, 0x41, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,
-      0x05, 0xC0, 0x01, 0x10, 0xCE, 0xCC, 0x00, 0x08, 0x00, 0x03,
-      0x40, 0x01, 0xB3, 0x00, 0x1A, 0x00, 0x14, 0x13, 0x27, 0xD3,
-      0x77, 0xED, 0x4C, 0x01, 0x02, 0x01, 0xDA, 0x28, 0x08, 0x03,
-      0x69, 0x6D, 0x73, 0x03, 0x70, 0x66, 0x74, 0x00, 0x64, 0x40,
-      0x08, 0x00, 0x02, 0xF8, 0x29, 0x00, 0x00, 0x20, 0x40, 0x00,
-      0x43, 0x40, 0x06, 0x00, 0x02, 0xF8, 0x29, 0x00, 0x04,
-    },
-    .buf_len = 69,
-  },
-  {
-    .procedure_name = "UE capability info indication",
-    .buffer = {
-      0x00, 0x16, 0x40, 0x37, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
-      0x05, 0xC0, 0x01, 0x10, 0xCE, 0xCC, 0x00, 0x08, 0x00, 0x03,
-      0x40, 0x01, 0xB3, 0x00, 0x4A, 0x40, 0x20, 0x1F, 0x00, 0xE8,
-      0x01, 0x01, 0xA8, 0x13, 0x80, 0x00, 0x20, 0x83, 0x13, 0x05,
-      0x0B, 0x8B, 0xFC, 0x2E, 0x2F, 0xF0, 0xB8, 0xBF, 0xAF, 0x87,
-      0xFE, 0x40, 0x44, 0x04, 0x07, 0x0C, 0xA7, 0x4A, 0x80,
-    },
-    .buf_len = 59,
-  },
-  {
-    .procedure_name = "Initial Context Setup Request",
-    .buffer = {
-      0x00, 0x09, 0x00, 0x80, 0xD4, 0x00, 0x00, 0x06, 0x00, 0x00,
-      0x00, 0x05, 0xC0, 0x01, 0x10, 0xCE, 0xCC, 0x00, 0x08, 0x00,
-      0x03, 0x40, 0x01, 0xB3, 0x00, 0x42, 0x00, 0x0A, 0x18, 0x08,
-      0xF0, 0xD1, 0x80, 0x60, 0x02, 0xFA, 0xF0, 0x80, 0x00, 0x18,
-      0x00, 0x80, 0x81, 0x00, 0x00, 0x34, 0x00, 0x7C, 0x45, 0x00,
-      0x09, 0x3D, 0x0F, 0x80, 0x0A, 0x05, 0x00, 0x02, 0x03, 0x78,
-      0x48, 0x86, 0x6D, 0x27, 0xC7, 0x97, 0x8E, 0xA1, 0x02, 0x07,
-      0x42, 0x01, 0x49, 0x06, 0x00, 0x02, 0xF8, 0x29, 0x00, 0x04,
-      0x00, 0x48, 0x52, 0x01, 0xC1, 0x01, 0x09, 0x1B, 0x03, 0x69,
-      0x6D, 0x73, 0x03, 0x70, 0x66, 0x74, 0x06, 0x6D, 0x6E, 0x63,
-      0x30, 0x39, 0x32, 0x06, 0x6D, 0x63, 0x63, 0x32, 0x30, 0x38,
-      0x04, 0x67, 0x70, 0x72, 0x73, 0x05, 0x01, 0x0A, 0x80, 0x00,
-      0x24, 0x5D, 0x01, 0x00, 0x30, 0x10, 0x23, 0x93, 0x1F, 0x93,
-      0x96, 0xFE, 0xFE, 0x74, 0x4B, 0xFF, 0xFF, 0x00, 0xC5, 0x00,
-      0x6C, 0x00, 0x32, 0x0B, 0x84, 0x34, 0x01, 0x08, 0x5E, 0x04,
-      0xFE, 0xFE, 0xC5, 0x6C, 0x50, 0x0B, 0xF6, 0x02, 0xF8, 0x29,
-      0x80, 0x00, 0x01, 0xF0, 0x00, 0x70, 0x8A, 0x53, 0x12, 0x64,
-      0x01, 0x01, 0x00, 0x6B, 0x00, 0x05, 0x18, 0x00, 0x0C, 0x00,
-      0x00, 0x00, 0x49, 0x00, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-      0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-      0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-      0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-    },
-    .buf_len = 217,
-  },
-  {
-    .procedure_name = "Initial context setup response",
-    .buffer = {
-      0x20, 0x09, 0x00, 0x26, 0x00, 0x00, 0x03, 0x00, 0x00, 0x40,
-      0x05, 0xC0, 0x01, 0x10, 0xCE, 0xCC, 0x00, 0x08, 0x40, 0x03,
-      0x40, 0x01, 0xB3, 0x00, 0x33, 0x40, 0x0F, 0x00, 0x00, 0x32,
-      0x40, 0x0A, 0x0A, 0x1F, 0x0A, 0x05, 0x02, 0x05, 0x00, 0x0F,
-      0x7A, 0x03,
-    },
-    .buf_len = 42,
-  }
-};
-
-static int compare_buffer(uint8_t *buffer, uint32_t length_buffer,
-                          uint8_t *pattern,
-                          uint32_t length_pattern)
-{
-  int i;
-
-  if (length_buffer != length_pattern) {
-    printf("Length mismatch, expecting %d bytes, got %d bytes\n", length_pattern,
-           length_buffer);
-    return -1;
-  }
-
-  for (i = 0; i < length_buffer; i++) {
-    if (pattern[i] != buffer[i]) {
-      printf("Mismatch fount in bytes %d\nExpecting 0x%02x, got 0x%02x\n",
-             i, pattern[i], buffer[i]);
-    }
-  }
-
-  return 0;
-}
-
-int main(int argc, char *argv[])
-{
-  int i;
-  asn1_xer_print = 2;
-
-  if (argc > 1) {
-    asn_debug = 1;
-  }
-
-  for (i = 0; i < sizeof(s1ap_test) / sizeof(s1ap_test_t); i++) {
-    S1AP_S1AP_PDU_t pdu;
-    uint8_t *buffer;
-    uint32_t length;
-    memset(&pdu, 0, sizeof(pdu));
-    printf("Trying to decode %s procedure with asn1c decoder\n",
-           s1ap_test[i].procedure_name);
-
-    if (s1ap_mme_decode_pdu(&pdu, s1ap_test[i].buffer,
-                            s1ap_test[i].buf_len) < 0) {
-      if (s1ap_eNB_decode_pdu(&pdu, s1ap_test[i].buffer,
-                              s1ap_test[i].buf_len) < 0) {
-        printf("Failed to decode this message\n");
-      } else {
-        printf("Succesfully decoded %s with eNB decoder\n", s1ap_test[i].procedure_name);
-      }
-    } else {
-      printf("Succesfully decoded %s with MME decoder\n", s1ap_test[i].procedure_name);
-    }
-
-    printf("Trying to encode %s procedure with asn1c encoder\n",
-           s1ap_test[i].procedure_name);
-
-    if (s1ap_eNB_encode_pdu(&pdu, &buffer, &length) < 0) {
-      printf("Failed to encode this message on MME side, trying eNB side\n");
-    } else {
-      compare_buffer(buffer, length, s1ap_test[i].buffer, s1ap_test[i].buf_len);
-      free(buffer);
-    }
-  }
-
-  return 0;
-}
diff --git a/openair3/TEST/oaisim_mme_sctp_test.c b/openair3/TEST/oaisim_mme_sctp_test.c
deleted file mode 100644
index b8be3e185cc9aa1a853545728af771901e7c5152..0000000000000000000000000000000000000000
--- a/openair3/TEST/oaisim_mme_sctp_test.c
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The OpenAirInterface Software Alliance licenses this file to You under
- * the OAI Public License, Version 1.1  (the "License"); you may not use this file
- * except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.openairinterface.org/?page_id=698
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *-------------------------------------------------------------------------------
- * For more information about the OpenAirInterface (OAI) Software Alliance:
- *      contact@openairinterface.org
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <unistd.h>
-#include <pthread.h>
-
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <netinet/sctp.h>
-#include <arpa/inet.h>
-
-#include "sctp_primitives_client.h"
-
-#include "s1ap_common.h"
-#include "s1ap_eNB.h"
-#include "s1ap_mme.h"
-
-#include "s1ap_eNB_encoder.h"
-#include "s1ap_eNB_decoder.h"
-
-int recv_callback(uint32_t  assocId,
-                  uint32_t  stream,
-                  uint8_t  *buffer,
-                  uint32_t  length)
-{
-  free(buffer);
-  return 0;
-}
-
-int sctp_connected(void     *args,
-                   uint32_t  assocId,
-                   uint32_t  instreams,
-                   uint32_t  outstreams)
-{
-  return 0;
-}
-
-int main(int argc, char *argv[])
-{
-  asn_enc_rval_t retVal;
-  int i;
-
-  for (i = 0; i < nb_eNB; i++) {
-    sctp_connect_to_remote_host(ip_addr, 36412, NULL, sctp_connected, recv_callback);
-  }
-
-  while (1) {
-    sleep(1);
-  }
-
-  sctp_terminate();
-  return(0);
-}
diff --git a/openair3/TEST/oaisim_mme_test_s1c.c b/openair3/TEST/oaisim_mme_test_s1c.c
deleted file mode 100644
index 94a554ab5f275fb779a21b021748a7672192e192..0000000000000000000000000000000000000000
--- a/openair3/TEST/oaisim_mme_test_s1c.c
+++ /dev/null
@@ -1,339 +0,0 @@
-/*
- * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The OpenAirInterface Software Alliance licenses this file to You under
- * the OAI Public License, Version 1.1  (the "License"); you may not use this file
- * except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.openairinterface.org/?page_id=698
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *-------------------------------------------------------------------------------
- * For more information about the OpenAirInterface (OAI) Software Alliance:
- *      contact@openairinterface.org
- */
-
-#define _GNU_SOURCE
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <stdint.h>
-#include <string.h>
-#include <sys/ioctl.h>
-#include <sys/types.h>
-#include <sys/mman.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <sched.h>
-#include <linux/sched.h>
-#include <signal.h>
-#include <execinfo.h>
-#include <getopt.h>
-#include <syscall.h>
-
-
-#include "UTIL/LOG/log_extern.h"
-#include "assertions.h"
-#include "intertask_interface.h"
-#include "sctp_eNB_task.h"
-#include "s1ap_eNB.h"
-#include "enb_config.h"
-
-#include "oaisim_mme_test_s1c.h"
-
-#   define ENB_REGISTER_RETRY_DELAY 5
-//------------------------------------------------------------------------------
-static void get_options (int argc, char **argv);
-static uint32_t eNB_app_register(const uint32_t enb_id_start, const uint32_t enb_id_end, const Enb_properties_array_t *enb_properties);
-static void    *eNB_app_task    (void *args_p);
-void     mme_test_s1_start_test(instance_t instance);
-//------------------------------------------------------------------------------
-static char                    *conf_config_file_name = NULL;
-const Enb_properties_array_t   *enb_properties        = NULL;
-int16_t                         glog_level            = LOG_INFO;
-int16_t                         glog_verbosity        = LOG_MED;
-s1c_test_t                      s1c_test = {
-	    0, // scenario_index
-	    0, // tx_next_message_index
-	    0, // rx_next_message_index
-	    0  // assoc_id
-      };
-
-//------------------------------------------------------------------------------
-static void get_options (int argc, char **argv)
-//------------------------------------------------------------------------------
-{
-  int c;
-
-
-  while ((c = getopt_long (argc, argv, "K:g:G:O:",NULL,NULL)) != -1) {
-    switch (c) {
-    case 'O':
-      conf_config_file_name = optarg;
-      break;
-
-    case 'g':
-      glog_level=atoi(optarg); // value between 1 - 9
-      break;
-
-    case 'G':
-      glog_verbosity=atoi(optarg);// value from 0, 0x5, 0x15, 0x35, 0x75
-      break;
-
-    default:
-      break;
-    }
-  }
-
-  AssertFatal(conf_config_file_name != NULL,"Please provide a configuration file\n");
-
-
-}
-
-
-//------------------------------------------------------------------------------
-static uint32_t eNB_app_register(const uint32_t enb_id_start, const uint32_t enb_id_end, const Enb_properties_array_t *enb_properties)
-//------------------------------------------------------------------------------
-{
-  uint32_t         enb_id;
-  uint32_t         mme_id;
-  MessageDef      *msg_p;
-  uint32_t         register_enb_pending = 0;
-  char            *str                  = NULL;
-  struct in_addr   addr;
-
-  // 1 eNB should be max.
-  // 1 eNB should be max.
-  for (enb_id = enb_id_start; (enb_id < enb_id_end) ; enb_id++) {
-    {
-      s1ap_register_enb_req_t *s1ap_register_eNB;
-
-      /* note:  there is an implicit relationship between the data structure and the message name */
-      msg_p = itti_alloc_new_message (TASK_ENB_APP, S1AP_REGISTER_ENB_REQ);
-
-      s1ap_register_eNB = &S1AP_REGISTER_ENB_REQ(msg_p);
-
-      /* Some default/random parameters */
-      s1ap_register_eNB->eNB_id           = enb_properties->properties[enb_id]->eNB_id;
-      s1ap_register_eNB->cell_type        = enb_properties->properties[enb_id]->cell_type;
-      s1ap_register_eNB->eNB_name         = enb_properties->properties[enb_id]->eNB_name;
-      s1ap_register_eNB->tac              = enb_properties->properties[enb_id]->tac;
-      s1ap_register_eNB->mcc              = enb_properties->properties[enb_id]->mcc;
-      s1ap_register_eNB->mnc              = enb_properties->properties[enb_id]->mnc;
-      s1ap_register_eNB->mnc_digit_length = enb_properties->properties[enb_id]->mnc_digit_length;
-      s1ap_register_eNB->default_drx      = enb_properties->properties[enb_id]->pcch_defaultPagingCycle[0];
-
-      s1ap_register_eNB->nb_mme =         enb_properties->properties[enb_id]->nb_mme;
-      AssertFatal (s1ap_register_eNB->nb_mme <= S1AP_MAX_NB_MME_IP_ADDRESS, "Too many MME for eNB %d (%d/%d)!", enb_id, s1ap_register_eNB->nb_mme,
-                   S1AP_MAX_NB_MME_IP_ADDRESS);
-
-      for (mme_id = 0; mme_id < s1ap_register_eNB->nb_mme; mme_id++) {
-        s1ap_register_eNB->mme_ip_address[mme_id].ipv4 = enb_properties->properties[enb_id]->mme_ip_address[mme_id].ipv4;
-        s1ap_register_eNB->mme_ip_address[mme_id].ipv6 = enb_properties->properties[enb_id]->mme_ip_address[mme_id].ipv6;
-        strncpy (s1ap_register_eNB->mme_ip_address[mme_id].ipv4_address,
-                 enb_properties->properties[enb_id]->mme_ip_address[mme_id].ipv4_address,
-                 sizeof(s1ap_register_eNB->mme_ip_address[0].ipv4_address));
-        strncpy (s1ap_register_eNB->mme_ip_address[mme_id].ipv6_address,
-                 enb_properties->properties[enb_id]->mme_ip_address[mme_id].ipv6_address,
-                 sizeof(s1ap_register_eNB->mme_ip_address[0].ipv6_address));
-      }
-
-      s1ap_register_eNB->enb_ip_address.ipv6 = 0;
-      s1ap_register_eNB->enb_ip_address.ipv4 = 1;
-      addr.s_addr = enb_properties->properties[enb_id]->enb_ipv4_address_for_S1_MME;
-      str = inet_ntoa(addr);
-      strcpy(s1ap_register_eNB->enb_ip_address.ipv4_address, str);
-
-      itti_send_msg_to_task (TASK_S1AP, ENB_MODULE_ID_TO_INSTANCE(enb_id), msg_p);
-
-      register_enb_pending++;
-    }
-  }
-
-  return register_enb_pending;
-}
-
-//------------------------------------------------------------------------------
-static void *eNB_app_task(void *args_p)
-//------------------------------------------------------------------------------
-{
-  const Enb_properties_array_t   *enb_properties_p  = NULL;
-  uint32_t                        enb_nb = 1; /* Default number of eNB is 1 */
-  uint32_t                        enb_id_start = 0;
-  uint32_t                        enb_id_end = enb_id_start + enb_nb;
-  uint32_t                        register_enb_pending;
-  uint32_t                        registered_enb;
-  long                            enb_register_retry_timer_id;
-  MessageDef                     *msg_p           = NULL;
-  const char                     *msg_name        = NULL;
-  instance_t                      instance;
-  int                             result;
-
-  itti_mark_task_ready (TASK_ENB_APP);
-
-  enb_properties_p = enb_config_get();
-
-  AssertFatal (enb_nb <= enb_properties_p->number,
-               "Number of eNB is greater than eNB defined in configuration file (%d/%d)!",
-               enb_nb, enb_properties_p->number);
-
-
-  /* Try to register each eNB */
-  registered_enb = 0;
-  register_enb_pending = eNB_app_register (enb_id_start, enb_id_end, enb_properties_p);
-
-  do {
-    // Wait for a message
-    itti_receive_msg (TASK_ENB_APP, &msg_p);
-
-    msg_name = ITTI_MSG_NAME (msg_p);
-    instance = ITTI_MSG_DESTINATION_INSTANCE (msg_p);
-
-    switch (ITTI_MSG_ID(msg_p)) {
-    case TERMINATE_MESSAGE:
-      itti_exit_task ();
-      break;
-
-    case MESSAGE_TEST:
-      LOG_I(ENB_APP, "Received %s\n", ITTI_MSG_NAME(msg_p));
-      break;
-
-
-    case S1AP_REGISTER_ENB_CNF:
-      LOG_I(ENB_APP, "[eNB %d] Received %s: associated MME %d\n", instance, msg_name,
-            S1AP_REGISTER_ENB_CNF(msg_p).nb_mme);
-
-      DevAssert(register_enb_pending > 0);
-      register_enb_pending--;
-
-      /* Check if at least eNB is registered with one MME */
-      if (S1AP_REGISTER_ENB_CNF(msg_p).nb_mme > 0) {
-        registered_enb++;
-      }
-
-      /* Check if all register eNB requests have been processed */
-      if (register_enb_pending == 0) {
-        if (registered_enb == enb_nb) {
-          mme_test_s1_start_test(instance);
-
-
-        } else {
-          uint32_t not_associated = enb_nb - registered_enb;
-
-          LOG_W(ENB_APP, " %d eNB %s not associated with a MME, retrying registration in %d seconds ...\n",
-                not_associated, not_associated > 1 ? "are" : "is", ENB_REGISTER_RETRY_DELAY);
-
-          /* Restart the eNB registration process in ENB_REGISTER_RETRY_DELAY seconds */
-          if (timer_setup (ENB_REGISTER_RETRY_DELAY, 0, TASK_ENB_APP, INSTANCE_DEFAULT, TIMER_ONE_SHOT,
-                           NULL, &enb_register_retry_timer_id) < 0) {
-            LOG_E(ENB_APP, " Can not start eNB register retry timer, use \"sleep\" instead!\n");
-
-            sleep(ENB_REGISTER_RETRY_DELAY);
-            /* Restart the registration process */
-            registered_enb = 0;
-            register_enb_pending = eNB_app_register (enb_id_start, enb_id_end, enb_properties_p);
-          }
-        }
-      }
-
-      break;
-
-    case S1AP_DEREGISTERED_ENB_IND:
-      LOG_W(ENB_APP, "[eNB %d] Received %s: associated MME %d\n", instance, msg_name,
-            S1AP_DEREGISTERED_ENB_IND(msg_p).nb_mme);
-
-      /* TODO handle recovering of registration */
-      break;
-
-    case TIMER_HAS_EXPIRED:
-      LOG_I(ENB_APP, " Received %s: timer_id %d\n", msg_name, TIMER_HAS_EXPIRED(msg_p).timer_id);
-
-      if (TIMER_HAS_EXPIRED (msg_p).timer_id == enb_register_retry_timer_id) {
-        /* Restart the registration process */
-        registered_enb = 0;
-        register_enb_pending = eNB_app_register (enb_id_start, enb_id_end, enb_properties_p);
-      }
-
-      break;
-
-    default:
-      LOG_E(ENB_APP, "Received unexpected message %s\n", msg_name);
-      break;
-    }
-
-    result = itti_free (ITTI_MSG_ORIGIN_ID(msg_p), msg_p);
-    AssertFatal (result == EXIT_SUCCESS, "Failed to free memory (%d)!\n", result);
-  } while (1);
-
-  return NULL;
-}
-
-
-//------------------------------------------------------------------------------
-void mme_test_s1_start_test(instance_t instance)
-//------------------------------------------------------------------------------
-{
-	s1ap_eNB_itti_send_sctp_data_req(instance,
-			s1c_test.assoc_id,
-			s1ap_scenarios[s1c_test.scenario_index][s1c_test.tx_next_message_index].buffer,
-			s1ap_scenarios[s1c_test.scenario_index][s1c_test.tx_next_message_index].buf_len,
-			s1ap_scenarios[s1c_test.scenario_index][s1c_test.tx_next_message_index].sctp_stream_id);
-}
-
-
-//------------------------------------------------------------------------------
-void mme_test_s1_notify_sctp_data_ind(uint32_t assoc_id, int32_t stream, const uint8_t * const data, const uint32_t data_length)
-//------------------------------------------------------------------------------
-{
-
-}
-
-
-//------------------------------------------------------------------------------
-int main( int argc, char **argv )
-//------------------------------------------------------------------------------
-{
-  // initialize the log (see log.h for details)
-  logInit();
-
-  get_options (argc, argv); //Command-line options
-  set_glog(glog_level, glog_verbosity);
-  log_set_instance_type (LOG_INSTANCE_ENB);
-
-  /* Read eNB configuration file */
-  enb_properties = enb_config_init(conf_config_file_name);
-
-  itti_init(TASK_MAX,  tasks_info);
-
-  itti_wait_ready(1);
-
-  if (itti_create_task (TASK_SCTP, sctp_eNB_task, NULL) < 0) {
-    LOG_E(SCTP, "Create task for SCTP failed\n");
-    return -1;
-  }
-
-  if (itti_create_task (TASK_S1AP, s1ap_eNB_task, NULL) < 0) {
-    LOG_E(S1AP, "Create task for S1AP failed\n");
-    return -1;
-  }
-
-  if (itti_create_task (TASK_ENB_APP, eNB_app_task, NULL) < 0) {
-    LOG_E(S1AP, "Create task for S1AP failed\n");
-    return -1;
-  }
-
-  itti_wait_ready(0);
-
-
-
-  sleep(30);
-
-  logClean();
-  return 0;
-}
diff --git a/openair3/TEST/oaisim_mme_test_s1c.h b/openair3/TEST/oaisim_mme_test_s1c.h
deleted file mode 100644
index 91e4472caf0ed2dccb4bf80f942072ebde9a3e6f..0000000000000000000000000000000000000000
--- a/openair3/TEST/oaisim_mme_test_s1c.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The OpenAirInterface Software Alliance licenses this file to You under
- * the OAI Public License, Version 1.1  (the "License"); you may not use this file
- * except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.openairinterface.org/?page_id=698
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *-------------------------------------------------------------------------------
- * For more information about the OpenAirInterface (OAI) Software Alliance:
- *      contact@openairinterface.org
- */
-
-typedef struct s1c_test_s {
-    int     scenario_index;
-    int     tx_next_message_index;
-    int     rx_next_message_index;
-    int32_t assoc_id;
-}s1c_test_t;
-
-void     mme_test_s1_start_test(instance_t instance);
-void     mme_test_s1_notify_sctp_data_ind(uint32_t assoc_id, int32_t stream, const uint8_t * const data, const uint32_t data_length);
diff --git a/openair3/TEST/oaisim_mme_test_s1c_s1ap.c b/openair3/TEST/oaisim_mme_test_s1c_s1ap.c
deleted file mode 100644
index 60da125073aacd8dd0da7051e590b9926c1efe80..0000000000000000000000000000000000000000
--- a/openair3/TEST/oaisim_mme_test_s1c_s1ap.c
+++ /dev/null
@@ -1,291 +0,0 @@
-/*
- * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The OpenAirInterface Software Alliance licenses this file to You under
- * the OAI Public License, Version 1.1  (the "License"); you may not use this file
- * except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.openairinterface.org/?page_id=698
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *-------------------------------------------------------------------------------
- * For more information about the OpenAirInterface (OAI) Software Alliance:
- *      contact@openairinterface.org
- */
-
-#define _GNU_SOURCE
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <stdint.h>
-#include <string.h>
-#include <sys/ioctl.h>
-#include <sys/types.h>
-#include <sys/mman.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <sched.h>
-#include <linux/sched.h>
-#include <signal.h>
-#include <execinfo.h>
-#include <getopt.h>
-#include <syscall.h>
-
-
-#include "tree.h"
-#include "queue.h"
-#include "intertask_interface.h"
-#include "s1ap_eNB_default_values.h"
-#include "s1ap_common.h"
-#include "s1ap_eNB_defs.h"
-#include "s1ap_eNB_management_procedures.h"
-#include "assertions.h"
-
-#include "platform_types.h"
-#include "oaisim_mme_test_s1c.h"
-
-
-void s1ap_eNB_handle_sctp_data_ind(sctp_data_ind_t *sctp_data_ind)
-{
-  int result;
-  DevAssert(sctp_data_ind != NULL);
-  mme_test_s1_notify_sctp_data_ind(sctp_data_ind->assoc_id, sctp_data_ind->stream,
-                                   sctp_data_ind->buffer, sctp_data_ind->buffer_length);
-  result = itti_free(TASK_UNKNOWN, sctp_data_ind->buffer);
-  AssertFatal (result == EXIT_SUCCESS, "Failed to free memory (%d)!\n", result);
-}
-
-
-void s1ap_eNB_itti_send_sctp_data_req(instance_t instance, int32_t assoc_id, uint8_t *buffer,
-                                      uint32_t buffer_length, uint16_t stream)
-{
-  MessageDef      *message_p;
-  sctp_data_req_t *sctp_data_req;
-  message_p = itti_alloc_new_message(TASK_S1AP, SCTP_DATA_REQ);
-  sctp_data_req = &message_p->ittiMsg.sctp_data_req;
-  sctp_data_req->assoc_id      = assoc_id;
-  sctp_data_req->buffer        = buffer;
-  sctp_data_req->buffer_length = buffer_length;
-  sctp_data_req->stream        = stream;
-  itti_send_msg_to_task(TASK_SCTP, instance, message_p);
-}
-
-void s1ap_handle_s1_setup_message(s1ap_eNB_mme_data_t *mme_desc_p, int sctp_shutdown)
-{
-  if (sctp_shutdown) {
-    /* A previously connected MME has been shutdown */
-
-    /* TODO check if it was used by some eNB and send a message to inform these eNB if there is no more associated MME */
-    if (mme_desc_p->state == S1AP_ENB_STATE_CONNECTED) {
-      mme_desc_p->state = S1AP_ENB_STATE_DISCONNECTED;
-
-      if (mme_desc_p->s1ap_eNB_instance->s1ap_mme_associated_nb > 0) {
-        /* Decrease associated MME number */
-        mme_desc_p->s1ap_eNB_instance->s1ap_mme_associated_nb --;
-      }
-
-      /* If there are no more associated MME, inform eNB app */
-      if (mme_desc_p->s1ap_eNB_instance->s1ap_mme_associated_nb == 0) {
-        MessageDef                 *message_p;
-        message_p = itti_alloc_new_message(TASK_S1AP, S1AP_DEREGISTERED_ENB_IND);
-        S1AP_DEREGISTERED_ENB_IND(message_p).nb_mme = 0;
-        itti_send_msg_to_task(TASK_ENB_APP, mme_desc_p->s1ap_eNB_instance->instance, message_p);
-      }
-    }
-  } else {
-    /* Check that at least one setup message is pending */
-    DevCheck(mme_desc_p->s1ap_eNB_instance->s1ap_mme_pending_nb > 0, mme_desc_p->s1ap_eNB_instance->instance,
-             mme_desc_p->s1ap_eNB_instance->s1ap_mme_pending_nb, 0);
-
-    if (mme_desc_p->s1ap_eNB_instance->s1ap_mme_pending_nb > 0) {
-      /* Decrease pending messages number */
-      mme_desc_p->s1ap_eNB_instance->s1ap_mme_pending_nb --;
-    }
-
-    /* If there are no more pending messages, inform eNB app */
-    if (mme_desc_p->s1ap_eNB_instance->s1ap_mme_pending_nb == 0) {
-      MessageDef                 *message_p;
-      message_p = itti_alloc_new_message(TASK_S1AP, S1AP_REGISTER_ENB_CNF);
-      S1AP_REGISTER_ENB_CNF(message_p).nb_mme = mme_desc_p->s1ap_eNB_instance->s1ap_mme_associated_nb;
-      itti_send_msg_to_task(TASK_ENB_APP, mme_desc_p->s1ap_eNB_instance->instance, message_p);
-    }
-  }
-}
-
-void s1ap_eNB_handle_sctp_association_resp(instance_t instance, sctp_new_association_resp_t *sctp_new_association_resp)
-{
-  s1ap_eNB_instance_t *instance_p;
-  s1ap_eNB_mme_data_t *s1ap_mme_data_p;
-  DevAssert(sctp_new_association_resp != NULL);
-  instance_p = s1ap_eNB_get_instance(instance);
-  DevAssert(instance_p != NULL);
-  s1ap_mme_data_p = s1ap_eNB_get_MME(instance_p, -1,
-                                     sctp_new_association_resp->ulp_cnx_id);
-  DevAssert(s1ap_mme_data_p != NULL);
-
-  if (sctp_new_association_resp->sctp_state != SCTP_STATE_ESTABLISHED) {
-    S1AP_WARN("Received unsuccessful result for SCTP association (%u), instance %d, cnx_id %u\n",
-              sctp_new_association_resp->sctp_state,
-              instance,
-              sctp_new_association_resp->ulp_cnx_id);
-    s1ap_handle_s1_setup_message(s1ap_mme_data_p, sctp_new_association_resp->sctp_state == SCTP_STATE_SHUTDOWN);
-    return;
-  }
-
-  /* Update parameters */
-  s1ap_mme_data_p->assoc_id    = sctp_new_association_resp->assoc_id;
-  s1ap_mme_data_p->in_streams  = sctp_new_association_resp->in_streams;
-  s1ap_mme_data_p->out_streams = sctp_new_association_resp->out_streams;
-  /* Prepare new S1 Setup Request */
-  mme_test_s1_start_test(instance_p, s1ap_mme_data_p);
-}
-
-void s1ap_eNB_register_mme(s1ap_eNB_instance_t *instance_p,
-                           net_ip_address_t    *mme_ip_address,
-                           net_ip_address_t    *local_ip_addr)
-{
-  MessageDef                 *message_p                   = NULL;
-  sctp_new_association_req_t *sctp_new_association_req_p  = NULL;
-  s1ap_eNB_mme_data_t        *s1ap_mme_data_p             = NULL;
-  DevAssert(instance_p != NULL);
-  DevAssert(mme_ip_address != NULL);
-  message_p = itti_alloc_new_message(TASK_S1AP, SCTP_NEW_ASSOCIATION_REQ);
-  sctp_new_association_req_p = &message_p->ittiMsg.sctp_new_association_req;
-  sctp_new_association_req_p->port = S1AP_PORT_NUMBER;
-  sctp_new_association_req_p->ppid = S1AP_SCTP_PPID;
-  memcpy(&sctp_new_association_req_p->remote_address,
-         mme_ip_address,
-         sizeof(*mme_ip_address));
-  memcpy(&sctp_new_association_req_p->local_address,
-         local_ip_addr,
-         sizeof(*local_ip_addr));
-  /* Create new MME descriptor */
-  s1ap_mme_data_p = calloc(1, sizeof(*s1ap_mme_data_p));
-  DevAssert(s1ap_mme_data_p != NULL);
-  s1ap_mme_data_p->cnx_id                = s1ap_eNB_fetch_add_global_cnx_id();
-  sctp_new_association_req_p->ulp_cnx_id = s1ap_mme_data_p->cnx_id;
-  s1ap_mme_data_p->assoc_id          = -1;
-  s1ap_mme_data_p->s1ap_eNB_instance = instance_p;
-  STAILQ_INIT(&s1ap_mme_data_p->served_gummei);
-  /* Insert the new descriptor in list of known MME
-   * but not yet associated.
-   */
-  RB_INSERT(s1ap_mme_map, &instance_p->s1ap_mme_head, s1ap_mme_data_p);
-  s1ap_mme_data_p->state = S1AP_ENB_STATE_WAITING;
-  instance_p->s1ap_mme_nb ++;
-  instance_p->s1ap_mme_pending_nb ++;
-  itti_send_msg_to_task(TASK_SCTP, instance_p->instance, message_p);
-}
-
-
-
-void s1ap_eNB_handle_register_eNB(instance_t instance, s1ap_register_enb_req_t *s1ap_register_eNB)
-{
-  s1ap_eNB_instance_t *new_instance;
-  uint8_t index;
-  DevAssert(s1ap_register_eNB != NULL);
-  /* Look if the provided instance already exists */
-  new_instance = s1ap_eNB_get_instance(instance);
-
-  if (new_instance != NULL) {
-    /* Checks if it is a retry on the same eNB */
-    DevCheck(new_instance->eNB_id == s1ap_register_eNB->eNB_id, new_instance->eNB_id, s1ap_register_eNB->eNB_id, 0);
-    DevCheck(new_instance->cell_type == s1ap_register_eNB->cell_type, new_instance->cell_type, s1ap_register_eNB->cell_type, 0);
-    DevCheck(new_instance->tac == s1ap_register_eNB->tac, new_instance->tac, s1ap_register_eNB->tac, 0);
-    DevCheck(new_instance->mcc == s1ap_register_eNB->mcc, new_instance->mcc, s1ap_register_eNB->mcc, 0);
-    DevCheck(new_instance->mnc == s1ap_register_eNB->mnc, new_instance->mnc, s1ap_register_eNB->mnc, 0);
-    DevCheck(new_instance->mnc_digit_length == s1ap_register_eNB->mnc_digit_length, new_instance->mnc_digit_length, s1ap_register_eNB->mnc_digit_length, 0);
-    DevCheck(new_instance->default_drx == s1ap_register_eNB->default_drx, new_instance->default_drx, s1ap_register_eNB->default_drx, 0);
-  } else {
-    new_instance = calloc(1, sizeof(s1ap_eNB_instance_t));
-    DevAssert(new_instance != NULL);
-    RB_INIT(&new_instance->s1ap_ue_head);
-    RB_INIT(&new_instance->s1ap_mme_head);
-    /* Copy usefull parameters */
-    new_instance->instance         = instance;
-    new_instance->eNB_name         = s1ap_register_eNB->eNB_name;
-    new_instance->eNB_id           = s1ap_register_eNB->eNB_id;
-    new_instance->cell_type        = s1ap_register_eNB->cell_type;
-    new_instance->tac              = s1ap_register_eNB->tac;
-    new_instance->mcc              = s1ap_register_eNB->mcc;
-    new_instance->mnc              = s1ap_register_eNB->mnc;
-    new_instance->mnc_digit_length = s1ap_register_eNB->mnc_digit_length;
-    new_instance->default_drx      = s1ap_register_eNB->default_drx;
-    /* Add the new instance to the list of eNB (meaningfull in virtual mode) */
-    s1ap_eNB_insert_new_instance(new_instance);
-    S1AP_DEBUG("Registered new eNB[%d] and %s eNB id %u\n",
-               instance,
-               s1ap_register_eNB->cell_type == CELL_MACRO_ENB ? "macro" : "home",
-               s1ap_register_eNB->eNB_id);
-  }
-
-  DevCheck(s1ap_register_eNB->nb_mme <= S1AP_MAX_NB_MME_IP_ADDRESS,
-           S1AP_MAX_NB_MME_IP_ADDRESS, s1ap_register_eNB->nb_mme, 0);
-
-  /* Trying to connect to provided list of MME ip address */
-  for (index = 0; index < s1ap_register_eNB->nb_mme; index++) {
-    s1ap_eNB_register_mme(new_instance, &s1ap_register_eNB->mme_ip_address[index],
-                          &s1ap_register_eNB->enb_ip_address);
-  }
-}
-
-
-
-
-void *s1ap_eNB_task(void *arg)
-{
-  MessageDef *received_msg = NULL;
-  int         result;
-  S1AP_DEBUG("Starting S1AP layer\n");
-  s1ap_eNB_prepare_internal_data();
-  itti_mark_task_ready(TASK_S1AP);
-
-  while (1) {
-    itti_receive_msg(TASK_S1AP, &received_msg);
-
-    switch (ITTI_MSG_ID(received_msg)) {
-      case TERMINATE_MESSAGE:
-        itti_exit_task();
-        break;
-
-      case S1AP_REGISTER_ENB_REQ: {
-        /* Register a new eNB.
-         * in Virtual mode eNBs will be distinguished using the mod_id/
-         * Each eNB has to send an S1AP_REGISTER_ENB message with its
-         * own parameters.
-         */
-        s1ap_eNB_handle_register_eNB(ITTI_MSG_DESTINATION_INSTANCE(received_msg),
-                                     &S1AP_REGISTER_ENB_REQ(received_msg));
-      }
-      break;
-
-      case SCTP_NEW_ASSOCIATION_RESP: {
-        s1ap_eNB_handle_sctp_association_resp(ITTI_MSG_DESTINATION_INSTANCE(received_msg),
-                                              &received_msg->ittiMsg.sctp_new_association_resp);
-      }
-      break;
-
-      case SCTP_DATA_IND: {
-        s1ap_eNB_handle_sctp_data_ind(&received_msg->ittiMsg.sctp_data_ind);
-      }
-      break;
-
-      default:
-        S1AP_ERROR("Received unhandled message: %d:%s\n",
-                   ITTI_MSG_ID(received_msg), ITTI_MSG_NAME(received_msg));
-        break;
-    }
-
-    result = itti_free (ITTI_MSG_ORIGIN_ID(received_msg), received_msg);
-    AssertFatal (result == EXIT_SUCCESS, "Failed to free memory (%d)!\n", result);
-    received_msg = NULL;
-  }
-
-  return NULL;
-}
diff --git a/openair3/TEST/oaisim_mme_test_s1c_s1ap.h b/openair3/TEST/oaisim_mme_test_s1c_s1ap.h
deleted file mode 100644
index 4faec0e66e53085a80175a4383b233c29fec3694..0000000000000000000000000000000000000000
--- a/openair3/TEST/oaisim_mme_test_s1c_s1ap.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The OpenAirInterface Software Alliance licenses this file to You under
- * the OAI Public License, Version 1.1  (the "License"); you may not use this file
- * except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.openairinterface.org/?page_id=698
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *-------------------------------------------------------------------------------
- * For more information about the OpenAirInterface (OAI) Software Alliance:
- *      contact@openairinterface.org
- */
-
-#ifndef __TEST_OAISIM_MME_TEST_S1C_S1AP__H__
-#define __TEST_OAISIM_MME_TEST_S1C_S1AP__H__
-
-#define _GNU_SOURCE
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <stdint.h>
-#include <string.h>
-#include <sys/ioctl.h>
-#include <sys/types.h>
-#include <sys/mman.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <sched.h>
-#include <linux/sched.h>
-#include <signal.h>
-#include <execinfo.h>
-#include <getopt.h>
-#include <syscall.h>
-
-void s1ap_eNB_handle_sctp_data_ind(sctp_data_ind_t *sctp_data_ind);
-
-void s1ap_eNB_itti_send_sctp_data_req(instance_t instance, int32_t assoc_id, uint8_t *buffer,
-                                      uint32_t buffer_length, uint16_t stream);
-
-void s1ap_handle_s1_setup_message(s1ap_eNB_mme_data_t *mme_desc_p, int sctp_shutdown);
-
-void s1ap_eNB_handle_sctp_association_resp(instance_t instance, sctp_new_association_resp_t *sctp_new_association_resp);
-
-void s1ap_eNB_register_mme(s1ap_eNB_instance_t *instance_p,
-                                  net_ip_address_t    *mme_ip_address,
-                                  net_ip_address_t    *local_ip_addr,
-                                  uint16_t             in_streams,
-                                  uint16_t             out_streams);
-void s1ap_eNB_handle_register_eNB(instance_t instance, s1ap_register_enb_req_t *s1ap_register_eNB);
-void *s1ap_eNB_task(void *arg);
-
-#endif
diff --git a/openair3/TEST/oaisim_mme_test_s1c_scenario.c b/openair3/TEST/oaisim_mme_test_s1c_scenario.c
deleted file mode 100644
index 60d74866c8cfa3b4bb8fb26127b9c6a7bb8fdb8c..0000000000000000000000000000000000000000
--- a/openair3/TEST/oaisim_mme_test_s1c_scenario.c
+++ /dev/null
@@ -1,279 +0,0 @@
-/*
- * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The OpenAirInterface Software Alliance licenses this file to You under
- * the OAI Public License, Version 1.1  (the "License"); you may not use this file
- * except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.openairinterface.org/?page_id=698
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *-------------------------------------------------------------------------------
- * For more information about the OpenAirInterface (OAI) Software Alliance:
- *      contact@openairinterface.org
- */
-
-#include <stdarg.h>
-#include <string.h>
-#include <stdio.h>
-#include <ctype.h>
-
-#include "oaisim_mme_test_s1c_scenario.h"
-
-int        scenario_index         = 0;
-int        scenario_message_index = 0;
-int        debug                  = 0;
-int        error_count            = 0;
-int        break_on_error         = 0;
-
-
-extern s1ap_message_test_t s1ap_scenario1[];
-
-s1ap_message_test_t s1ap_scenarios[][] = {s1ap_scenario1};
-
-/* -1 means invalid */
-static const signed char hex_digits[0x100] = {
-  -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
-  -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
-  -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
-  0, 1, 2, 3, 4, 5, 6, 7, 8, 9,-1,-1,-1,-1,-1,-1,
-  -1,10,11,12,13,14,15,-1,-1,-1,-1,-1,-1,-1,-1,-1,
-  -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
-  -1,10,11,12,13,14,15,-1,-1,-1,-1,-1,-1,-1,-1,-1,
-  -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
-  -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
-  -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
-  -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
-  -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
-  -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
-  -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
-  -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
-  -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
-};
-
-//------------------------------------------------------------------------------
-void
-fail (const char *format, ...)
-//------------------------------------------------------------------------------
-{
-  char str[1024];
-  va_list arg_ptr;
-
-  va_start (arg_ptr, format);
-  vsnprintf ( str, sizeof(str), format, arg_ptr);
-  va_end (arg_ptr);
-  fputs(str, stderr);
-  error_count++;
-
-  if (break_on_error)
-    exit (1);
-}
-
-//------------------------------------------------------------------------------
-void
-success (const char *format, ...)
-//------------------------------------------------------------------------------
-{
-  char str[1024];
-  va_list arg_ptr;
-
-  va_start (arg_ptr, format);
-  vsnprintf ( str, sizeof(str), format, arg_ptr);
-  va_end (arg_ptr);
-  fputs(str, stderr);
-}
-
-//------------------------------------------------------------------------------
-void
-escapeprint (const char *str, size_t len)
-//------------------------------------------------------------------------------
-{
-  size_t i;
-
-  printf (" (length %d bytes):\n\t", (int) len);
-
-  for (i = 0; i < len; i++) {
-    if (((str[i] & 0xFF) >= 'A' && (str[i] & 0xFF) <= 'Z') ||
-        ((str[i] & 0xFF) >= 'a' && (str[i] & 0xFF) <= 'z') ||
-        ((str[i] & 0xFF) >= '0' && (str[i] & 0xFF) <= '9')
-        || (str[i] & 0xFF) == ' ' || (str[i] & 0xFF) == '.')
-      printf ("%c", (str[i] & 0xFF));
-    else
-      printf ("\\x%02X", (str[i] & 0xFF));
-
-    if ((i + 1) % 16 == 0 && (i + 1) < len)
-      printf ("'\n\t'");
-  }
-
-  printf ("\n");
-}
-
-//------------------------------------------------------------------------------
-void
-hexprint (const void *_str, size_t len)
-//------------------------------------------------------------------------------
-{
-  size_t i;
-  const char* str = _str;
-
-  printf ("\t;; ");
-
-  for (i = 0; i < len; i++) {
-    printf ("%02x ", (str[i] & 0xFF));
-
-    if ((i + 1) % 8 == 0)
-      printf (" ");
-
-    if ((i + 1) % 16 == 0 && i + 1 < len)
-      printf ("\n\t;; ");
-  }
-
-  printf ("\n");
-}
-
-//------------------------------------------------------------------------------
-void
-binprint (const void *_str, size_t len)
-//------------------------------------------------------------------------------
-{
-  size_t i;
-  const char* str = _str;
-
-  printf ("\t;; ");
-
-  for (i = 0; i < len; i++) {
-    printf ("%d%d%d%d%d%d%d%d ",
-            (str[i] & 0xFF) & 0x80 ? 1 : 0,
-            (str[i] & 0xFF) & 0x40 ? 1 : 0,
-            (str[i] & 0xFF) & 0x20 ? 1 : 0,
-            (str[i] & 0xFF) & 0x10 ? 1 : 0,
-            (str[i] & 0xFF) & 0x08 ? 1 : 0,
-            (str[i] & 0xFF) & 0x04 ? 1 : 0,
-            (str[i] & 0xFF) & 0x02 ? 1 : 0, (str[i] & 0xFF) & 0x01 ? 1 : 0);
-
-    if ((i + 1) % 3 == 0)
-      printf (" ");
-
-    if ((i + 1) % 6 == 0 && i + 1 < len)
-      printf ("\n\t;; ");
-  }
-
-  printf ("\n");
-}
-
-//------------------------------------------------------------------------------
-int
-compare_buffer(const uint8_t *buffer, const uint32_t length_buffer,
-               const uint8_t *pattern, const uint32_t length_pattern)
-//------------------------------------------------------------------------------
-{
-  int i;
-
-  if (length_buffer != length_pattern) {
-    printf("Length mismatch, expecting %d bytes, got %d bytes\n", length_pattern,
-           length_buffer);
-    hexprint(buffer, length_buffer);
-    return -1;
-  }
-
-  for (i = 0; i < length_buffer; i++) {
-    if (pattern[i] != buffer[i]) {
-      printf("Expecting:\n");
-      hexprint(pattern, length_pattern);
-      printf("Received:\n");
-      hexprint(buffer, length_buffer);
-      printf("Mismatch fount in byte %d\nExpecting 0x%02x, got 0x%02x\n",
-             i, pattern[i], buffer[i]);
-      return -1;
-    }
-  }
-
-  return 0;
-}
-
-//------------------------------------------------------------------------------
-unsigned
-decode_hex_length(const char *h)
-//------------------------------------------------------------------------------
-{
-  const unsigned char *hex = (const unsigned char *) h;
-  unsigned count;
-  unsigned i;
-
-  for (count = i = 0; hex[i]; i++) {
-    if (isspace(hex[i]))
-      continue;
-
-    if (hex_digits[hex[i]] < 0)
-      abort();
-
-    count++;
-  }
-
-  if (count % 2)
-    abort();
-
-  return count / 2;
-}
-
-//------------------------------------------------------------------------------
-int
-decode_hex(uint8_t *dst, const char *h)
-//------------------------------------------------------------------------------
-{
-  const unsigned char *hex = (const unsigned char *) h;
-  unsigned i = 0;
-
-  for (;;) {
-    int high, low;
-
-    while (*hex && isspace(*hex))
-      hex++;
-
-    if (!*hex)
-      return 1;
-
-    high = hex_digits[*hex++];
-
-    if (high < 0)
-      return 0;
-
-    while (*hex && isspace(*hex))
-      hex++;
-
-    if (!*hex)
-      return 0;
-
-    low = hex_digits[*hex++];
-
-    if (low < 0)
-      return 0;
-
-    dst[i++] = (high << 4) | low;
-  }
-}
-
-//------------------------------------------------------------------------------
-uint8_t *
-decode_hex_dup(const char *hex)
-//------------------------------------------------------------------------------
-{
-  uint8_t *p;
-  unsigned length = decode_hex_length(hex);
-
-  p = malloc(length * sizeof(uint8_t));
-
-  if (decode_hex(p, hex))
-    return p;
-  else {
-    free(p);
-    return NULL;
-  }
-}
-
diff --git a/openair3/TEST/oaisim_mme_test_s1c_scenario.h b/openair3/TEST/oaisim_mme_test_s1c_scenario.h
deleted file mode 100644
index 8b9a8dd54a14fc74b81f4fa8ba8aecbbaba51ac2..0000000000000000000000000000000000000000
--- a/openair3/TEST/oaisim_mme_test_s1c_scenario.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The OpenAirInterface Software Alliance licenses this file to You under
- * the OAI Public License, Version 1.1  (the "License"); you may not use this file
- * except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.openairinterface.org/?page_id=698
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *-------------------------------------------------------------------------------
- * For more information about the OpenAirInterface (OAI) Software Alliance:
- *      contact@openairinterface.org
- */
-
-#ifndef __TEST_OAISIM_MME_TEST_S1C_SCENARIO__H__
-#define __TEST_OAISIM_MME_TEST_S1C_SCENARIO__H__
-
-#include <stdlib.h>
-#include <stdint.h>
-
-#define MME_TEST_S1_MAX_BUF_LENGTH (1024)
-#define MME_TEST_S1_MAX_BYTES_TEST (32)
-
-typedef enum entity_s{
-  MME,
-  ENB
-} entity_t;
-
-typedef struct s1ap_message_test_s{
-  char    *procedure_name;
-  uint8_t  buffer[MME_TEST_S1_MAX_BUF_LENGTH];
-  uint16_t dont_check[MME_TEST_S1_MAX_BYTES_TEST]; // bytes index test that can be omitted
-  uint32_t buf_len;
-  entity_t originating;
-  uint16_t sctp_stream_id;
-  uint32_t assoc_id;
-} s1ap_message_test_t;
-
-void     fail (const char *format, ...);
-void     success (const char *format, ...);
-void     escapeprint (const char *str, size_t len);
-void     hexprint (const void *_str, size_t len);
-void     binprint (const void *_str, size_t len);
-int      compare_buffer(const uint8_t *buffer, const uint32_t length_buffer, const uint8_t *pattern, const uint32_t length_pattern);
-unsigned decode_hex_length(const char *h);
-int      decode_hex(uint8_t *dst, const char *h);
-uint8_t *decode_hex_dup(const char *hex);
-
-#endif
diff --git a/openair3/TEST/oaisim_mme_test_s1c_scenario1.c b/openair3/TEST/oaisim_mme_test_s1c_scenario1.c
deleted file mode 100644
index 87a63b876a3d2e774b6418b88dfc09f3f6c9e312..0000000000000000000000000000000000000000
--- a/openair3/TEST/oaisim_mme_test_s1c_scenario1.c
+++ /dev/null
@@ -1,181 +0,0 @@
-/*
- * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The OpenAirInterface Software Alliance licenses this file to You under
- * the OAI Public License, Version 1.1  (the "License"); you may not use this file
- * except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.openairinterface.org/?page_id=698
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *-------------------------------------------------------------------------------
- * For more information about the OpenAirInterface (OAI) Software Alliance:
- *      contact@openairinterface.org
- */
-
-#include <stdlib.h>
-#include "oaisim_mme_test_s1c_scenario.h"
-
-
-// Description succesfull attach of UE, release UE.
-
-s1ap_message_test_t s1ap_scenario1[] = {
-  {
-    .procedure_name = "id-initialUEMessage",
-    .buffer = {
-    		0x00, 0x0C,
-    		0x00, 0x5C, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, 0x04, 0x80, 0x06, 0x69, 0x2D, 0x00, 0x1A, 0x00,
-    		0x32, 0x31, 0x07, 0x41, 0x71, 0x08, 0x29, 0x80, 0x39, 0x00, 0x00, 0x00, 0x00, 0x10, 0x02, 0xE0,
-    		0xE0, 0x00, 0x20, 0x02, 0x01, 0xD0, 0x11, 0x27, 0x1A, 0x80, 0x80, 0x21, 0x10, 0x01, 0x00, 0x00,
-    		0x10, 0x81, 0x06, 0x00, 0x00, 0x00, 0x00, 0x83, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00,
-    		0x00, 0x0A, 0x00, 0x00, 0x43, 0x00, 0x06, 0x00, 0x02, 0xF8, 0x39, 0x00, 0x01, 0x00, 0x64, 0x40,
-    		0x08, 0x00, 0x02, 0xF8, 0x39, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x86, 0x40, 0x01, 0x30
-    },
-    .dont_check = {
-    		-1
-    },
-    .buf_len = 96,
-    .sctp_stream_id = 1,
-    .originating = ENB,
-  },
-  {
-    .procedure_name = "id-downlinkNASTransport, Authentication request",
-    .buffer = {
-    		0x00, 0x0B,
-    		0x00, 0x3D, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x05, 0xC0, 0x80, 0x00, 0x15, 0x20, 0x00, 0x08,
-    		0x00, 0x04, 0x80, 0x06, 0x69, 0x2D, 0x00, 0x1A, 0x00, 0x25, 0x24, 0x07, 0x52, 0x00, 0xD3, 0xB5,
-    		0xF0, 0x89, 0x68, 0x02, 0x66, 0x5A, 0x08, 0xE6, 0x51, 0xC7, 0x29, 0x6B, 0x4D, 0xA0, 0x10, 0xDD,
-    		0x04, 0x53, 0xC8, 0x3F, 0x94, 0x80, 0x00, 0x03, 0xAF, 0x2F, 0x49, 0xF3, 0xC8, 0x38, 0x90, 0x00,
-    		0x00, 0x00
-    },
-    .dont_check = {
-    		-1
-    },
-    .buf_len = 65,
-    .sctp_stream_id = 1,
-    .originating = MME,
-  },
-  {
-    .procedure_name = "id-uplinkNASTransport, 0xAuthentication response",
-    .buffer = {
-    		0x00, 0x0d,
-    		0x40, 0x3a, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0xc0, 0x80, 0x00, 0x15, 0x20, 0x00, 0x08,
-    		0x00, 0x04, 0x80, 0x06, 0x69, 0x2d, 0x00, 0x1a, 0x00, 0x0C, 0x0b, 0x07, 0x53, 0x08, 0x11, 0x82,
-    		0x98, 0x98, 0x3b, 0xca, 0xF2, 0x97, 0x00, 0x64, 0x40, 0x08, 0x00, 0x02, 0xF8, 0x39, 0x00, 0x00,
-    		0xe0, 0x00, 0x00, 0x43, 0x40, 0x06, 0x00, 0x02, 0xF8, 0x39, 0x00, 0x01, 0x00, 0x00
-    },
-    .dont_check = {
-    		-1
-    },
-    .buf_len = 62,
-    .sctp_stream_id = 1,
-    .originating = ENB,
-  },
-  {
-    .procedure_name = "id-downlinkNASTransport, Security mode command",
-    .buffer = {
-    		0x00, 0x0b,
-    		0x00, 0x26, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x05, 0xc0, 0x80, 0x00, 0x15, 0x20, 0x00, 0x08,
-    		0x00, 0x04, 0x80, 0x06, 0x69, 0x2d, 0x00, 0x1a, 0x00, 0x0e, 0x0d, 0x37, 0xFC, 0xc1, 0xda, 0xd9,
-    		0x00, 0x07, 0x5d, 0x02, 0x00, 0x02, 0xe0, 0xe0, 0x00, 0x00
-    },
-    .dont_check = {
-    		-1
-    },
-    .buf_len = 42,
-    .sctp_stream_id = 1,
-    .originating = MME,
-  },
-  {
-    .procedure_name = "id-uplinkNASTransport, Security mode complete",
-    .buffer = {
-    		0x00, 0x0d,
-    		0x40, 0x37, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0xc0, 0x80, 0x00, 0x15, 0x20, 0x00, 0x08,
-    		0x00, 0x04, 0x80, 0x06, 0x69, 0x2d, 0x00, 0x1a, 0x00, 0x09, 0x08, 0x47, 0x1d, 0xd0, 0xbb, 0xad,
-    		0x00, 0x07, 0x5e, 0x00, 0x64, 0x40, 0x08, 0x00, 0x02, 0xF8, 0x39, 0x00, 0x00, 0xe0, 0x00, 0x00,
-    		0x43, 0x40, 0x06, 0x00, 0x02, 0xF8, 0x39, 0x00, 0x01, 0x00
-    },
-    .dont_check = {
-    		-1
-    },
-    .buf_len = 59,
-    .sctp_stream_id = 1,
-    .originating = ENB,
-  },
-  {
-    .procedure_name = "id-InitialContextSetup, InitialContextSetupRequest , Attach accept, Activate default EPS bearer context request",
-    .buffer = {
-    		0x00, 0x09,
-    		0x00, 0x80, 0xba, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x05, 0xc0, 0x80, 0x00, 0x15, 0x20, 0x00,
-    		0x08, 0x00, 0x04, 0x80, 0x06, 0x69, 0x2d, 0x00, 0x42, 0x00, 0x0a, 0x18, 0x05, 0xF5, 0xe1, 0x00,
-    		0x60, 0x02, 0xFa, 0xF0, 0x80, 0x00, 0x18, 0x00, 0x67, 0x00, 0x00, 0x34, 0x00, 0x62, 0x45, 0x00,
-    		0x09, 0x04, 0x0f, 0x80, 0x7f, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x53, 0x27, 0x8b, 0xe6,
-    		0x60, 0xb5, 0x01, 0x07, 0x42, 0x01, 0x4a, 0x06, 0x20, 0x02, 0xF8, 0x39, 0x00, 0x01, 0x00, 0x31,
-    		0x52, 0x01, 0xc1, 0x01, 0x09, 0x09, 0x03, 0x6f, 0x61, 0x69, 0x04, 0x69, 0x70, 0x76, 0x34, 0x05,
-    		0x01, 0xc0, 0xbb, 0x00, 0x02, 0x5e, 0x04, 0xFe, 0xFe, 0xde, 0x9e, 0x27, 0x14, 0x80, 0x80, 0x21,
-    		0x10, 0x03, 0x00, 0x00, 0x10, 0x81, 0x06, 0xc0, 0xa8, 0x0C, 0x64, 0x83, 0x06, 0xc0, 0xa8, 0x6a,
-    		0x0C, 0x50, 0x0b, 0xF6, 0x02, 0xF8, 0x39, 0x80, 0x00, 0x01, 0x78, 0x00, 0x0C, 0x20, 0x17, 0x2C,
-    		0x00, 0x6b, 0x00, 0x05, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x49, 0x00, 0x20, 0xFa, 0x59, 0x15,
-    		0x4e, 0x32, 0x95, 0x04, 0x2d, 0x35, 0xa4, 0x47, 0xc3, 0x80, 0xab, 0x63, 0xd8, 0xe6, 0x91, 0x83,
-    		0x6C, 0x9a, 0xF0, 0xed, 0x85, 0x38, 0xa8, 0x27, 0x41, 0x6b, 0x2b, 0x64, 0x86, 0x00
-    },
-    .dont_check = {
-    		-1
-    },
-    .buf_len = 191,
-    .sctp_stream_id = 1,
-    .originating = MME,
-  },
-  {
-    .procedure_name = "id-UECapabilityInfoIndication",
-    .buffer = {
-    		0x00, 0x16,
-    		0x40, 0x2C, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x05, 0xc0, 0x80, 0x00, 0x15, 0x20, 0x00, 0x08,
-    		0x00, 0x04, 0x80, 0x06, 0x69, 0x2d, 0x00, 0x4a, 0x40, 0x14, 0x13, 0x81, 0x20, 0x00, 0x03, 0x00,
-    		0x10, 0x60, 0xe0, 0xc1, 0xF8, 0x3f, 0x07, 0xe0 ,0xfd, 0x78, 0x37, 0x62, 0x00, 0x00
-    },
-    .dont_check = {
-    		-1
-    },
-    .buf_len = 48,
-    .originating = ENB,
-  },
-  {
-    .procedure_name = "id-InitialContextSetup, InitialContextSetupResponse ",
-    .buffer = {
-    		0x20, 0x09,
-    		0x00, 0x27, 0x00, 0x00, 0x03, 0x00, 0x00, 0x40, 0x05, 0xc0, 0x80, 0x00, 0x15, 0x20, 0x00, 0x08,
-    		0x40, 0x04, 0x80, 0x06, 0x69, 0x2d, 0x00, 0x33, 0x40, 0x0f, 0x00, 0x00, 0x32, 0x40, 0x0a, 0x0a,
-    		0x1f, 0x7f, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01
-    },
-    .dont_check = {
-    		-1
-    },
-    .buf_len = 64,
-    .sctp_stream_id = 1,
-    .originating = ENB,
-  },
-  {
-    .procedure_name = "id-uplinkNASTransport, Attach complete, Activate default EPS bearer context accept",
-    .buffer = {
-
-    		0x00, 0x0d,
-    		0x05, 0x00, 0x00, 0x00, 0x05, 0xc0, 0x80, 0x00, 0x15, 0x20, 0x00, 0x08, 0x00, 0x04, 0x80, 0x06,
-    		0x69, 0x2d, 0x00, 0x1a, 0x00, 0x0e, 0x0d, 0x27, 0xc7, 0x8f, 0x5a, 0xd2, 0x01, 0x07, 0x43, 0x00,
-    		0x03, 0x52, 0x00, 0xc2, 0x00, 0x64, 0x40, 0x08, 0x00, 0x02, 0xF8, 0x39, 0x00, 0x00, 0xe0, 0x00,
-    		0x00, 0x43, 0x40, 0x06, 0x00, 0x02, 0xF8, 0x39, 0x00, 0x01
-    },
-    .dont_check = {
-    		-1
-    },
-    .buf_len = 64,
-    .sctp_stream_id = 1,
-    .originating = ENB,
-  }
-};
diff --git a/targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.24PRB.usrpb210.conf b/targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.24PRB.usrpb210.conf
new file mode 100644
index 0000000000000000000000000000000000000000..bd3076a014cc9d75098288ca4c0cca05cb8b0d29
--- /dev/null
+++ b/targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.24PRB.usrpb210.conf
@@ -0,0 +1,301 @@
+Active_gNBs = ( "gNB-OAI");
+# Asn1_verbosity, choice in: none, info, annoying
+Asn1_verbosity = "none";
+
+gNBs =
+(
+ {
+    ////////// Identification parameters:
+    gNB_ID    =  0xe00;
+    gNB_name  =  "gNB-OAI";
+
+    // Tracking area code, 0x0000 and 0xfffe are reserved values
+    tracking_area_code  =  1;
+    plmn_list = ({
+                  mcc = 208;
+                  mnc = 99;
+                  mnc_length = 2;
+                  snssaiList = (
+                    {
+                      sst = 1;
+                      sd  = 0x1; // 0 false, else true
+                    },
+                    {
+                      sst = 1;
+                      sd  = 0x112233; // 0 false, else true
+                    }
+                  );
+
+                  });
+
+    nr_cellid = 12345678L;
+
+    ////////// Physical parameters:
+
+    ssb_SubcarrierOffset                                      = 0;
+    pdsch_AntennaPorts                                        = 1;
+    pusch_AntennaPorts                                        = 1;
+    sib1_tda                                                  = 15;
+    min_rxtxtime = 6;
+
+     pdcch_ConfigSIB1 = (
+      {
+        controlResourceSetZero = 2;
+        searchSpaceZero = 0;
+      }
+      );
+
+    servingCellConfigCommon = (
+    {
+ #spCellConfigCommon
+
+      physCellId                                                    = 0;
+
+#  downlinkConfigCommon
+    #frequencyInfoDL
+      # this is 3600 MHz + 12 PRBs@30kHz SCS (same as initial BWP)
+      absoluteFrequencySSB                                             = 640288;
+      dl_frequencyBand                                                 = 78;
+      # this is 3600 MHz
+      dl_absoluteFrequencyPointA                                       = 640000;
+      #scs-SpecificCarrierList
+        dl_offstToCarrier                                              = 0;
+# subcarrierSpacing
+# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
+        dl_subcarrierSpacing                                           = 1;
+        dl_carrierBandwidth                                            = 24;
+     #initialDownlinkBWP
+      #genericParameters
+        # this is RBstart=27,L=48 (275*(L-1))+RBstart
+        initialDLBWPlocationAndBandwidth                               = 6325;
+# subcarrierSpacing
+# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
+        initialDLBWPsubcarrierSpacing                                   = 1;
+      #pdcch-ConfigCommon
+        initialDLBWPcontrolResourceSetZero                              = 2;
+        initialDLBWPsearchSpaceZero                                     = 0;
+
+  #uplinkConfigCommon
+     #frequencyInfoUL
+      ul_frequencyBand                                              = 78;
+      #scs-SpecificCarrierList
+      ul_offstToCarrier                                             = 0;
+# subcarrierSpacing
+# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
+      ul_subcarrierSpacing                                          = 1;
+      ul_carrierBandwidth                                           = 24;
+      pMax                                                          = 20;
+     #initialUplinkBWP
+      #genericParameters
+        initialULBWPlocationAndBandwidth                            = 6325;
+# subcarrierSpacing
+# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
+        initialULBWPsubcarrierSpacing                               = 1;
+      #rach-ConfigCommon
+        #rach-ConfigGeneric
+          prach_ConfigurationIndex                                  = 98;
+#prach_msg1_FDM
+#0 = one, 1=two, 2=four, 3=eight
+          prach_msg1_FDM                                            = 0;
+          prach_msg1_FrequencyStart                                 = 0;
+          zeroCorrelationZoneConfig                                 = 13;
+          preambleReceivedTargetPower                               = -96;
+#preamblTransMax (0...10) = (3,4,5,6,7,8,10,20,50,100,200)
+          preambleTransMax                                          = 6;
+#powerRampingStep
+# 0=dB0,1=dB2,2=dB4,3=dB6
+        powerRampingStep                                            = 1;
+#ra_ReponseWindow
+#1,2,4,8,10,20,40,80
+        ra_ResponseWindow                                           = 4;
+#ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR
+#1=oneeighth,2=onefourth,3=half,4=one,5=two,6=four,7=eight,8=sixteen
+        ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR                = 4;
+#oneHalf (0..15) 4,8,12,16,...60,64
+        ssb_perRACH_OccasionAndCB_PreamblesPerSSB                   = 14;
+#ra_ContentionResolutionTimer
+#(0..7) 8,16,24,32,40,48,56,64
+        ra_ContentionResolutionTimer                                = 7;
+        rsrp_ThresholdSSB                                           = 19;
+#prach-RootSequenceIndex_PR
+#1 = 839, 2 = 139
+        prach_RootSequenceIndex_PR                                  = 2;
+        prach_RootSequenceIndex                                     = 1;
+        # SCS for msg1, can only be 15 for 30 kHz < 6 GHz, takes precendence over the one derived from prach-ConfigIndex
+        #
+        msg1_SubcarrierSpacing                                      = 1,
+# restrictedSetConfig
+# 0=unrestricted, 1=restricted type A, 2=restricted type B
+        restrictedSetConfig                                         = 0,
+
+        msg3_DeltaPreamble                                          = 1;
+        p0_NominalWithGrant                                         =-90;
+
+# pucch-ConfigCommon setup :
+# pucchGroupHopping
+# 0 = neither, 1= group hopping, 2=sequence hopping
+        pucchGroupHopping                                           = 0;
+        hoppingId                                                   = 40;
+        p0_nominal                                                  = -90;
+# ssb_PositionsInBurs_BitmapPR
+# 1=short, 2=medium, 3=long
+      ssb_PositionsInBurst_PR                                       = 2;
+      ssb_PositionsInBurst_Bitmap                                   = 1;
+
+# ssb_periodicityServingCell
+# 0 = ms5, 1=ms10, 2=ms20, 3=ms40, 4=ms80, 5=ms160, 6=spare2, 7=spare1
+      ssb_periodicityServingCell                                    = 2;
+
+# dmrs_TypeA_position
+# 0 = pos2, 1 = pos3
+      dmrs_TypeA_Position                                           = 0;
+
+# subcarrierSpacing
+# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
+      subcarrierSpacing                                             = 1;
+
+
+  #tdd-UL-DL-ConfigurationCommon
+# subcarrierSpacing
+# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
+      referenceSubcarrierSpacing                                    = 1;
+      # pattern1
+      # dl_UL_TransmissionPeriodicity
+      # 0=ms0p5, 1=ms0p625, 2=ms1, 3=ms1p25, 4=ms2, 5=ms2p5, 6=ms5, 7=ms10
+      dl_UL_TransmissionPeriodicity                                 = 6;
+      nrofDownlinkSlots                                             = 7;
+      nrofDownlinkSymbols                                           = 6;
+      nrofUplinkSlots                                               = 2;
+      nrofUplinkSymbols                                             = 4;
+
+      ssPBCH_BlockPower                                             = -25;
+  }
+
+  );
+
+
+    # ------- SCTP definitions
+    SCTP :
+    {
+        # Number of streams to use in input/output
+        SCTP_INSTREAMS  = 2;
+        SCTP_OUTSTREAMS = 2;
+    };
+
+
+    ////////// AMF parameters:
+    amf_ip_address      = ( { ipv4       = "192.168.70.132";
+                              ipv6       = "192:168:30::17";
+                              active     = "yes";
+                              preference = "ipv4";
+                            }
+                          );
+
+
+    NETWORK_INTERFACES :
+    {
+        GNB_INTERFACE_NAME_FOR_NG_AMF            = "demo-oai";
+        GNB_IPV4_ADDRESS_FOR_NG_AMF              = "192.168.70.129/24";
+        GNB_INTERFACE_NAME_FOR_NGU               = "demo-oai";
+        GNB_IPV4_ADDRESS_FOR_NGU                 = "192.168.70.129/24";
+        GNB_PORT_FOR_S1U                         = 2152; # Spec 2152
+    };
+
+  }
+);
+
+MACRLCs = (
+{
+  num_cc                      = 1;
+  tr_s_preference             = "local_L1";
+  tr_n_preference             = "local_RRC";
+  pusch_TargetSNRx10          = 150;
+  pucch_TargetSNRx10          = 200;
+  ulsch_max_frame_inactivity  = 1;
+}
+);
+
+L1s = (
+{
+  num_cc = 1;
+  tr_n_preference       = "local_mac";
+  pusch_proc_threads    = 8;
+  prach_dtx_threshold   = 120;
+  pucch0_dtx_threshold  = 150;
+  ofdm_offset_divisor   = 8; #set this to UINT_MAX for offset 0
+}
+);
+
+RUs = (
+{
+  local_rf       = "yes"
+  nb_tx          = 1
+  nb_rx          = 1
+  att_tx         = 0
+  att_rx         = 0;
+  bands          = [78];
+  max_pdschReferenceSignalPower = -27;
+  max_rxgain                    = 114;
+  sf_extension                  = 0;
+  eNB_instances  = [0];
+  #beamforming 1x4 matrix:
+  bf_weights = [0x00007fff, 0x0000, 0x0000, 0x0000];
+  clock_src = "internal";
+}
+);
+
+THREAD_STRUCT = (
+{
+  #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
+  parallel_config    = "PARALLEL_SINGLE_THREAD";
+  #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
+  worker_config      = "WORKER_ENABLE";
+}
+);
+
+rfsimulator :
+{
+  serveraddr = "server";
+  serverport = "4043";
+  options = (); #("saviq"); or/and "chanmod"
+  modelname = "AWGN";
+  IQfile = "/tmp/rfsimulator.iqs";
+};
+
+security = {
+  # preferred ciphering algorithms
+  # the first one of the list that an UE supports in chosen
+  # valid values: nea0, nea1, nea2, nea3
+  ciphering_algorithms = ( "nea0" );
+
+  # preferred integrity algorithms
+  # the first one of the list that an UE supports in chosen
+  # valid values: nia0, nia1, nia2, nia3
+  integrity_algorithms = ( "nia2", "nia0" );
+
+  # setting 'drb_ciphering' to "no" disables ciphering for DRBs, no matter
+  # what 'ciphering_algorithms' configures; same thing for 'drb_integrity'
+  drb_ciphering = "yes";
+  drb_integrity = "no";
+};
+
+log_config :
+{
+  global_log_level                      ="info";
+  global_log_verbosity                  ="medium";
+  hw_log_level                          ="info";
+  hw_log_verbosity                      ="medium";
+  phy_log_level                         ="info";
+  phy_log_verbosity                     ="medium";
+  mac_log_level                         ="info";
+  mac_log_verbosity                     ="high";
+  rlc_log_level                         ="info";
+  rlc_log_verbosity                     ="medium";
+  pdcp_log_level                        ="info";
+  pdcp_log_verbosity                    ="medium";
+  rrc_log_level                         ="info";
+  rrc_log_verbosity                     ="medium";
+  ngap_log_level                        ="debug";
+  ngap_log_verbosity                    ="medium";
+};
+
diff --git a/targets/RT/USER/lte-hwlat.c b/targets/RT/USER/lte-hwlat.c
deleted file mode 100755
index 20482adf8719fda662c6d0672787dec0252c188d..0000000000000000000000000000000000000000
--- a/targets/RT/USER/lte-hwlat.c
+++ /dev/null
@@ -1,944 +0,0 @@
-/*
- * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The OpenAirInterface Software Alliance licenses this file to You under
- * the OAI Public License, Version 1.1  (the "License"); you may not use this file
- * except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.openairinterface.org/?page_id=698
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *-------------------------------------------------------------------------------
- * For more information about the OpenAirInterface (OAI) Software Alliance:
- *      contact@openairinterface.org
- */
-
-#define _GNU_SOURCE
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <string.h>
-#include <sys/ioctl.h>
-#include <sys/types.h>
-#include <sys/mman.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <sched.h>
-#include <linux/sched.h>
-#include <signal.h>
-#include <execinfo.h>
-#include <getopt.h>
-#include <syscall.h>
-#include <sys/sysinfo.h>
-
-#include "assertions.h"
-#include "PHY/types.h"
-
-#include "PHY/defs.h"
-
-#include <sys/time.h>
-#define GET_TIME_INIT(num) struct timeval _timers[num]
-#define GET_TIME_VAL(num) gettimeofday(&_timers[num], NULL)
-#define TIME_VAL_TO_MS(num) (((double)_timers[num].tv_sec*1000.0) + ((double)_timers[num].tv_usec/1000.0))
-
-#undef MALLOC //there are two conflicting definitions, so we better make sure we don't use it at all
-//#undef FRAME_LENGTH_COMPLEX_SAMPLES //there are two conflicting definitions, so we better make sure we don't use it at all
-
-#include "../../ARCH/COMMON/common_lib.h"
-
-#include "PHY/extern.h"
-#include "SCHED/extern.h"
-#include "LAYER2/MAC/extern.h"
-#include "LAYER2/MAC/proto.h"
-
-#define 		SYRIQ_CHANNEL_TESTER  0
-#define 		SYRIQ_CHANNEL_TESTER2 0
-#define     SYRIQ_CHANNEL_DATA1   1
-
-volatile int             oai_exit = 0;
-
-openair0_config_t openair0_cfg[MAX_CARDS];
-
-#if 0
-#define NB_ANTENNAS_RX 4
-
-#define DevAssert(cOND)                     _Assert_(cOND, _Assert_Exit_, "")
-#define malloc16(x) memalign(16,x)
-
-#ifdef 0
-static inline void* malloc16_clear( size_t size )
-{
-#ifdef __AVX2__
-  void* ptr = memalign(32, size);
-#else
-  void* ptr = memalign(16, size);
-#endif
-  if(ptr)
-    memset( ptr, 0, size );
-  return ptr;
-}
-#endif
-
-#endif
-
-typedef struct latency_stat {
-    uint64_t    counter;
-
-    uint64_t    stat250;
-    uint64_t    stat500;
-    uint64_t    stat600;
-    uint64_t    stat700;
-    uint64_t    stat800;
-
-    uint64_t    stat1300;
-    uint64_t    stat1500;
-    uint64_t    stat2000;
-    uint64_t    stat2500;
-    uint64_t    stat3000;
-
-    uint64_t    stat880;
-    uint64_t    stat960;
-    uint64_t    stat1040;
-    uint64_t    stat1120;
-    uint64_t    stat1200;
-} latency_stat_t;
-
-
-typedef struct	timing_stats {
-	char			*name;
-	double			min;
-	double			max;
-	double			total;
-	unsigned int	count;
-} timing_stats_t;
-
-
-//static struct timespec	get_timespec_diff(
-//							struct timespec *start,
-//							struct timespec *stop )
-//{
-//	struct timespec		result;
-//
-//	if ( ( stop->tv_nsec - start->tv_nsec ) < 0 ) {
-//		result.tv_sec = stop->tv_sec - start->tv_sec - 1;
-//		result.tv_nsec = stop->tv_nsec - start->tv_nsec + 1000000000;
-//	}
-//	else {
-//		result.tv_sec = stop->tv_sec - start->tv_sec;
-//		result.tv_nsec = stop->tv_nsec - start->tv_nsec;
-//	}
-//
-//	return result;
-//}
-
-
-//static void 			measure_time (
-//							openair0_device	*rf_device,
-//							struct timespec *start,
-//							struct timespec *stop,
-//							timing_stats_t *stats,
-//							boolean_t START,
-//							uint8_t PRINT_INTERVAL )
-//{
-//	if ( START ) {
-//		clock_gettime( CLOCK_MONOTONIC, start );
-//	}
-//	else {
-//		clock_gettime( CLOCK_MONOTONIC, stop );
-//
-//		struct timespec		diff;
-//		double				current		= 0;
-////		boolean_t			show_stats	= false;
-//
-//		diff 	= get_timespec_diff( start, stop );
-//		current = (double)diff.tv_sec * 1000000 + (double)diff.tv_nsec / 1000;
-//
-//		if ( current > stats->max ) {
-//			stats->max = current;
-////			show_stats = true;
-//		}
-//		if ( stats->min == 0 || current < stats->min ) {
-//			stats->min = current;
-////			show_stats = true;
-//		}
-//		stats->total += current;
-//
-////		if ( show_stats ) {
-////			rf_device.trx_get_stats_func( &rf_device );
-////		}
-//
-////		if ( stats->count % PRINT_INTERVAL == 0 ) {
-////			double			avg	= stats->total / ( stats->count + 1 );
-////			printf( "[%s][%d] Current : %.2lf µs, Min : %.2lf µs, Max : %.2lf µs, Avg : %.2lf µs\n",
-////					stats->count, stats->name, current, stats->min, stats->max, avg );
-////		}
-//
-//		stats->count++;
-//	}
-//}
-int32_t **rxdata;
-int32_t **txdata;
-
-int setup_ue_buffers(PHY_VARS_UE **phy_vars_ue, openair0_config_t *openair0_cfg);
-
-static inline void saif_meas(unsigned int frame_rx, unsigned int subframe_rx) {
-    static latency_stat_t __thread latency_stat;
-    static struct timespec __thread last= {0};
-    struct timespec now;
-    clock_gettime(CLOCK_MONOTONIC_RAW, &now);
-    if ( last.tv_sec )  {
-        uint64_t diffTime =  ((uint64_t)now.tv_sec *1000 *1000 *1000 + now.tv_nsec) -
-                             ((uint64_t)last.tv_sec *1000 *1000 *1000 + last.tv_nsec);
-        diffTime/=1000;
-        latency_stat.counter++;
-
-        if ( diffTime <= 800 ) {
-          if (diffTime  < 250 )
-            latency_stat.stat250++;
-          else if (diffTime  < 500 )
-            latency_stat.stat500++;
-          else if (diffTime  < 600 )
-            latency_stat.stat600++;
-          else if (diffTime  < 700 )
-            latency_stat.stat700++;
-          else
-            latency_stat.stat800++;
-        }
-        else if ( diffTime > 1200 ) {
-            if (diffTime  < 1500 )
-                latency_stat.stat1300++;
-            else if ( diffTime < 2000 )
-                latency_stat.stat1500++;
-            else if ( diffTime < 2500 )
-                latency_stat.stat2000++;
-            else if ( diffTime < 3000 )
-                latency_stat.stat2500++;
-            else
-                latency_stat.stat3000++;
-        }
-        else
-          if (diffTime  <= 880 )
-            latency_stat.stat880++;
-          else if (diffTime  <= 960 )
-            latency_stat.stat960++;
-          else if (diffTime  <= 1040 )
-            latency_stat.stat1040++;
-          else if (diffTime  < 1120 )
-            latency_stat.stat1120++;
-          else
-            latency_stat.stat1200++;
-
-
-        if ( (diffTime>=1500) || ( !(frame_rx%1024) && subframe_rx == 0 ) ) {
-            time_t current=time(NULL);
-            printf("\n");
-            printf("%.2f Period stats cnt=%7.7ld    0.. 250=%7.7ld  250.. 500=%7.7ld  500.. 600=%7.7ld  600.. 700=%7.7ld  700.. 800=%7.7ld - (frame_rx=%u) - %s",
-                  now.tv_sec+(double)now.tv_nsec/1e9,
-                  latency_stat.counter,
-                  latency_stat.stat250, latency_stat.stat500,
-                  latency_stat.stat600, latency_stat.stat700,
-                  latency_stat.stat800,
-                  frame_rx,
-                  ctime(&current));
-            printf("%.2f Period stats cnt=%7.7ld  800.. 880=%7.7ld  880.. 960=%7.7ld  960..1040=%7.7ld 1040..1120=%7.7ld 1120..1200=%7.7ld - (frame_rx=%u) - %s",
-                  now.tv_sec+(double)now.tv_nsec/1e9,
-                  latency_stat.counter,
-                  latency_stat.stat880, latency_stat.stat960,
-                  latency_stat.stat1040, latency_stat.stat1120,
-                  latency_stat.stat1200,
-                  frame_rx,
-                  ctime(&current));
-            printf("%.2f Period stats cnt=%7.7ld 1200..1300=%7.7ld 1300..1500=%7.7ld 1500..2000=%7.7ld 2000..2500=%7.7ld      >3000=%7.7ld - (frame_rx=%u) - %s",
-                  now.tv_sec+(double)now.tv_nsec/1e9,
-                  latency_stat.counter,
-                  latency_stat.stat1300, latency_stat.stat1500,
-                  latency_stat.stat2000, latency_stat.stat2500,
-                  latency_stat.stat3000,
-                  frame_rx,
-                  ctime(&current));
-            fflush(stdout);
-        }
-    }
-    last=now;
-}
-/* End of Changed by SYRTEM */
-
-void exit_fun(const char* s)
-{
-
-  if (s != NULL) {
-    printf("%s %s() Exiting OAI softmodem: %s\n",__FILE__, __FUNCTION__, s);
-  }
-
-  oai_exit = 1;
- 
-}
-
-
-void init_thread(int sched_runtime, int sched_deadline, int sched_fifo, char * name) {
-
-#ifdef DEADLINE_SCHEDULER
-    if (sched_runtime!=0) {
-        struct sched_attr attr= {0};
-        attr.size = sizeof(attr);
-        // This creates a .5 ms fpga_recv_cnt reservation
-        attr.sched_policy = SCHED_DEADLINE;
-        attr.sched_runtime  = sched_runtime;
-        attr.sched_deadline = sched_deadline;
-        attr.sched_period   = 0;
-        AssertFatal(sched_setattr(0, &attr, 0) == 0,
-                    "[SCHED] main eNB thread: sched_setattr failed %s \n",perror(errno));
-        LOG_I(HW,"[SCHED][eNB] eNB main deadline thread %lu started on CPU %d\n",
-              (unsigned long)gettid(), sched_getcpu());
-    }
-
-#else
-#ifdef CPU_AFFINITY
-    if (get_nprocs() >2) {
-        for (j = 1; j < get_nprocs(); j++)
-            CPU_SET(j, &cpuset);
-    }
-    AssertFatal( 0 == pthread_setaffinity_np(pthread_self(), sizeof(cpu_set_t), &cpuset)==0,"");
-#endif
-    struct sched_param sp;
-    sp.sched_priority = sched_fifo;
-    AssertFatal(pthread_setschedparam(pthread_self(),SCHED_FIFO,&sp)==0,
-                "Can't set thread priority, Are you root?\n");
-#endif
-
-    // Lock memory from swapping. This is a process wide call (not constraint to this thread).
-    mlockall(MCL_CURRENT | MCL_FUTURE);
-    pthread_setname_np( pthread_self(), name );
-
-}
-
-
-int main(void)
-{
-	int                 ret;
-	uint64_t			i;
-	openair0_device     rf_device;
-	openair0_timestamp	timestamp       = 0;
-
-	unsigned int        sub_frame       = 0;
-	unsigned int        frame_rx        = 0;
-
-	unsigned int        nb_antennas_tx  = 1;
-	unsigned int        nb_antennas_rx  = 1;
-
-
-	openair0_cfg[0].mmapped_dma         = 0;
-	openair0_cfg[0].configFilename      = NULL;
-	openair0_cfg[0].duplex_mode         = duplex_mode_FDD;
-
-	uint32_t			**sendbuff		= NULL;
-	uint32_t			**recvbuff		= NULL;
-	uint32_t			expected_value	= 0;
-	uint32_t			received_value	= 0;
-	int					nsamp 			= 0; // 1 ms
-	int					antenna_id		= 1;
-	int 				c 				= 0;
-	int 				numIter			= 0;
-	int 				fpga_loop		= 0;
-#if SYRIQ_CHANNEL_DATA1
-	uint64_t			first_ts		= 0;
-	uint8_t				is_first_ts		= 0;
-	uint64_t			trx_read_cnt	= 0;
-	uint32_t			j				= 0;
-	uint32_t			err_cnt			= 0;
-#else
-	int         		failure			= 0;
-#endif
-#if 0 // 5MHz BW
-  unsigned int 			nb_sample_per_tti	= 7680;
-  openair0_cfg[0].sample_rate				= 7.68e6;
-  openair0_cfg[0].samples_per_frame			= nb_sample_per_tti*10;
-  openair0_cfg[0].rx_bw						= 2.5e6;
-  openair0_cfg[0].tx_bw						= 2.5e6;
-  openair0_cfg[0].num_rb_dl					= 25;
-#endif
-
-#if 0 // 10MHz BW
-  unsigned int  nb_sample_per_tti   = 15360;
-  openair0_cfg[0].sample_rate       = 15.36e6;
-  openair0_cfg[0].samples_per_frame = nb_sample_per_tti*10;
-  openair0_cfg[0].rx_bw             = 5.0e6;
-  openair0_cfg[0].tx_bw             = 5.0e6;
-  openair0_cfg[0].num_rb_dl         = 50;
-#endif
-
-#if 1 // 20MHz BW
-  unsigned int  nb_sample_per_tti   = 30720;
-  openair0_cfg[0].sample_rate       = 30.72e6;
-  openair0_cfg[0].samples_per_frame = nb_sample_per_tti*10;
-  openair0_cfg[0].rx_bw             = 10.0e6;
-  openair0_cfg[0].tx_bw             = 10.0e6;
-  openair0_cfg[0].num_rb_dl         = 100;
-#endif
-
-  const char *openair_dir = getenv("OPENAIR_DIR");
-  const char *ini_file    = "/usr/local/etc/syriq/ue.band7.tm1.PRB100.NR20.dat";
-
-  int   readBlockSize;
-  void* rxp[nb_antennas_rx];
-  void* txp[nb_antennas_tx];
-
-//  int32_t rxdata[1][nb_sample_per_tti*10+2048];
-#if 0
-  int32_t 				**rxdata;
-#endif
-//  init_thread(100000, 500000, sched_get_priority_max(SCHED_FIFO),"main UE");
-
-	printf("LTE HARDWARE Latency debug utility \n");
-  printf("INIT data buffers \n");
-
-#if 0
-  rxdata    = (int32_t**)memalign(32, nb_antennas_rx*sizeof(int32_t*) );
-  rxdata[0] = (int32_t*)memalign(32,(nb_sample_per_tti*10+2048)*sizeof(int32_t));
-#else
-  rxdata = (int32_t**)malloc16( nb_antennas_rx*sizeof(int32_t*) );
-  txdata = (int32_t**)malloc16( nb_antennas_tx*sizeof(int32_t*) );
-  rxdata[0] = (int32_t*)malloc16_clear( 307200*sizeof(int32_t) );
-  txdata[0] = (int32_t*)malloc16_clear( 307200*sizeof(int32_t) );
-#endif
-
-	printf("INIT done\n");
-
-	memset(&rf_device, 0, sizeof(openair0_device));
-
-	rf_device.host_type = BBU_HOST;
-	openair0_cfg[0].duplex_mode = duplex_mode_FDD;
-	openair0_cfg[0].rx_num_channels  = 1;
-	openair0_cfg[0].tx_num_channels  = 1;
-
-	// configure channel 0
-	for (i=0; i<openair0_cfg[0].rx_num_channels; i++)
-  {
-		printf("configure channel %d \n",i);
-		openair0_cfg[0].autocal[i] = 1;
-		openair0_cfg[0].rx_freq[i] = 2680000000;
-		openair0_cfg[0].tx_freq[i] = 2560000000;
-		openair0_cfg[0].rx_gain[i] = 61;
-		openair0_cfg[0].tx_gain[i] = 90;
-	}
-
-	if (openair_dir)
-	{
-		openair0_cfg[0].configFilename = malloc(strlen(openair_dir) + strlen(ini_file) + 2);
-		sprintf(openair0_cfg[0].configFilename, "%s/%s", openair_dir, ini_file);
-	}
-//	printf("openair0_cfg[0].configFilename:%s\n", openair0_cfg[0].configFilename);
-
-	ret = openair0_device_load( &rf_device, &openair0_cfg[0] );
-	if (ret != 0){
-		exit_fun("Error loading device library");
-    exit(-1);
-	}
-
-/*	Runtime test
- *	30 720 000 samples (4 bytes) for 1 sec (30 720 for 1 ms)
- */
-	puts( "* Starting the device" );
-
-//	TIMING
-//	struct timespec		start, stop; // tx_start, tx_stop;
-//	timing_stats_t		rx_stats, tx_stats;
-
-//	rx_stats.name		= strdup( "RX" );
-//	tx_stats.name		= strdup( "TX" );
-//	TIMING
-
-	nsamp		= 307200; // 1 ms
-	sendbuff	= memalign( 128, nb_antennas_rx * sizeof( uint32_t * ) );
-	sendbuff[0]	= memalign( 128, nsamp * sizeof( uint32_t ) );
-	recvbuff	= memalign( 128, nb_antennas_rx * sizeof( uint32_t * ) );
-	recvbuff[0]	= memalign( 128, nsamp * sizeof( uint32_t ) );
-
-//	Create dummy buffer
-	for ( c = 0; c < nsamp; c++ ) {
-//		sendbuff[0][c] = (c+1);
-		sendbuff[0][c] = (c+1)*16;
-//		sendbuff[0][c] = (nsamp-c);
-		recvbuff[0][c] = 0;
-	}
-
-	GET_TIME_INIT(3);
-
-	if ( rf_device.trx_start_func( &rf_device ) < 0 ) {
-		printf( "  device could not be started !\n" );
-		return -1;
-	}
-
-	// read 30720
-
-	// write 30720 ts+2*30720
-
-	// if tsread >= 2-307200 -> check expected value + status (RxoVer TxUnder)
-
-	rxp[0]			= (void*)&rxdata[0][0];
-	txp[0]			= (void*)&txdata[0][0];
-	timestamp		= 0;
-	nsamp			= 30720;	// 30720  => 1ms buffer
-	trx_read_cnt	= 100000;		// 1 loop => 1ms (10sec=10000; 15min = 900000)
-	antenna_id		= 1;
-	int	diff		= 0;
-	int compare_start	= 0;
-
-	uint32_t	looploop=0;
-	uint64_t	error_cnt = 0;
-	uint64_t	error_ts_start;
-
-	for (i = 0; i < trx_read_cnt; i++)
-	{
-
-//		printf("\n\n");
-
-
-//		ret = rf_device.trx_read_func( &rf_device, &timestamp, &(rxp[0][(i*30720)%307200]), nsamp, antenna_id );
-//		ret = rf_device.trx_read_func( &rf_device, &timestamp, recvbuff[0][(i*30720)%307200], nsamp, antenna_id );
-		rxp[0]			= (void*)&rxdata[0][(i*30720)%307200];
-		GET_TIME_VAL(0);
-		ret = rf_device.trx_read_func( &rf_device, &timestamp, rxp, nsamp, antenna_id );
-		GET_TIME_VAL(1);
-		
-		if (ret != nsamp)
-		{
-			printf("Error: nsamp received (%d) != nsamp required (%d)\n", ret, nsamp);
-			fflush(stdout);
-			return (-1);
-		}
-		if (!is_first_ts)
-		{
-			first_ts 	= timestamp;
-			is_first_ts	= 1;
-		}
-	
-//		printf("%d - trx_read_func ret=%d - ts = %d - @=0x%08lx\n", i, ret, timestamp, rxp[0]  );
-
-		txp[0]			= (void*)&(txdata[0][ ((i*30720)%307200+2*30720)%307200 ]);	
-//		printf("    i=%d @txp[0][0] = 0x%016lx\n", i, &(((uint32_t *)txp[0])[0]) );
-//		printf("    i=%d @txp[0][1] = 0x%016lx\n", i, &(((uint32_t *)txp[0])[1]) );
-
-		for ( c = 0; c < nsamp; c++ )
-		{
-			(((uint32_t *)txp[0])[c]) = ( (((timestamp+c+2*30720)<<4)&0x0000FFF0) + (((timestamp+c+2*30720)<<8)&0xFFF00000) );
-		}
-
-//		printf("    txp[0][%d] = 0x%x\n",0,((uint32_t *)(txp[0]))[0]);
-//		printf("    txp[0][%d] = 0x%x\n",1,((uint32_t *)(txp[0]))[1]);
-//		printf("    ...\n");
-//		printf("    txp[0][%d] = 0x%x\n",nsamp-2,((uint32_t *)(txp[0]))[nsamp-2]);
-//		printf("    txp[0][%d] = 0x%x\n",nsamp-1,((uint32_t *)(txp[0]))[nsamp-1]);
-
-
-		ret = rf_device.trx_write_func( &rf_device, (timestamp+2*30720), txp, nsamp, antenna_id, false );
-		if (ret != nsamp)
-		{
-			printf("Error: nsamp sent (%d) != nsamp required (%d)\n", ret, nsamp);
-			fflush(stdout);
-			return (-1);
-		}
-
-//		printf("%d - trx_write_func ret=%d - ts = %d - @=0x%08lx\n", i, ret, (timestamp+2*30720), txp[0]  );
-
-
-		if (timestamp >= (first_ts + 2 * 307200))
-		{			
-
-			// check Rx Overflow
-			
-			// check Tx Underflow
-
-			// check Expected Value
-			for ( c = 0; c < nsamp; c++ )
-			{
-
-// LOOPBACK
-#if 1
-				expected_value	= ((timestamp + c)&0xFFFFFF);
-				received_value	= ((uint32_t *)(rxp[0]))[c];
-				received_value	= ((received_value)&0xFFF) + ((received_value>>4)&0xFFF000);
-
-				if (compare_start == 0)
-				{
-					compare_start	= 1;
-					diff			= expected_value - received_value;
-				}
-				received_value = (received_value + diff)&0xFFFFFF;
-
-#if 1
-
-				if (expected_value != received_value)
-				{
-					if(!error_cnt)
-						error_ts_start = (timestamp + c);
-					else
-					{
-						if (looploop < 32)
-							printf("%d - %d != %d - ts %d - raw 0x%x - diff %d\n",
-								looploop, 
-								expected_value, received_value, 
-								(timestamp + c), ((uint32_t *)(rxp[0]))[c],
-								diff);
-						looploop++;
-					}
-
-					error_cnt++;
-
-					if(!(error_cnt%102400))
-						printf(" -> error detected     : cnt=%d - start=%ld - stop=... diff=%d\n",
-									error_cnt,
-									error_ts_start,
-									diff);
-
-				}
-				else
-				{
-					if(error_cnt)
-					{
-						printf(" -> error detected     : cnt=%d - start=%ld - stop=%ld\n\n",
-									error_cnt,
-									error_ts_start,
-									(timestamp + c) );
-						looploop=0;
-					}
-					error_cnt=0;
-				}
-#endif
-#endif
-
-// DEBUG mode 0
-#if 0
-				received_value	= ((uint32_t *)(rxp[0]))[c];
-				received_value	= ((received_value)&0xFFF) + ((received_value>>4)&0xFFF000);
-				received_value	= (received_value&0xFFFFFF);
-				if (compare_start == 0)
-				{
-					compare_start	= 1;
-					expected_value 	= received_value;
-				}
-				else
-				{
-					expected_value++;
-					expected_value	= (expected_value&0xFFFFFF);
-				}
-
-				if (expected_value != received_value)
-				{
-					if(!error_cnt)
-						error_ts_start = (timestamp + c);
-					error_cnt++;
-				}
-				else
-				{
-					if(error_cnt)
-					{
-						printf(" -> error detected     : cnt=%d - start=%ld - stop=%ld\n\n",
-									error_cnt,
-									error_ts_start,
-									(timestamp + c) );
-					}
-					error_cnt=0;
-				}
-
-
-
-//				if (expected_value != received_value)
-//				{
-//					printf("%d -> %d != %d (ts+c=%ld)(raw=0x%08x)\n", 
-//							looploop, 
-//							expected_value, received_value,
-//							(timestamp + c),
-//							((uint32_t *)(rxp[0]))[c] );
-//
-//					if (received_value)
-//						expected_value 	= received_value;
-//				}
-#endif
-
-			}
-		}
-	}
-
-	printf("HwLat Application returns !!!\n");
-	fflush(stdout);
-	sleep(1);
-
-
-	printf("\n");
-	rf_device.trx_end_func( &rf_device );
-
-	sleep(1);
-	free(sendbuff[0]);
-	free(sendbuff);
-	free(recvbuff[0]);
-	free(recvbuff);
-
-	exit(0);
-
-
-
-	return(0);
-
-
-
-//	puts( "* Frequency modification test" );
-//	rf_device.trx_set_freq_func( &rf_device, &openair0_cfg[0], 0 );
-
-//	puts( "* Gain modification test" );
-//	rf_device.trx_set_gains_func( &rf_device, &openair0_cfg[0] );	//	NOT working (cf. initialization)
-
-//#if LTE_UE
-//  sleep(1);
-	GET_TIME_VAL(0);
-	for (i = 0; i < trx_read_cnt; i++)
-	{
-    printf("\n");
-		ret = rf_device.trx_read_func( &rf_device, &timestamp, rxp, nsamp, antenna_id );
-    printf("* timestamp=%ld\n", timestamp);
-#if 1
-		for (j = 0; j < nsamp; j++)
-		{
-			if ( ((uint32_t *)rxp[0])[j] != ((expected_value + j + timestamp)%307200) )
-			{
-				err_cnt++;
-				printf("rxp[%06d]=0x%08x (expected 0x%08lx)\n", j, ((uint32_t *)rxp[0])[j], ((expected_value + j + timestamp)%307200) );
-			}
-			if (err_cnt >= 128)
-			{
-				printf("Error: more than 128 expected value failed !\n");
-				i = (trx_read_cnt - 1);
-				j = nsamp;
-				break;
-			}
-		}
-		//expected_value	= (expected_value + nsamp)%307200;
-    expected_value  = (expected_value)%307200;
-#endif
-	}
-	GET_TIME_VAL(1);
-//#endif
-
-/* ********** ********** */
-/*  SYRIQ_CHANNEL_DATA1  */
-/* ********** ********** */
-#if SYRIQ_CHANNEL_DATA1
-
-//  rf_device.trx_get_stats_func( &rf_device );
-
-  rf_device.trx_end_func( &rf_device );
-
-  printf("\n* rf_device.trx_read_func(%d) x %d: %.6lf s\n\n", nsamp, i, ((TIME_VAL_TO_MS(1) - TIME_VAL_TO_MS(0)))/1000.0 );
-
-//  rf_device.trx_get_stats_func( &rf_device );
-
-#if 0
-  for (i = 0; i < nsamp; i++)
-  {
-//    if ( ((uint32_t *)rxp[0])[i] != i)
-//    {
-      err_cnt++;
-      printf("rxp[%06d]=0x%08x (expected 0x%08x)\n", i, ((uint32_t *)rxp[0])[i], i);
-//    }
-//    if (err_cnt > 256)
-//    {
-//      i = 307200;
-//      break;
-//    }
-  }
-#endif
-//  for (i = 1024-32; i < 1024+32; i++)
-//  {
-////    if ( ((uint32_t *)rxp[0])[i] != i)
-////    {
-//      err_cnt++;
-//      printf("rxp[%06d]=0x%08x (expected 0x%08x)\n", i, ((uint32_t *)rxp[0])[i], i);
-////    }
-//    if (err_cnt > 256)
-//    {
-//      i = 307200;
-//      break;
-//    }
-//  }
-	printf("SYRIQ CHANNEL DATA1 done !!!\n");
-  sleep(1);
-	return(0);
-#endif
-/* ********** ********** */
-/*  SYRIQ_CHANNEL_DATA1  */
-/* ********** ********** */
-
-
-
-	timestamp	= 0;
-	ret = rf_device.trx_write_func( &rf_device, timestamp, (void**)sendbuff, nsamp, antenna_id, false );
-	printf("* rf_device.trx_write_func returns %d\n", ret);
-
-	sleep(1);
-
-	nsamp	= 30720;
-	numIter		= 100000;
-	for ( c = 0; c < numIter; c++ )
-	{
-		fpga_loop ++;
-		if ( !(fpga_loop % 1000) )
-		{
-			printf("\rtest loop %d / %d", fpga_loop, numIter);
-			fflush(stdout);
-		}
-
-//		printf("* TEST : %08d\n", (c+1));
-//		measure_time( &rf_device, &start, &stop, &tx_stats, true, 10 );
-//		ret = rf_device.trx_write_func( &rf_device, timestamp, (void**)sendbuff, nsamp, antenna_id, false );
-//    		printf("* rf_device.trx_write_func returns %d\n", ret);
-//		measure_time( &rf_device, &start, &stop, &tx_stats, false, 10 );
-
-//		sleep(1);
-
-//		measure_time( &rf_device, &start, &stop, &tx_stats, true, 10 );
-		ret = rf_device.trx_read_func( &rf_device, &timestamp, (void**)recvbuff, nsamp, antenna_id );
-//		measure_time( &rf_device, &start, &stop, &tx_stats, false, 10 );
-
-		// Check the data
-		if (ret > 0)
-		{
-/* ********** ********** */
-/*  SYRIQ_CHANNEL_TESTER */
-/* ********** ********** */
-#if SYRIQ_CHANNEL_TESTER
-      failure = 0;
-			for (i = 0; i < ret; i++)
-			{
-				if ( ((i%1024) == 0) || ((i%1024) == 1) || ((i%1024) == 2) || ((i%1024) == 3) )
-				{
-					if ( (recvbuff[0])[i] != (1020 + ((i%1024)+1)) )
-					{
-						printf("* ERROR (buff[0])[%d]: %d, expected %d\n", i, (uint32_t)(recvbuff[0])[i], ((i%1024)+1) );
-						failure = 1;
-					}
-				}
-				else if ( (recvbuff[0])[i] != ((i%1024)+1) )
-				{
-					printf("* ERROR (buff[0])[%d]: %d, expected %d\n", i, (uint32_t)(recvbuff[0])[i], ((i%1024)+1) );
-					failure = 1;
-				}
-				else
-				{
-					printf("* DONE  (buff[0])[%d]: %d, expected %d\n", i, (uint32_t)(recvbuff[0])[i], ((i%1024)+1) );
-				}
-				if(failure)
-					break;
-			}
-			if (failure)
-			 	printf("* ERROR recv %08d checked FAILURE ret=%d\n", (c+1), ret);
-			else
-      			{
-//			 	printf("* DONE  recv %08d checked SUCCESSFULLY ret=%d\n", (c+1), ret);
-      			}
-#endif
-/* ********** ********** */
-/*  SYRIQ_CHANNEL_TESTER2*/
-/* ********** ********** */
-#if SYRIQ_CHANNEL_TESTER2
-//			printf("* ret=%d timestamp=%ld (%ld)\n", ret, timestamp, (timestamp%307200));
-      failure = 0;
-			for (i = 0; i < ret; i++)
-			{
-//				printf("* (recvbuff[0])[%d]: %d\n", i, (uint32_t)(recvbuff[0])[i]);
-//				printf("* timestamp+(i/1024+1)*1024 - 3 + i%1024: %d\n", (timestamp-nsamp+(i/1024+1)*1024 - 3 + i%1024)%307200 );
-				expected_value	= ((((i%1024)+1)/*>>4*/)&0x00000FFF);
-				if ( ((i%1024) == 0) || ((i%1024) == 1) || ((i%1024) == 2) || ((i%1024) == 3) )
-				{
-					expected_value	= ((((timestamp-nsamp+(i/1024+1)*1024 - 3 + i%1024))%307200));
-					if ( (recvbuff[0])[i] !=  expected_value)
-					{
-						if ( (expected_value == 0) && ((recvbuff[0])[i] != 4915200) )
-						{
-							printf("* ERROR (buff[0])[%d]: %d, expected %d\n", i, (uint32_t)(recvbuff[0])[i], expected_value );
-							failure = 1;
-						}
-						if ( (expected_value == 0) && ((recvbuff[0])[i] == 4915200) )
-						{
-//							printf("* DONE loop in circular buffer\n");
-						}
-					}
-				}
-				else if ( (recvbuff[0])[i] != expected_value )
-				{
-					printf("* ERROR (buff[0])[%d]: %d, expected %d\n", i, (uint32_t)(recvbuff[0])[i], ((i%1024)+1) );
-					failure = 1;
-				}
-				else
-				{
-//					printf("* DONE  (buff[0])[%d]: %d, expected %d\n", i, (uint32_t)(recvbuff[0])[i], ((i%1024)+1) );
-				}
-//				if(failure)
-//					break;
-			}
-			if (failure)
-			 	printf("* ERROR recv %08d checked FAILURE ret=%d\n", (c+1), ret);
-			else
-      			{
-//			 	printf("* DONE  recv %08d checked SUCCESSFULLY ret=%d\n", (c+1), ret);
-      			}
-#endif
-#if LOOPBACK
-
-#endif
-		}
-		else
-		{
-			printf("* ERROR rf_device.trx_read_func returns %d\n", ret);
-		}
-
-	}
-	printf("\n");
-	rf_device.trx_end_func( &rf_device );
-
-	sleep(1);
-	free(sendbuff[0]);
-	free(sendbuff);
-	free(recvbuff[0]);
-	free(recvbuff);
-
-	exit(0);
-
-//	END IS HERE !
-
-	rf_device.trx_set_freq_func(&rf_device,&openair0_cfg[0],0);
-
-	if (rf_device.trx_start_func(&rf_device) != 0 ) {
-		printf("Could not start the device\n");
-		oai_exit=1;
-	}
-
-	while(!oai_exit){
-
-	rxp[0] = (void*)&rxdata[0][sub_frame*nb_sample_per_tti];
-
-	readBlockSize = rf_device.trx_read_func(&rf_device,
-											&timestamp,
-											rxp,
-											nb_sample_per_tti,
-											0);
-
-    if ( readBlockSize != nb_sample_per_tti )
-      oai_exit = 1;
-
-    sub_frame++;
-    sub_frame%=10;
-
-    if( sub_frame == 0)
-      frame_rx++;
-
-    saif_meas(frame_rx, sub_frame);
-  }
-
-  return(0);
-}
diff --git a/targets/RT/USER/lte-hwlat2.c b/targets/RT/USER/lte-hwlat2.c
deleted file mode 100644
index 85ec61e44fcd1df0770da30da87f7e88728722f2..0000000000000000000000000000000000000000
--- a/targets/RT/USER/lte-hwlat2.c
+++ /dev/null
@@ -1,1282 +0,0 @@
-/*
- * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The OpenAirInterface Software Alliance licenses this file to You under
- * the OAI Public License, Version 1.1  (the "License"); you may not use this file
- * except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.openairinterface.org/?page_id=698
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *-------------------------------------------------------------------------------
- * For more information about the OpenAirInterface (OAI) Software Alliance:
- *      contact@openairinterface.org
- */
-
-
-/* *************************************************************************************************
-
-  USER GUIDE
-
-  1 - CONFIGURE TEST SESSION 
-  see TESTS PARAMETERS section below
-
-  2 - COMPILATION CMD LINE (same as openair compilation)
-    - NO AVX SUPPORT
-  /usr/bin/cc            -msse4.1 -mssse3  -std=gnu99 -Wall -Wstrict-prototypes -fno-strict-aliasing -rdynamic -funroll-loops -Wno-packed-bitfield-compat -fPIC  -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_FCNTL_H=1 -DHAVE_ARPA_INET_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_SYS_SOCKET_H=1 -DHAVE_STRERROR=1 -DHAVE_SOCKET=1 -DHAVE_MEMSET=1 -DHAVE_GETTIMEOFDAY=1 -DHAVE_STDLIB_H=1 -DHAVE_MALLOC=1 -DHAVE_LIBSCTP -g -DMALLOC_CHECK_=3 -O2  -o lte-hwlat-test  lte-hwlat2.c -lrt -lpthread -lm -ldl
-    - AVX2 Support
-  /usr/bin/cc     -mavx2 -msse4.1 -mssse3  -std=gnu99 -Wall -Wstrict-prototypes -fno-strict-aliasing -rdynamic -funroll-loops -Wno-packed-bitfield-compat -fPIC  -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_FCNTL_H=1 -DHAVE_ARPA_INET_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_SYS_SOCKET_H=1 -DHAVE_STRERROR=1 -DHAVE_SOCKET=1 -DHAVE_MEMSET=1 -DHAVE_GETTIMEOFDAY=1 -DHAVE_STDLIB_H=1 -DHAVE_MALLOC=1 -DHAVE_LIBSCTP -g -DMALLOC_CHECK_=3 -O2  -o lte-hwlat-test  lte-hwlat2.c -lrt -lpthread -lm -ldl
-
-
-  3 - RUN
-  sudo cset shield --force --kthread on -c 1-3    // for 4 cores
-  sudo cset shield --force --kthread on -c 1-7    // for 8 cores
-  sudo cset shield ./lte-hwlat-test
-
-  4 - remove cset shield
-  sudo cset shield --reset
-
- ***************************************************************************************************/
-
-/* *************************************************************************************************
- *  TESTS PARAMETERS
- */
-#define     HWLAT_LOOP_CNT      1000000   /* measurment loop count for each thread*/
-#define     HWLAT_TTI_SLEEP_US  250     /* usleep duration -> IQ capture simulation (in µ seconds) */
-
-#define     RX_NB_TH            6
-
-#define     CALIB_RT_INTRUMENTATION 0
-
-/* Laurent Thpmas instrumentation -> see openair2/UTIL/LOG/log.h for full implementation
-    -> This is a copy and paste implementation in this file for a self contained source */
-#define     INSTRUMENTATION_LT_RDTSC              1
-/* SYRTEM rdtsc instrumentation implementation (see below for more infaormation) */
-#define     INSTRUMENTATION_SYR_RDTSC             2
-/* SYRTEM instrumentation using clock_gettime MONOTONIC */
-#define     INSTRUMENTATION_SYR_CLOCK_MONO        3
-/* SYRTEM instrumentation using clock_gettime REALTIME */
-#define     INSTRUMENTATION_SYR_CLOCK_REALTIME    4
-
-#define     HWLAT_INSTRUMENTATION                 INSTRUMENTATION_LT_RDTSC
-
-
-/* Statistics histogram output */
-#define HISTOGRAM_MIN_VALUE     0
-#define HISTOGRAM_MAX_VALUE     2000
-#define HISTOGRAM_STEP          1
-#define HISTOGRAM_SIZE          ( ( ( HISTOGRAM_MAX_VALUE - HISTOGRAM_MIN_VALUE ) / HISTOGRAM_STEP ) + 1 )
-
-
-
-/* *************************************************************************************************/
-
-
-/*
- *  INCLUDES
- */
-#define _GNU_SOURCE
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <time.h>
-#include <errno.h>
-#include <stdint.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <pthread.h>
-#include <linux/kernel.h>
-#include <linux/types.h>
-#include <syscall.h>
-#include <math.h>
-#include <sched.h> 
-#include <sys/ioctl.h>
-#include <sys/types.h>
-#include <sys/mman.h>
-#include <sched.h>
-#include <linux/sched.h>
-#include <signal.h>
-#include <execinfo.h>
-#include <getopt.h>
-#include <sys/sysinfo.h>
-#include <unistd.h>
-#include <sys/syscall.h>   /* For SYS_xxx definitions */
-#ifndef __STDC_FORMAT_MACROS
-#define __STDC_FORMAT_MACROS
-#endif
-#include <inttypes.h>
-
-
-/* From rt_wrapper.h 
-****************************************************************************************/
-#define gettid() syscall(__NR_gettid) // for gettid
-
-/* From common/utils/itti/assertions.h
-****************************************************************************************/
-# define display_backtrace()
-
-#define _Assert_Exit_                           \
-{                                               \
-    fprintf(stderr, "\nExiting execution\n");   \
-    display_backtrace();                        \
-    fflush(stdout);                             \
-    fflush(stderr);                             \
-    exit(EXIT_FAILURE);                         \
-}
-
-#define _Assert_(cOND, aCTION, fORMAT, aRGS...)             \
-do {                                                        \
-    if (!(cOND)) {                                          \
-        fprintf(stderr, "\nAssertion ("#cOND") failed!\n"   \
-                "In %s() %s:%d\n" fORMAT,                   \
-                __FUNCTION__, __FILE__, __LINE__, ##aRGS);  \
-        aCTION;                                             \
-    }           \
-} while(0)
-
-#define AssertFatal(cOND, fORMAT, aRGS...)          _Assert_(cOND, _Assert_Exit_, fORMAT, ##aRGS)
-
-
-/* From "openair1/PHY/TOOLS/time_meas.h"
-****************************************************************************************/
-double cpu_freq_GHz;
-
-
-typedef struct {
-
-  long long in;
-  long long diff;
-  long long diff_now;
-  long long p_time; /*!< \brief absolute process duration */
-  long long diff_square; /*!< \brief process duration square */
-  long long max;
-  int trials;
-  int meas_flag;
-} time_stats_t;
-
-static inline unsigned long long rdtsc_oai(void) __attribute__((always_inline));
-static inline unsigned long long rdtsc_oai(void)
-{
-  unsigned long long a, d;
-  __asm__ volatile ("rdtsc" : "=a" (a), "=d" (d));
-  return (d<<32) | a;
-}
-
-double get_cpu_freq_GHz(void);
-
-static inline void reset_meas(time_stats_t *ts) {
-
-  ts->trials=0;
-  ts->diff=0;
-  ts->diff_now=0;
-  ts->p_time=0;
-  ts->diff_square=0;
-  ts->max=0;
-  ts->meas_flag=0;
-  
-}
-
-double estimate_MHz_syr(void);
-static __inline__ uint64_t pickCyclesStart(void);
-static __inline__ uint64_t pickCyclesStop(void);
-
-
-/* From "openair2/UTIL/LOG/log.h"
-****************************************************************************************/
-extern double cpuf;         
-extern double cpu_mhz_syr;
-
-
-static __inline__ uint64_t rdtsc(void) {
-  uint64_t a, d;
-  __asm__ volatile ("rdtsc" : "=a" (a), "=d" (d));
-  return (d<<32) | a;
-}
-
-typedef struct m {
-    uint64_t iterations;
-    uint64_t sum;
-    uint64_t maxArray[11];
-} Meas;
-
-static inline void printMeas(char * txt, Meas *M, int period) {
-    if (M->iterations%period == 0 ) {
-        char txt2[512];
-        sprintf(txt2,"%s avg=%" PRIu64 " iterations=%" PRIu64 " max=%" 
-                PRIu64 ":%" PRIu64 ":%" PRIu64 ":%" PRIu64 ":%" PRIu64 ":%" PRIu64 ":%" PRIu64 ":%" PRIu64 ":%" PRIu64 ":%" PRIu64 "\n",
-                txt,
-                M->sum/M->iterations,
-                M->iterations,
-                M->maxArray[1],M->maxArray[2], M->maxArray[3],M->maxArray[4], M->maxArray[5], 
-                M->maxArray[6],M->maxArray[7], M->maxArray[8],M->maxArray[9],M->maxArray[10]);
-// SYRTEM : just use printf do not include all LOG_X for this test
-//#if DISABLE_LOG_X
-        printf("%s",txt2);
-//#else
-//        LOG_W(PHY, "%s",txt2);
-//#endif
-    }
-}
-
-static inline int cmpint(const void* a, const void* b) {
-    uint64_t* aa=(uint64_t*)a;
-    uint64_t* bb=(uint64_t*)b;
-    return (int)(*aa-*bb);
-}
-
-static inline uint64_t updateTimes(uint64_t start, Meas *M, int period, char * txt) {
-    if (start!=0) {
-        uint64_t end=rdtsc();
-        long long diff=(end-start)/(cpuf*1000);
-        M->maxArray[0]=diff;
-        M->sum+=diff;
-        M->iterations++;
-        qsort(M->maxArray, 11, sizeof(uint64_t), cmpint);
-//        printMeas(txt,M,period);    // SYRTEM : Printed only a the end of the measurment loop 
-        return diff;
-    }
-    return 0;
-}
-
-static inline uint64_t updateTimes_syr(uint64_t start, Meas *M, int period, char * txt) {
-    if (start!=0) {
-//        uint64_t end=rdtsc();
-        uint64_t end=pickCyclesStop();
-        long long diff=(long long)((double)(end-start)/(cpu_mhz_syr));
-//        long long diff=(end-start)/(cpuf*1000);
-        M->maxArray[0]=diff;
-        M->sum+=diff;
-        M->iterations++;
-        qsort(M->maxArray, 11, sizeof(uint64_t), cmpint);
-//        printMeas(txt,M,period);    // SYRTEM : Printed only a the end of the measurment loop 
-        return diff;
-    }
-    return 0;
-}
-
-
-
-
-#define initRefTimes(a) static __thread Meas a= {0}
-#define pickTime(a) uint64_t a=rdtsc()
-#define pickTime_syr(a) uint64_t a=pickCyclesStart()
-#define readTime(a) a
-
-
-
-
-
-
-/*
- *  DEFINES
- */
-
-#define TIMESPEC_TO_DOUBLE_US( t )    ( ( (double)t.tv_sec * 1000000 ) + ( (double)t.tv_nsec / 1000 ) )
-
-typedef struct histo_time {
-  double      max;
-  unsigned int  count;
-} histo_time_t;
-
-static void measure_time ( struct timespec *start, struct timespec *stop, uint8_t START, uint16_t PRINT_INTERVAL );
-static struct timespec  get_timespec_diff( struct timespec *start, struct timespec *stop );
-void  histogram_save_in_csv( histo_time_t *histo , char *file_prefix);
-histo_time_t  *histogram_init( histo_time_t *histo );
-void          histogram_store_value( histo_time_t *histo, double value );
-
-
-#define FIFO_PRIORITY         40
-
-
-
-#define true            1
-#define false           0
-
-
-
-
-/*
- *  STRUCTURES
- */
-
-
-/* stub of UE_rxtx_proc full structure in openair1/PHY/defs.h  
-*/
-typedef struct  UE_rxtx_proc {
-  int                 instance_cnt_rxtx;
-  pthread_t           pthread_rxtx;
-  pthread_cond_t      cond_rxtx;
-  pthread_mutex_t     mutex_rxtx;
-
-
-  int sub_frame_start;
-  int sub_frame_step;
-  unsigned long long gotIQs;
-
-
-  unsigned long syr_rdtsc_rxtx_th_unlock_iteration;
-  uint64_t      syr_rdtsc_ue_th_got_iq;
-  double        syr_rdtsc_rxtx_th_unlock; 
-  double        syr_rdtsc_rxtx_th_unlock_max;
-  double        syr_rdtsc_rxtx_th_unlock_mean;
-  double        syr_rdtsc_rxtx_th_unlock_min;
-  histo_time_t  *syr_rdtsc_rxtx_th_unlock_histogram;
-
-} UE_rxtx_proc_t;
-
-
-
-/* this structure is used to pass both UE phy vars and
- * proc to the function UE_thread_rxn_txnp4
- */
-struct rx_tx_thread_data {
-  /* PHY_VARS_UE    *UE;  */  // UE phy vars not used for this test
-  UE_rxtx_proc_t    *proc;    // We use a stub of rxtx_proc see definition above
-};
-
-
-// ODD / EVEN Scheduling
-#if 0
-typedef struct  threads_s {
-    int         iq;
-    int         odd;
-    int         even;
-} threads_t;
-threads_t       threads = { -1, -1, -1 }; // Core number for each thread (iq=3, even=2, odd=1)
-#endif
-
-// SLOT 0 / SLOT 1 parallelization
-typedef struct threads_s {
-    int iq;
-    int one;
-    int two;
-    int three;
-    int four;
-    int five;
-    int six;
-    int slot1_proc_one;
-    int slot1_proc_two;
-    int slot1_proc_three;
-} threads_t;
-threads_t threads= {7,6,5,4,3,2,1,-1,-1,-1};
-
-/*
- *  FUNCTIONS DEFINITION
- */
-
-void *UE_thread(void *arg);
-void init_UE(int nb_inst);
-
-
-
-/*
- *  GLOBALS VARIABLES
- */
-
-volatile int      oai_exit  = 0;
-int           th_count  = 0;
-double cpuf;
-double cpu_mhz_syr;
-
-
-
-
-
-
-
-pthread_t       pthread_ue;
-pthread_attr_t      attr_ue;
-
-UE_rxtx_proc_t      **rxtx_proc;
-
-struct timespec     even_start, even_stop;
-struct timespec     odd_start, odd_stop;
-
-histo_time_t      *th_wake_histogram;
-
-
-/*
- *  FUNCTIONS
- */
-
-
-
-void exit_fun(const char* s) {
-    if ( s != NULL ) {
-        printf("%s %s() Exiting OAI softmodem: %s\n",__FILE__, __FUNCTION__, s);
-    }
-
-    oai_exit = 1;
-}
-
-
-
-
-void init_thread(int sched_runtime, int sched_deadline, int sched_fifo, cpu_set_t *cpuset, char * name) {
-
-#ifdef DEADLINE_SCHEDULER
-    if (sched_runtime!=0) {
-        struct sched_attr attr= {0};
-        attr.size = sizeof(attr);
-        attr.sched_policy = SCHED_DEADLINE;
-        attr.sched_runtime  = sched_runtime;
-        attr.sched_deadline = sched_deadline;
-        attr.sched_period   = 0;
-        AssertFatal(sched_setattr(0, &attr, 0) == 0,
-                    "[SCHED] %s thread: sched_setattr failed %s \n", name, strerror(errno));
-        LOG_I(HW,"[SCHED][eNB] %s deadline thread %lu started on CPU %d\n",
-              name, (unsigned long)gettid(), sched_getcpu());
-    }
-
-#else
-    if (CPU_COUNT(cpuset) > 0)
-        AssertFatal( 0 == pthread_setaffinity_np(pthread_self(), sizeof(cpu_set_t), cpuset), "");
-    struct sched_param sp;
-    sp.sched_priority = sched_fifo;
-    AssertFatal(pthread_setschedparam(pthread_self(),SCHED_FIFO,&sp)==0,
-                "Can't set thread priority, Are you root?\n");
-    /* Check the actual affinity mask assigned to the thread */
-    cpu_set_t *cset=CPU_ALLOC(CPU_SETSIZE);
-    if (0 == pthread_getaffinity_np(pthread_self(), CPU_ALLOC_SIZE(CPU_SETSIZE), cset)) {
-      char txt[512]={0};
-      for (int j = 0; j < CPU_SETSIZE; j++)
-        if (CPU_ISSET(j, cset))
-    sprintf(txt+strlen(txt), " %d ", j);
-      printf("CPU Affinity of thread %s is %s\n", name, txt);
-    }
-    CPU_FREE(cset);
-#endif
-
-    // Lock memory from swapping. This is a process wide call (not constraint to this thread).
-    mlockall(MCL_CURRENT | MCL_FUTURE);
-    pthread_setname_np( pthread_self(), name );
-
-// SYRTEM : Synchronization thread is not simulated -> just ignore this part of code
-//    // LTS: this sync stuff should be wrong
-//    printf("waiting for sync (%s)\n",name);
-//    pthread_mutex_lock(&sync_mutex);
-//    printf("Locked sync_mutex, waiting (%s)\n",name);
-//    while (sync_var<0)
-//        pthread_cond_wait(&sync_cond, &sync_mutex);
-//    pthread_mutex_unlock(&sync_mutex);
-    printf("started %s as PID: %ld\n",name, gettid());
-}
-
-void init_UE(int nb_inst)
-{
-  int inst;
-  for (inst=0; inst < nb_inst; inst++) {
-    //   UE->rfdevice.type      = NONE_DEV;
-// SYRTEM : we use a stub of phy_var_ue
-//    PHY_VARS_UE *UE = PHY_vars_UE_g[inst][0];
-//    AssertFatal(0 == pthread_create(&UE->proc.pthread_ue, &UE->proc.attr_ue, UE_thread, (void*)UE), "");
-    AssertFatal( 0 == pthread_create( &pthread_ue, &attr_ue, UE_thread, NULL ), "" );
-  }
-
-  printf("UE threads created by %ld\n", gettid());
-}
-
-
-// SYRTEM - UE synchronization thread is not used in this latency test program
-//static void *UE_thread_synch(void *arg) {
-//  ...
-//}
-
-
-// SYRTEM - Stub of UE_thread_rxn_txnp4
-//    -> No DSP scheduled
-//    -> Only thread initialization and thread wake up are kept 
-
-static void *UE_thread_rxn_txnp4(void *arg){
-    static __thread int UE_thread_rxtx_retval;
-    struct rx_tx_thread_data *rtd = arg;
-    UE_rxtx_proc_t *proc = rtd->proc;
-
-    proc->instance_cnt_rxtx=-1;
-
-    char threadname[256];
-    sprintf(threadname,"UE_%d_proc_%d", 0, proc->sub_frame_start);
-    
-    cpu_set_t cpuset;
-    CPU_ZERO(&cpuset);
-
-    if ( (proc->sub_frame_start)%RX_NB_TH == 0 && threads.one != -1 )
-        CPU_SET(threads.one, &cpuset);
-    if ( (proc->sub_frame_start)%RX_NB_TH == 1 && threads.two != -1 )
-        CPU_SET(threads.two, &cpuset);
-    if ( (proc->sub_frame_start)%RX_NB_TH == 2 && threads.three != -1 )
-        CPU_SET(threads.three, &cpuset);
-    if ( (proc->sub_frame_start)%RX_NB_TH == 3 && threads.four != -1 )
-        CPU_SET(threads.four, &cpuset);
-    if ( (proc->sub_frame_start)%RX_NB_TH == 4 && threads.five != -1 )
-        CPU_SET(threads.five, &cpuset);
-    if ( (proc->sub_frame_start)%RX_NB_TH == 5 && threads.six != -1 )
-        CPU_SET(threads.six, &cpuset);
-            //CPU_SET(threads.three, &cpuset);
-    init_thread(900000,1000000 , FIFO_PRIORITY-1, &cpuset,
-                threadname);
-
-
-    proc->syr_rdtsc_rxtx_th_unlock_iteration=0;
-    proc->syr_rdtsc_rxtx_th_unlock_max=0;
-    proc->syr_rdtsc_rxtx_th_unlock_mean=0;
-    proc->syr_rdtsc_rxtx_th_unlock_min=1000;
-    proc->syr_rdtsc_rxtx_th_unlock_histogram = NULL;
-    proc->syr_rdtsc_rxtx_th_unlock_histogram = histogram_init (proc->syr_rdtsc_rxtx_th_unlock_histogram);
-
-    while (!oai_exit) {
-        if (pthread_mutex_lock(&proc->mutex_rxtx) != 0) {
-          printf("[SCHED][UE] error locking mutex for UE RXTX\n" );
-          exit_fun("nothing to add");
-        }
-        while (proc->instance_cnt_rxtx < 0) {
-          // most of the time, the thread is waiting here
-          pthread_cond_wait( &proc->cond_rxtx, &proc->mutex_rxtx );
-        }
-        if (pthread_mutex_unlock(&proc->mutex_rxtx) != 0) {
-          printf("[SCHED][UE] error unlocking mutex for UE RXn_TXnp4\n" );
-          exit_fun("nothing to add");
-        }
-
-    
-        proc->syr_rdtsc_rxtx_th_unlock = (double)(pickCyclesStop()-proc->syr_rdtsc_ue_th_got_iq )/cpu_mhz_syr;
-  
-        proc->syr_rdtsc_rxtx_th_unlock_iteration++;
-
-        proc->syr_rdtsc_rxtx_th_unlock_mean += proc->syr_rdtsc_rxtx_th_unlock;
-        if ( proc->syr_rdtsc_rxtx_th_unlock_max < proc->syr_rdtsc_rxtx_th_unlock )
-          proc->syr_rdtsc_rxtx_th_unlock_max = proc->syr_rdtsc_rxtx_th_unlock;
-        if ( proc->syr_rdtsc_rxtx_th_unlock_min > proc->syr_rdtsc_rxtx_th_unlock )
-          proc->syr_rdtsc_rxtx_th_unlock_min = proc->syr_rdtsc_rxtx_th_unlock;
-        histogram_store_value( proc->syr_rdtsc_rxtx_th_unlock_histogram, proc->syr_rdtsc_rxtx_th_unlock );
-
-
-        if (pthread_mutex_lock(&proc->mutex_rxtx) != 0) {
-          printf("[SCHED][UE] error locking mutex for UE RXTX\n" );
-          exit_fun("noting to add");
-        }
-        proc->instance_cnt_rxtx--;
-        if (pthread_mutex_unlock(&proc->mutex_rxtx) != 0) {
-          printf("[SCHED][UE] error unlocking mutex for UE RXTX\n" );
-          exit_fun("noting to add");
-        }
-    }
-
-// thread finished
-    free(arg);
-    return &UE_thread_rxtx_retval;
-}
-
-
-
-
-void *UE_thread(void *arg) {
-
-  int i           = 0;
-  int hw_loop_cnt = 0;
-
-  int             nb_threads  = RX_NB_TH;
-  char            threadname[128];
-  cpu_set_t           cpuset;
-  struct rx_tx_thread_data  *rtd;
-  UE_rxtx_proc_t *proc;
-
-  CPU_ZERO( &cpuset );
-
-  if ( threads.iq != -1 )
-    CPU_SET( threads.iq, &cpuset );
-  init_thread( 100000, 500000, FIFO_PRIORITY, &cpuset, "HDW Threads" );
-
-  sprintf( threadname, "Main UE %d", 0 );
-  pthread_setname_np( pthread_self(), threadname );
-
-
-//  init_UE_threads(UE)
-  pthread_attr_init( &attr_ue );
-  pthread_attr_setstacksize( &attr_ue, 8192 );//5*PTHREAD_STACK_MIN);
-
-  for ( i = 0; i < nb_threads; i++ ) {
-
-    printf("\n");
-
-    rtd = calloc( 1, sizeof( struct rx_tx_thread_data ) );
-    if ( rtd == NULL )
-      abort();
-
-    rtd->proc = rxtx_proc[i]; // &UE->proc.proc_rxtx[i];
-
-    pthread_mutex_init( &rxtx_proc[i]->mutex_rxtx ,NULL ); // pthread_mutex_init( &UE->proc.proc_rxtx[i].mutex_rxtx,NULL );
-    pthread_cond_init( &rxtx_proc[i]->cond_rxtx, NULL ); // pthread_cond_init(&UE->proc.proc_rxtx[i].cond_rxtx,NULL);
-    rtd->proc->sub_frame_start=i;
-    rtd->proc->sub_frame_step=nb_threads;
-    printf("Init_UE_threads rtd %d proc %d nb_threads %d i %d\n",rtd->proc->sub_frame_start, rxtx_proc[i]->sub_frame_start,nb_threads, i);
-    pthread_create( &rxtx_proc[i]->pthread_rxtx, NULL, UE_thread_rxn_txnp4, rtd ); // pthread_create( &UE->proc.proc_rxtx[i].pthread_rxtx, NULL, UE_thread_rxn_txnp4, rtd);
-
-    usleep(1000);
-
-  }
-//  init_UE_threads(UE)
-
-
-
-  int sub_frame=-1;
-  while ( !oai_exit ) {
-  
-    sub_frame++;
-    sub_frame %= 10;
-
-    proc = rxtx_proc[hw_loop_cnt%RX_NB_TH];
-
-    // Simulate IQ reception
-    usleep( HWLAT_TTI_SLEEP_US );
-
-    proc->syr_rdtsc_ue_th_got_iq = pickCyclesStart();
-
-    AssertFatal(pthread_mutex_lock(&proc->mutex_rxtx) ==0,"");
-
-    proc->instance_cnt_rxtx++;
-    if ( proc->instance_cnt_rxtx == 0 ) {
-      if ( pthread_cond_signal( &proc->cond_rxtx) != 0 ) {
-      exit_fun( "nothing to add" );
-      }
-    } else {
-      if ( proc->instance_cnt_rxtx > 2 )
-      exit_fun( "instance_cnt_rxtx > 2" );
-    }
-
-    AssertFatal( pthread_cond_signal( &proc->cond_rxtx ) == 0 ,"" );
-    AssertFatal(pthread_mutex_unlock(&proc->mutex_rxtx) ==0,"");
-
-
-    /* Do not go indefinitely */
-    hw_loop_cnt++;
-
-    if ( hw_loop_cnt%1000 == 0 )
-    {
-      printf("\r%d/%d",hw_loop_cnt,HWLAT_LOOP_CNT*RX_NB_TH);
-      fflush(stdout);
-    } 
-
-    if (hw_loop_cnt >= HWLAT_LOOP_CNT*RX_NB_TH)
-    {
-      printf("\n\n");
-      for (i=0 ; i<RX_NB_TH ; i++)
-      {
-        proc = rxtx_proc[i];
-        pthread_getname_np(proc->pthread_rxtx,threadname,128 );
-        printf("RxTX Thread unlock latency on thread %s (it. %lu) (us) : max=%8.3f - mean=%8.3f - min=%8.3f\n",
-                  threadname,
-                  proc->syr_rdtsc_rxtx_th_unlock_iteration,
-                  proc->syr_rdtsc_rxtx_th_unlock_max,
-                  proc->syr_rdtsc_rxtx_th_unlock_mean/proc->syr_rdtsc_rxtx_th_unlock_iteration,
-                  proc->syr_rdtsc_rxtx_th_unlock_min);
-
-        histogram_save_in_csv(proc->syr_rdtsc_rxtx_th_unlock_histogram, threadname );
-
-      }
-      printf("\n\n");
-      oai_exit = 1;
-    }
-
-  } // while !oai_exit
-
-  oai_exit = 1;
-
-  return NULL;
-}
-
-#define CALIB_LOOP_CNT            1000000 //2000000000
-#define CALIB_LOOP_REPORT_PERIOD  1000
-#define CALIB_LOOP_UP_THRESHOLD   20        // 20 -> for NG Intel flat model    
-#define CALIB_USLEEP              250     
-
-int           main( void )
-{
-
-  int i;
-
-
-#if CALIB_RT_INTRUMENTATION
-  uint32_t    calib_loop_count;
-
-
-  uint64_t      lt_overhead_cur;
-  uint64_t      lt_overhead_min;
-  uint64_t      lt_overhead_max;
-  uint64_t      lt_overhead_mean;
-  histo_time_t  *lt_overhead_histogram = NULL;
-
-  uint64_t      lt_syr_overhead_cur;
-  uint64_t      lt_syr_overhead_min;
-  uint64_t      lt_syr_overhead_max;
-  uint64_t      lt_syr_overhead_mean;
-  histo_time_t  *lt_syr_overhead_histogram = NULL;
-
-  double        syr_rdtsc_overhead_cur;
-  double        syr_rdtsc_overhead_min;
-  double        syr_rdtsc_overhead_max;
-  double        syr_rdtsc_overhead_mean;
-  histo_time_t  *syr_rdtsc_overhead_histogram = NULL;
-
-  double        syr_clock_gettime_overhead_cur;
-  double        syr_clock_gettime_overhead_min;
-  double        syr_clock_gettime_overhead_max;
-  double        syr_clock_gettime_overhead_mean;
-  histo_time_t  *syr_clock_gettime_overhead_histogram = NULL;
-
-
-  uint64_t  cycles_start;
-  uint64_t  cycles_stop;
-
-  uint64_t  cycles_diff;
-  uint64_t  cycles_diff_max = 0;
-
-
-  struct timespec start;
-  struct timespec stop;
-#endif
-
-  cpuf        = get_cpu_freq_GHz();
-  cpu_mhz_syr = estimate_MHz_syr();
-
-  printf("\n\ncpuf %f - cpu_mhz_syr %f\n\n", cpuf, cpu_mhz_syr);
-
-#if CALIB_RT_INTRUMENTATION
-
-  /* ********************************************************************************************** */
-  /*  CALIBRATION                                                                                   */
-  /* ********************************************************************************************** */
-
-  /* *************************************************************
-    Laurent Thomas instrumentation overhead
-  */
-  printf("\nCalibrating OAI Realtime Instrumentation (Laurent Thomas imp.)\n");
-  calib_loop_count = CALIB_LOOP_CNT;
-  initRefTimes(lt_instru_calib);      // Laurent Thomas realtime instrumentation calibration measurments
-  lt_overhead_min   = 1000;
-  lt_overhead_max   = 0;
-  lt_overhead_mean  = 0;
-  lt_overhead_histogram = histogram_init( lt_overhead_histogram );
-  while(calib_loop_count)
-  {
-    pickTime(lt_start);
-
-//    asm volatile("");     // Nop instruction
-    usleep(CALIB_USLEEP);
-
-    lt_overhead_cur = updateTimes(  readTime(lt_start), 
-                                    &lt_instru_calib, 
-                                    CALIB_LOOP_CNT, 
-                                    "Laurent Thomas realtime instrumentation calibration measurments");
-
-    lt_overhead_mean += lt_overhead_cur;
-    if ( lt_overhead_max < lt_overhead_cur )
-      lt_overhead_max = lt_overhead_cur;
-    if ( lt_overhead_min > lt_overhead_cur )
-      lt_overhead_min = lt_overhead_cur;
-    histogram_store_value( lt_overhead_histogram, (double)lt_overhead_cur );
-
-    if ( calib_loop_count%CALIB_LOOP_REPORT_PERIOD == 0 )
-    {
-      printf("\r%d/%d",calib_loop_count,CALIB_LOOP_CNT);
-      fflush(stdout);
-    }
-
-    calib_loop_count--;
-  }
-  lt_overhead_mean = lt_overhead_mean/CALIB_LOOP_CNT;
-
-//  printMeas("\nLaurent Thomas realtime instrumentation calibration measurments",&lt_instru_calib,CALIB_LOOP_CNT);
-
-
-  /* *************************************************************
-    Laurent Thomas instrumentation overhead 
-  */
-  printf("\nCalibrating OAI Realtime Instrumentation - SYRTEM revisited\n");
-  calib_loop_count = CALIB_LOOP_CNT;
-  initRefTimes(lt_instru_calib_syr);      // Laurent Thomas realtime instrumentation calibration measurments
-  lt_syr_overhead_min   = 1000;
-  lt_syr_overhead_max   = 0;
-  lt_syr_overhead_mean  = 0;
-  lt_syr_overhead_histogram = histogram_init( lt_syr_overhead_histogram );
-  while(calib_loop_count)
-  {
-    pickTime_syr(lt_start_syr);
-
-//    asm volatile("");     // Nop instruction
-    usleep(CALIB_USLEEP);
-
-    lt_syr_overhead_cur = updateTimes_syr(readTime(lt_start_syr), &lt_instru_calib_syr, CALIB_LOOP_CNT, "Laurent Thomas realtime instrumentation calibration measurments (SYRTEM Update)");
-
-    lt_syr_overhead_mean += lt_syr_overhead_cur;
-    if ( lt_syr_overhead_max < lt_syr_overhead_cur )
-      lt_syr_overhead_max = lt_syr_overhead_cur;
-    if ( lt_syr_overhead_min > lt_syr_overhead_cur )
-      lt_syr_overhead_min = lt_syr_overhead_cur;
-    histogram_store_value( lt_syr_overhead_histogram, (double)lt_syr_overhead_cur );
-
-    if ( calib_loop_count%CALIB_LOOP_REPORT_PERIOD == 0 )
-    {
-      printf("\r%d/%d",calib_loop_count,CALIB_LOOP_CNT);
-      fflush(stdout);
-    }
-
-    calib_loop_count--;
-  }
-  lt_syr_overhead_mean = lt_syr_overhead_mean / CALIB_LOOP_CNT;
-
-//  printMeas("\nLaurent Thomas realtime instrumentation calibration measurments (SYRTEM Update)",&lt_instru_calib_syr,CALIB_LOOP_CNT);
-
-
-
-  /* *************************************************************
-    SYRTEM RDTSC instrumentation overhead 
-  */
-  printf("\nCalibrating SYRTEM RDTSC Realtime Instrumentation\n");
-  calib_loop_count = CALIB_LOOP_CNT;
-  syr_rdtsc_overhead_min    = 1000;
-  syr_rdtsc_overhead_max    = 0;
-  syr_rdtsc_overhead_mean   = 0;
-  syr_rdtsc_overhead_histogram  = histogram_init( syr_rdtsc_overhead_histogram );
-  while(calib_loop_count)
-  {
-
-    cycles_start = pickCyclesStart();
-    
-//    asm volatile("");     // Nop instruction
-    usleep(CALIB_USLEEP);
-    
-    cycles_stop = pickCyclesStop();
-
-    cycles_diff = cycles_stop - cycles_start;
-    if(cycles_diff_max < cycles_diff)
-      cycles_diff_max = cycles_diff;
-
-    syr_rdtsc_overhead_cur = (double)cycles_diff/cpu_mhz_syr;
-
-    syr_rdtsc_overhead_mean += syr_rdtsc_overhead_cur;
-    if ( syr_rdtsc_overhead_max < syr_rdtsc_overhead_cur )
-      syr_rdtsc_overhead_max = syr_rdtsc_overhead_cur;
-    if ( syr_rdtsc_overhead_min > syr_rdtsc_overhead_cur )
-      syr_rdtsc_overhead_min = syr_rdtsc_overhead_cur;
-    histogram_store_value( syr_rdtsc_overhead_histogram, (double)syr_rdtsc_overhead_cur );
-
-    if ( calib_loop_count%CALIB_LOOP_REPORT_PERIOD == 0 )
-    {
-      printf("\r%d/%d",calib_loop_count,CALIB_LOOP_CNT);
-      fflush(stdout);
-    }
-
-    calib_loop_count--;
-  }
-  syr_rdtsc_overhead_mean = syr_rdtsc_overhead_mean / CALIB_LOOP_CNT;
-
-//  printf("\nSYRTEM RDTSV realtime instrumentation calibration : cycles_diff_max %ld - tsc_duration_max %f us\n ", cycles_diff_max, tsc_duration_max);
-
-
-
-  /* *************************************************************
-    SYRTEM Clock_gettime MONOTONIC instrumentation overhead
-  */
-  printf("\nCalibrating SYRTEM clock_gettime Realtime Instrumentation\n");
-  calib_loop_count = CALIB_LOOP_CNT;
-  syr_clock_gettime_overhead_min = 1000;
-  syr_clock_gettime_overhead_max    = 0;
-  syr_clock_gettime_overhead_mean   = 0;
-  syr_clock_gettime_overhead_histogram  = histogram_init( syr_clock_gettime_overhead_histogram );
-  while(calib_loop_count)
-  {
-
-    clock_gettime( CLOCK_MONOTONIC, &start );
-
-//    asm volatile("");     // Nop instruction
-    usleep(CALIB_USLEEP);
-
-    clock_gettime( CLOCK_MONOTONIC, &stop );
-    syr_clock_gettime_overhead_cur = TIMESPEC_TO_DOUBLE_US( get_timespec_diff( &start, &stop ) );
-
-    syr_clock_gettime_overhead_mean += syr_clock_gettime_overhead_cur;
-    if ( syr_clock_gettime_overhead_max < syr_clock_gettime_overhead_cur )
-      syr_clock_gettime_overhead_max = syr_clock_gettime_overhead_cur;
-    if ( syr_clock_gettime_overhead_min > syr_clock_gettime_overhead_cur )
-      syr_clock_gettime_overhead_min = syr_clock_gettime_overhead_cur;
-    histogram_store_value( syr_clock_gettime_overhead_histogram, (double)syr_clock_gettime_overhead_cur );
-
-    if ( calib_loop_count%CALIB_LOOP_REPORT_PERIOD == 0 )
-    {
-      printf("\r%d/%d",calib_loop_count,CALIB_LOOP_CNT);
-      fflush(stdout);
-    }
-
-    calib_loop_count--;
-  }
-  syr_clock_gettime_overhead_mean = syr_clock_gettime_overhead_mean / CALIB_LOOP_CNT;
-
-//  printf("\nSYRTEM clock_gettime MONOTONIC calibration : clock_gettime duration_max %f us\n ", max);
-
-
-  printf("\n");
-
-  printf("OAI LT  RT profiling overhead (it. %d) (us)       : max=%8ld - mean=%8ld - min=%8ld\n",
-          CALIB_LOOP_CNT,
-          lt_overhead_max, lt_overhead_mean, lt_overhead_min);
-  printf("OAI SYR RT profiling overhead (it. %d) (us)       : max=%8ld - mean=%8ld - min=%8ld\n",
-          CALIB_LOOP_CNT,
-          lt_syr_overhead_max, lt_syr_overhead_mean, lt_syr_overhead_min);
-  printf("SYR RDTSC  profiling overhead (it. %d) (us)       : max=%8.3f - mean=%8.3f - min=%8.3f\n",
-          CALIB_LOOP_CNT,
-          syr_rdtsc_overhead_max, syr_rdtsc_overhead_mean, syr_rdtsc_overhead_min);
-  printf("SYR clock_gettime profiling overhead (it. %d) (us): max=%8.3f - mean=%8.3f - min=%8.3f\n",
-          CALIB_LOOP_CNT,
-          syr_clock_gettime_overhead_max, syr_clock_gettime_overhead_mean, syr_clock_gettime_overhead_min);
-
-  return 0;
-#endif
-
-  rxtx_proc     = calloc( RX_NB_TH, sizeof( UE_rxtx_proc_t* ) );
-  for (i=0 ; i<RX_NB_TH; i++)
-    rxtx_proc[i]    = calloc( 1, sizeof( UE_rxtx_proc_t ) );
-
-
-  th_wake_histogram = histogram_init( th_wake_histogram );
-
-  init_UE( 1 );
-
-  while ( !oai_exit )
-    sleep( 1 );
-
-  return 0;
-}
-
-
-double estimate_MHz_syr(void)
-{
-    //copied blantantly from http://www.cs.helsinki.fi/linux/linux-kernel/2001-37/0256.html
-    /*
-    * $Id: MHz.c,v 1.4 2001/05/21 18:58:01 davej Exp $
-    * This file is part of x86info.
-    * (C) 2001 Dave Jones.
-    *
-    * Licensed under the terms of the GNU GPL License version 2.
-    *
-    * Estimate CPU MHz routine by Andrea Arcangeli <andrea@suse.de>
-    * Small changes by David Sterba <sterd9am@ss1000.ms.mff.cuni.cz>
-    *
-    */
-
-    struct timespec start;
-    struct timespec stop;
-
-    unsigned long long int cycles[2];   /* must be 64 bit */
-    double microseconds;  /* total time taken */
-
-
-    /* get this function in cached memory */
-    cycles[0] = rdtsc ();
-    clock_gettime( CLOCK_REALTIME, &start );
-
-    /* we don't trust that this is any specific length of time */
-    usleep (100000);
-
-    cycles[1] = rdtsc ();
-    clock_gettime( CLOCK_REALTIME, &stop );
-    microseconds = TIMESPEC_TO_DOUBLE_US( get_timespec_diff( &start, &stop ) );
-
-    unsigned long long int elapsed = 0;
-    if (cycles[1] < cycles[0])
-    {
-        //printf("c0 = %llu   c1 = %llu",cycles[0],cycles[1]);
-        elapsed = UINT32_MAX - cycles[0];
-        elapsed = elapsed + cycles[1];
-        //printf("c0 = %llu  c1 = %llu max = %llu elapsed=%llu\n",cycles[0], cycles[1], UINT32_MAX,elapsed);
-    }
-    else
-    {
-        elapsed = cycles[1] - cycles[0];
-        // printf("\nc0 = %llu  c1 = %llu elapsed=%llu\n",cycles[0], cycles[1],elapsed);
-    }
-
-    double mhz = elapsed / microseconds;
-
-
-    //printf("%llg MHz processor (estimate).  diff cycles=%llu  microseconds=%llu \n", mhz, elapsed, microseconds);
-    //printf("%g  elapsed %llu  microseconds %llu\n",mhz, elapsed, microseconds);
-    return (mhz);
-}
-
-
-
-/** TSC Timestamp references
-
- - http://oliveryang.net/2015/09/pitfalls-of-TSC-usage/#312-tsc-sync-behaviors-on-smp-system
- - https://www.intel.com/content/www/us/en/embedded/training/ia-32-ia-64-benchmark-code-execution-paper.html
- - https://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-software-developer-vol-3b-part-2-manual.pdf
-
- - http://blog.tinola.com/?e=54
- - https://stackoverflow.com/questions/24392392/getting-tsc-frequency-from-proc-cpuinfo !! warning on turbo
- - https://gist.github.com/nfarring/1624742
- - https://www.lmax.com/blog/staff-blogs/2015/10/25/time-stamp-counters/
- - https://github.com/cyring/CoreFreq
- - https://patchwork.kernel.org/patch/9438133/ --> TSC_ADJUST - to be checked
-    -> https://software.intel.com/en-us/forums/software-tuning-performance-optimization-platform-monitoring/topic/388964
- - https://www.google.fr/url?sa=t&rct=j&q=&esrc=s&source=web&cd=11&ved=0ahUKEwjwpJbem5DVAhWBDpoKHXv0Dt04ChAWCCIwAA&url=https%3A%2F%2Fsigarra.up.pt%2Ffeup%2Fpt%2Fpub_geral.show_file%3Fpi_gdoc_id%3D809041&usg=AFQjCNFHTMjmjWMG6QSVnLDflEoU0RavKw&cad=rja
- - https://unix4lyfe.org/benchmarking/
- - https://stackoverflow.com/questions/27693145/rdtscp-versus-rdtsc-cpuid
- - https://github.com/dterei/tsc/blob/master/tsc.h
- - https://software.intel.com/en-us/forums/intel-isa-extensions/topic/280440
- - https://stackoverflow.com/questions/19941588/wrong-clock-cycle-measurements-with-rdtsc
-
-
-
-*/
-
-
-
-
-
-
-static __inline__ uint64_t pickCyclesStart(void) {
-    unsigned  cycles_low, cycles_high;
-    asm volatile(   "CPUID\n\t" // serialize
-                    "RDTSC\n\t" // read clock
-                    "MOV %%edx, %0\n\t"
-                    "MOV %%eax, %1\n\t"
-                    : "=r" (cycles_high), "=r" (cycles_low)
-                    :: "%rax", "%rbx", "%rcx", "%rdx" );
-return ((uint64_t) cycles_high << 32) | cycles_low;
-}
-
-static __inline__ uint64_t pickCyclesStop(void) {
-  uint32_t eax, edx;
-
-  __asm__ __volatile__("rdtscp"
-    : "=a" (eax), "=d" (edx)
-    :
-    : "%ecx", "memory");
-
-return (((uint64_t)edx << 32) | eax);
-}
-
-
-
-
-
-
-
-
-/**************************************************************************************
-    EXTRACT from openair1/PHY/TOOLS/time_meas.c
-***************************************************************************************/
-double get_cpu_freq_GHz(void) {
-
-  time_stats_t ts = {0};
-  reset_meas(&ts);
-  ts.trials++;
-  ts.in = rdtsc_oai();
-  sleep(1);
-  ts.diff = (rdtsc_oai()-ts.in);
-  cpu_freq_GHz = (double)ts.diff/1000000000;
-  printf("CPU Freq is %f \n", cpu_freq_GHz);
-  return cpu_freq_GHz; 
-}
-
-
-
-/**************************************************************************************
-    SYRTEM STATISTICS HELPER
-***************************************************************************************/
-
-
-
-histo_time_t *histogram_init(histo_time_t *histo )
-{
-  int     i   = 0;
-  double  max_val = HISTOGRAM_MIN_VALUE + HISTOGRAM_STEP;
-
-  histo = calloc( HISTOGRAM_SIZE, sizeof( histo_time_t ) );
-  if ( histo == NULL ) {
-    printf( "ERROR allocating histogram structure !\n" );
-    return NULL;
-  }
-
-  for ( i = 0; i < HISTOGRAM_SIZE; i++ ) {
-    histo[i].max  = max_val;
-    max_val     += HISTOGRAM_STEP;
-  }
-
-  return histo;
-}
-
-
-void  histogram_store_value( histo_time_t *histo, double value )
-{
-  int         i   = 0;
-
-  for ( i = 0; i < HISTOGRAM_SIZE; i++ ) {
-    if ( histo[i].max >= value || ( i + 1 ) == HISTOGRAM_SIZE ) {
-      histo[i].count++;
-      break;
-    }
-  }
-}
-
-
-void  histogram_save_in_csv( histo_time_t *histo , char *file_sufix)
-{
-  char        *csv_filename;
-  char        month[3], day[3], hour[3], min[3], sec[3];
-  time_t      curr_time;
-  struct tm   *datetime;
-
-  curr_time = time( NULL );
-  datetime = localtime( &curr_time );
-
-  csv_filename = calloc( sizeof( char ), 64 );
-  if ( csv_filename == NULL ) {
-    return;
-  }
-
-  memset( csv_filename, 0x00, 64 );
-  memset( month, 0x00, 3 );
-  memset( day, 0x00, 3 );
-  memset( hour, 0x00, 3 );
-  memset( min, 0x00, 3 );
-  memset( sec, 0x00, 3 );
-
-/*  Month.  */
-  if ( datetime->tm_mon < 9 )
-    snprintf( month, 3, "0%d", datetime->tm_mon + 1 );
-  else
-    snprintf( month, 3, "%d", datetime->tm_mon + 1 );
-
-/*  Day.  */
-  if ( datetime->tm_mday < 10 )
-    snprintf( day, 3, "0%d", datetime->tm_mday );
-  else
-    snprintf( day, 3, "%d", datetime->tm_mday );
-
-/*  Hour.  */
-  if ( datetime->tm_hour < 10 )
-    snprintf( hour, 3, "0%d", datetime->tm_hour );
-  else
-    snprintf( hour, 3, "%d", datetime->tm_hour );
-
-/*  Minute.  */
-  if ( datetime->tm_min < 10 )
-    snprintf( min, 3, "0%d", datetime->tm_min );
-  else
-    snprintf( min, 3, "%d", datetime->tm_min );
-
-/*  Second.  */
-  if ( datetime->tm_sec < 10 )
-    snprintf( sec, 3, "0%d", datetime->tm_sec );
-  else
-    snprintf( sec, 3, "%d", datetime->tm_sec );
-
-  snprintf( csv_filename, 63, "ADRV9371_ZC706_HISTO_UEtoRXTX_%d%s%s%s%s%s_%s.csv",
-      datetime->tm_year + 1900, month, day, hour, min, sec, file_sufix );
-
-  FILE        *fp;
-  int         i   = 0;
-  int         min_val = 0;
-
-  fp  = fopen( csv_filename, "w+" );
-
-  fprintf( fp, "range;count\n" );
-
-  for ( i = 0; i < HISTOGRAM_SIZE; i++ ) {
-    if ( i + 1 == HISTOGRAM_SIZE )
-      fprintf( fp, "%d+;%u\n", min_val, histo[i].count );
-    else
-      fprintf( fp, "%d-%.0f;%u\n", min_val, histo[i].max, histo[i].count );
-    min_val = histo[i].max;
-  }
-  free(csv_filename);
-  fclose( fp );
-}
-
-
-
-static struct timespec  get_timespec_diff(
-              struct timespec *start,
-              struct timespec *stop )
-{
-  struct timespec   result;
-
-  if ( ( stop->tv_nsec - start->tv_nsec ) < 0 ) {
-    result.tv_sec = stop->tv_sec - start->tv_sec - 1;
-    result.tv_nsec = stop->tv_nsec - start->tv_nsec + 1000000000;
-  }
-  else {
-    result.tv_sec = stop->tv_sec - start->tv_sec;
-    result.tv_nsec = stop->tv_nsec - start->tv_nsec;
-  }
-
-  return result;
-}
-
-
-static void       measure_time (
-              struct timespec *start,
-              struct timespec *stop,
-              uint8_t START,
-              uint16_t PRINT_INTERVAL )
-{
-  static double   max   = 0;
-  static double   min   = 0;
-  static double     total = 0;
-  static int      count = 0;
-
-  if ( START ) {
-    clock_gettime( CLOCK_REALTIME, start );
-  }
-  else {
-    clock_gettime( CLOCK_REALTIME, stop );
-
-    struct timespec   diff;
-    double        current   = 0;
-
-    diff  = get_timespec_diff( start, stop );
-//    current = ( (double)diff.tv_sec * 1000000 ) + ( (double)diff.tv_nsec / 1000 );
-    current = TIMESPEC_TO_DOUBLE_US( diff );
-
-    if ( current > max ) {
-      max = current;
-    }
-    if ( min == 0 || current < min ) {
-      min = current;
-    }
-    total += current;
-
-    histogram_store_value( th_wake_histogram, current );
-
-    if ( count % PRINT_INTERVAL == 0 && count != 0 ) {
-      double      avg = total / ( count + 1 );
-      printf( "[%d] Current : %.2lf µs, Min : %.2lf µs, Max : %.2lf µs, Moy : %.2lf µs\n",
-          count, current, min, max, avg );
-    }
-    count++;
-  }
-}
-
-
-
-
-
-
-
-
-
-
-    
-
-
-  
-
-
diff --git a/targets/RT/USER/lte-ru.c b/targets/RT/USER/lte-ru.c
index 15b43192604765ddb47b25241cb2d72a7357948e..7e897c7debdbd3c32dd6f70920c8093b61eaf0e0 100644
--- a/targets/RT/USER/lte-ru.c
+++ b/targets/RT/USER/lte-ru.c
@@ -61,7 +61,6 @@
 #include "common/utils/LOG/vcd_signal_dumper.h"
 #include "targets/ARCH/COMMON/common_lib.h"
 #include "targets/ARCH/ETHERNET/USERSPACE/LIB/ethernet_lib.h"
-//#include "PHY/TOOLS/time_meas.h"
 
 /* these variables have to be defined before including ENB_APP/enb_paramdef.h */
 static int DEFBANDS[] = {7};
diff --git a/targets/RT/USER/lte-softmodem.c b/targets/RT/USER/lte-softmodem.c
index 61e298262610e769c4f7c5c5c70681eb07639076..07f900b641769084ff0daec65c3b2ff263992fd5 100644
--- a/targets/RT/USER/lte-softmodem.c
+++ b/targets/RT/USER/lte-softmodem.c
@@ -75,7 +75,6 @@ unsigned short config_frames[4] = {2,9,11,13};
 #include "common/utils/LOG/vcd_signal_dumper.h"
 #include "UTIL/OPT/opt.h"
 #include "enb_config.h"
-//#include "PHY/TOOLS/time_meas.h"
 
 
 #include "create_tasks.h"
diff --git a/targets/RT/USER/lte-ue.c b/targets/RT/USER/lte-ue.c
index 1643ca36ca71a2df537170e0c9d6e6bd8470e542..2e95e56d852db2a57036cde266cf29809b38e020 100644
--- a/targets/RT/USER/lte-ue.c
+++ b/targets/RT/USER/lte-ue.c
@@ -815,11 +815,6 @@ static void *UE_thread_rxn_txnp4(void *arg)
       pthread_cond_wait( &proc->cond_rxtx, &proc->mutex_rxtx );
     }
 
-    //printf("Processing sub frqme %d in %s\n", proc->subframe_rx, threadname);
-    initRefTimes(t2);
-    initRefTimes(t3);
-    pickTime(current);
-    updateTimes(proc->gotIQs, &t2, 10000, "Delay to wake up UE_Thread_Rx (case 2)");
     // Process Rx data for one sub-frame
     lte_subframe_t sf_type = subframe_select( &UE->frame_parms, proc->subframe_rx);
 
@@ -886,7 +881,6 @@ static void *UE_thread_rxn_txnp4(void *arg)
       if (UE->mode != loop_through_memory)
         phy_procedures_UE_S_TX(UE,0,0);
 
-    updateTimes(current, &t3, 10000, "Delay to process sub-frame (case 3)");
     proc->instance_cnt_rxtx--;
 
     if ( IS_SOFTMODEM_BASICSIM || IS_SOFTMODEM_RFSIM ) {
@@ -1470,12 +1464,6 @@ static void *UE_phy_stub_single_thread_rxn_txnp4(void *arg)
         oai_subframe_ind(proc->frame_rx, proc->subframe_rx);
       }
 
-      //Guessing that the next 4 lines are not needed for the phy_stub mode.
-      /*initRefTimes(t2);
-        initRefTimes(t3);
-        pickTime(current);
-        updateTimes(proc->gotIQs, &t2, 10000, "Delay to wake up UE_Thread_Rx (case 2)");*/
-
       if (pthread_mutex_lock(&phy_stub_ticking->mutex_single_thread) != 0) {
         LOG_E( MAC, "[SCHED][UE] error locking mutex for ue_thread_id %d (mutex_single_thread)\n",ue_thread_id);
         exit_fun("nothing to add");
@@ -2225,8 +2213,6 @@ void *UE_thread(void *arg)
               LOG_E(PHY,"can't compensate: diff =%d\n", first_symbols);
           }
 
-          pickTime(gotIQs);
-
           /* no timeout in IS_SOFTMODEM_BASICSIM or IS_SOFTMODEM_RFSIM mode */
           if (IS_SOFTMODEM_BASICSIM || IS_SOFTMODEM_RFSIM) {
             ret = pthread_mutex_lock(&proc->mutex_rxtx);
@@ -2264,12 +2250,6 @@ void *UE_thread(void *arg)
             }
           }
 
-          //UE->proc.proc_rxtx[0].gotIQs=readTime(gotIQs);
-          //UE->proc.proc_rxtx[1].gotIQs=readTime(gotIQs);
-          for (th_id=0; th_id < RX_NB_TH; th_id++) {
-            UE->proc.proc_rxtx[th_id].gotIQs=readTime(gotIQs);
-          }
-
           proc->subframe_rx=sub_frame;
           proc->subframe_tx=(sub_frame+4)%10;
           proc->frame_tx = proc->frame_rx + (proc->subframe_rx>5?1:0);
@@ -2281,10 +2261,6 @@ void *UE_thread(void *arg)
           T(T_UE_MASTER_TICK, T_INT(0), T_INT(proc->frame_rx%1024), T_INT(proc->subframe_rx));
           AssertFatal (pthread_cond_signal(&proc->cond_rxtx) ==0,"");
           AssertFatal(pthread_mutex_unlock(&proc->mutex_rxtx) ==0,"");
-          initRefTimes(t1);
-          initStaticTime(lastTime);
-          updateTimes(lastTime, &t1, 20000, "Delay between two IQ acquisitions (case 1)");
-          pickStaticTime(lastTime);
         } else {
           printf("Processing subframe %d",proc->subframe_rx);
           getchar();