Files
openairinterface5g/openair2/RRC/LITE/rrc_eNB_S1AP.c
T
Cedric Roux 3d88f4ed2f remove copyright notice
All the *.c *.h and *.cpp files that have a eurecom copyright at
the head have been processed.

All other files (ie. those with other extensions) have not been touched.

 Changes to be committed:
	modified:   common/utils/asn1_conversions.h
	modified:   common/utils/assertions.h
	modified:   common/utils/collection/hashtable/hashtable.c
	modified:   common/utils/collection/hashtable/hashtable.h
	modified:   common/utils/collection/hashtable/obj_hashtable.c
	modified:   common/utils/collection/hashtable/obj_hashtable.h
	modified:   common/utils/itti/assertions.h
	modified:   common/utils/itti/backtrace.c
	modified:   common/utils/itti/backtrace.h
	modified:   common/utils/itti/intertask_interface.c
	modified:   common/utils/itti/intertask_interface.h
	modified:   common/utils/itti/intertask_interface_dump.c
	modified:   common/utils/itti/intertask_interface_dump.h
	modified:   common/utils/itti/intertask_interface_init.h
	modified:   common/utils/itti/intertask_interface_types.h
	modified:   common/utils/itti/intertask_messages_def.h
	modified:   common/utils/itti/intertask_messages_types.h
	modified:   common/utils/itti/itti_types.h
	modified:   common/utils/itti/memory_pools.c
	modified:   common/utils/itti/memory_pools.h
	modified:   common/utils/itti/messages_def.h
	modified:   common/utils/itti/messages_types.h
	modified:   common/utils/itti/signals.c
	modified:   common/utils/itti/signals.h
	modified:   common/utils/itti/tasks_def.h
	modified:   common/utils/itti/timer.c
	modified:   common/utils/itti/timer.h
	modified:   common/utils/itti/timer_messages_def.h
	modified:   common/utils/itti/timer_messages_types.h
	modified:   common/utils/itti_analyzer/common/itti_types.h
	modified:   common/utils/itti_analyzer/common/logs.h
	modified:   common/utils/itti_analyzer/common/rc.h
	modified:   common/utils/itti_analyzer/itti_analyzer.c
	modified:   common/utils/itti_analyzer/libbuffers/buffers.c
	modified:   common/utils/itti_analyzer/libbuffers/buffers.h
	modified:   common/utils/itti_analyzer/libbuffers/file.c
	modified:   common/utils/itti_analyzer/libbuffers/file.h
	modified:   common/utils/itti_analyzer/libbuffers/socket.c
	modified:   common/utils/itti_analyzer/libbuffers/socket.h
	modified:   common/utils/itti_analyzer/libparser/array_type.c
	modified:   common/utils/itti_analyzer/libparser/array_type.h
	modified:   common/utils/itti_analyzer/libparser/enum_type.c
	modified:   common/utils/itti_analyzer/libparser/enum_type.h
	modified:   common/utils/itti_analyzer/libparser/enum_value_type.c
	modified:   common/utils/itti_analyzer/libparser/enum_value_type.h
	modified:   common/utils/itti_analyzer/libparser/field_type.c
	modified:   common/utils/itti_analyzer/libparser/field_type.h
	modified:   common/utils/itti_analyzer/libparser/file_type.c
	modified:   common/utils/itti_analyzer/libparser/file_type.h
	modified:   common/utils/itti_analyzer/libparser/fundamental_type.c
	modified:   common/utils/itti_analyzer/libparser/fundamental_type.h
	modified:   common/utils/itti_analyzer/libparser/intertask_contexts.h
	modified:   common/utils/itti_analyzer/libparser/pointer_type.c
	modified:   common/utils/itti_analyzer/libparser/pointer_type.h
	modified:   common/utils/itti_analyzer/libparser/reference_type.c
	modified:   common/utils/itti_analyzer/libparser/reference_type.h
	modified:   common/utils/itti_analyzer/libparser/struct_type.c
	modified:   common/utils/itti_analyzer/libparser/struct_type.h
	modified:   common/utils/itti_analyzer/libparser/typedef_type.c
	modified:   common/utils/itti_analyzer/libparser/typedef_type.h
	modified:   common/utils/itti_analyzer/libparser/types.c
	modified:   common/utils/itti_analyzer/libparser/types.h
	modified:   common/utils/itti_analyzer/libparser/union_type.c
	modified:   common/utils/itti_analyzer/libparser/union_type.h
	modified:   common/utils/itti_analyzer/libparser/xml_parse.c
	modified:   common/utils/itti_analyzer/libparser/xml_parse.h
	modified:   common/utils/itti_analyzer/libresolver/locate_root.c
	modified:   common/utils/itti_analyzer/libresolver/locate_root.h
	modified:   common/utils/itti_analyzer/libresolver/resolvers.c
	modified:   common/utils/itti_analyzer/libresolver/resolvers.h
	modified:   common/utils/itti_analyzer/libui/ui_callbacks.c
	modified:   common/utils/itti_analyzer/libui/ui_callbacks.h
	modified:   common/utils/itti_analyzer/libui/ui_filters.c
	modified:   common/utils/itti_analyzer/libui/ui_filters.h
	modified:   common/utils/itti_analyzer/libui/ui_interface.c
	modified:   common/utils/itti_analyzer/libui/ui_interface.h
	modified:   common/utils/itti_analyzer/libui/ui_main_screen.c
	modified:   common/utils/itti_analyzer/libui/ui_main_screen.h
	modified:   common/utils/itti_analyzer/libui/ui_menu_bar.c
	modified:   common/utils/itti_analyzer/libui/ui_menu_bar.h
	modified:   common/utils/itti_analyzer/libui/ui_notebook.c
	modified:   common/utils/itti_analyzer/libui/ui_notebook.h
	modified:   common/utils/itti_analyzer/libui/ui_notif_dlg.c
	modified:   common/utils/itti_analyzer/libui/ui_notif_dlg.h
	modified:   common/utils/itti_analyzer/libui/ui_notifications.c
	modified:   common/utils/itti_analyzer/libui/ui_notifications.h
	modified:   common/utils/itti_analyzer/libui/ui_signal_dissect_view.c
	modified:   common/utils/itti_analyzer/libui/ui_signal_dissect_view.h
	modified:   common/utils/itti_analyzer/libui/ui_tree_view.c
	modified:   common/utils/itti_analyzer/libui/ui_tree_view.h
	modified:   common/utils/msc/msc.c
	modified:   common/utils/msc/msc.h
	modified:   openair1/PHY/CODING/3gpplte.c
	modified:   openair1/PHY/CODING/3gpplte_sse.c
	modified:   openair1/PHY/CODING/3gpplte_turbo_decoder.c
	modified:   openair1/PHY/CODING/3gpplte_turbo_decoder_avx2_16bit.c
	modified:   openair1/PHY/CODING/3gpplte_turbo_decoder_sse.c
	modified:   openair1/PHY/CODING/3gpplte_turbo_decoder_sse_16bit.c
	modified:   openair1/PHY/CODING/3gpplte_turbo_decoder_sse_8bit.c
	modified:   openair1/PHY/CODING/TESTBENCH/ltetest.c
	modified:   openair1/PHY/CODING/TESTBENCH/pdcch_test.c
	modified:   openair1/PHY/CODING/TESTBENCH/viterbi_test.c
	modified:   openair1/PHY/CODING/ccoding_byte.c
	modified:   openair1/PHY/CODING/ccoding_byte_lte.c
	modified:   openair1/PHY/CODING/crc_byte.c
	modified:   openair1/PHY/CODING/defs.h
	modified:   openair1/PHY/CODING/extern.h
	modified:   openair1/PHY/CODING/extern_3GPPinterleaver.h
	modified:   openair1/PHY/CODING/lte_interleaver.h
	modified:   openair1/PHY/CODING/lte_interleaver2.h
	modified:   openair1/PHY/CODING/lte_interleaver_inline.h
	modified:   openair1/PHY/CODING/lte_rate_matching.c
	modified:   openair1/PHY/CODING/lte_segmentation.c
	modified:   openair1/PHY/CODING/rate_matching.c
	modified:   openair1/PHY/CODING/scrambler.h
	modified:   openair1/PHY/CODING/vars.h
	modified:   openair1/PHY/CODING/viterbi.c
	modified:   openair1/PHY/CODING/viterbi_lte.c
	modified:   openair1/PHY/INIT/defs.h
	modified:   openair1/PHY/INIT/extern.h
	modified:   openair1/PHY/INIT/init_top.c
	modified:   openair1/PHY/INIT/lte_init.c
	modified:   openair1/PHY/INIT/lte_parms.c
	modified:   openair1/PHY/INIT/vars.h
	modified:   openair1/PHY/LTE_ESTIMATION/adjust_gain.c
	modified:   openair1/PHY/LTE_ESTIMATION/defs.h
	modified:   openair1/PHY/LTE_ESTIMATION/extern.h
	modified:   openair1/PHY/LTE_ESTIMATION/filt96_32.h
	modified:   openair1/PHY/LTE_ESTIMATION/freq_equalization.c
	modified:   openair1/PHY/LTE_ESTIMATION/lte_adjust_sync.c
	modified:   openair1/PHY/LTE_ESTIMATION/lte_dl_channel_estimation.c
	modified:   openair1/PHY/LTE_ESTIMATION/lte_dl_channel_estimation_emos.c
	modified:   openair1/PHY/LTE_ESTIMATION/lte_dl_mbsfn_channel_estimation.c
	modified:   openair1/PHY/LTE_ESTIMATION/lte_eNB_measurements.c
	modified:   openair1/PHY/LTE_ESTIMATION/lte_est_freq_offset.c
	modified:   openair1/PHY/LTE_ESTIMATION/lte_sync_time.c
	modified:   openair1/PHY/LTE_ESTIMATION/lte_sync_timefreq.c
	modified:   openair1/PHY/LTE_ESTIMATION/lte_ue_measurements.c
	modified:   openair1/PHY/LTE_ESTIMATION/lte_ul_channel_estimation.c
	modified:   openair1/PHY/LTE_ESTIMATION/pss6144.h
	modified:   openair1/PHY/LTE_ESTIMATION/vars.h
	modified:   openair1/PHY/LTE_REFSIG/defs.h
	modified:   openair1/PHY/LTE_REFSIG/lte_dl_cell_spec.c
	modified:   openair1/PHY/LTE_REFSIG/lte_dl_mbsfn.c
	modified:   openair1/PHY/LTE_REFSIG/lte_dl_uespec.c
	modified:   openair1/PHY/LTE_REFSIG/lte_gold.c
	modified:   openair1/PHY/LTE_REFSIG/lte_gold_mbsfn.c
	modified:   openair1/PHY/LTE_REFSIG/lte_ul_ref.c
	modified:   openair1/PHY/LTE_REFSIG/mod_table.h
	modified:   openair1/PHY/LTE_TRANSPORT/dci.c
	modified:   openair1/PHY/LTE_TRANSPORT/dci.h
	modified:   openair1/PHY/LTE_TRANSPORT/dci_tools.c
	modified:   openair1/PHY/LTE_TRANSPORT/defs.h
	modified:   openair1/PHY/LTE_TRANSPORT/dlsch_coding.c
	modified:   openair1/PHY/LTE_TRANSPORT/dlsch_decoding.c
	modified:   openair1/PHY/LTE_TRANSPORT/dlsch_demodulation.c
	modified:   openair1/PHY/LTE_TRANSPORT/dlsch_llr_computation.c
	modified:   openair1/PHY/LTE_TRANSPORT/dlsch_modulation.c
	modified:   openair1/PHY/LTE_TRANSPORT/dlsch_scrambling.c
	modified:   openair1/PHY/LTE_TRANSPORT/dlsch_tbs.h
	modified:   openair1/PHY/LTE_TRANSPORT/dlsch_tbs_full.h
	modified:   openair1/PHY/LTE_TRANSPORT/drs_modulation.c
	modified:   openair1/PHY/LTE_TRANSPORT/extern.h
	modified:   openair1/PHY/LTE_TRANSPORT/group_hopping.c
	modified:   openair1/PHY/LTE_TRANSPORT/initial_sync.c
	modified:   openair1/PHY/LTE_TRANSPORT/lte_mcs.c
	modified:   openair1/PHY/LTE_TRANSPORT/mcs_tbs_tools.h
	modified:   openair1/PHY/LTE_TRANSPORT/pbch.c
	modified:   openair1/PHY/LTE_TRANSPORT/pcfich.c
	modified:   openair1/PHY/LTE_TRANSPORT/phich.c
	modified:   openair1/PHY/LTE_TRANSPORT/pilots.c
	modified:   openair1/PHY/LTE_TRANSPORT/pilots_mbsfn.c
	modified:   openair1/PHY/LTE_TRANSPORT/pmch.c
	modified:   openair1/PHY/LTE_TRANSPORT/power_control.c
	modified:   openair1/PHY/LTE_TRANSPORT/prach.c
	modified:   openair1/PHY/LTE_TRANSPORT/prach.h
	modified:   openair1/PHY/LTE_TRANSPORT/print_stats.c
	modified:   openair1/PHY/LTE_TRANSPORT/proto.h
	modified:   openair1/PHY/LTE_TRANSPORT/pss.c
	modified:   openair1/PHY/LTE_TRANSPORT/pucch.c
	modified:   openair1/PHY/LTE_TRANSPORT/rar_tools.c
	modified:   openair1/PHY/LTE_TRANSPORT/srs_modulation.c
	modified:   openair1/PHY/LTE_TRANSPORT/sss.c
	modified:   openair1/PHY/LTE_TRANSPORT/sss.h
	modified:   openair1/PHY/LTE_TRANSPORT/uci.h
	modified:   openair1/PHY/LTE_TRANSPORT/uci_tools.c
	modified:   openair1/PHY/LTE_TRANSPORT/ulsch_coding.c
	modified:   openair1/PHY/LTE_TRANSPORT/ulsch_decoding.c
	modified:   openair1/PHY/LTE_TRANSPORT/ulsch_demodulation.c
	modified:   openair1/PHY/LTE_TRANSPORT/ulsch_modulation.c
	modified:   openair1/PHY/LTE_TRANSPORT/vars.h
	modified:   openair1/PHY/MODULATION/defs.h
	modified:   openair1/PHY/MODULATION/extern.h
	modified:   openair1/PHY/MODULATION/kHz_7_5.h
	modified:   openair1/PHY/MODULATION/ofdm_mod.c
	modified:   openair1/PHY/MODULATION/prach625Hz.h
	modified:   openair1/PHY/MODULATION/slot_fep.c
	modified:   openair1/PHY/MODULATION/slot_fep_mbsfn.c
	modified:   openair1/PHY/MODULATION/slot_fep_ul.c
	modified:   openair1/PHY/MODULATION/ul_7_5_kHz.c
	modified:   openair1/PHY/MODULATION/vars.h
	modified:   openair1/PHY/TOOLS/8bit_rxdemux.c
	modified:   openair1/PHY/TOOLS/8bit_txmux.c
	modified:   openair1/PHY/TOOLS/angle.c
	modified:   openair1/PHY/TOOLS/cadd_sv.c
	modified:   openair1/PHY/TOOLS/cadd_vv.c
	modified:   openair1/PHY/TOOLS/cdot_prod.c
	modified:   openair1/PHY/TOOLS/cmult_sv.c
	modified:   openair1/PHY/TOOLS/cmult_vv.c
	modified:   openair1/PHY/TOOLS/costable.h
	modified:   openair1/PHY/TOOLS/dB_routines.c
	modified:   openair1/PHY/TOOLS/dB_routines.h
	modified:   openair1/PHY/TOOLS/defs.h
	modified:   openair1/PHY/TOOLS/extern.h
	modified:   openair1/PHY/TOOLS/file_output.c
	modified:   openair1/PHY/TOOLS/invSqrt.c
	modified:   openair1/PHY/TOOLS/log2_approx.c
	modified:   openair1/PHY/TOOLS/lte_dfts.c
	modified:   openair1/PHY/TOOLS/lte_phy_scope.c
	modified:   openair1/PHY/TOOLS/lte_phy_scope.h
	modified:   openair1/PHY/TOOLS/lut.c
	modified:   openair1/PHY/TOOLS/memory_routines.c
	modified:   openair1/PHY/TOOLS/signal_energy.c
	modified:   openair1/PHY/TOOLS/smbv.c
	modified:   openair1/PHY/TOOLS/smbv.h
	modified:   openair1/PHY/TOOLS/sqrt.c
	modified:   openair1/PHY/TOOLS/time_meas.c
	modified:   openair1/PHY/TOOLS/time_meas.h
	modified:   openair1/PHY/TOOLS/twiddle12288.h
	modified:   openair1/PHY/TOOLS/twiddle1536.h
	modified:   openair1/PHY/TOOLS/twiddle24576.h
	modified:   openair1/PHY/TOOLS/twiddle6144.h
	modified:   openair1/PHY/TOOLS/vars.h
	modified:   openair1/PHY/defs.h
	modified:   openair1/PHY/extern.h
	modified:   openair1/PHY/impl_defs_lte.h
	modified:   openair1/PHY/impl_defs_top.h
	modified:   openair1/PHY/sse_intrin.h
	modified:   openair1/PHY/types.h
	modified:   openair1/PHY/vars.h
	modified:   openair1/SCHED/defs.h
	modified:   openair1/SCHED/extern.h
	modified:   openair1/SCHED/phy_mac_stub.c
	modified:   openair1/SCHED/phy_procedures_emos.h
	modified:   openair1/SCHED/phy_procedures_lte_common.c
	modified:   openair1/SCHED/phy_procedures_lte_eNb.c
	modified:   openair1/SCHED/phy_procedures_lte_ue.c
	modified:   openair1/SCHED/pucch_pc.c
	modified:   openair1/SCHED/pusch_pc.c
	modified:   openair1/SCHED/rt_compat.h
	modified:   openair1/SCHED/vars.h
	modified:   openair1/SIMULATION/ETH_TRANSPORT/bypass_session_layer.c
	modified:   openair1/SIMULATION/ETH_TRANSPORT/defs.h
	modified:   openair1/SIMULATION/ETH_TRANSPORT/emu_transport.c
	modified:   openair1/SIMULATION/ETH_TRANSPORT/extern.h
	modified:   openair1/SIMULATION/ETH_TRANSPORT/multicast_link.c
	modified:   openair1/SIMULATION/ETH_TRANSPORT/multicast_link.h
	modified:   openair1/SIMULATION/ETH_TRANSPORT/netlink_init.c
	modified:   openair1/SIMULATION/ETH_TRANSPORT/pgm_link.c
	modified:   openair1/SIMULATION/ETH_TRANSPORT/pgm_link.h
	modified:   openair1/SIMULATION/ETH_TRANSPORT/proto.h
	modified:   openair1/SIMULATION/ETH_TRANSPORT/socket.c
	modified:   openair1/SIMULATION/ETH_TRANSPORT/socket.h
	modified:   openair1/SIMULATION/ETH_TRANSPORT/vars.h
	modified:   openair1/SIMULATION/LTE_PHY/LTE_Configuration.c
	modified:   openair1/SIMULATION/LTE_PHY/LTE_Configuration.h
	modified:   openair1/SIMULATION/LTE_PHY/dlsim.c
	modified:   openair1/SIMULATION/LTE_PHY/framegen.c
	modified:   openair1/SIMULATION/LTE_PHY/gpib_send.c
	modified:   openair1/SIMULATION/LTE_PHY/gpib_send.h
	modified:   openair1/SIMULATION/LTE_PHY/mbmssim.c
	modified:   openair1/SIMULATION/LTE_PHY/pbchsim.c
	modified:   openair1/SIMULATION/LTE_PHY/pdcchsim.c
	modified:   openair1/SIMULATION/LTE_PHY/prachsim.c
	modified:   openair1/SIMULATION/LTE_PHY/pucchsignalgegerator.h
	modified:   openair1/SIMULATION/LTE_PHY/pucchsignalgenerator.c
	modified:   openair1/SIMULATION/LTE_PHY/pucchsim.c
	modified:   openair1/SIMULATION/LTE_PHY/scansim.c
	modified:   openair1/SIMULATION/LTE_PHY/signalanalyzer.c
	modified:   openair1/SIMULATION/LTE_PHY/signalanalyzer.h
	modified:   openair1/SIMULATION/LTE_PHY/syncsim.c
	modified:   openair1/SIMULATION/LTE_PHY/test.c
	modified:   openair1/SIMULATION/LTE_PHY/ulsignalgenerator.c
	modified:   openair1/SIMULATION/LTE_PHY/ulsignalgenerator.h
	modified:   openair1/SIMULATION/LTE_PHY/ulsim.c
	modified:   openair1/SIMULATION/LTE_PHY/ulsim2.c
	modified:   openair1/SIMULATION/RF/adc.c
	modified:   openair1/SIMULATION/RF/dac.c
	modified:   openair1/SIMULATION/RF/defs.h
	modified:   openair1/SIMULATION/RF/rf.c
	modified:   openair1/SIMULATION/TOOLS/abstraction.c
	modified:   openair1/SIMULATION/TOOLS/ch_desc_proto.c
	modified:   openair1/SIMULATION/TOOLS/defs.h
	modified:   openair1/SIMULATION/TOOLS/gauss.c
	modified:   openair1/SIMULATION/TOOLS/llr_quantization.c
	modified:   openair1/SIMULATION/TOOLS/multipath_channel.c
	modified:   openair1/SIMULATION/TOOLS/multipath_tv_channel.c
	modified:   openair1/SIMULATION/TOOLS/random_channel.c
	modified:   openair1/SIMULATION/TOOLS/rangen_double.c
	modified:   openair1/SIMULATION/TOOLS/scm_corrmat.h
	modified:   openair1/SIMULATION/TOOLS/taus.c
	modified:   openair2/COMMON/as_message.h
	modified:   openair2/COMMON/commonDef.h
	modified:   openair2/COMMON/gtpv1_u_messages_def.h
	modified:   openair2/COMMON/gtpv1_u_messages_types.h
	modified:   openair2/COMMON/intertask_interface_conf.h
	modified:   openair2/COMMON/mac_messages_def.h
	modified:   openair2/COMMON/mac_messages_types.h
	modified:   openair2/COMMON/mac_primitives.h
	modified:   openair2/COMMON/mac_rlc_primitives.h
	modified:   openair2/COMMON/mac_rrc_primitives.h
	modified:   openair2/COMMON/messages_def.h
	modified:   openair2/COMMON/messages_types.h
	modified:   openair2/COMMON/nas_messages_def.h
	modified:   openair2/COMMON/nas_messages_types.h
	modified:   openair2/COMMON/networkDef.h
	modified:   openair2/COMMON/openair_defs.h
	modified:   openair2/COMMON/openair_types.h
	modified:   openair2/COMMON/pdcp_messages_def.h
	modified:   openair2/COMMON/pdcp_messages_types.h
	modified:   openair2/COMMON/phy_messages_def.h
	modified:   openair2/COMMON/phy_messages_types.h
	modified:   openair2/COMMON/platform_constants.h
	modified:   openair2/COMMON/platform_types.h
	modified:   openair2/COMMON/ral_messages_def.h
	modified:   openair2/COMMON/ral_messages_types.h
	modified:   openair2/COMMON/rlc_messages_def.h
	modified:   openair2/COMMON/rlc_messages_types.h
	modified:   openair2/COMMON/rrc_messages_def.h
	modified:   openair2/COMMON/rrc_messages_types.h
	modified:   openair2/COMMON/rrm_config_structs.h
	modified:   openair2/COMMON/rrm_constants.h
	modified:   openair2/COMMON/rtos_header.h
	modified:   openair2/COMMON/s1ap_messages_def.h
	modified:   openair2/COMMON/s1ap_messages_types.h
	modified:   openair2/COMMON/sctp_messages_def.h
	modified:   openair2/COMMON/sctp_messages_types.h
	modified:   openair2/COMMON/tasks_def.h
	modified:   openair2/COMMON/udp_messages_def.h
	modified:   openair2/COMMON/udp_messages_types.h
	modified:   openair2/COMMON/x2ap_messages_def.h
	modified:   openair2/COMMON/x2ap_messages_types.h
	modified:   openair2/DOCS/TEMPLATES/CODE/example_doxy.h
	modified:   openair2/ENB_APP/enb_app.c
	modified:   openair2/ENB_APP/enb_app.h
	modified:   openair2/ENB_APP/enb_config.c
	modified:   openair2/ENB_APP/enb_config.h
	modified:   openair2/LAYER2/MAC/config.c
	modified:   openair2/LAYER2/MAC/defs.h
	modified:   openair2/LAYER2/MAC/eNB_scheduler.c
	modified:   openair2/LAYER2/MAC/eNB_scheduler_RA.c
	modified:   openair2/LAYER2/MAC/eNB_scheduler_bch.c
	modified:   openair2/LAYER2/MAC/eNB_scheduler_dlsch.c
	modified:   openair2/LAYER2/MAC/eNB_scheduler_mch.c
	modified:   openair2/LAYER2/MAC/eNB_scheduler_primitives.c
	modified:   openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
	modified:   openair2/LAYER2/MAC/extern.h
	modified:   openair2/LAYER2/MAC/l1_helpers.c
	modified:   openair2/LAYER2/MAC/lte_transport_init.c
	modified:   openair2/LAYER2/MAC/main.c
	modified:   openair2/LAYER2/MAC/openair2_proc.c
	modified:   openair2/LAYER2/MAC/pre_processor.c
	modified:   openair2/LAYER2/MAC/proto.h
	modified:   openair2/LAYER2/MAC/ra_procedures.c
	modified:   openair2/LAYER2/MAC/rar_tools.c
	modified:   openair2/LAYER2/MAC/ue_procedures.c
	modified:   openair2/LAYER2/MAC/vars.h
	modified:   openair2/LAYER2/PDCP_v10.1.0/pdcp.c
	modified:   openair2/LAYER2/PDCP_v10.1.0/pdcp.h
	modified:   openair2/LAYER2/PDCP_v10.1.0/pdcp_control_primitive.c
	modified:   openair2/LAYER2/PDCP_v10.1.0/pdcp_control_primitives_proto_extern.h
	modified:   openair2/LAYER2/PDCP_v10.1.0/pdcp_fifo.c
	modified:   openair2/LAYER2/PDCP_v10.1.0/pdcp_netlink.c
	modified:   openair2/LAYER2/PDCP_v10.1.0/pdcp_primitives.c
	modified:   openair2/LAYER2/PDCP_v10.1.0/pdcp_primitives.h
	modified:   openair2/LAYER2/PDCP_v10.1.0/pdcp_proto_extern.h
	modified:   openair2/LAYER2/PDCP_v10.1.0/pdcp_security.c
	modified:   openair2/LAYER2/PDCP_v10.1.0/pdcp_sequence_manager.c
	modified:   openair2/LAYER2/PDCP_v10.1.0/pdcp_sequence_manager.h
	modified:   openair2/LAYER2/PDCP_v10.1.0/pdcp_thread.c
	modified:   openair2/LAYER2/PDCP_v10.1.0/pdcp_util.c
	modified:   openair2/LAYER2/PDCP_v10.1.0/pdcp_util.h
	modified:   openair2/LAYER2/RLC/AM_v9.3.0/rlc_am.c
	modified:   openair2/LAYER2/RLC/AM_v9.3.0/rlc_am.h
	modified:   openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_constants.h
	modified:   openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_entity.h
	modified:   openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_in_sdu.c
	modified:   openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_in_sdu.h
	modified:   openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_init.c
	modified:   openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_init.h
	modified:   openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_proto_extern.h
	modified:   openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_reassembly.c
	modified:   openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_reassembly.h
	modified:   openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_receiver.c
	modified:   openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_receiver.h
	modified:   openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_retransmit.c
	modified:   openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_retransmit.h
	modified:   openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_rx_list.c
	modified:   openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_rx_list.h
	modified:   openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_segment.c
	modified:   openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_segment.h
	modified:   openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_segments_holes.c
	modified:   openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_segments_holes.h
	modified:   openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_status_report.c
	modified:   openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_status_report.h
	modified:   openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_structs.h
	modified:   openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_test.c
	modified:   openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_test.h
	modified:   openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_timer_poll_retransmit.c
	modified:   openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_timer_poll_retransmit.h
	modified:   openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_timer_reordering.c
	modified:   openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_timer_reordering.h
	modified:   openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_timer_status_prohibit.c
	modified:   openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_timer_status_prohibit.h
	modified:   openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_windows.c
	modified:   openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_windows.h
	modified:   openair2/LAYER2/RLC/TM_v9.3.0/rlc_tm.c
	modified:   openair2/LAYER2/RLC/TM_v9.3.0/rlc_tm.h
	modified:   openair2/LAYER2/RLC/TM_v9.3.0/rlc_tm_entity.h
	modified:   openair2/LAYER2/RLC/TM_v9.3.0/rlc_tm_init.c
	modified:   openair2/LAYER2/RLC/TM_v9.3.0/rlc_tm_init.h
	modified:   openair2/LAYER2/RLC/TM_v9.3.0/rlc_tm_structs.h
	modified:   openair2/LAYER2/RLC/UM_v9.3.0/rlc_um.c
	modified:   openair2/LAYER2/RLC/UM_v9.3.0/rlc_um.h
	modified:   openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_constants.h
	modified:   openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_control_primitives.c
	modified:   openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_control_primitives.h
	modified:   openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_dar.c
	modified:   openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_dar.h
	modified:   openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_entity.h
	modified:   openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_fsm.c
	modified:   openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_fsm.h
	modified:   openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_reassembly.c
	modified:   openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_reassembly.h
	modified:   openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_receiver.c
	modified:   openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_receiver.h
	modified:   openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_segment.c
	modified:   openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_segment.h
	modified:   openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_structs.h
	modified:   openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_test.c
	modified:   openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_test.h
	modified:   openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_very_simple_test.c
	modified:   openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_very_simple_test.h
	modified:   openair2/LAYER2/RLC/rlc.c
	modified:   openair2/LAYER2/RLC/rlc.h
	modified:   openair2/LAYER2/RLC/rlc_def.h
	modified:   openair2/LAYER2/RLC/rlc_def_lte.h
	modified:   openair2/LAYER2/RLC/rlc_mac.c
	modified:   openair2/LAYER2/RLC/rlc_mpls.c
	modified:   openair2/LAYER2/RLC/rlc_primitives.h
	modified:   openair2/LAYER2/RLC/rlc_rrc.c
	modified:   openair2/LAYER2/layer2_top.c
	modified:   openair2/LAYER2/openair2_proc.c
	modified:   openair2/LAYER2/register.c
	modified:   openair2/LAYER2/register.h
	modified:   openair2/NAS/DRIVER/CELLULAR/CTL_TOOL/nascell_ioctl.c
	modified:   openair2/NAS/DRIVER/CELLULAR/CTL_TOOL/nascell_ioctl.h
	modified:   openair2/NAS/DRIVER/CELLULAR/NASMT/nasmt_ascontrol.c
	modified:   openair2/NAS/DRIVER/CELLULAR/NASMT/nasmt_classifier.c
	modified:   openair2/NAS/DRIVER/CELLULAR/NASMT/nasmt_common.c
	modified:   openair2/NAS/DRIVER/CELLULAR/NASMT/nasmt_constant.h
	modified:   openair2/NAS/DRIVER/CELLULAR/NASMT/nasmt_device.c
	modified:   openair2/NAS/DRIVER/CELLULAR/NASMT/nasmt_iocontrol.c
	modified:   openair2/NAS/DRIVER/CELLULAR/NASMT/nasmt_iocontrol.h
	modified:   openair2/NAS/DRIVER/CELLULAR/NASMT/nasmt_netlink.c
	modified:   openair2/NAS/DRIVER/CELLULAR/NASMT/nasmt_proto.h
	modified:   openair2/NAS/DRIVER/CELLULAR/NASMT/nasmt_sap.h
	modified:   openair2/NAS/DRIVER/CELLULAR/NASMT/nasmt_tool.c
	modified:   openair2/NAS/DRIVER/CELLULAR/NASMT/nasmt_variables.h
	modified:   openair2/NAS/DRIVER/CELLULAR/NASRG/nasrg_ascontrol.c
	modified:   openair2/NAS/DRIVER/CELLULAR/NASRG/nasrg_classifier.c
	modified:   openair2/NAS/DRIVER/CELLULAR/NASRG/nasrg_common.c
	modified:   openair2/NAS/DRIVER/CELLULAR/NASRG/nasrg_constant.h
	modified:   openair2/NAS/DRIVER/CELLULAR/NASRG/nasrg_device.c
	modified:   openair2/NAS/DRIVER/CELLULAR/NASRG/nasrg_iocontrol.c
	modified:   openair2/NAS/DRIVER/CELLULAR/NASRG/nasrg_iocontrol.h
	modified:   openair2/NAS/DRIVER/CELLULAR/NASRG/nasrg_netlink.c
	modified:   openair2/NAS/DRIVER/CELLULAR/NASRG/nasrg_proto.h
	modified:   openair2/NAS/DRIVER/CELLULAR/NASRG/nasrg_sap.h
	modified:   openair2/NAS/DRIVER/CELLULAR/NASRG/nasrg_tool.c
	modified:   openair2/NAS/DRIVER/CELLULAR/NASRG/nasrg_variables.h
	modified:   openair2/NAS/DRIVER/CELLULAR/NETLTEST/netltest.c
	modified:   openair2/NAS/SIMU_CELLULAR/nas_simu_proto.h
	modified:   openair2/NAS/SIMU_CELLULAR/nasrg_simu_meas.c
	modified:   openair2/NAS/SIMU_CELLULAR/rrm_fifo_standalone.c
	modified:   openair2/NAS/nas_ue_task.h
	modified:   openair2/NETWORK_DRIVER/LITE/RB_TOOL/rb_tool.c
	modified:   openair2/NETWORK_DRIVER/LITE/classifier.c
	modified:   openair2/NETWORK_DRIVER/LITE/common.c
	modified:   openair2/NETWORK_DRIVER/LITE/constant.h
	modified:   openair2/NETWORK_DRIVER/LITE/device.c
	modified:   openair2/NETWORK_DRIVER/LITE/ioctl.c
	modified:   openair2/NETWORK_DRIVER/LITE/ioctl.h
	modified:   openair2/NETWORK_DRIVER/LITE/local.h
	modified:   openair2/NETWORK_DRIVER/LITE/netlink.c
	modified:   openair2/NETWORK_DRIVER/LITE/proto_extern.h
	modified:   openair2/NETWORK_DRIVER/LITE/sap.h
	modified:   openair2/NETWORK_DRIVER/LITE/tool.c
	modified:   openair2/NETWORK_DRIVER/MESH/RB_TOOL/rb_tool.c
	modified:   openair2/NETWORK_DRIVER/MESH/classifier.c
	modified:   openair2/NETWORK_DRIVER/MESH/common.c
	modified:   openair2/NETWORK_DRIVER/MESH/constant.h
	modified:   openair2/NETWORK_DRIVER/MESH/device.c
	modified:   openair2/NETWORK_DRIVER/MESH/ioctl.c
	modified:   openair2/NETWORK_DRIVER/MESH/ioctl.h
	modified:   openair2/NETWORK_DRIVER/MESH/local.h
	modified:   openair2/NETWORK_DRIVER/MESH/mesh.c
	modified:   openair2/NETWORK_DRIVER/MESH/netlink.c
	modified:   openair2/NETWORK_DRIVER/MESH/proto_extern.h
	modified:   openair2/NETWORK_DRIVER/MESH/rrc_nas_primitives.h
	modified:   openair2/NETWORK_DRIVER/MESH/sap.h
	modified:   openair2/NETWORK_DRIVER/MESH/tool.c
	modified:   openair2/NETWORK_DRIVER/UE_IP/common.c
	modified:   openair2/NETWORK_DRIVER/UE_IP/constant.h
	modified:   openair2/NETWORK_DRIVER/UE_IP/device.c
	modified:   openair2/NETWORK_DRIVER/UE_IP/local.h
	modified:   openair2/NETWORK_DRIVER/UE_IP/netlink.c
	modified:   openair2/NETWORK_DRIVER/UE_IP/proto_extern.h
	modified:   openair2/NETWORK_DRIVER/UE_IP/sap.h
	modified:   openair2/PHY_INTERFACE/defs.h
	modified:   openair2/PHY_INTERFACE/extern.h
	modified:   openair2/PHY_INTERFACE/mac_phy_primitives.c
	modified:   openair2/PHY_INTERFACE/mac_phy_primitives.h
	modified:   openair2/PHY_INTERFACE/vars.h
	modified:   openair2/RRC/L2_INTERFACE/openair_rrc_L2_interface.c
	modified:   openair2/RRC/L2_INTERFACE/openair_rrc_L2_interface.h
	modified:   openair2/RRC/LITE/L2_interface.c
	modified:   openair2/RRC/LITE/MESSAGES/asn1_msg.c
	modified:   openair2/RRC/LITE/MESSAGES/asn1_msg.h
	modified:   openair2/RRC/LITE/defs.h
	modified:   openair2/RRC/LITE/extern.h
	modified:   openair2/RRC/LITE/proto.h
	modified:   openair2/RRC/LITE/rrc_2_rrm_msg.c
	modified:   openair2/RRC/LITE/rrc_UE.c
	modified:   openair2/RRC/LITE/rrc_UE_ral.c
	modified:   openair2/RRC/LITE/rrc_UE_ral.h
	modified:   openair2/RRC/LITE/rrc_common.c
	modified:   openair2/RRC/LITE/rrc_config.c
	modified:   openair2/RRC/LITE/rrc_eNB.c
	modified:   openair2/RRC/LITE/rrc_eNB_GTPV1U.c
	modified:   openair2/RRC/LITE/rrc_eNB_GTPV1U.h
	modified:   openair2/RRC/LITE/rrc_eNB_S1AP.c
	modified:   openair2/RRC/LITE/rrc_eNB_S1AP.h
	modified:   openair2/RRC/LITE/rrc_eNB_UE_context.c
	modified:   openair2/RRC/LITE/rrc_eNB_UE_context.h
	modified:   openair2/RRC/LITE/rrc_eNB_ral.c
	modified:   openair2/RRC/LITE/rrc_eNB_ral.h
	modified:   openair2/RRC/LITE/rrc_rrm_interface.c
	modified:   openair2/RRC/LITE/rrc_rrm_interface.h
	modified:   openair2/RRC/LITE/rrc_types.h
	modified:   openair2/RRC/LITE/rrm_2_rrc_msg.c
	modified:   openair2/RRC/LITE/utils.c
	modified:   openair2/RRC/LITE/vars.h
	modified:   openair2/RRC/NAS/nas_config.c
	modified:   openair2/RRC/NAS/nas_config.h
	modified:   openair2/RRC/NAS/rb_config.c
	modified:   openair2/RRC/NAS/rb_config.h
	modified:   openair2/RRM_4_RRC_LITE/src/platform.h
	modified:   openair2/RRM_4_RRC_LITE/src/platform_constants.h
	modified:   openair2/RRM_4_RRC_LITE/src/platform_defines.h
	modified:   openair2/RRM_4_RRC_LITE/src/radio_resources/Asn1Utils.cpp
	modified:   openair2/RRM_4_RRC_LITE/src/radio_resources/Asn1Utils.h
	modified:   openair2/RRM_4_RRC_LITE/src/radio_resources/Command.cpp
	modified:   openair2/RRM_4_RRC_LITE/src/radio_resources/Command.h
	modified:   openair2/RRM_4_RRC_LITE/src/radio_resources/DataRadioBearer.cpp
	modified:   openair2/RRM_4_RRC_LITE/src/radio_resources/DataRadioBearer.h
	modified:   openair2/RRM_4_RRC_LITE/src/radio_resources/ENodeB.cpp
	modified:   openair2/RRM_4_RRC_LITE/src/radio_resources/ENodeB.h
	modified:   openair2/RRM_4_RRC_LITE/src/radio_resources/Exceptions.h
	modified:   openair2/RRM_4_RRC_LITE/src/radio_resources/LogicalChannel.cpp
	modified:   openair2/RRM_4_RRC_LITE/src/radio_resources/LogicalChannel.h
	modified:   openair2/RRM_4_RRC_LITE/src/radio_resources/Mobile.cpp
	modified:   openair2/RRM_4_RRC_LITE/src/radio_resources/Mobile.h
	modified:   openair2/RRM_4_RRC_LITE/src/radio_resources/RadioBearer.cpp
	modified:   openair2/RRM_4_RRC_LITE/src/radio_resources/RadioBearer.h
	modified:   openair2/RRM_4_RRC_LITE/src/radio_resources/RadioResources.cpp
	modified:   openair2/RRM_4_RRC_LITE/src/radio_resources/RadioResources.h
	modified:   openair2/RRM_4_RRC_LITE/src/radio_resources/SignallingRadioBearer.cpp
	modified:   openair2/RRM_4_RRC_LITE/src/radio_resources/SignallingRadioBearer.h
	modified:   openair2/RRM_4_RRC_LITE/src/radio_resources/Transaction.cpp
	modified:   openair2/RRM_4_RRC_LITE/src/radio_resources/Transaction.h
	modified:   openair2/RRM_4_RRC_LITE/src/radio_resources/Transactions.cpp
	modified:   openair2/RRM_4_RRC_LITE/src/radio_resources/Transactions.h
	modified:   openair2/RRM_4_RRC_LITE/src/rrm.cpp
	modified:   openair2/UTIL/AT_COMMANDS/parser.c
	modified:   openair2/UTIL/AT_COMMANDS/parser.h
	modified:   openair2/UTIL/BIGPHYS/bigphys.c
	modified:   openair2/UTIL/BIGPHYS/defs.h
	modified:   openair2/UTIL/CLI/cli.c
	modified:   openair2/UTIL/CLI/cli.h
	modified:   openair2/UTIL/CLI/cli_cmd.c
	modified:   openair2/UTIL/CLI/cli_if.h
	modified:   openair2/UTIL/CLI/cli_server.c
	modified:   openair2/UTIL/FIFO/pad_list.c
	modified:   openair2/UTIL/FIFO/pad_list.h
	modified:   openair2/UTIL/FIFO/types.h
	modified:   openair2/UTIL/LISTS/list.c
	modified:   openair2/UTIL/LOG/log.c
	modified:   openair2/UTIL/LOG/log.h
	modified:   openair2/UTIL/LOG/log_extern.h
	modified:   openair2/UTIL/LOG/log_if.h
	modified:   openair2/UTIL/LOG/vcd_signal_dumper.c
	modified:   openair2/UTIL/LOG/vcd_signal_dumper.h
	modified:   openair2/UTIL/MATH/crc_byte.c
	modified:   openair2/UTIL/MATH/oml.c
	modified:   openair2/UTIL/MATH/oml.h
	modified:   openair2/UTIL/MATH/random.c
	modified:   openair2/UTIL/MATH/random_proto_extern.h
	modified:   openair2/UTIL/MATH/taus.c
	modified:   openair2/UTIL/MEM/mem_block.c
	modified:   openair2/UTIL/MEM/mem_block.h
	modified:   openair2/UTIL/MEM/mem_mngt.c
	modified:   openair2/UTIL/MEM/mem_mngt_proto_extern.h
	modified:   openair2/UTIL/MEM/mem_pool.h
	modified:   openair2/UTIL/OCG/OCG.c
	modified:   openair2/UTIL/OCG/OCG.h
	modified:   openair2/UTIL/OCG/OCG_call_emu.h
	modified:   openair2/UTIL/OCG/OCG_config_mobi.c
	modified:   openair2/UTIL/OCG/OCG_config_mobi.h
	modified:   openair2/UTIL/OCG/OCG_create_dir.c
	modified:   openair2/UTIL/OCG/OCG_create_dir.h
	modified:   openair2/UTIL/OCG/OCG_detect_file.c
	modified:   openair2/UTIL/OCG/OCG_detect_file.h
	modified:   openair2/UTIL/OCG/OCG_extern.h
	modified:   openair2/UTIL/OCG/OCG_generate_report.c
	modified:   openair2/UTIL/OCG/OCG_generate_report.h
	modified:   openair2/UTIL/OCG/OCG_get_opt.c
	modified:   openair2/UTIL/OCG/OCG_get_opt.h
	modified:   openair2/UTIL/OCG/OCG_if.h
	modified:   openair2/UTIL/OCG/OCG_parse_XML.c
	modified:   openair2/UTIL/OCG/OCG_parse_XML.h
	modified:   openair2/UTIL/OCG/OCG_parse_filename.c
	modified:   openair2/UTIL/OCG/OCG_parse_filename.h
	modified:   openair2/UTIL/OCG/OCG_save_XML.c
	modified:   openair2/UTIL/OCG/OCG_save_XML.h
	modified:   openair2/UTIL/OCG/OCG_vars.h
	modified:   openair2/UTIL/OMG/TraCIConstants.h
	modified:   openair2/UTIL/OMG/client_traci_OMG.c
	modified:   openair2/UTIL/OMG/client_traci_OMG.h
	modified:   openair2/UTIL/OMG/common.c
	modified:   openair2/UTIL/OMG/defs.h
	modified:   openair2/UTIL/OMG/grid.c
	modified:   openair2/UTIL/OMG/grid.h
	modified:   openair2/UTIL/OMG/id_manager.c
	modified:   openair2/UTIL/OMG/id_manager.h
	modified:   openair2/UTIL/OMG/job.c
	modified:   openair2/UTIL/OMG/mobility_parser.c
	modified:   openair2/UTIL/OMG/mobility_parser.h
	modified:   openair2/UTIL/OMG/omg.c
	modified:   openair2/UTIL/OMG/omg.h
	modified:   openair2/UTIL/OMG/omg_constants.h
	modified:   openair2/UTIL/OMG/omg_hashtable.c
	modified:   openair2/UTIL/OMG/omg_hashtable.h
	modified:   openair2/UTIL/OMG/omg_vars.h
	modified:   openair2/UTIL/OMG/rwalk.c
	modified:   openair2/UTIL/OMG/rwalk.h
	modified:   openair2/UTIL/OMG/rwp.c
	modified:   openair2/UTIL/OMG/rwp.h
	modified:   openair2/UTIL/OMG/socket_traci_OMG.c
	modified:   openair2/UTIL/OMG/socket_traci_OMG.h
	modified:   openair2/UTIL/OMG/static.c
	modified:   openair2/UTIL/OMG/static.h
	modified:   openair2/UTIL/OMG/steadystaterwp.c
	modified:   openair2/UTIL/OMG/steadystaterwp.h
	modified:   openair2/UTIL/OMG/storage_traci_OMG.c
	modified:   openair2/UTIL/OMG/storage_traci_OMG.h
	modified:   openair2/UTIL/OMG/sumo.c
	modified:   openair2/UTIL/OMG/sumo.h
	modified:   openair2/UTIL/OMG/trace.c
	modified:   openair2/UTIL/OMG/trace.h
	modified:   openair2/UTIL/OMG/trace_hashtable.c
	modified:   openair2/UTIL/OMG/trace_hashtable.h
	modified:   openair2/UTIL/OMV/communicationthread.cpp
	modified:   openair2/UTIL/OMV/communicationthread.h
	modified:   openair2/UTIL/OMV/mywindow.cpp
	modified:   openair2/UTIL/OMV/mywindow.h
	modified:   openair2/UTIL/OMV/omv.cpp
	modified:   openair2/UTIL/OMV/openglwidget.cpp
	modified:   openair2/UTIL/OMV/openglwidget.h
	modified:   openair2/UTIL/OMV/structures.h
	modified:   openair2/UTIL/OPT/mac_pcap.h
	modified:   openair2/UTIL/OPT/opt.h
	modified:   openair2/UTIL/OPT/socket_sender.c
	modified:   openair2/UTIL/OPT/vars.h
	modified:   openair2/UTIL/OSA/osa_defs.h
	modified:   openair2/UTIL/OSA/osa_internal.h
	modified:   openair2/UTIL/OSA/osa_key_deriver.c
	modified:   openair2/UTIL/OSA/osa_snow3g.h
	modified:   openair2/UTIL/OSA/osa_stream_eea.c
	modified:   openair2/UTIL/OSA/osa_stream_eia.c
	modified:   openair2/UTIL/OTG/main.c
	modified:   openair2/UTIL/OTG/otg.c
	modified:   openair2/UTIL/OTG/otg.h
	modified:   openair2/UTIL/OTG/otg_config.h
	modified:   openair2/UTIL/OTG/otg_defs.h
	modified:   openair2/UTIL/OTG/otg_externs.h
	modified:   openair2/UTIL/OTG/otg_form.c
	modified:   openair2/UTIL/OTG/otg_form.h
	modified:   openair2/UTIL/OTG/otg_kpi.c
	modified:   openair2/UTIL/OTG/otg_kpi.h
	modified:   openair2/UTIL/OTG/otg_models.c
	modified:   openair2/UTIL/OTG/otg_models.h
	modified:   openair2/UTIL/OTG/otg_rx.c
	modified:   openair2/UTIL/OTG/otg_rx.h
	modified:   openair2/UTIL/OTG/otg_rx_socket.c
	modified:   openair2/UTIL/OTG/otg_rx_socket.h
	modified:   openair2/UTIL/OTG/otg_tx.c
	modified:   openair2/UTIL/OTG/otg_tx.h
	modified:   openair2/UTIL/OTG/otg_tx_socket.c
	modified:   openair2/UTIL/OTG/otg_tx_socket.h
	modified:   openair2/UTIL/OTG/otg_vars.h
	modified:   openair2/UTIL/OTG/traffic_config.h
	modified:   openair2/UTIL/TIMER/umts_timer.c
	modified:   openair2/UTIL/TIMER/umts_timer.h
	modified:   openair2/UTIL/TIMER/umts_timer_proto_extern.h
	modified:   openair2/UTIL/TIMER/umts_timer_struct.h
	modified:   openair2/UTIL/TRACE/fifo_printf.c
	modified:   openair2/UTIL/TRACE/fifo_printf.h
	modified:   openair2/UTIL/TRACE/fifo_printf_proto_extern.h
	modified:   openair2/UTIL/TRACE/print.h
	modified:   openair2/X2AP/x2ap.c
	modified:   openair2/X2AP/x2ap.h
	modified:   openair2/X2AP/x2ap_common.c
	modified:   openair2/X2AP/x2ap_common.h
	modified:   openair3/COMMON/common_types.h
	modified:   openair3/COMMON/gtpv1_u_messages_def.h
	modified:   openair3/COMMON/gtpv1_u_messages_types.h
	modified:   openair3/COMMON/intertask_interface_conf.h
	modified:   openair3/COMMON/messages_def.h
	modified:   openair3/COMMON/messages_types.h
	modified:   openair3/COMMON/nas_messages_def.h
	modified:   openair3/COMMON/nas_messages_types.h
	modified:   openair3/COMMON/s1ap_messages_def.h
	modified:   openair3/COMMON/s1ap_messages_types.h
	modified:   openair3/COMMON/sctp_messages_def.h
	modified:   openair3/COMMON/sctp_messages_types.h
	modified:   openair3/COMMON/security_types.h
	modified:   openair3/COMMON/tasks_def.h
	modified:   openair3/COMMON/udp_messages_def.h
	modified:   openair3/COMMON/udp_messages_types.h
	modified:   openair3/GTPV1-U/gtpv1u.h
	modified:   openair3/GTPV1-U/gtpv1u_eNB.c
	modified:   openair3/GTPV1-U/gtpv1u_eNB_defs.h
	modified:   openair3/GTPV1-U/gtpv1u_eNB_task.h
	modified:   openair3/GTPV1-U/gtpv1u_sgw_defs.h
	modified:   openair3/GTPV1-U/gtpv1u_task.c
	modified:   openair3/GTPV1-U/gtpv1u_teid_pool.c
	modified:   openair3/NAS/COMMON/API/NETWORK/as_message.c
	modified:   openair3/NAS/COMMON/API/NETWORK/l2_message.h
	modified:   openair3/NAS/COMMON/API/NETWORK/nas_message.c
	modified:   openair3/NAS/COMMON/API/NETWORK/nas_message.h
	modified:   openair3/NAS/COMMON/API/NETWORK/network_api.c
	modified:   openair3/NAS/COMMON/API/NETWORK/network_api.h
	modified:   openair3/NAS/COMMON/EMM/MSG/AttachAccept.c
	modified:   openair3/NAS/COMMON/EMM/MSG/AttachAccept.h
	modified:   openair3/NAS/COMMON/EMM/MSG/AttachComplete.c
	modified:   openair3/NAS/COMMON/EMM/MSG/AttachComplete.h
	modified:   openair3/NAS/COMMON/EMM/MSG/AttachReject.c
	modified:   openair3/NAS/COMMON/EMM/MSG/AttachReject.h
	modified:   openair3/NAS/COMMON/EMM/MSG/AttachRequest.c
	modified:   openair3/NAS/COMMON/EMM/MSG/AttachRequest.h
	modified:   openair3/NAS/COMMON/EMM/MSG/AuthenticationFailure.c
	modified:   openair3/NAS/COMMON/EMM/MSG/AuthenticationFailure.h
	modified:   openair3/NAS/COMMON/EMM/MSG/AuthenticationReject.c
	modified:   openair3/NAS/COMMON/EMM/MSG/AuthenticationReject.h
	modified:   openair3/NAS/COMMON/EMM/MSG/AuthenticationRequest.c
	modified:   openair3/NAS/COMMON/EMM/MSG/AuthenticationRequest.h
	modified:   openair3/NAS/COMMON/EMM/MSG/AuthenticationResponse.c
	modified:   openair3/NAS/COMMON/EMM/MSG/AuthenticationResponse.h
	modified:   openair3/NAS/COMMON/EMM/MSG/CsServiceNotification.c
	modified:   openair3/NAS/COMMON/EMM/MSG/CsServiceNotification.h
	modified:   openair3/NAS/COMMON/EMM/MSG/DetachAccept.c
	modified:   openair3/NAS/COMMON/EMM/MSG/DetachAccept.h
	modified:   openair3/NAS/COMMON/EMM/MSG/DetachRequest.c
	modified:   openair3/NAS/COMMON/EMM/MSG/DetachRequest.h
	modified:   openair3/NAS/COMMON/EMM/MSG/DownlinkNasTransport.c
	modified:   openair3/NAS/COMMON/EMM/MSG/DownlinkNasTransport.h
	modified:   openair3/NAS/COMMON/EMM/MSG/EmmInformation.c
	modified:   openair3/NAS/COMMON/EMM/MSG/EmmInformation.h
	modified:   openair3/NAS/COMMON/EMM/MSG/EmmStatus.c
	modified:   openair3/NAS/COMMON/EMM/MSG/EmmStatus.h
	modified:   openair3/NAS/COMMON/EMM/MSG/ExtendedServiceRequest.c
	modified:   openair3/NAS/COMMON/EMM/MSG/ExtendedServiceRequest.h
	modified:   openair3/NAS/COMMON/EMM/MSG/GutiReallocationCommand.c
	modified:   openair3/NAS/COMMON/EMM/MSG/GutiReallocationCommand.h
	modified:   openair3/NAS/COMMON/EMM/MSG/GutiReallocationComplete.c
	modified:   openair3/NAS/COMMON/EMM/MSG/GutiReallocationComplete.h
	modified:   openair3/NAS/COMMON/EMM/MSG/IdentityRequest.c
	modified:   openair3/NAS/COMMON/EMM/MSG/IdentityRequest.h
	modified:   openair3/NAS/COMMON/EMM/MSG/IdentityResponse.c
	modified:   openair3/NAS/COMMON/EMM/MSG/IdentityResponse.h
	modified:   openair3/NAS/COMMON/EMM/MSG/NASSecurityModeCommand.h
	modified:   openair3/NAS/COMMON/EMM/MSG/NASSecurityModeComplete.h
	modified:   openair3/NAS/COMMON/EMM/MSG/SecurityModeCommand.c
	modified:   openair3/NAS/COMMON/EMM/MSG/SecurityModeComplete.c
	modified:   openair3/NAS/COMMON/EMM/MSG/SecurityModeReject.c
	modified:   openair3/NAS/COMMON/EMM/MSG/SecurityModeReject.h
	modified:   openair3/NAS/COMMON/EMM/MSG/ServiceReject.c
	modified:   openair3/NAS/COMMON/EMM/MSG/ServiceReject.h
	modified:   openair3/NAS/COMMON/EMM/MSG/ServiceRequest.c
	modified:   openair3/NAS/COMMON/EMM/MSG/ServiceRequest.h
	modified:   openair3/NAS/COMMON/EMM/MSG/TrackingAreaUpdateAccept.c
	modified:   openair3/NAS/COMMON/EMM/MSG/TrackingAreaUpdateAccept.h
	modified:   openair3/NAS/COMMON/EMM/MSG/TrackingAreaUpdateComplete.c
	modified:   openair3/NAS/COMMON/EMM/MSG/TrackingAreaUpdateComplete.h
	modified:   openair3/NAS/COMMON/EMM/MSG/TrackingAreaUpdateReject.c
	modified:   openair3/NAS/COMMON/EMM/MSG/TrackingAreaUpdateReject.h
	modified:   openair3/NAS/COMMON/EMM/MSG/TrackingAreaUpdateRequest.c
	modified:   openair3/NAS/COMMON/EMM/MSG/TrackingAreaUpdateRequest.h
	modified:   openair3/NAS/COMMON/EMM/MSG/UplinkNasTransport.c
	modified:   openair3/NAS/COMMON/EMM/MSG/UplinkNasTransport.h
	modified:   openair3/NAS/COMMON/EMM/MSG/emm_cause.h
	modified:   openair3/NAS/COMMON/EMM/MSG/emm_msg.c
	modified:   openair3/NAS/COMMON/EMM/MSG/emm_msg.h
	modified:   openair3/NAS/COMMON/EMM/MSG/emm_msgDef.h
	modified:   openair3/NAS/COMMON/ESM/MSG/ActivateDedicatedEpsBearerContextAccept.c
	modified:   openair3/NAS/COMMON/ESM/MSG/ActivateDedicatedEpsBearerContextAccept.h
	modified:   openair3/NAS/COMMON/ESM/MSG/ActivateDedicatedEpsBearerContextReject.c
	modified:   openair3/NAS/COMMON/ESM/MSG/ActivateDedicatedEpsBearerContextReject.h
	modified:   openair3/NAS/COMMON/ESM/MSG/ActivateDedicatedEpsBearerContextRequest.c
	modified:   openair3/NAS/COMMON/ESM/MSG/ActivateDedicatedEpsBearerContextRequest.h
	modified:   openair3/NAS/COMMON/ESM/MSG/ActivateDefaultEpsBearerContextAccept.c
	modified:   openair3/NAS/COMMON/ESM/MSG/ActivateDefaultEpsBearerContextAccept.h
	modified:   openair3/NAS/COMMON/ESM/MSG/ActivateDefaultEpsBearerContextReject.c
	modified:   openair3/NAS/COMMON/ESM/MSG/ActivateDefaultEpsBearerContextReject.h
	modified:   openair3/NAS/COMMON/ESM/MSG/ActivateDefaultEpsBearerContextRequest.c
	modified:   openair3/NAS/COMMON/ESM/MSG/ActivateDefaultEpsBearerContextRequest.h
	modified:   openair3/NAS/COMMON/ESM/MSG/BearerResourceAllocationReject.c
	modified:   openair3/NAS/COMMON/ESM/MSG/BearerResourceAllocationReject.h
	modified:   openair3/NAS/COMMON/ESM/MSG/BearerResourceAllocationRequest.c
	modified:   openair3/NAS/COMMON/ESM/MSG/BearerResourceAllocationRequest.h
	modified:   openair3/NAS/COMMON/ESM/MSG/BearerResourceModificationReject.c
	modified:   openair3/NAS/COMMON/ESM/MSG/BearerResourceModificationReject.h
	modified:   openair3/NAS/COMMON/ESM/MSG/BearerResourceModificationRequest.c
	modified:   openair3/NAS/COMMON/ESM/MSG/BearerResourceModificationRequest.h
	modified:   openair3/NAS/COMMON/ESM/MSG/DeactivateEpsBearerContextAccept.c
	modified:   openair3/NAS/COMMON/ESM/MSG/DeactivateEpsBearerContextAccept.h
	modified:   openair3/NAS/COMMON/ESM/MSG/DeactivateEpsBearerContextRequest.c
	modified:   openair3/NAS/COMMON/ESM/MSG/DeactivateEpsBearerContextRequest.h
	modified:   openair3/NAS/COMMON/ESM/MSG/EsmInformationRequest.c
	modified:   openair3/NAS/COMMON/ESM/MSG/EsmInformationRequest.h
	modified:   openair3/NAS/COMMON/ESM/MSG/EsmInformationResponse.c
	modified:   openair3/NAS/COMMON/ESM/MSG/EsmInformationResponse.h
	modified:   openair3/NAS/COMMON/ESM/MSG/EsmStatus.c
	modified:   openair3/NAS/COMMON/ESM/MSG/EsmStatus.h
	modified:   openair3/NAS/COMMON/ESM/MSG/ModifyEpsBearerContextAccept.c
	modified:   openair3/NAS/COMMON/ESM/MSG/ModifyEpsBearerContextAccept.h
	modified:   openair3/NAS/COMMON/ESM/MSG/ModifyEpsBearerContextReject.c
	modified:   openair3/NAS/COMMON/ESM/MSG/ModifyEpsBearerContextReject.h
	modified:   openair3/NAS/COMMON/ESM/MSG/ModifyEpsBearerContextRequest.c
	modified:   openair3/NAS/COMMON/ESM/MSG/ModifyEpsBearerContextRequest.h
	modified:   openair3/NAS/COMMON/ESM/MSG/PdnConnectivityReject.c
	modified:   openair3/NAS/COMMON/ESM/MSG/PdnConnectivityReject.h
	modified:   openair3/NAS/COMMON/ESM/MSG/PdnConnectivityRequest.c
	modified:   openair3/NAS/COMMON/ESM/MSG/PdnConnectivityRequest.h
	modified:   openair3/NAS/COMMON/ESM/MSG/PdnDisconnectReject.c
	modified:   openair3/NAS/COMMON/ESM/MSG/PdnDisconnectReject.h
	modified:   openair3/NAS/COMMON/ESM/MSG/PdnDisconnectRequest.c
	modified:   openair3/NAS/COMMON/ESM/MSG/PdnDisconnectRequest.h
	modified:   openair3/NAS/COMMON/ESM/MSG/esm_cause.h
	modified:   openair3/NAS/COMMON/ESM/MSG/esm_msg.c
	modified:   openair3/NAS/COMMON/ESM/MSG/esm_msg.h
	modified:   openair3/NAS/COMMON/ESM/MSG/esm_msgDef.h
	modified:   openair3/NAS/COMMON/IES/AccessPointName.c
	modified:   openair3/NAS/COMMON/IES/AccessPointName.h
	modified:   openair3/NAS/COMMON/IES/AdditionalUpdateResult.c
	modified:   openair3/NAS/COMMON/IES/AdditionalUpdateResult.h
	modified:   openair3/NAS/COMMON/IES/AdditionalUpdateType.c
	modified:   openair3/NAS/COMMON/IES/AdditionalUpdateType.h
	modified:   openair3/NAS/COMMON/IES/ApnAggregateMaximumBitRate.c
	modified:   openair3/NAS/COMMON/IES/ApnAggregateMaximumBitRate.h
	modified:   openair3/NAS/COMMON/IES/AuthenticationFailureParameter.c
	modified:   openair3/NAS/COMMON/IES/AuthenticationFailureParameter.h
	modified:   openair3/NAS/COMMON/IES/AuthenticationParameterAutn.c
	modified:   openair3/NAS/COMMON/IES/AuthenticationParameterAutn.h
	modified:   openair3/NAS/COMMON/IES/AuthenticationParameterRand.c
	modified:   openair3/NAS/COMMON/IES/AuthenticationParameterRand.h
	modified:   openair3/NAS/COMMON/IES/AuthenticationResponseParameter.c
	modified:   openair3/NAS/COMMON/IES/AuthenticationResponseParameter.h
	modified:   openair3/NAS/COMMON/IES/CipheringKeySequenceNumber.c
	modified:   openair3/NAS/COMMON/IES/CipheringKeySequenceNumber.h
	modified:   openair3/NAS/COMMON/IES/Cli.c
	modified:   openair3/NAS/COMMON/IES/Cli.h
	modified:   openair3/NAS/COMMON/IES/CsfbResponse.c
	modified:   openair3/NAS/COMMON/IES/CsfbResponse.h
	modified:   openair3/NAS/COMMON/IES/DaylightSavingTime.c
	modified:   openair3/NAS/COMMON/IES/DaylightSavingTime.h
	modified:   openair3/NAS/COMMON/IES/DetachType.c
	modified:   openair3/NAS/COMMON/IES/DetachType.h
	modified:   openair3/NAS/COMMON/IES/DrxParameter.c
	modified:   openair3/NAS/COMMON/IES/DrxParameter.h
	modified:   openair3/NAS/COMMON/IES/EmergencyNumberList.c
	modified:   openair3/NAS/COMMON/IES/EmergencyNumberList.h
	modified:   openair3/NAS/COMMON/IES/EmmCause.c
	modified:   openair3/NAS/COMMON/IES/EmmCause.h
	modified:   openair3/NAS/COMMON/IES/EpsAttachResult.c
	modified:   openair3/NAS/COMMON/IES/EpsAttachResult.h
	modified:   openair3/NAS/COMMON/IES/EpsAttachType.c
	modified:   openair3/NAS/COMMON/IES/EpsAttachType.h
	modified:   openair3/NAS/COMMON/IES/EpsBearerContextStatus.c
	modified:   openair3/NAS/COMMON/IES/EpsBearerContextStatus.h
	modified:   openair3/NAS/COMMON/IES/EpsBearerIdentity.c
	modified:   openair3/NAS/COMMON/IES/EpsBearerIdentity.h
	modified:   openair3/NAS/COMMON/IES/EpsMobileIdentity.c
	modified:   openair3/NAS/COMMON/IES/EpsMobileIdentity.h
	modified:   openair3/NAS/COMMON/IES/EpsNetworkFeatureSupport.c
	modified:   openair3/NAS/COMMON/IES/EpsNetworkFeatureSupport.h
	modified:   openair3/NAS/COMMON/IES/EpsQualityOfService.c
	modified:   openair3/NAS/COMMON/IES/EpsQualityOfService.h
	modified:   openair3/NAS/COMMON/IES/EpsUpdateResult.c
	modified:   openair3/NAS/COMMON/IES/EpsUpdateResult.h
	modified:   openair3/NAS/COMMON/IES/EpsUpdateType.c
	modified:   openair3/NAS/COMMON/IES/EpsUpdateType.h
	modified:   openair3/NAS/COMMON/IES/EsmCause.c
	modified:   openair3/NAS/COMMON/IES/EsmCause.h
	modified:   openair3/NAS/COMMON/IES/EsmInformationTransferFlag.c
	modified:   openair3/NAS/COMMON/IES/EsmInformationTransferFlag.h
	modified:   openair3/NAS/COMMON/IES/EsmMessageContainer.c
	modified:   openair3/NAS/COMMON/IES/EsmMessageContainer.h
	modified:   openair3/NAS/COMMON/IES/GprsTimer.c
	modified:   openair3/NAS/COMMON/IES/GprsTimer.h
	modified:   openair3/NAS/COMMON/IES/GutiType.c
	modified:   openair3/NAS/COMMON/IES/GutiType.h
	modified:   openair3/NAS/COMMON/IES/IdentityType2.c
	modified:   openair3/NAS/COMMON/IES/IdentityType2.h
	modified:   openair3/NAS/COMMON/IES/ImeisvRequest.c
	modified:   openair3/NAS/COMMON/IES/ImeisvRequest.h
	modified:   openair3/NAS/COMMON/IES/KsiAndSequenceNumber.c
	modified:   openair3/NAS/COMMON/IES/KsiAndSequenceNumber.h
	modified:   openair3/NAS/COMMON/IES/LcsClientIdentity.c
	modified:   openair3/NAS/COMMON/IES/LcsClientIdentity.h
	modified:   openair3/NAS/COMMON/IES/LcsIndicator.c
	modified:   openair3/NAS/COMMON/IES/LcsIndicator.h
	modified:   openair3/NAS/COMMON/IES/LinkedEpsBearerIdentity.c
	modified:   openair3/NAS/COMMON/IES/LinkedEpsBearerIdentity.h
	modified:   openair3/NAS/COMMON/IES/LlcServiceAccessPointIdentifier.c
	modified:   openair3/NAS/COMMON/IES/LlcServiceAccessPointIdentifier.h
	modified:   openair3/NAS/COMMON/IES/LocationAreaIdentification.c
	modified:   openair3/NAS/COMMON/IES/LocationAreaIdentification.h
	modified:   openair3/NAS/COMMON/IES/MessageType.c
	modified:   openair3/NAS/COMMON/IES/MessageType.h
	modified:   openair3/NAS/COMMON/IES/MobileIdentity.c
	modified:   openair3/NAS/COMMON/IES/MobileIdentity.h
	modified:   openair3/NAS/COMMON/IES/MobileStationClassmark2.c
	modified:   openair3/NAS/COMMON/IES/MobileStationClassmark2.h
	modified:   openair3/NAS/COMMON/IES/MobileStationClassmark3.c
	modified:   openair3/NAS/COMMON/IES/MobileStationClassmark3.h
	modified:   openair3/NAS/COMMON/IES/MsNetworkCapability.c
	modified:   openair3/NAS/COMMON/IES/MsNetworkCapability.h
	modified:   openair3/NAS/COMMON/IES/MsNetworkFeatureSupport.c
	modified:   openair3/NAS/COMMON/IES/MsNetworkFeatureSupport.h
	modified:   openair3/NAS/COMMON/IES/NasKeySetIdentifier.c
	modified:   openair3/NAS/COMMON/IES/NasKeySetIdentifier.h
	modified:   openair3/NAS/COMMON/IES/NasMessageContainer.c
	modified:   openair3/NAS/COMMON/IES/NasMessageContainer.h
	modified:   openair3/NAS/COMMON/IES/NasRequestType.c
	modified:   openair3/NAS/COMMON/IES/NasRequestType.h
	modified:   openair3/NAS/COMMON/IES/NasSecurityAlgorithms.c
	modified:   openair3/NAS/COMMON/IES/NasSecurityAlgorithms.h
	modified:   openair3/NAS/COMMON/IES/NetworkName.c
	modified:   openair3/NAS/COMMON/IES/NetworkName.h
	modified:   openair3/NAS/COMMON/IES/Nonce.c
	modified:   openair3/NAS/COMMON/IES/Nonce.h
	modified:   openair3/NAS/COMMON/IES/PTmsiSignature.c
	modified:   openair3/NAS/COMMON/IES/PTmsiSignature.h
	modified:   openair3/NAS/COMMON/IES/PacketFlowIdentifier.c
	modified:   openair3/NAS/COMMON/IES/PacketFlowIdentifier.h
	modified:   openair3/NAS/COMMON/IES/PagingIdentity.c
	modified:   openair3/NAS/COMMON/IES/PagingIdentity.h
	modified:   openair3/NAS/COMMON/IES/PdnAddress.c
	modified:   openair3/NAS/COMMON/IES/PdnAddress.h
	modified:   openair3/NAS/COMMON/IES/PdnType.c
	modified:   openair3/NAS/COMMON/IES/PdnType.h
	modified:   openair3/NAS/COMMON/IES/PlmnList.c
	modified:   openair3/NAS/COMMON/IES/PlmnList.h
	modified:   openair3/NAS/COMMON/IES/ProcedureTransactionIdentity.c
	modified:   openair3/NAS/COMMON/IES/ProcedureTransactionIdentity.h
	modified:   openair3/NAS/COMMON/IES/ProtocolConfigurationOptions.c
	modified:   openair3/NAS/COMMON/IES/ProtocolConfigurationOptions.h
	modified:   openair3/NAS/COMMON/IES/ProtocolDiscriminator.c
	modified:   openair3/NAS/COMMON/IES/ProtocolDiscriminator.h
	modified:   openair3/NAS/COMMON/IES/QualityOfService.c
	modified:   openair3/NAS/COMMON/IES/QualityOfService.h
	modified:   openair3/NAS/COMMON/IES/RadioPriority.c
	modified:   openair3/NAS/COMMON/IES/RadioPriority.h
	modified:   openair3/NAS/COMMON/IES/SecurityHeaderType.c
	modified:   openair3/NAS/COMMON/IES/SecurityHeaderType.h
	modified:   openair3/NAS/COMMON/IES/ServiceType.c
	modified:   openair3/NAS/COMMON/IES/ServiceType.h
	modified:   openair3/NAS/COMMON/IES/ShortMac.c
	modified:   openair3/NAS/COMMON/IES/ShortMac.h
	modified:   openair3/NAS/COMMON/IES/SsCode.c
	modified:   openair3/NAS/COMMON/IES/SsCode.h
	modified:   openair3/NAS/COMMON/IES/SupportedCodecList.c
	modified:   openair3/NAS/COMMON/IES/SupportedCodecList.h
	modified:   openair3/NAS/COMMON/IES/TimeZone.c
	modified:   openair3/NAS/COMMON/IES/TimeZone.h
	modified:   openair3/NAS/COMMON/IES/TimeZoneAndTime.c
	modified:   openair3/NAS/COMMON/IES/TimeZoneAndTime.h
	modified:   openair3/NAS/COMMON/IES/TmsiStatus.c
	modified:   openair3/NAS/COMMON/IES/TmsiStatus.h
	modified:   openair3/NAS/COMMON/IES/TrackingAreaIdentity.c
	modified:   openair3/NAS/COMMON/IES/TrackingAreaIdentity.h
	modified:   openair3/NAS/COMMON/IES/TrackingAreaIdentityList.c
	modified:   openair3/NAS/COMMON/IES/TrackingAreaIdentityList.h
	modified:   openair3/NAS/COMMON/IES/TrafficFlowAggregateDescription.c
	modified:   openair3/NAS/COMMON/IES/TrafficFlowAggregateDescription.h
	modified:   openair3/NAS/COMMON/IES/TrafficFlowTemplate.c
	modified:   openair3/NAS/COMMON/IES/TrafficFlowTemplate.h
	modified:   openair3/NAS/COMMON/IES/TransactionIdentifier.c
	modified:   openair3/NAS/COMMON/IES/TransactionIdentifier.h
	modified:   openair3/NAS/COMMON/IES/UeNetworkCapability.c
	modified:   openair3/NAS/COMMON/IES/UeNetworkCapability.h
	modified:   openair3/NAS/COMMON/IES/UeRadioCapabilityInformationUpdateNeeded.c
	modified:   openair3/NAS/COMMON/IES/UeRadioCapabilityInformationUpdateNeeded.h
	modified:   openair3/NAS/COMMON/IES/UeSecurityCapability.c
	modified:   openair3/NAS/COMMON/IES/UeSecurityCapability.h
	modified:   openair3/NAS/COMMON/IES/VoiceDomainPreferenceAndUeUsageSetting.c
	modified:   openair3/NAS/COMMON/IES/VoiceDomainPreferenceAndUeUsageSetting.h
	modified:   openair3/NAS/COMMON/UTIL/OctetString.c
	modified:   openair3/NAS/COMMON/UTIL/OctetString.h
	modified:   openair3/NAS/COMMON/UTIL/TLVDecoder.c
	modified:   openair3/NAS/COMMON/UTIL/TLVDecoder.h
	modified:   openair3/NAS/COMMON/UTIL/TLVEncoder.c
	modified:   openair3/NAS/COMMON/UTIL/TLVEncoder.h
	modified:   openair3/NAS/COMMON/UTIL/device.c
	modified:   openair3/NAS/COMMON/UTIL/device.h
	modified:   openair3/NAS/COMMON/UTIL/memory.c
	modified:   openair3/NAS/COMMON/UTIL/memory.h
	modified:   openair3/NAS/COMMON/UTIL/nas_log.c
	modified:   openair3/NAS/COMMON/UTIL/nas_log.h
	modified:   openair3/NAS/COMMON/UTIL/nas_timer.c
	modified:   openair3/NAS/COMMON/UTIL/nas_timer.h
	modified:   openair3/NAS/COMMON/UTIL/parser.c
	modified:   openair3/NAS/COMMON/UTIL/parser.h
	modified:   openair3/NAS/COMMON/UTIL/socket.c
	modified:   openair3/NAS/COMMON/UTIL/socket.h
	modified:   openair3/NAS/COMMON/UTIL/stty.c
	modified:   openair3/NAS/COMMON/UTIL/tst/timer.c
	modified:   openair3/NAS/COMMON/securityDef.h
	modified:   openair3/NAS/COMMON/userDef.h
	modified:   openair3/NAS/TOOLS/network.h
	modified:   openair3/NAS/TOOLS/ue_data.c
	modified:   openair3/NAS/TOOLS/usim_data.c
	modified:   openair3/NAS/UE/API/USER/at_command.c
	modified:   openair3/NAS/UE/API/USER/at_command.h
	modified:   openair3/NAS/UE/API/USER/at_error.c
	modified:   openair3/NAS/UE/API/USER/at_error.h
	modified:   openair3/NAS/UE/API/USER/at_response.c
	modified:   openair3/NAS/UE/API/USER/at_response.h
	modified:   openair3/NAS/UE/API/USER/tst/at_parser.c
	modified:   openair3/NAS/UE/API/USER/user_api.c
	modified:   openair3/NAS/UE/API/USER/user_api.h
	modified:   openair3/NAS/UE/API/USER/user_indication.c
	modified:   openair3/NAS/UE/API/USER/user_indication.h
	modified:   openair3/NAS/UE/API/USIM/aka_functions.h
	modified:   openair3/NAS/UE/API/USIM/usim_api.c
	modified:   openair3/NAS/UE/API/USIM/usim_api.h
	modified:   openair3/NAS/UE/EMM/Attach.c
	modified:   openair3/NAS/UE/EMM/Authentication.c
	modified:   openair3/NAS/UE/EMM/Detach.c
	modified:   openair3/NAS/UE/EMM/EmmStatusHdl.c
	modified:   openair3/NAS/UE/EMM/Identification.c
	modified:   openair3/NAS/UE/EMM/IdleMode.c
	modified:   openair3/NAS/UE/EMM/IdleMode.h
	modified:   openair3/NAS/UE/EMM/LowerLayer.c
	modified:   openair3/NAS/UE/EMM/LowerLayer.h
	modified:   openair3/NAS/UE/EMM/SAP/EmmDeregistered.c
	modified:   openair3/NAS/UE/EMM/SAP/EmmDeregisteredAttachNeeded.c
	modified:   openair3/NAS/UE/EMM/SAP/EmmDeregisteredAttemptingToAttach.c
	modified:   openair3/NAS/UE/EMM/SAP/EmmDeregisteredInitiated.c
	modified:   openair3/NAS/UE/EMM/SAP/EmmDeregisteredLimitedService.c
	modified:   openair3/NAS/UE/EMM/SAP/EmmDeregisteredNoCellAvailable.c
	modified:   openair3/NAS/UE/EMM/SAP/EmmDeregisteredNoImsi.c
	modified:   openair3/NAS/UE/EMM/SAP/EmmDeregisteredNormalService.c
	modified:   openair3/NAS/UE/EMM/SAP/EmmDeregisteredPlmnSearch.c
	modified:   openair3/NAS/UE/EMM/SAP/EmmNull.c
	modified:   openair3/NAS/UE/EMM/SAP/EmmRegistered.c
	modified:   openair3/NAS/UE/EMM/SAP/EmmRegisteredAttemptingToUpdate.c
	modified:   openair3/NAS/UE/EMM/SAP/EmmRegisteredImsiDetachInitiated.c
	modified:   openair3/NAS/UE/EMM/SAP/EmmRegisteredInitiated.c
	modified:   openair3/NAS/UE/EMM/SAP/EmmRegisteredLimitedService.c
	modified:   openair3/NAS/UE/EMM/SAP/EmmRegisteredNoCellAvailable.c
	modified:   openair3/NAS/UE/EMM/SAP/EmmRegisteredNormalService.c
	modified:   openair3/NAS/UE/EMM/SAP/EmmRegisteredPlmnSearch.c
	modified:   openair3/NAS/UE/EMM/SAP/EmmRegisteredUpdateNeeded.c
	modified:   openair3/NAS/UE/EMM/SAP/EmmServiceRequestInitiated.c
	modified:   openair3/NAS/UE/EMM/SAP/EmmTrackingAreaUpdatingInitiated.c
	modified:   openair3/NAS/UE/EMM/SAP/emm_as.c
	modified:   openair3/NAS/UE/EMM/SAP/emm_as.h
	modified:   openair3/NAS/UE/EMM/SAP/emm_asDef.h
	modified:   openair3/NAS/UE/EMM/SAP/emm_esm.c
	modified:   openair3/NAS/UE/EMM/SAP/emm_esm.h
	modified:   openair3/NAS/UE/EMM/SAP/emm_esmDef.h
	modified:   openair3/NAS/UE/EMM/SAP/emm_fsm.c
	modified:   openair3/NAS/UE/EMM/SAP/emm_fsm.h
	modified:   openair3/NAS/UE/EMM/SAP/emm_recv.c
	modified:   openair3/NAS/UE/EMM/SAP/emm_recv.h
	modified:   openair3/NAS/UE/EMM/SAP/emm_reg.c
	modified:   openair3/NAS/UE/EMM/SAP/emm_reg.h
	modified:   openair3/NAS/UE/EMM/SAP/emm_regDef.h
	modified:   openair3/NAS/UE/EMM/SAP/emm_sap.c
	modified:   openair3/NAS/UE/EMM/SAP/emm_sap.h
	modified:   openair3/NAS/UE/EMM/SAP/emm_send.c
	modified:   openair3/NAS/UE/EMM/SAP/emm_send.h
	modified:   openair3/NAS/UE/EMM/SecurityModeControl.c
	modified:   openair3/NAS/UE/EMM/ServiceRequestHdl.c
	modified:   openair3/NAS/UE/EMM/TrackingAreaUpdate.c
	modified:   openair3/NAS/UE/EMM/emmData.h
	modified:   openair3/NAS/UE/EMM/emm_main.c
	modified:   openair3/NAS/UE/EMM/emm_main.h
	modified:   openair3/NAS/UE/EMM/emm_proc.h
	modified:   openair3/NAS/UE/ESM/DedicatedEpsBearerContextActivation.c
	modified:   openair3/NAS/UE/ESM/DefaultEpsBearerContextActivation.c
	modified:   openair3/NAS/UE/ESM/EpsBearerContextDeactivation.c
	modified:   openair3/NAS/UE/ESM/EsmStatusHdl.c
	modified:   openair3/NAS/UE/ESM/PdnConnectivity.c
	modified:   openair3/NAS/UE/ESM/PdnDisconnect.c
	modified:   openair3/NAS/UE/ESM/SAP/esm_recv.c
	modified:   openair3/NAS/UE/ESM/SAP/esm_recv.h
	modified:   openair3/NAS/UE/ESM/SAP/esm_sap.c
	modified:   openair3/NAS/UE/ESM/SAP/esm_sap.h
	modified:   openair3/NAS/UE/ESM/SAP/esm_sapDef.h
	modified:   openair3/NAS/UE/ESM/SAP/esm_send.c
	modified:   openair3/NAS/UE/ESM/SAP/esm_send.h
	modified:   openair3/NAS/UE/ESM/esmData.h
	modified:   openair3/NAS/UE/ESM/esm_ebr.c
	modified:   openair3/NAS/UE/ESM/esm_ebr.h
	modified:   openair3/NAS/UE/ESM/esm_ebr_context.c
	modified:   openair3/NAS/UE/ESM/esm_ebr_context.h
	modified:   openair3/NAS/UE/ESM/esm_ip.c
	modified:   openair3/NAS/UE/ESM/esm_main.c
	modified:   openair3/NAS/UE/ESM/esm_main.h
	modified:   openair3/NAS/UE/ESM/esm_proc.h
	modified:   openair3/NAS/UE/ESM/esm_pt.c
	modified:   openair3/NAS/UE/ESM/esm_pt.h
	modified:   openair3/NAS/UE/UEprocess.c
	modified:   openair3/NAS/UE/nas_itti_messaging.c
	modified:   openair3/NAS/UE/nas_itti_messaging.h
	modified:   openair3/NAS/UE/nas_network.c
	modified:   openair3/NAS/UE/nas_network.h
	modified:   openair3/NAS/UE/nas_parser.c
	modified:   openair3/NAS/UE/nas_parser.h
	modified:   openair3/NAS/UE/nas_proc.c
	modified:   openair3/NAS/UE/nas_proc.h
	modified:   openair3/NAS/UE/nas_ue_task.c
	modified:   openair3/NAS/UE/nas_user.c
	modified:   openair3/NAS/UE/nas_user.h
	modified:   openair3/S1AP/s1ap_common.c
	modified:   openair3/S1AP/s1ap_common.h
	modified:   openair3/S1AP/s1ap_eNB.c
	modified:   openair3/S1AP/s1ap_eNB.h
	modified:   openair3/S1AP/s1ap_eNB_context_management_procedures.c
	modified:   openair3/S1AP/s1ap_eNB_context_management_procedures.h
	modified:   openair3/S1AP/s1ap_eNB_decoder.c
	modified:   openair3/S1AP/s1ap_eNB_decoder.h
	modified:   openair3/S1AP/s1ap_eNB_default_values.h
	modified:   openair3/S1AP/s1ap_eNB_defs.h
	modified:   openair3/S1AP/s1ap_eNB_encoder.c
	modified:   openair3/S1AP/s1ap_eNB_encoder.h
	modified:   openair3/S1AP/s1ap_eNB_handlers.c
	modified:   openair3/S1AP/s1ap_eNB_handlers.h
	modified:   openair3/S1AP/s1ap_eNB_itti_messaging.c
	modified:   openair3/S1AP/s1ap_eNB_itti_messaging.h
	modified:   openair3/S1AP/s1ap_eNB_management_procedures.c
	modified:   openair3/S1AP/s1ap_eNB_management_procedures.h
	modified:   openair3/S1AP/s1ap_eNB_nas_procedures.c
	modified:   openair3/S1AP/s1ap_eNB_nas_procedures.h
	modified:   openair3/S1AP/s1ap_eNB_nnsf.c
	modified:   openair3/S1AP/s1ap_eNB_nnsf.h
	modified:   openair3/S1AP/s1ap_eNB_overload.c
	modified:   openair3/S1AP/s1ap_eNB_overload.h
	modified:   openair3/S1AP/s1ap_eNB_trace.c
	modified:   openair3/S1AP/s1ap_eNB_trace.h
	modified:   openair3/S1AP/s1ap_eNB_ue_context.c
	modified:   openair3/S1AP/s1ap_eNB_ue_context.h
	modified:   openair3/SCTP/sctp_common.c
	modified:   openair3/SCTP/sctp_common.h
	modified:   openair3/SCTP/sctp_default_values.h
	modified:   openair3/SCTP/sctp_eNB_defs.h
	modified:   openair3/SCTP/sctp_eNB_itti_messaging.c
	modified:   openair3/SCTP/sctp_eNB_itti_messaging.h
	modified:   openair3/SCTP/sctp_eNB_task.c
	modified:   openair3/SCTP/sctp_eNB_task.h
	modified:   openair3/SCTP/sctp_primitives_client.c
	modified:   openair3/SCTP/sctp_primitives_client.h
	modified:   openair3/SECU/kdf.c
	modified:   openair3/SECU/key_nas_deriver.c
	modified:   openair3/SECU/key_nas_encryption.c
	modified:   openair3/SECU/nas_stream_eea1.c
	modified:   openair3/SECU/nas_stream_eea2.c
	modified:   openair3/SECU/nas_stream_eia1.c
	modified:   openair3/SECU/nas_stream_eia2.c
	modified:   openair3/SECU/rijndael.h
	modified:   openair3/SECU/secu_defs.h
	modified:   openair3/SECU/snow3g.c
	modified:   openair3/SECU/snow3g.h
	modified:   openair3/TEST/EPC_TEST/generate_scenario.c
	modified:   openair3/TEST/EPC_TEST/generate_scenario.h
	modified:   openair3/TEST/EPC_TEST/play_scenario.c
	modified:   openair3/TEST/EPC_TEST/play_scenario.h
	modified:   openair3/TEST/EPC_TEST/play_scenario_decode.c
	modified:   openair3/TEST/EPC_TEST/play_scenario_display.c
	modified:   openair3/TEST/EPC_TEST/play_scenario_fsm.c
	modified:   openair3/TEST/EPC_TEST/play_scenario_parse.c
	modified:   openair3/TEST/EPC_TEST/play_scenario_s1ap.c
	modified:   openair3/TEST/EPC_TEST/play_scenario_s1ap_compare_ie.c
	modified:   openair3/TEST/EPC_TEST/play_scenario_s1ap_eNB_defs.h
	modified:   openair3/TEST/EPC_TEST/play_scenario_sctp.c
	modified:   openair3/TEST/oaisim_mme_client_test.c
	modified:   openair3/TEST/oaisim_mme_itti_test.c
	modified:   openair3/TEST/oaisim_mme_list_benchmark.c
	modified:   openair3/TEST/oaisim_mme_s1ap_test.c
	modified:   openair3/TEST/oaisim_mme_sctp_test.c
	modified:   openair3/TEST/oaisim_mme_test_s1c.c
	modified:   openair3/TEST/oaisim_mme_test_s1c.h
	modified:   openair3/TEST/oaisim_mme_test_s1c_s1ap.c
	modified:   openair3/TEST/oaisim_mme_test_s1c_s1ap.h
	modified:   openair3/TEST/oaisim_mme_test_s1c_scenario.c
	modified:   openair3/TEST/oaisim_mme_test_s1c_scenario.h
	modified:   openair3/TEST/oaisim_mme_test_s1c_scenario1.c
	modified:   openair3/TEST/test_aes128_cmac_encrypt.c
	modified:   openair3/TEST/test_aes128_ctr_decrypt.c
	modified:   openair3/TEST/test_aes128_ctr_encrypt.c
	modified:   openair3/TEST/test_kdf.c
	modified:   openair3/TEST/test_s1ap.c
	modified:   openair3/TEST/test_secu.c
	modified:   openair3/TEST/test_secu_kenb.c
	modified:   openair3/TEST/test_secu_knas.c
	modified:   openair3/TEST/test_secu_knas_encrypt_eea1.c
	modified:   openair3/TEST/test_secu_knas_encrypt_eea2.c
	modified:   openair3/TEST/test_secu_knas_encrypt_eia1.c
	modified:   openair3/TEST/test_secu_knas_encrypt_eia2.c
	modified:   openair3/TEST/test_secu_knas_stream_int.c
	modified:   openair3/UDP/udp_eNB_task.c
	modified:   openair3/UDP/udp_eNB_task.h
	modified:   openair3/UTILS/HASHTABLE/hashtable.c
	modified:   openair3/UTILS/HASHTABLE/hashtable.h
	modified:   openair3/UTILS/HASHTABLE/obj_hashtable.c
	modified:   openair3/UTILS/HASHTABLE/obj_hashtable.h
	modified:   openair3/UTILS/conversions.c
	modified:   openair3/UTILS/conversions.h
	modified:   openair3/UTILS/enum_string.c
	modified:   openair3/UTILS/enum_string.h
	modified:   openair3/UTILS/log.c
	modified:   openair3/UTILS/log.h
	modified:   openair3/UTILS/mcc_mnc_itu.c
	modified:   openair3/UTILS/mcc_mnc_itu.h
	modified:   openair3/UTILS/mme_config.c
	modified:   openair3/UTILS/mme_config.h
	modified:   openair3/UTILS/mme_default_values.h
	modified:   targets/ARCH/BLADERF/USERSPACE/LIB/bladerf_lib.c
	modified:   targets/ARCH/BLADERF/USERSPACE/LIB/bladerf_lib.h
	modified:   targets/ARCH/COMMON/common_lib.c
	modified:   targets/ARCH/COMMON/common_lib.h
	modified:   targets/ARCH/ETHERNET/USERSPACE/LIB/eth_raw.c
	modified:   targets/ARCH/ETHERNET/USERSPACE/LIB/eth_udp.c
	modified:   targets/ARCH/ETHERNET/USERSPACE/LIB/ethernet_lib.c
	modified:   targets/ARCH/ETHERNET/USERSPACE/LIB/ethernet_lib.h
	modified:   targets/ARCH/EXMIMO/DEFS/openair_device.h
	modified:   targets/ARCH/EXMIMO/DEFS/pcie_interface.h
	modified:   targets/ARCH/EXMIMO/DRIVER/eurecom/defs.h
	modified:   targets/ARCH/EXMIMO/DRIVER/eurecom/exmimo_fw.c
	modified:   targets/ARCH/EXMIMO/DRIVER/eurecom/extern.h
	modified:   targets/ARCH/EXMIMO/DRIVER/eurecom/fileops.c
	modified:   targets/ARCH/EXMIMO/DRIVER/eurecom/irq.c
	modified:   targets/ARCH/EXMIMO/DRIVER/eurecom/module_main.c
	modified:   targets/ARCH/EXMIMO/DRIVER/eurecom/vars.h
	modified:   targets/ARCH/EXMIMO/DRIVER/exmimo3/defs.h
	modified:   targets/ARCH/EXMIMO/DRIVER/exmimo3/exmimo_fw.c
	modified:   targets/ARCH/EXMIMO/DRIVER/exmimo3/extern.h
	modified:   targets/ARCH/EXMIMO/DRIVER/exmimo3/fileops.c
	modified:   targets/ARCH/EXMIMO/DRIVER/exmimo3/irq.c
	modified:   targets/ARCH/EXMIMO/DRIVER/exmimo3/module_main.c
	modified:   targets/ARCH/EXMIMO/DRIVER/exmimo3/vars.h
	modified:   targets/ARCH/EXMIMO/DRIVER/telecomparistech/em1_dev.c
	modified:   targets/ARCH/EXMIMO/DRIVER/telecomparistech/em1_drv.c
	modified:   targets/ARCH/EXMIMO/DRIVER/telecomparistech/em1_drv.h
	modified:   targets/ARCH/EXMIMO/DRIVER/telecomparistech/em1_fifos.c
	modified:   targets/ARCH/EXMIMO/DRIVER/telecomparistech/em1_ioctl.c
	modified:   targets/ARCH/EXMIMO/DRIVER/telecomparistech/em1_mmap.c
	modified:   targets/ARCH/EXMIMO/DRIVER/telecomparistech/em1_rw.c
	modified:   targets/ARCH/EXMIMO/USERSPACE/LIB/example.c
	modified:   targets/ARCH/EXMIMO/USERSPACE/LIB/gain_control.c
	modified:   targets/ARCH/EXMIMO/USERSPACE/LIB/gain_control.h
	modified:   targets/ARCH/EXMIMO/USERSPACE/LIB/openair0_lib.c
	modified:   targets/ARCH/EXMIMO/USERSPACE/LIB/openair0_lib.h
	modified:   targets/ARCH/EXMIMO/USERSPACE/OAI_FW_INIT/elf.h
	modified:   targets/ARCH/EXMIMO/USERSPACE/OAI_FW_INIT/elftypes.h
	modified:   targets/ARCH/EXMIMO/USERSPACE/OAI_FW_INIT/updatefw.c
	modified:   targets/ARCH/EXMIMO/USERSPACE/OAI_FW_INIT/updatefw.h
	modified:   targets/ARCH/LMSSDR/USERSPACE/LIB/lms_lib.cpp
	modified:   targets/ARCH/LMSSDR/USERSPACE/LIB/sodera_lib.cpp
	modified:   targets/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp
	modified:   targets/COMMON/create_tasks.c
	modified:   targets/COMMON/create_tasks.h
	modified:   targets/RT/USER/TOOLS/thread_ipc.c
	modified:   targets/RT/USER/TOOLS/thread_ipc.h
	modified:   targets/RT/USER/UE_transport_IQ.c
	modified:   targets/RT/USER/condtest.c
	modified:   targets/RT/USER/eNB_transport_IQ.c
	modified:   targets/RT/USER/emos-raw.c
	modified:   targets/RT/USER/lte-softmodem.c
	modified:   targets/RT/USER/lte-ue.c
	modified:   targets/RT/USER/msg_many.h
	modified:   targets/RT/USER/rrh.c
	modified:   targets/RT/USER/rrh_gw.c
	modified:   targets/RT/USER/rrh_gw.h
	modified:   targets/RT/USER/rrh_gw_externs.h
	modified:   targets/RT/USER/rt_wrapper.c
	modified:   targets/RT/USER/rt_wrapper.h
	modified:   targets/RT/USER/sched_dlsch.c
	modified:   targets/RT/USER/sched_rx_pdsch.c
	modified:   targets/RT/USER/sched_ulsch.c
	modified:   targets/RT/USER/sleeptest.c
	modified:   targets/RT/USER/synctest.c
	modified:   targets/SIMU/PROC/Process.c
	modified:   targets/SIMU/PROC/Process.h
	modified:   targets/SIMU/PROC/Tsync.h
	modified:   targets/SIMU/PROC/channel_sim_proc.c
	modified:   targets/SIMU/PROC/channel_sim_proc.h
	modified:   targets/SIMU/PROC/interface.h
	modified:   targets/SIMU/USER/channel_sim.c
	modified:   targets/SIMU/USER/cor_SF_sim.c
	modified:   targets/SIMU/USER/cor_SF_sim.h
	modified:   targets/SIMU/USER/event_handler.c
	modified:   targets/SIMU/USER/event_handler.h
	modified:   targets/SIMU/USER/init_lte.c
	modified:   targets/SIMU/USER/init_lte.h
	modified:   targets/SIMU/USER/oaisim.c
	modified:   targets/SIMU/USER/oaisim.h
	modified:   targets/SIMU/USER/oaisim_config.c
	modified:   targets/SIMU/USER/oaisim_config.h
	modified:   targets/SIMU/USER/oaisim_functions.c
	modified:   targets/SIMU/USER/oaisim_functions.h
	modified:   targets/SIMU/USER/oaisim_pad.c
	modified:   targets/SIMU/USER/sinr_sim.c
2016-09-14 15:04:55 +02:00

1410 lines
52 KiB
C

/*! \file rrc_eNB_S1AP.c
* \brief rrc S1AP procedures for eNB
* \author Navid Nikaein, Laurent Winckel, Sebastien ROUX, and Lionel GAUTHIER
* \date 2013-2016
* \version 1.0
* \company Eurecom
* \email: navid.nikaein@eurecom.fr
*/
#if defined(ENABLE_USE_MME)
# include "defs.h"
# include "extern.h"
# include "RRC/L2_INTERFACE/openair_rrc_L2_interface.h"
# include "RRC/LITE/MESSAGES/asn1_msg.h"
# include "RRC/LITE/defs.h"
# include "rrc_eNB_UE_context.h"
# include "rrc_eNB_S1AP.h"
# include "enb_config.h"
# if defined(ENABLE_ITTI)
# include "asn1_conversions.h"
# include "intertask_interface.h"
# include "pdcp.h"
# include "pdcp_primitives.h"
# include "s1ap_eNB.h"
# else
# include "../../S1AP/s1ap_eNB.h"
# endif
#if defined(ENABLE_SECURITY)
# include "UTIL/OSA/osa_defs.h"
#endif
#include "msc.h"
#include "UERadioAccessCapabilityInformation.h"
#include "gtpv1u_eNB_task.h"
#include "RRC/LITE/rrc_eNB_GTPV1U.h"
/* Value to indicate an invalid UE initial id */
static const uint16_t UE_INITIAL_ID_INVALID = 0;
/* Masks for S1AP Encryption algorithms, EEA0 is always supported (not coded) */
static const uint16_t S1AP_ENCRYPTION_EEA1_MASK = 0x8000;
static const uint16_t S1AP_ENCRYPTION_EEA2_MASK = 0x4000;
/* Masks for S1AP Integrity algorithms, EIA0 is always supported (not coded) */
static const uint16_t S1AP_INTEGRITY_EIA1_MASK = 0x8000;
static const uint16_t S1AP_INTEGRITY_EIA2_MASK = 0x4000;
#ifdef Rel10
# define INTEGRITY_ALGORITHM_NONE SecurityAlgorithmConfig__integrityProtAlgorithm_eia0_v920
#else
#ifdef EXMIMO_IOT
# define INTEGRITY_ALGORITHM_NONE SecurityAlgorithmConfig__integrityProtAlgorithm_eia2
#else
# define INTEGRITY_ALGORITHM_NONE SecurityAlgorithmConfig__integrityProtAlgorithm_reserved
#endif
#endif
# if defined(ENABLE_ITTI)
//------------------------------------------------------------------------------
struct rrc_ue_s1ap_ids_s*
rrc_eNB_S1AP_get_ue_ids(
eNB_RRC_INST* const rrc_instance_pP,
const uint16_t ue_initial_id,
const uint32_t eNB_ue_s1ap_id
)
//------------------------------------------------------------------------------
{
rrc_ue_s1ap_ids_t *result = NULL;
rrc_ue_s1ap_ids_t *result2 = NULL;
hashtable_rc_t h_rc;
// we assume that a rrc_ue_s1ap_ids_s is initially inserted in initial_id2_s1ap_ids
if (eNB_ue_s1ap_id > 0) {
h_rc = hashtable_get(rrc_instance_pP->s1ap_id2_s1ap_ids, (hash_key_t)eNB_ue_s1ap_id, (void**)&result);
}
if (ue_initial_id != UE_INITIAL_ID_INVALID) {
h_rc = hashtable_get(rrc_instance_pP->initial_id2_s1ap_ids, (hash_key_t)ue_initial_id, (void**)&result);
if (h_rc == HASH_TABLE_OK) {
if (eNB_ue_s1ap_id > 0) {
h_rc = hashtable_get(rrc_instance_pP->s1ap_id2_s1ap_ids, (hash_key_t)eNB_ue_s1ap_id, (void**)&result2);
if (h_rc != HASH_TABLE_OK) {
result2 = malloc(sizeof(*result2));
if (NULL != result2) {
*result2 = *result;
result2->eNB_ue_s1ap_id = eNB_ue_s1ap_id;
result->eNB_ue_s1ap_id = eNB_ue_s1ap_id;
h_rc = hashtable_insert(rrc_instance_pP->s1ap_id2_s1ap_ids,
(hash_key_t)eNB_ue_s1ap_id,
result2);
if (h_rc != HASH_TABLE_OK) {
LOG_E(S1AP, "[eNB %u] Error while hashtable_insert in s1ap_id2_s1ap_ids eNB_ue_s1ap_id %u\n",
rrc_instance_pP - eNB_rrc_inst, eNB_ue_s1ap_id);
}
}
}
}
}
}
return result;
}
//------------------------------------------------------------------------------
void
rrc_eNB_S1AP_remove_ue_ids(
eNB_RRC_INST* const rrc_instance_pP,
struct rrc_ue_s1ap_ids_s* const ue_ids_pP
)
//------------------------------------------------------------------------------
{
const uint16_t ue_initial_id = ue_ids_pP->ue_initial_id;
const uint32_t eNB_ue_s1ap_id = ue_ids_pP->eNB_ue_s1ap_id;
hashtable_rc_t h_rc;
if (rrc_instance_pP == NULL) {
LOG_E(RRC, "Bad RRC instance\n");
return;
}
if (ue_ids_pP == NULL) {
LOG_E(RRC, "Trying to free a NULL S1AP UE IDs\n");
return;
}
if (eNB_ue_s1ap_id > 0) {
h_rc = hashtable_remove(rrc_instance_pP->s1ap_id2_s1ap_ids, (hash_key_t)eNB_ue_s1ap_id);
if (h_rc != HASH_TABLE_OK) {
LOG_W(RRC, "S1AP Did not find entry in hashtable s1ap_id2_s1ap_ids for eNB_ue_s1ap_id %u\n", eNB_ue_s1ap_id);
} else {
LOG_W(RRC, "S1AP removed entry in hashtable s1ap_id2_s1ap_ids for eNB_ue_s1ap_id %u\n", eNB_ue_s1ap_id);
}
}
if (ue_initial_id != UE_INITIAL_ID_INVALID) {
h_rc = hashtable_remove(rrc_instance_pP->initial_id2_s1ap_ids, (hash_key_t)ue_initial_id);
if (h_rc != HASH_TABLE_OK) {
LOG_W(RRC, "S1AP Did not find entry in hashtable initial_id2_s1ap_ids for ue_initial_id %u\n", ue_initial_id);
} else {
LOG_W(RRC, "S1AP removed entry in hashtable initial_id2_s1ap_ids for ue_initial_id %u\n", ue_initial_id);
}
}
}
/*! \fn uint16_t get_next_ue_initial_id(uint8_t mod_id)
*\brief provide an UE initial ID for S1AP initial communication.
*\param mod_id Instance ID of eNB.
*\return the UE initial ID.
*/
//------------------------------------------------------------------------------
static uint16_t
get_next_ue_initial_id(
const module_id_t mod_id
)
//------------------------------------------------------------------------------
{
static uint16_t ue_initial_id[NUMBER_OF_eNB_MAX];
ue_initial_id[mod_id]++;
/* Never use UE_INITIAL_ID_INVALID this is the invalid id! */
if (ue_initial_id[mod_id] == UE_INITIAL_ID_INVALID) {
ue_initial_id[mod_id]++;
}
return ue_initial_id[mod_id];
}
/*! \fn uint8_t get_UE_index_from_s1ap_ids(uint8_t mod_id, uint16_t ue_initial_id, uint32_t eNB_ue_s1ap_id)
*\brief retrieve UE index in the eNB from the UE initial ID if not equal to UE_INDEX_INVALID or
*\brief from the eNB_ue_s1ap_id previously transmitted by S1AP.
*\param mod_id Instance ID of eNB.
*\param ue_initial_id The UE initial ID sent to S1AP.
*\param eNB_ue_s1ap_id The value sent by S1AP.
*\return the UE index or UE_INDEX_INVALID if not found.
*/
static struct rrc_eNB_ue_context_s*
rrc_eNB_get_ue_context_from_s1ap_ids(
const instance_t instanceP,
const uint16_t ue_initial_idP,
const uint32_t eNB_ue_s1ap_idP
)
{
rrc_ue_s1ap_ids_t* temp = NULL;
temp =
rrc_eNB_S1AP_get_ue_ids(
&eNB_rrc_inst[ENB_INSTANCE_TO_MODULE_ID(instanceP)],
ue_initial_idP,
eNB_ue_s1ap_idP);
if (temp) {
return rrc_eNB_get_ue_context(
&eNB_rrc_inst[ENB_INSTANCE_TO_MODULE_ID(instanceP)],
temp->ue_rnti);
}
return NULL;
}
/*! \fn e_SecurityAlgorithmConfig__cipheringAlgorithm rrc_eNB_select_ciphering(uint16_t algorithms)
*\brief analyze available encryption algorithms bit mask and return the relevant one.
*\param algorithms The bit mask of available algorithms received from S1AP.
*\return the selected algorithm.
*/
static e_SecurityAlgorithmConfig__cipheringAlgorithm rrc_eNB_select_ciphering(uint16_t algorithms)
{
//#warning "Forced return SecurityAlgorithmConfig__cipheringAlgorithm_eea0, to be deleted in future"
return SecurityAlgorithmConfig__cipheringAlgorithm_eea0;
if (algorithms & S1AP_ENCRYPTION_EEA2_MASK) {
return SecurityAlgorithmConfig__cipheringAlgorithm_eea2;
}
if (algorithms & S1AP_ENCRYPTION_EEA1_MASK) {
return SecurityAlgorithmConfig__cipheringAlgorithm_eea1;
}
return SecurityAlgorithmConfig__cipheringAlgorithm_eea0;
}
/*! \fn e_SecurityAlgorithmConfig__integrityProtAlgorithm rrc_eNB_select_integrity(uint16_t algorithms)
*\brief analyze available integrity algorithms bit mask and return the relevant one.
*\param algorithms The bit mask of available algorithms received from S1AP.
*\return the selected algorithm.
*/
static e_SecurityAlgorithmConfig__integrityProtAlgorithm rrc_eNB_select_integrity(uint16_t algorithms)
{
if (algorithms & S1AP_INTEGRITY_EIA2_MASK) {
return SecurityAlgorithmConfig__integrityProtAlgorithm_eia2;
}
if (algorithms & S1AP_INTEGRITY_EIA1_MASK) {
return SecurityAlgorithmConfig__integrityProtAlgorithm_eia1;
}
return INTEGRITY_ALGORITHM_NONE;
}
/*! \fn int rrc_eNB_process_security (uint8_t mod_id, uint8_t ue_index, security_capabilities_t *security_capabilities)
*\brief save and analyze available security algorithms bit mask and select relevant ones.
*\param mod_id Instance ID of eNB.
*\param ue_index Instance ID of UE in the eNB.
*\param security_capabilities The security capabilities received from S1AP.
*\return TRUE if at least one algorithm has been changed else FALSE.
*/
static int
rrc_eNB_process_security(
const protocol_ctxt_t* const ctxt_pP,
rrc_eNB_ue_context_t* const ue_context_pP,
security_capabilities_t* security_capabilities_pP
)
{
boolean_t changed = FALSE;
e_SecurityAlgorithmConfig__cipheringAlgorithm cipheringAlgorithm;
e_SecurityAlgorithmConfig__integrityProtAlgorithm integrityProtAlgorithm;
/* Save security parameters */
ue_context_pP->ue_context.security_capabilities = *security_capabilities_pP;
// translation
LOG_D(RRC,
"[eNB %d] NAS security_capabilities.encryption_algorithms %u AS ciphering_algorithm %u NAS security_capabilities.integrity_algorithms %u AS integrity_algorithm %u\n",
ctxt_pP->module_id,
ue_context_pP->ue_context.security_capabilities.encryption_algorithms,
ue_context_pP->ue_context.ciphering_algorithm,
ue_context_pP->ue_context.security_capabilities.integrity_algorithms,
ue_context_pP->ue_context.integrity_algorithm);
/* Select relevant algorithms */
cipheringAlgorithm = rrc_eNB_select_ciphering (ue_context_pP->ue_context.security_capabilities.encryption_algorithms);
if (ue_context_pP->ue_context.ciphering_algorithm != cipheringAlgorithm) {
ue_context_pP->ue_context.ciphering_algorithm = cipheringAlgorithm;
changed = TRUE;
}
integrityProtAlgorithm = rrc_eNB_select_integrity (ue_context_pP->ue_context.security_capabilities.integrity_algorithms);
if (ue_context_pP->ue_context.integrity_algorithm != integrityProtAlgorithm) {
ue_context_pP->ue_context.integrity_algorithm = integrityProtAlgorithm;
changed = TRUE;
}
LOG_I (RRC, "[eNB %d][UE %x] Selected security algorithms (%x): %x, %x, %s\n",
ctxt_pP->module_id,
ue_context_pP->ue_context.rnti,
security_capabilities_pP,
cipheringAlgorithm,
integrityProtAlgorithm,
changed ? "changed" : "same");
return changed;
}
/*! \fn void process_eNB_security_key (const protocol_ctxt_t* const ctxt_pP, eNB_RRC_UE_t * const ue_context_pP, uint8_t *security_key)
*\brief save security key.
*\param ctxt_pP Running context.
*\param ue_context_pP UE context.
*\param security_key_pP The security key received from S1AP.
*/
//------------------------------------------------------------------------------
static void process_eNB_security_key (
const protocol_ctxt_t* const ctxt_pP,
rrc_eNB_ue_context_t* const ue_context_pP,
uint8_t* security_key_pP
)
//------------------------------------------------------------------------------
{
#if defined(ENABLE_SECURITY)
char ascii_buffer[65];
uint8_t i;
/* Saves the security key */
memcpy (ue_context_pP->ue_context.kenb, security_key_pP, SECURITY_KEY_LENGTH);
for (i = 0; i < 32; i++) {
sprintf(&ascii_buffer[2 * i], "%02X", ue_context_pP->ue_context.kenb[i]);
}
ascii_buffer[2 * i] = '\0';
LOG_I (RRC, "[eNB %d][UE %x] Saved security key %s\n", ctxt_pP->module_id, ue_context_pP->ue_context.rnti, ascii_buffer);
#endif
}
//------------------------------------------------------------------------------
static void
rrc_pdcp_config_security(
const protocol_ctxt_t* const ctxt_pP,
rrc_eNB_ue_context_t* const ue_context_pP,
const uint8_t send_security_mode_command
)
//------------------------------------------------------------------------------
{
#if defined(ENABLE_SECURITY)
SRB_ToAddModList_t* SRB_configList = ue_context_pP->ue_context.SRB_configList;
uint8_t *kRRCenc = NULL;
uint8_t *kRRCint = NULL;
uint8_t *kUPenc = NULL;
pdcp_t *pdcp_p = NULL;
static int print_keys= 1;
hashtable_rc_t h_rc;
hash_key_t key;
/* Derive the keys from kenb */
if (SRB_configList != NULL) {
derive_key_up_enc(ue_context_pP->ue_context.ciphering_algorithm,
ue_context_pP->ue_context.kenb,
&kUPenc);
}
derive_key_rrc_enc(ue_context_pP->ue_context.ciphering_algorithm,
ue_context_pP->ue_context.kenb,
&kRRCenc);
derive_key_rrc_int(ue_context_pP->ue_context.integrity_algorithm,
ue_context_pP->ue_context.kenb,
&kRRCint);
#define DEBUG_SECURITY 1
#if defined (DEBUG_SECURITY)
#undef msg
#define msg printf
if (print_keys ==1 ) {
print_keys =0;
int i;
msg("\nKeNB:");
for(i = 0; i < 32; i++) {
msg("%02x", ue_context_pP->ue_context.kenb[i]);
}
msg("\n");
msg("\nKRRCenc:");
for(i = 0; i < 32; i++) {
msg("%02x", kRRCenc[i]);
}
msg("\n");
msg("\nKRRCint:");
for(i = 0; i < 32; i++) {
msg("%02x", kRRCint[i]);
}
msg("\n");
}
#endif //DEBUG_SECURITY
key = PDCP_COLL_KEY_VALUE(ctxt_pP->module_id, ctxt_pP->rnti, ctxt_pP->enb_flag, DCCH, SRB_FLAG_YES);
h_rc = hashtable_get(pdcp_coll_p, key, (void**)&pdcp_p);
if (h_rc == HASH_TABLE_OK) {
pdcp_config_set_security(
ctxt_pP,
pdcp_p,
DCCH,
DCCH+2,
(send_security_mode_command == TRUE) ?
0 | (ue_context_pP->ue_context.integrity_algorithm << 4) :
(ue_context_pP->ue_context.ciphering_algorithm ) |
(ue_context_pP->ue_context.integrity_algorithm << 4),
kRRCenc,
kRRCint,
kUPenc);
} else {
LOG_E(RRC,
PROTOCOL_RRC_CTXT_UE_FMT"Could not get PDCP instance for SRB DCCH %u\n",
PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),
DCCH);
}
#endif
}
//------------------------------------------------------------------------------
void
rrc_eNB_send_S1AP_INITIAL_CONTEXT_SETUP_RESP(
const protocol_ctxt_t* const ctxt_pP,
rrc_eNB_ue_context_t* const ue_context_pP
)
//------------------------------------------------------------------------------
{
MessageDef *msg_p = NULL;
int e_rab;
int e_rabs_done = 0;
int e_rabs_failed = 0;
msg_p = itti_alloc_new_message (TASK_RRC_ENB, S1AP_INITIAL_CONTEXT_SETUP_RESP);
S1AP_INITIAL_CONTEXT_SETUP_RESP (msg_p).eNB_ue_s1ap_id = ue_context_pP->ue_context.eNB_ue_s1ap_id;
for (e_rab = 0; e_rab < ue_context_pP->ue_context.nb_of_e_rabs; e_rab++) {
if (ue_context_pP->ue_context.e_rab[e_rab].status == E_RAB_STATUS_DONE) {
e_rabs_done++;
S1AP_INITIAL_CONTEXT_SETUP_RESP (msg_p).e_rabs[e_rab].e_rab_id = ue_context_pP->ue_context.e_rab[e_rab].param.e_rab_id;
// TODO add other information from S1-U when it will be integrated
S1AP_INITIAL_CONTEXT_SETUP_RESP (msg_p).e_rabs[e_rab].gtp_teid = ue_context_pP->ue_context.enb_gtp_teid[e_rab];
S1AP_INITIAL_CONTEXT_SETUP_RESP (msg_p).e_rabs[e_rab].eNB_addr = ue_context_pP->ue_context.enb_gtp_addrs[e_rab];
S1AP_INITIAL_CONTEXT_SETUP_RESP (msg_p).e_rabs[e_rab].eNB_addr.length = 4;
ue_context_pP->ue_context.e_rab[e_rab].status = E_RAB_STATUS_ESTABLISHED;
} else {
e_rabs_failed++;
ue_context_pP->ue_context.e_rab[e_rab].status = E_RAB_STATUS_FAILED;
S1AP_INITIAL_CONTEXT_SETUP_RESP (msg_p).e_rabs_failed[e_rab].e_rab_id = ue_context_pP->ue_context.e_rab[e_rab].param.e_rab_id;
// TODO add cause when it will be integrated
}
}
MSC_LOG_TX_MESSAGE(
MSC_RRC_ENB,
MSC_S1AP_ENB,
(const char *)&S1AP_INITIAL_CONTEXT_SETUP_RESP (msg_p),
sizeof(s1ap_initial_context_setup_resp_t),
MSC_AS_TIME_FMT" INITIAL_CONTEXT_SETUP_RESP UE %X eNB_ue_s1ap_id %u e_rabs:%u succ %u fail",
MSC_AS_TIME_ARGS(ctxt_pP),
ue_context_pP->ue_id_rnti,
S1AP_INITIAL_CONTEXT_SETUP_RESP (msg_p).eNB_ue_s1ap_id,
e_rabs_done, e_rabs_failed);
S1AP_INITIAL_CONTEXT_SETUP_RESP (msg_p).nb_of_e_rabs = e_rabs_done;
S1AP_INITIAL_CONTEXT_SETUP_RESP (msg_p).nb_of_e_rabs_failed = e_rabs_failed;
itti_send_msg_to_task (TASK_S1AP, ctxt_pP->instance, msg_p);
}
# endif
//------------------------------------------------------------------------------
void
rrc_eNB_send_S1AP_UPLINK_NAS(
const protocol_ctxt_t* const ctxt_pP,
rrc_eNB_ue_context_t* const ue_context_pP,
UL_DCCH_Message_t* const ul_dcch_msg
)
//------------------------------------------------------------------------------
{
#if defined(ENABLE_ITTI)
{
ULInformationTransfer_t *ulInformationTransfer = &ul_dcch_msg->message.choice.c1.choice.ulInformationTransfer;
if ((ulInformationTransfer->criticalExtensions.present == ULInformationTransfer__criticalExtensions_PR_c1)
&& (ulInformationTransfer->criticalExtensions.choice.c1.present
== ULInformationTransfer__criticalExtensions__c1_PR_ulInformationTransfer_r8)
&& (ulInformationTransfer->criticalExtensions.choice.c1.choice.ulInformationTransfer_r8.dedicatedInfoType.present
== ULInformationTransfer_r8_IEs__dedicatedInfoType_PR_dedicatedInfoNAS)) {
/* This message hold a dedicated info NAS payload, forward it to NAS */
struct ULInformationTransfer_r8_IEs__dedicatedInfoType *dedicatedInfoType =
&ulInformationTransfer->criticalExtensions.choice.c1.choice.ulInformationTransfer_r8.dedicatedInfoType;
uint32_t pdu_length;
uint8_t *pdu_buffer;
MessageDef *msg_p;
pdu_length = dedicatedInfoType->choice.dedicatedInfoNAS.size;
pdu_buffer = dedicatedInfoType->choice.dedicatedInfoNAS.buf;
msg_p = itti_alloc_new_message (TASK_RRC_ENB, S1AP_UPLINK_NAS);
S1AP_UPLINK_NAS (msg_p).eNB_ue_s1ap_id = ue_context_pP->ue_context.eNB_ue_s1ap_id;
S1AP_UPLINK_NAS (msg_p).nas_pdu.length = pdu_length;
S1AP_UPLINK_NAS (msg_p).nas_pdu.buffer = pdu_buffer;
itti_send_msg_to_task (TASK_S1AP, ctxt_pP->instance, msg_p);
}
}
#else
{
ULInformationTransfer_t *ulInformationTransfer;
ulInformationTransfer =
&ul_dcch_msg->message.choice.c1.choice.
ulInformationTransfer;
if (ulInformationTransfer->criticalExtensions.present ==
ULInformationTransfer__criticalExtensions_PR_c1) {
if (ulInformationTransfer->criticalExtensions.choice.c1.present ==
ULInformationTransfer__criticalExtensions__c1_PR_ulInformationTransfer_r8) {
ULInformationTransfer_r8_IEs_t
*ulInformationTransferR8;
ulInformationTransferR8 =
&ulInformationTransfer->criticalExtensions.choice.
c1.choice.ulInformationTransfer_r8;
if (ulInformationTransferR8->dedicatedInfoType.
present ==
ULInformationTransfer_r8_IEs__dedicatedInfoType_PR_dedicatedInfoNAS)
s1ap_eNB_new_data_request (mod_id, ue_index,
ulInformationTransferR8->
dedicatedInfoType.choice.
dedicatedInfoNAS.buf,
ulInformationTransferR8->
dedicatedInfoType.choice.
dedicatedInfoNAS.size);
}
}
}
#endif
}
//------------------------------------------------------------------------------
void rrc_eNB_send_S1AP_UE_CAPABILITIES_IND(
const protocol_ctxt_t* const ctxt_pP,
rrc_eNB_ue_context_t* const ue_context_pP,
UL_DCCH_Message_t* ul_dcch_msg
)
//------------------------------------------------------------------------------
{
UECapabilityInformation_t *ueCapabilityInformation = &ul_dcch_msg->message.choice.c1.choice.ueCapabilityInformation;
/* 4096 is arbitrary, should be big enough */
unsigned char buf[4096];
unsigned char *buf2;
UERadioAccessCapabilityInformation_t rac;
if (ueCapabilityInformation->criticalExtensions.present != UECapabilityInformation__criticalExtensions_PR_c1
|| ueCapabilityInformation->criticalExtensions.choice.c1.present != UECapabilityInformation__criticalExtensions__c1_PR_ueCapabilityInformation_r8) {
LOG_E(RRC, "[eNB %d][UE %x] bad UE capabilities\n", ctxt_pP->module_id, ue_context_pP->ue_context.rnti);
return;
}
asn_enc_rval_t ret = uper_encode_to_buffer(&asn_DEF_UECapabilityInformation, ueCapabilityInformation, buf, 4096);
if (ret.encoded == -1) abort();
memset(&rac, 0, sizeof(UERadioAccessCapabilityInformation_t));
rac.criticalExtensions.present = UERadioAccessCapabilityInformation__criticalExtensions_PR_c1;
rac.criticalExtensions.choice.c1.present = UERadioAccessCapabilityInformation__criticalExtensions__c1_PR_ueRadioAccessCapabilityInformation_r8;
rac.criticalExtensions.choice.c1.choice.ueRadioAccessCapabilityInformation_r8.ue_RadioAccessCapabilityInfo.buf = buf;
rac.criticalExtensions.choice.c1.choice.ueRadioAccessCapabilityInformation_r8.ue_RadioAccessCapabilityInfo.size = (ret.encoded+7)/8;
rac.criticalExtensions.choice.c1.choice.ueRadioAccessCapabilityInformation_r8.nonCriticalExtension = NULL;
/* 8192 is arbitrary, should be big enough */
buf2 = malloc16(8192);
if (buf2 == NULL) abort();
ret = uper_encode_to_buffer(&asn_DEF_UERadioAccessCapabilityInformation, &rac, buf2, 8192);
if (ret.encoded == -1) abort();
MessageDef *msg_p;
msg_p = itti_alloc_new_message (TASK_RRC_ENB, S1AP_UE_CAPABILITIES_IND);
S1AP_UE_CAPABILITIES_IND (msg_p).eNB_ue_s1ap_id = ue_context_pP->ue_context.eNB_ue_s1ap_id;
S1AP_UE_CAPABILITIES_IND (msg_p).ue_radio_cap.length = (ret.encoded+7)/8;
S1AP_UE_CAPABILITIES_IND (msg_p).ue_radio_cap.buffer = buf2;
itti_send_msg_to_task (TASK_S1AP, ctxt_pP->instance, msg_p);
}
//------------------------------------------------------------------------------
void
rrc_eNB_send_S1AP_NAS_FIRST_REQ(
const protocol_ctxt_t* const ctxt_pP,
rrc_eNB_ue_context_t* const ue_context_pP,
RRCConnectionSetupComplete_r8_IEs_t* rrcConnectionSetupComplete
)
//------------------------------------------------------------------------------
{
#if defined(ENABLE_ITTI)
{
MessageDef* message_p = NULL;
rrc_ue_s1ap_ids_t* rrc_ue_s1ap_ids_p = NULL;
hashtable_rc_t h_rc;
message_p = itti_alloc_new_message (TASK_RRC_ENB, S1AP_NAS_FIRST_REQ);
memset(&message_p->ittiMsg.s1ap_nas_first_req, 0, sizeof(s1ap_nas_first_req_t));
ue_context_pP->ue_context.ue_initial_id = get_next_ue_initial_id (ctxt_pP->module_id);
S1AP_NAS_FIRST_REQ (message_p).ue_initial_id = ue_context_pP->ue_context.ue_initial_id;
rrc_ue_s1ap_ids_p = malloc(sizeof(*rrc_ue_s1ap_ids_p));
rrc_ue_s1ap_ids_p->ue_initial_id = ue_context_pP->ue_context.ue_initial_id;
rrc_ue_s1ap_ids_p->eNB_ue_s1ap_id = UE_INITIAL_ID_INVALID;
rrc_ue_s1ap_ids_p->ue_rnti = ctxt_pP->rnti;
h_rc = hashtable_insert(eNB_rrc_inst[ctxt_pP->module_id].initial_id2_s1ap_ids,
(hash_key_t)ue_context_pP->ue_context.ue_initial_id,
rrc_ue_s1ap_ids_p);
if (h_rc != HASH_TABLE_OK) {
LOG_E(S1AP, "[eNB %d] Error while hashtable_insert in initial_id2_s1ap_ids ue_initial_id %u\n",
ctxt_pP->module_id, ue_context_pP->ue_context.ue_initial_id);
}
/* Assume that cause is coded in the same way in RRC and S1ap, just check that the value is in S1ap range */
AssertFatal(ue_context_pP->ue_context.establishment_cause < RRC_CAUSE_LAST,
"Establishment cause invalid (%jd/%d) for eNB %d!",
ue_context_pP->ue_context.establishment_cause, RRC_CAUSE_LAST, ctxt_pP->module_id);
S1AP_NAS_FIRST_REQ (message_p).establishment_cause = ue_context_pP->ue_context.establishment_cause;
/* Forward NAS message */S1AP_NAS_FIRST_REQ (message_p).nas_pdu.buffer =
rrcConnectionSetupComplete->dedicatedInfoNAS.buf;
S1AP_NAS_FIRST_REQ (message_p).nas_pdu.length = rrcConnectionSetupComplete->dedicatedInfoNAS.size;
/* Fill UE identities with available information */
{
S1AP_NAS_FIRST_REQ (message_p).ue_identity.presenceMask = UE_IDENTITIES_NONE;
if (ue_context_pP->ue_context.Initialue_identity_s_TMSI.presence) {
/* Fill s-TMSI */
UE_S_TMSI* s_TMSI = &ue_context_pP->ue_context.Initialue_identity_s_TMSI;
S1AP_NAS_FIRST_REQ (message_p).ue_identity.presenceMask |= UE_IDENTITIES_s_tmsi;
S1AP_NAS_FIRST_REQ (message_p).ue_identity.s_tmsi.mme_code = s_TMSI->mme_code;
S1AP_NAS_FIRST_REQ (message_p).ue_identity.s_tmsi.m_tmsi = s_TMSI->m_tmsi;
LOG_I(S1AP, "[eNB %d] Build S1AP_NAS_FIRST_REQ with s_TMSI: MME code %u M-TMSI %u ue %x\n",
ctxt_pP->module_id,
S1AP_NAS_FIRST_REQ (message_p).ue_identity.s_tmsi.mme_code,
S1AP_NAS_FIRST_REQ (message_p).ue_identity.s_tmsi.m_tmsi,
ue_context_pP->ue_context.rnti);
}
if (rrcConnectionSetupComplete->registeredMME != NULL) {
/* Fill GUMMEI */
struct RegisteredMME *r_mme = rrcConnectionSetupComplete->registeredMME;
//int selected_plmn_identity = rrcConnectionSetupComplete->selectedPLMN_Identity;
S1AP_NAS_FIRST_REQ (message_p).ue_identity.presenceMask |= UE_IDENTITIES_gummei;
if (r_mme->plmn_Identity != NULL) {
if ((r_mme->plmn_Identity->mcc != NULL) && (r_mme->plmn_Identity->mcc->list.count > 0)) {
/* Use first indicated PLMN MCC if it is defined */
S1AP_NAS_FIRST_REQ (message_p).ue_identity.gummei.mcc = *r_mme->plmn_Identity->mcc->list.array[0];
LOG_I(S1AP, "[eNB %d] Build S1AP_NAS_FIRST_REQ adding in s_TMSI: GUMMEI MCC %u ue %x\n",
ctxt_pP->module_id,
S1AP_NAS_FIRST_REQ (message_p).ue_identity.gummei.mcc,
ue_context_pP->ue_context.rnti);
}
if (r_mme->plmn_Identity->mnc.list.count > 0) {
/* Use first indicated PLMN MNC if it is defined */
S1AP_NAS_FIRST_REQ (message_p).ue_identity.gummei.mnc = *r_mme->plmn_Identity->mnc.list.array[0];
LOG_I(S1AP, "[eNB %d] Build S1AP_NAS_FIRST_REQ adding in s_TMSI: GUMMEI MNC %u ue %x\n",
ctxt_pP->module_id,
S1AP_NAS_FIRST_REQ (message_p).ue_identity.gummei.mnc,
ue_context_pP->ue_context.rnti);
}
} else {
const Enb_properties_array_t *enb_properties_p = NULL;
enb_properties_p = enb_config_get();
// actually the eNB configuration contains only one PLMN (can be up to 6)
S1AP_NAS_FIRST_REQ (message_p).ue_identity.gummei.mcc = enb_properties_p->properties[ctxt_pP->module_id]->mcc;
S1AP_NAS_FIRST_REQ (message_p).ue_identity.gummei.mnc = enb_properties_p->properties[ctxt_pP->module_id]->mnc;
S1AP_NAS_FIRST_REQ (message_p).ue_identity.gummei.mnc_len = enb_properties_p->properties[ctxt_pP->module_id]->mnc_digit_length;
}
S1AP_NAS_FIRST_REQ (message_p).ue_identity.gummei.mme_code = BIT_STRING_to_uint8 (&r_mme->mmec);
S1AP_NAS_FIRST_REQ (message_p).ue_identity.gummei.mme_group_id = BIT_STRING_to_uint16 (&r_mme->mmegi);
MSC_LOG_TX_MESSAGE(
MSC_S1AP_ENB,
MSC_S1AP_MME,
(const char *)&message_p->ittiMsg.s1ap_nas_first_req,
sizeof(s1ap_nas_first_req_t),
MSC_AS_TIME_FMT" S1AP_NAS_FIRST_REQ eNB %u UE %x",
MSC_AS_TIME_ARGS(ctxt_pP),
ctxt_pP->module_id,
ctxt_pP->rnti);
LOG_I(S1AP, "[eNB %d] Build S1AP_NAS_FIRST_REQ adding in s_TMSI: GUMMEI mme_code %u mme_group_id %u ue %x\n",
ctxt_pP->module_id,
S1AP_NAS_FIRST_REQ (message_p).ue_identity.gummei.mme_code,
S1AP_NAS_FIRST_REQ (message_p).ue_identity.gummei.mme_group_id,
ue_context_pP->ue_context.rnti);
}
}
itti_send_msg_to_task (TASK_S1AP, ctxt_pP->instance, message_p);
}
#else
{
s1ap_eNB_new_data_request (
ctxt_pP->module_id,
ue_context_pP,
rrcConnectionSetupComplete->dedicatedInfoNAS.
buf,
rrcConnectionSetupComplete->dedicatedInfoNAS.
size);
}
#endif
}
# if defined(ENABLE_ITTI)
//------------------------------------------------------------------------------
int
rrc_eNB_process_S1AP_DOWNLINK_NAS(
MessageDef* msg_p,
const char* msg_name,
instance_t instance,
mui_t* rrc_eNB_mui
)
//------------------------------------------------------------------------------
{
uint16_t ue_initial_id;
uint32_t eNB_ue_s1ap_id;
uint32_t length;
uint8_t *buffer;
uint8_t srb_id;
struct rrc_eNB_ue_context_s* ue_context_p = NULL;
protocol_ctxt_t ctxt;
ue_initial_id = S1AP_DOWNLINK_NAS (msg_p).ue_initial_id;
eNB_ue_s1ap_id = S1AP_DOWNLINK_NAS (msg_p).eNB_ue_s1ap_id;
ue_context_p = rrc_eNB_get_ue_context_from_s1ap_ids(instance, ue_initial_id, eNB_ue_s1ap_id);
srb_id = ue_context_p->ue_context.Srb2.Srb_info.Srb_id;
LOG_I(RRC, "[eNB %d] Received %s: ue_initial_id %d, eNB_ue_s1ap_id %d\n",
instance,
msg_name,
ue_initial_id,
eNB_ue_s1ap_id);
if (ue_context_p == NULL) {
MSC_LOG_RX_MESSAGE(
MSC_RRC_ENB,
MSC_S1AP_ENB,
NULL,
0,
MSC_AS_TIME_FMT" DOWNLINK-NAS UE initial id %u eNB_ue_s1ap_id %u",
0,0,//MSC_AS_TIME_ARGS(ctxt_pP),
ue_initial_id,
eNB_ue_s1ap_id);
/* Can not associate this message to an UE index, send a failure to S1AP and discard it! */
MessageDef *msg_fail_p;
LOG_W(RRC, "[eNB %d] In S1AP_DOWNLINK_NAS: unknown UE from S1AP ids (%d, %d)\n", instance, ue_initial_id, eNB_ue_s1ap_id);
msg_fail_p = itti_alloc_new_message (TASK_RRC_ENB, S1AP_NAS_NON_DELIVERY_IND);
S1AP_NAS_NON_DELIVERY_IND (msg_fail_p).eNB_ue_s1ap_id = eNB_ue_s1ap_id;
S1AP_NAS_NON_DELIVERY_IND (msg_fail_p).nas_pdu.length = S1AP_DOWNLINK_NAS (msg_p).nas_pdu.length;
S1AP_NAS_NON_DELIVERY_IND (msg_fail_p).nas_pdu.buffer = S1AP_DOWNLINK_NAS (msg_p).nas_pdu.buffer;
// TODO add failure cause when defined!
MSC_LOG_TX_MESSAGE(
MSC_RRC_ENB,
MSC_S1AP_ENB,
(const char *)NULL,
0,
MSC_AS_TIME_FMT" S1AP_NAS_NON_DELIVERY_IND UE initial id %u eNB_ue_s1ap_id %u (ue ctxt !found)",
0,0,//MSC_AS_TIME_ARGS(ctxt_pP),
ue_initial_id,
eNB_ue_s1ap_id);
itti_send_msg_to_task (TASK_S1AP, instance, msg_fail_p);
return (-1);
} else {
PROTOCOL_CTXT_SET_BY_INSTANCE(&ctxt, instance, ENB_FLAG_YES, ue_context_p->ue_context.rnti, 0, 0);
/* Is it the first income from S1AP ? */
if (ue_context_p->ue_context.eNB_ue_s1ap_id == 0) {
ue_context_p->ue_context.eNB_ue_s1ap_id = S1AP_DOWNLINK_NAS (msg_p).eNB_ue_s1ap_id;
}
MSC_LOG_RX_MESSAGE(
MSC_RRC_ENB,
MSC_S1AP_ENB,
(const char *)NULL,
0,
MSC_AS_TIME_FMT" DOWNLINK-NAS UE initial id %u eNB_ue_s1ap_id %u",
0,0,//MSC_AS_TIME_ARGS(ctxt_pP),
ue_initial_id,
S1AP_DOWNLINK_NAS (msg_p).eNB_ue_s1ap_id);
/* Create message for PDCP (DLInformationTransfer_t) */
length = do_DLInformationTransfer (
instance,
&buffer,
rrc_eNB_get_next_transaction_identifier (instance),
S1AP_DOWNLINK_NAS (msg_p).nas_pdu.length,
S1AP_DOWNLINK_NAS (msg_p).nas_pdu.buffer);
#ifdef RRC_MSG_PRINT
int i=0;
LOG_F(RRC,"[MSG] RRC DL Information Transfer\n");
for (i = 0; i < length; i++) {
LOG_F(RRC,"%02x ", ((uint8_t*)buffer)[i]);
}
LOG_F(RRC,"\n");
#endif
/*
* switch UL or DL NAS message without RRC piggybacked to SRB2 if active.
*/
/* Transfer data to PDCP */
rrc_data_req (
&ctxt,
srb_id,
*rrc_eNB_mui++,
SDU_CONFIRM_NO,
length,
buffer,
PDCP_TRANSMISSION_MODE_CONTROL);
return (0);
}
}
/*------------------------------------------------------------------------------*/
int rrc_eNB_process_S1AP_INITIAL_CONTEXT_SETUP_REQ(MessageDef *msg_p, const char *msg_name, instance_t instance)
{
uint16_t ue_initial_id;
uint32_t eNB_ue_s1ap_id;
//MessageDef *message_gtpv1u_p = NULL;
gtpv1u_enb_create_tunnel_req_t create_tunnel_req;
gtpv1u_enb_create_tunnel_resp_t create_tunnel_resp;
struct rrc_eNB_ue_context_s* ue_context_p = NULL;
protocol_ctxt_t ctxt;
ue_initial_id = S1AP_INITIAL_CONTEXT_SETUP_REQ (msg_p).ue_initial_id;
eNB_ue_s1ap_id = S1AP_INITIAL_CONTEXT_SETUP_REQ (msg_p).eNB_ue_s1ap_id;
ue_context_p = rrc_eNB_get_ue_context_from_s1ap_ids(instance, ue_initial_id, eNB_ue_s1ap_id);
LOG_I(RRC, "[eNB %d] Received %s: ue_initial_id %d, eNB_ue_s1ap_id %d, nb_of_e_rabs %d\n",
instance, msg_name, ue_initial_id, eNB_ue_s1ap_id, S1AP_INITIAL_CONTEXT_SETUP_REQ (msg_p).nb_of_e_rabs);
if (ue_context_p == NULL) {
/* Can not associate this message to an UE index, send a failure to S1AP and discard it! */
MessageDef *msg_fail_p = NULL;
LOG_W(RRC, "[eNB %d] In S1AP_INITIAL_CONTEXT_SETUP_REQ: unknown UE from S1AP ids (%d, %d)\n", instance, ue_initial_id, eNB_ue_s1ap_id);
msg_fail_p = itti_alloc_new_message (TASK_RRC_ENB, S1AP_INITIAL_CONTEXT_SETUP_FAIL);
S1AP_INITIAL_CONTEXT_SETUP_FAIL (msg_fail_p).eNB_ue_s1ap_id = eNB_ue_s1ap_id;
// TODO add failure cause when defined!
itti_send_msg_to_task (TASK_S1AP, instance, msg_fail_p);
return (-1);
} else {
PROTOCOL_CTXT_SET_BY_INSTANCE(&ctxt, instance, ENB_FLAG_YES, ue_context_p->ue_context.rnti, 0, 0);
ue_context_p->ue_context.eNB_ue_s1ap_id = S1AP_INITIAL_CONTEXT_SETUP_REQ (msg_p).eNB_ue_s1ap_id;
/* Save e RAB information for later */
{
int i;
memset(&create_tunnel_req, 0 , sizeof(create_tunnel_req));
ue_context_p->ue_context.nb_of_e_rabs = S1AP_INITIAL_CONTEXT_SETUP_REQ (msg_p).nb_of_e_rabs;
for (i = 0; i < ue_context_p->ue_context.nb_of_e_rabs; i++) {
ue_context_p->ue_context.e_rab[i].status = E_RAB_STATUS_NEW;
ue_context_p->ue_context.e_rab[i].param = S1AP_INITIAL_CONTEXT_SETUP_REQ (msg_p).e_rab_param[i];
create_tunnel_req.eps_bearer_id[i] = S1AP_INITIAL_CONTEXT_SETUP_REQ (msg_p).e_rab_param[i].e_rab_id;
create_tunnel_req.sgw_S1u_teid[i] = S1AP_INITIAL_CONTEXT_SETUP_REQ (msg_p).e_rab_param[i].gtp_teid;
memcpy(&create_tunnel_req.sgw_addr[i],
&S1AP_INITIAL_CONTEXT_SETUP_REQ (msg_p).e_rab_param[i].sgw_addr,
sizeof(transport_layer_addr_t));
}
create_tunnel_req.rnti = ue_context_p->ue_context.rnti; // warning put zero above
create_tunnel_req.num_tunnels = i;
gtpv1u_create_s1u_tunnel(
instance,
&create_tunnel_req,
&create_tunnel_resp);
rrc_eNB_process_GTPV1U_CREATE_TUNNEL_RESP(
&ctxt,
&create_tunnel_resp);
ue_context_p->ue_context.setup_e_rabs=ue_context_p->ue_context.nb_of_e_rabs;
}
/* TODO parameters yet to process ... */
{
// S1AP_INITIAL_CONTEXT_SETUP_REQ(msg_p).ue_ambr;
}
rrc_eNB_process_security (
&ctxt,
ue_context_p,
&S1AP_INITIAL_CONTEXT_SETUP_REQ(msg_p).security_capabilities);
process_eNB_security_key (
&ctxt,
ue_context_p,
S1AP_INITIAL_CONTEXT_SETUP_REQ(msg_p).security_key);
{
uint8_t send_security_mode_command = TRUE;
#ifndef EXMIMO_IOT
if ((ue_context_p->ue_context.ciphering_algorithm == SecurityAlgorithmConfig__cipheringAlgorithm_eea0)
&& (ue_context_p->ue_context.integrity_algorithm == INTEGRITY_ALGORITHM_NONE)) {
send_security_mode_command = FALSE;
}
#endif
rrc_pdcp_config_security(
&ctxt,
ue_context_p,
send_security_mode_command);
if (send_security_mode_command) {
rrc_eNB_generate_SecurityModeCommand (
&ctxt,
ue_context_p);
send_security_mode_command = FALSE;
// apply ciphering after RRC security command mode
rrc_pdcp_config_security(
&ctxt,
ue_context_p,
send_security_mode_command);
} else {
rrc_eNB_generate_UECapabilityEnquiry (&ctxt, ue_context_p);
}
}
return (0);
}
}
/*------------------------------------------------------------------------------*/
int rrc_eNB_process_S1AP_UE_CTXT_MODIFICATION_REQ(MessageDef *msg_p, const char *msg_name, instance_t instance)
{
uint32_t eNB_ue_s1ap_id;
struct rrc_eNB_ue_context_s* ue_context_p = NULL;
protocol_ctxt_t ctxt;
eNB_ue_s1ap_id = S1AP_UE_CTXT_MODIFICATION_REQ (msg_p).eNB_ue_s1ap_id;
ue_context_p = rrc_eNB_get_ue_context_from_s1ap_ids(instance, UE_INITIAL_ID_INVALID, eNB_ue_s1ap_id);
if (ue_context_p == NULL) {
/* Can not associate this message to an UE index, send a failure to S1AP and discard it! */
MessageDef *msg_fail_p;
LOG_W(RRC, "[eNB %d] In S1AP_UE_CTXT_MODIFICATION_REQ: unknown UE from eNB_ue_s1ap_id (%d) for eNB %d\n", instance, eNB_ue_s1ap_id);
msg_fail_p = itti_alloc_new_message (TASK_RRC_ENB, S1AP_UE_CTXT_MODIFICATION_FAIL);
S1AP_UE_CTXT_MODIFICATION_FAIL (msg_fail_p).eNB_ue_s1ap_id = eNB_ue_s1ap_id;
// TODO add failure cause when defined!
itti_send_msg_to_task (TASK_S1AP, instance, msg_fail_p);
return (-1);
} else {
PROTOCOL_CTXT_SET_BY_INSTANCE(&ctxt, instance, ENB_FLAG_YES, ue_context_p->ue_context.rnti, 0, 0);
/* TODO parameters yet to process ... */
{
if (S1AP_UE_CTXT_MODIFICATION_REQ(msg_p).present & S1AP_UE_CONTEXT_MODIFICATION_UE_AMBR) {
// S1AP_UE_CTXT_MODIFICATION_REQ(msg_p).ue_ambr;
}
}
if (S1AP_UE_CTXT_MODIFICATION_REQ(msg_p).present & S1AP_UE_CONTEXT_MODIFICATION_UE_SECU_CAP) {
if (rrc_eNB_process_security (
&ctxt,
ue_context_p,
&S1AP_UE_CTXT_MODIFICATION_REQ(msg_p).security_capabilities)) {
/* transmit the new security parameters to UE */
rrc_eNB_generate_SecurityModeCommand (
&ctxt,
ue_context_p);
}
}
if (S1AP_UE_CTXT_MODIFICATION_REQ(msg_p).present & S1AP_UE_CONTEXT_MODIFICATION_SECURITY_KEY) {
process_eNB_security_key (
&ctxt,
ue_context_p,
S1AP_UE_CTXT_MODIFICATION_REQ(msg_p).security_key);
/* TODO reconfigure lower layers... */
}
/* Send the response */
{
MessageDef *msg_resp_p;
msg_resp_p = itti_alloc_new_message(TASK_RRC_ENB, S1AP_UE_CTXT_MODIFICATION_RESP);
S1AP_UE_CTXT_MODIFICATION_RESP(msg_resp_p).eNB_ue_s1ap_id = eNB_ue_s1ap_id;
itti_send_msg_to_task(TASK_S1AP, instance, msg_resp_p);
}
return (0);
}
}
/*------------------------------------------------------------------------------*/
int rrc_eNB_process_S1AP_UE_CONTEXT_RELEASE_REQ (MessageDef *msg_p, const char *msg_name, instance_t instance)
{
uint32_t eNB_ue_s1ap_id;
struct rrc_eNB_ue_context_s* ue_context_p = NULL;
eNB_ue_s1ap_id = S1AP_UE_CONTEXT_RELEASE_REQ(msg_p).eNB_ue_s1ap_id;
ue_context_p = rrc_eNB_get_ue_context_from_s1ap_ids(instance, UE_INITIAL_ID_INVALID, eNB_ue_s1ap_id);
if (ue_context_p == NULL) {
/* Can not associate this message to an UE index, send a failure to S1AP and discard it! */
MessageDef *msg_fail_p;
LOG_W(RRC, "[eNB %d] In S1AP_UE_CONTEXT_RELEASE_REQ: unknown UE from eNB_ue_s1ap_id (%d)\n",
instance,
eNB_ue_s1ap_id);
msg_fail_p = itti_alloc_new_message(TASK_RRC_ENB, S1AP_UE_CONTEXT_RELEASE_RESP); /* TODO change message ID. */
S1AP_UE_CONTEXT_RELEASE_RESP(msg_fail_p).eNB_ue_s1ap_id = eNB_ue_s1ap_id;
// TODO add failure cause when defined!
itti_send_msg_to_task(TASK_S1AP, instance, msg_fail_p);
return (-1);
} else {
/* TODO release context. */
/* Send the response */
{
MessageDef *msg_resp_p;
msg_resp_p = itti_alloc_new_message(TASK_RRC_ENB, S1AP_UE_CONTEXT_RELEASE_RESP);
S1AP_UE_CONTEXT_RELEASE_RESP(msg_resp_p).eNB_ue_s1ap_id = eNB_ue_s1ap_id;
itti_send_msg_to_task(TASK_S1AP, instance, msg_resp_p);
}
return (0);
}
}
//------------------------------------------------------------------------------
void rrc_eNB_send_S1AP_UE_CONTEXT_RELEASE_REQ (
const module_id_t enb_mod_idP,
const rrc_eNB_ue_context_t* const ue_context_pP,
const s1ap_Cause_t causeP,
const long cause_valueP
)
//------------------------------------------------------------------------------
{
if (ue_context_pP == NULL) {
LOG_W(RRC,
"[eNB] In S1AP_UE_CONTEXT_RELEASE_COMMAND: invalid UE\n");
} else {
MSC_LOG_TX_MESSAGE(
MSC_RRC_ENB,
MSC_S1AP_ENB,
NULL,0,
"0 S1AP_UE_CONTEXT_RELEASE_REQ eNB_ue_s1ap_id 0x%06"PRIX32" ",
ue_context_pP->ue_context.eNB_ue_s1ap_id);
MessageDef *msg_context_release_req_p = NULL;
msg_context_release_req_p = itti_alloc_new_message(TASK_RRC_ENB, S1AP_UE_CONTEXT_RELEASE_REQ);
S1AP_UE_CONTEXT_RELEASE_REQ(msg_context_release_req_p).eNB_ue_s1ap_id = ue_context_pP->ue_context.eNB_ue_s1ap_id;
S1AP_UE_CONTEXT_RELEASE_REQ(msg_context_release_req_p).cause = causeP;
S1AP_UE_CONTEXT_RELEASE_REQ(msg_context_release_req_p).cause_value = cause_valueP;
itti_send_msg_to_task(TASK_S1AP, ENB_MODULE_ID_TO_INSTANCE(enb_mod_idP), msg_context_release_req_p);
}
}
/*------------------------------------------------------------------------------*/
int rrc_eNB_process_S1AP_UE_CONTEXT_RELEASE_COMMAND (MessageDef *msg_p, const char *msg_name, instance_t instance)
{
uint32_t eNB_ue_s1ap_id;
protocol_ctxt_t ctxt;
struct rrc_eNB_ue_context_s *ue_context_p = NULL;
struct rrc_ue_s1ap_ids_s *rrc_ue_s1ap_ids = NULL;
eNB_ue_s1ap_id = S1AP_UE_CONTEXT_RELEASE_COMMAND(msg_p).eNB_ue_s1ap_id;
ue_context_p = rrc_eNB_get_ue_context_from_s1ap_ids(instance, UE_INITIAL_ID_INVALID, eNB_ue_s1ap_id);
if (ue_context_p == NULL) {
/* Can not associate this message to an UE index */
MessageDef *msg_complete_p;
LOG_W(RRC,
"[eNB %d] In S1AP_UE_CONTEXT_RELEASE_COMMAND: unknown UE from eNB_ue_s1ap_id (%d)\n",
instance,
eNB_ue_s1ap_id);
MSC_LOG_EVENT(
MSC_RRC_ENB,
"0 S1AP_UE_CONTEXT_RELEASE_COMPLETE eNB_ue_s1ap_id 0x%06"PRIX32" context not found",
eNB_ue_s1ap_id);
MSC_LOG_TX_MESSAGE(
MSC_RRC_ENB,
MSC_S1AP_ENB,
NULL,0,
"0 S1AP_UE_CONTEXT_RELEASE_COMPLETE eNB_ue_s1ap_id 0x%06"PRIX32" ",
eNB_ue_s1ap_id);
msg_complete_p = itti_alloc_new_message(TASK_RRC_ENB, S1AP_UE_CONTEXT_RELEASE_COMPLETE);
S1AP_UE_CONTEXT_RELEASE_COMPLETE(msg_complete_p).eNB_ue_s1ap_id = eNB_ue_s1ap_id;
itti_send_msg_to_task(TASK_S1AP, instance, msg_complete_p);
rrc_ue_s1ap_ids = rrc_eNB_S1AP_get_ue_ids(
&eNB_rrc_inst[instance],
UE_INITIAL_ID_INVALID,
eNB_ue_s1ap_id);
if (NULL != rrc_ue_s1ap_ids) {
rrc_eNB_S1AP_remove_ue_ids(
&eNB_rrc_inst[instance],
rrc_ue_s1ap_ids);
}
return (-1);
} else {
PROTOCOL_CTXT_SET_BY_INSTANCE(&ctxt, instance, ENB_FLAG_YES, ue_context_p->ue_context.rnti, 0, 0);
rrc_eNB_generate_RRCConnectionRelease(&ctxt, ue_context_p);
/*
LOG_W(RRC,
"[eNB %d] In S1AP_UE_CONTEXT_RELEASE_COMMAND: TODO call rrc_eNB_connection_release for eNB %d\n",
instance,
eNB_ue_s1ap_id);
*/
{
int e_rab;
//int mod_id = 0;
MessageDef *msg_delete_tunnels_p = NULL;
MSC_LOG_TX_MESSAGE(
MSC_RRC_ENB,
MSC_GTPU_ENB,
NULL,0,
"0 GTPV1U_ENB_DELETE_TUNNEL_REQ rnti %x ",
eNB_ue_s1ap_id);
msg_delete_tunnels_p = itti_alloc_new_message(TASK_RRC_ENB, GTPV1U_ENB_DELETE_TUNNEL_REQ);
memset(&GTPV1U_ENB_DELETE_TUNNEL_REQ(msg_delete_tunnels_p),
0,
sizeof(GTPV1U_ENB_DELETE_TUNNEL_REQ(msg_delete_tunnels_p)));
// do not wait response
GTPV1U_ENB_DELETE_TUNNEL_REQ(msg_delete_tunnels_p).rnti = ue_context_p->ue_context.rnti;
for (e_rab = 0; e_rab < ue_context_p->ue_context.nb_of_e_rabs; e_rab++) {
GTPV1U_ENB_DELETE_TUNNEL_REQ(msg_delete_tunnels_p).eps_bearer_id[GTPV1U_ENB_DELETE_TUNNEL_REQ(msg_delete_tunnels_p).num_erab++] =
ue_context_p->ue_context.enb_gtp_ebi[e_rab];
// erase data
ue_context_p->ue_context.enb_gtp_teid[e_rab] = 0;
memset(&ue_context_p->ue_context.enb_gtp_addrs[e_rab], 0, sizeof(ue_context_p->ue_context.enb_gtp_addrs[e_rab]));
ue_context_p->ue_context.enb_gtp_ebi[e_rab] = 0;
}
itti_send_msg_to_task(TASK_GTPV1_U, instance, msg_delete_tunnels_p);
MSC_LOG_TX_MESSAGE(
MSC_RRC_ENB,
MSC_S1AP_ENB,
NULL,0,
"0 S1AP_UE_CONTEXT_RELEASE_COMPLETE eNB_ue_s1ap_id 0x%06"PRIX32" ",
eNB_ue_s1ap_id);
MessageDef *msg_complete_p = NULL;
msg_complete_p = itti_alloc_new_message(TASK_RRC_ENB, S1AP_UE_CONTEXT_RELEASE_COMPLETE);
S1AP_UE_CONTEXT_RELEASE_COMPLETE(msg_complete_p).eNB_ue_s1ap_id = eNB_ue_s1ap_id;
itti_send_msg_to_task(TASK_S1AP, instance, msg_complete_p);
rrc_ue_s1ap_ids = rrc_eNB_S1AP_get_ue_ids(
&eNB_rrc_inst[instance],
UE_INITIAL_ID_INVALID,
eNB_ue_s1ap_id);
if (NULL != rrc_ue_s1ap_ids) {
rrc_eNB_S1AP_remove_ue_ids(
&eNB_rrc_inst[instance],
rrc_ue_s1ap_ids);
}
}
return (0);
}
}
int rrc_eNB_process_S1AP_E_RAB_SETUP_REQ(MessageDef *msg_p, const char *msg_name, instance_t instance)
{
uint16_t ue_initial_id;
uint32_t eNB_ue_s1ap_id;
MessageDef *message_gtpv1u_p = NULL;
gtpv1u_enb_create_tunnel_req_t create_tunnel_req;
gtpv1u_enb_create_tunnel_resp_t create_tunnel_resp;
struct rrc_eNB_ue_context_s* ue_context_p = NULL;
protocol_ctxt_t ctxt;
ue_initial_id = S1AP_E_RAB_SETUP_REQ (msg_p).ue_initial_id;
eNB_ue_s1ap_id = S1AP_E_RAB_SETUP_REQ (msg_p).eNB_ue_s1ap_id;
ue_context_p = rrc_eNB_get_ue_context_from_s1ap_ids(instance, ue_initial_id, eNB_ue_s1ap_id);
LOG_I(RRC, "[eNB %d] Received %s: ue_initial_id %d, eNB_ue_s1ap_id %d, nb_of_e_rabs %d\n",
instance, msg_name, ue_initial_id, eNB_ue_s1ap_id, S1AP_E_RAB_SETUP_REQ (msg_p).nb_e_rabs_tosetup);
if (ue_context_p == NULL) {
/* Can not associate this message to an UE index, send a failure to S1AP and discard it! */
MessageDef *msg_fail_p = NULL;
LOG_W(RRC, "[eNB %d] In S1AP_E_RAB_SETUP_REQ: unknown UE from S1AP ids (%d, %d)\n", instance, ue_initial_id, eNB_ue_s1ap_id);
msg_fail_p = itti_alloc_new_message (TASK_RRC_ENB, S1AP_E_RAB_SETUP_REQUEST_FAIL);
S1AP_E_RAB_SETUP_REQ (msg_fail_p).eNB_ue_s1ap_id = eNB_ue_s1ap_id;
// TODO add failure cause when defined!
itti_send_msg_to_task (TASK_S1AP, instance, msg_fail_p);
return (-1);
} else {
PROTOCOL_CTXT_SET_BY_INSTANCE(&ctxt, instance, ENB_FLAG_YES, ue_context_p->ue_context.rnti, 0, 0);
ue_context_p->ue_context.eNB_ue_s1ap_id = S1AP_E_RAB_SETUP_REQ (msg_p).eNB_ue_s1ap_id;
/* Save e RAB information for later */
{
int i;
memset(&create_tunnel_req, 0 , sizeof(create_tunnel_req));
uint8_t nb_e_rabs_tosetup = S1AP_E_RAB_SETUP_REQ (msg_p).nb_e_rabs_tosetup;
// keep the previous bearer
// the index for the rec
for (i = 0;
i < nb_e_rabs_tosetup;
i++) {
if (ue_context_p->ue_context.e_rab[i+ue_context_p->ue_context.setup_e_rabs].status == E_RAB_STATUS_DONE)
LOG_W(RRC,"E-RAB already configured, reconfiguring\n");
ue_context_p->ue_context.e_rab[i+ue_context_p->ue_context.setup_e_rabs].status = E_RAB_STATUS_NEW;
ue_context_p->ue_context.e_rab[i+ue_context_p->ue_context.setup_e_rabs].param = S1AP_E_RAB_SETUP_REQ (msg_p).e_rab_setup_params[i];
create_tunnel_req.eps_bearer_id[i] = S1AP_E_RAB_SETUP_REQ (msg_p).e_rab_setup_params[i].e_rab_id;
create_tunnel_req.sgw_S1u_teid[i] = S1AP_E_RAB_SETUP_REQ (msg_p).e_rab_setup_params[i].gtp_teid;
memcpy(&create_tunnel_req.sgw_addr[i],
& S1AP_E_RAB_SETUP_REQ (msg_p).e_rab_setup_params[i].sgw_addr,
sizeof(transport_layer_addr_t));
LOG_I(RRC,"E_RAB setup REQ: local index %d teid %u, eps id %d \n",
i+ue_context_p->ue_context.setup_e_rabs,
create_tunnel_req.sgw_S1u_teid[i],
create_tunnel_req.eps_bearer_id[i] );
}
ue_context_p->ue_context.nb_of_e_rabs=nb_e_rabs_tosetup;
create_tunnel_req.rnti = ue_context_p->ue_context.rnti; // warning put zero above
create_tunnel_req.num_tunnels = i;
// NN: not sure if we should create a new tunnel: need to check teid, etc.
gtpv1u_create_s1u_tunnel(
instance,
&create_tunnel_req,
&create_tunnel_resp);
rrc_eNB_process_GTPV1U_CREATE_TUNNEL_RESP(
&ctxt,
&create_tunnel_resp);
ue_context_p->ue_context.setup_e_rabs+=nb_e_rabs_tosetup;
}
/* TODO parameters yet to process ... */
{
// S1AP_INITIAL_CONTEXT_SETUP_REQ(msg_p).ue_ambr;
}
rrc_eNB_generate_dedicatedRRCConnectionReconfiguration(&ctxt, ue_context_p, 0);
return (0);
}
}
/*NN: careful about the typcast of xid (long -> uint8_t*/
int rrc_eNB_send_S1AP_E_RAB_SETUP_RESP(const protocol_ctxt_t* const ctxt_pP,
rrc_eNB_ue_context_t* const ue_context_pP,
uint8_t xid ){
MessageDef *msg_p = NULL;
int e_rab;
int e_rabs_done = 0;
int e_rabs_failed = 0;
msg_p = itti_alloc_new_message (TASK_RRC_ENB, S1AP_E_RAB_SETUP_RESP);
S1AP_E_RAB_SETUP_RESP (msg_p).eNB_ue_s1ap_id = ue_context_pP->ue_context.eNB_ue_s1ap_id;
for (e_rab = 0; e_rab < ue_context_pP->ue_context.setup_e_rabs ; e_rab++) {
/* only respond to the corresponding transaction */
//if (((xid+1)%4) == ue_context_pP->ue_context.e_rab[e_rab].xid) {
if (xid == ue_context_pP->ue_context.e_rab[e_rab].xid) {
if (ue_context_pP->ue_context.e_rab[e_rab].status == E_RAB_STATUS_DONE) {
S1AP_E_RAB_SETUP_RESP (msg_p).e_rabs[e_rabs_done].e_rab_id = ue_context_pP->ue_context.e_rab[e_rab].param.e_rab_id;
// TODO add other information from S1-U when it will be integrated
S1AP_E_RAB_SETUP_RESP (msg_p).e_rabs[e_rabs_done].gtp_teid = ue_context_pP->ue_context.enb_gtp_teid[e_rab];
S1AP_E_RAB_SETUP_RESP (msg_p).e_rabs[e_rabs_done].eNB_addr = ue_context_pP->ue_context.enb_gtp_addrs[e_rab];
//S1AP_E_RAB_SETUP_RESP (msg_p).e_rabs[e_rab].eNB_addr.length += 4;
ue_context_pP->ue_context.e_rab[e_rab].status = E_RAB_STATUS_ESTABLISHED;
LOG_I (RRC,"enb_gtp_addr (msg index %d, e_rab index %d, status %d, xid %d): nb_of_e_rabs %d, e_rab_id %d, teid: %u, addr: %d.%d.%d.%d \n ",
e_rabs_done, e_rab, ue_context_pP->ue_context.e_rab[e_rab].status, xid,
ue_context_pP->ue_context.nb_of_e_rabs,
S1AP_E_RAB_SETUP_RESP (msg_p).e_rabs[e_rabs_done].e_rab_id,
S1AP_E_RAB_SETUP_RESP (msg_p).e_rabs[e_rabs_done].gtp_teid,
S1AP_E_RAB_SETUP_RESP (msg_p).e_rabs[e_rabs_done].eNB_addr.buffer[0],
S1AP_E_RAB_SETUP_RESP (msg_p).e_rabs[e_rabs_done].eNB_addr.buffer[1],
S1AP_E_RAB_SETUP_RESP (msg_p).e_rabs[e_rabs_done].eNB_addr.buffer[2],
S1AP_E_RAB_SETUP_RESP (msg_p).e_rabs[e_rabs_done].eNB_addr.buffer[3]);
e_rabs_done++;
} else if ((ue_context_pP->ue_context.e_rab[e_rab].status == E_RAB_STATUS_NEW) ||
(ue_context_pP->ue_context.e_rab[e_rab].status == E_RAB_STATUS_ESTABLISHED)){
LOG_D (RRC,"E-RAB is NEW or already ESTABLISHED\n");
}else { /* to be improved */
ue_context_pP->ue_context.e_rab[e_rab].status = E_RAB_STATUS_FAILED;
S1AP_E_RAB_SETUP_RESP (msg_p).e_rabs_failed[e_rabs_failed].e_rab_id = ue_context_pP->ue_context.e_rab[e_rab].param.e_rab_id;
e_rabs_failed++;
// TODO add cause when it will be integrated
}
S1AP_E_RAB_SETUP_RESP (msg_p).nb_of_e_rabs = e_rabs_done;
S1AP_E_RAB_SETUP_RESP (msg_p).nb_of_e_rabs_failed = e_rabs_failed;
// NN: add conditions for e_rabs_failed
if ((e_rabs_done > 0) ){
LOG_I(RRC,"S1AP_E_RAB_SETUP_RESP: sending the message: nb_of_erabs %d, total e_rabs %d, index %d\n",
ue_context_pP->ue_context.nb_of_e_rabs, ue_context_pP->ue_context.setup_e_rabs, e_rab);
MSC_LOG_TX_MESSAGE(
MSC_RRC_ENB,
MSC_S1AP_ENB,
(const char *)&S1AP_E_RAB_SETUP_RESP (msg_p),
sizeof(s1ap_e_rab_setup_resp_t),
MSC_AS_TIME_FMT" E_RAB_SETUP_RESP UE %X eNB_ue_s1ap_id %u e_rabs:%u succ %u fail",
MSC_AS_TIME_ARGS(ctxt_pP),
ue_context_pP->ue_id_rnti,
S1AP_E_RAB_SETUP_RESP (msg_p).eNB_ue_s1ap_id,
e_rabs_done, e_rabs_failed);
itti_send_msg_to_task (TASK_S1AP, ctxt_pP->instance, msg_p);
}
} else {
/*debug info for the xid */
LOG_D(RRC,"xid does not corresponds (context e_rab index %d, status %d, xid %d/%d) \n ",
e_rab, ue_context_pP->ue_context.e_rab[e_rab].status, xid, ue_context_pP->ue_context.e_rab[e_rab].xid);
}
}
return 0;
}
# endif /* defined(ENABLE_ITTI) */
#endif /* defined(ENABLE_USE_MME) */