Commit Graph

682 Commits

Author SHA1 Message Date
Pedro Alvarez a99ce1fc51 Started to remove unecesssary lookups in gen_auth_info_answer_xor 2020-02-26 18:15:13 +00:00
Pedro Alvarez 98400f65e2 Changed hss ue_ctx map to use unique pointers. 2020-02-26 18:15:13 +00:00
Pedro Alvarez 58bd5631e3 Starting to change map in HSS to use uinque_ptr. 2020-02-26 18:15:13 +00:00
Ismael Gomez a5b7dcdf16
Remove boost string (#936)
* Remove boost string

* Make sure that int/enc algos can be specified in capital case in the MME.

* Use == instead of compare for comparing strings with const chars

Co-authored-by: Pedro Alvarez <pedro.alvarez@softwareradiosystems.com>
2020-02-16 21:32:49 +01:00
Andre Puschmann cccabdaf4f removing unneeded install targets for static libs (reported by Filipe) 2020-02-10 17:38:42 +01:00
Pau Espin Pedrol 4949df257e Proper shutdown on SIGHUP
If a process exits and has a controlling terminal, everything under
it gets a SIGHUP by the kernel. That's the case for instance when
running a srsUE over ssh with some specific parameters. As a result,
when the ssh client is killed, SIGHUP is sent to srsUE, which will be
killed immediatelly without proper release, which means in turn that log
buffers are not flushed.
Let's do proper shutdown when SIGHUP is received so that everyone can
get log files.
2020-02-06 16:19:40 +01:00
Pau Espin Pedrol 64de92183b epc: Drop signal(SIGKILL) calls
SIGKILL cannot be intercepted by apps, so it's useless adding a signal
handler for them. I'm pretty sure the signal() function is erroring in
this scenarios. From signal() man page:
"The signals SIGKILL and SIGSTOP cannot be caught or ignored."
2020-02-06 16:19:40 +01:00
Merlin Chlosta c2e95b1e2a Reject TAU to force UE to reconnect 2020-01-28 11:50:28 +00:00
Andre Puschmann 476f970ee1 replace FIXME with TODO 2019-12-18 11:25:56 +01:00
Xavier Arteaga b48bb0d754 Removed atof, atoll and atoi calls 2019-12-02 09:47:22 +01:00
Pedro Alvarez 48f9df8615 Applied clang-format to all of the srsepc folder. 2019-10-18 15:40:40 +02:00
Andre Puschmann a2ab043c0d fix memleaks and uninitialized vars found by cppcheck 2019-09-20 10:55:29 +02:00
Andre Puschmann 4ac5448ad7 fix formatting in NAS 2019-09-16 21:39:15 +02:00
Pedro Alvarez 1ae8ccda8c Added EIA3 and EEA3 to default UE capabilities to srsUE. Added parsers for EEA3/EIA3 config options in srsENB and srsEPC 2019-09-10 13:46:21 +02:00
David Rupprecht bb97d7d199 fixing key naming 2019-09-10 13:46:21 +02:00
David Rupprecht 50332089ce Add EEA3 and EIA3 support for UE/enodeb and MME 2019-09-10 13:46:21 +02:00
Ismael Gomez c92c61d560
Optimized front-end logging processing (#641)
Avoid memory allocation and stringstream in log frontend calls (executed from worker threads). Uses a buffer pool of fixed buffer and vsnprintf
2019-09-04 15:32:29 +02:00
Francisco Paisana 67d6a25194 Moving mac timers to stack timers (#638)
* first step towards moving MAC timers to stack. Mac is still using its own timers. srslte::timers class can be restructured.

* moved timers out of the UE MAC
2019-09-04 15:28:09 +02:00
Digicrat 86ec3101e0 Fix bug wherein blank lines or trailing newlines causes parsing of user_db.csv to fail. 2019-08-05 11:16:41 +02:00
Pedro Alvarez 494be243c0 Changed security direction to use an enum. 2019-07-30 15:01:50 +02:00
Andre Puschmann 5faa819dcd fixing uninitialized class members found by coverity 2019-07-08 11:12:46 +01:00
Pedro Alvarez de4d459e5f Fix issue of IMSI context already present when receiving a GUTI attach with bad integrity. This could cause a sigpipe in the EPC when the eNB was re-started. 2019-07-03 17:24:40 +02:00
Pedro Alvarez b617f76bdc S1AP Debug message. 2019-07-03 17:24:40 +02:00
Pedro Alvarez b97d1191f4 Added more debug info at eNB GTP-U. Changed the pdcp_entity to follow the standard more strictly for RLC AM DRBs. 2019-06-27 17:09:52 +02:00
Pedro Alvarez 609e5cce2c Initializing attach request in EPC NAS. 2019-06-24 21:27:08 +02:00
Pedro Alvarez 2ed60412b9 Removing debug printfs. 2019-06-24 21:27:08 +02:00
Pedro Alvarez 36bd20d308 Making sure that the security algorithms are kept when the NAS context is reset. Attach request after a service reject seems to work now (with COTS UE). 2019-06-24 21:27:08 +02:00
Pedro Alvarez 50506ffa26 Changed NAS initialization from init function to constructor. Continuing to add the logic to handle attach request as a Uplink NAS message. Added debug log to s1ap::send_downling_nas_message. 2019-06-24 21:27:08 +02:00
Pedro Alvarez 20ee17088f Starting to add handling of attach request as a Uplink NAS transport message. 2019-06-24 21:27:08 +02:00
Pedro Alvarez d67d18cc6b Removing deplicated error codes. 2019-06-07 13:51:56 +02:00
Andre Puschmann e47010130f extend thread class to set unique thread name in ctor
this will also extend all classes that use srslte::thread
to specify the name of the thread in the ctor as well
as to set the name of the worker threads in the thread pool
the thread name will be displayed in gdb.
2019-06-03 15:03:20 +02:00
Francisco Paisana 0e3baa0f2f Renamed the reset() method of byte_buffer_t to clear() 2019-05-16 12:35:01 +02:00
Andre Puschmann 7e5e2b142e fix uninitialized members in MME NAS 2019-05-03 10:15:37 +02:00
Pedro Alvarez f303167206 Fix GTP-C socket initialization to remove compiler warnings. 2019-05-02 11:41:59 +02:00
Andre Puschmann 4c16a1f719 fix uninitialized struct 2019-04-30 13:59:06 +02:00
Andre Puschmann 64dd4c1fc4 fix issue when packing service reject fails and NAS uses initialized logger 2019-04-30 13:59:06 +02:00
Andre Puschmann 4b01a2e4a0 update copyright notice 2019-04-29 09:20:02 +02:00
Andre Puschmann 205db6f229 add missing license headers 2019-04-26 21:20:12 +02:00
Ismael Gomez 7780b1aba5 add tdd/ca support 2019-04-25 20:57:58 +02:00
Pedro Alvarez 64d50040e7 Changed some paging logs to debug and removed noisy print to console in the EPC 2019-04-15 14:52:09 +01:00
Pedro Alvarez 49577b6b5f Making sure that packet queued in the SPGW is freed when queue_downlink_packet enconters errors. Reverse the order of sending paging and queueing packet so that paging_pending is properly set to true. 2019-04-15 12:52:14 +02:00
Pedro Alvarez 7cdc012bb2 Printing fixes in the EPC for ARM 2019-04-12 20:08:25 +02:00
Pedro Alvarez 1bac758a85 EPC now sends service reject to a UE that sends service request with bad integrity. 2019-04-12 16:24:57 +02:00
David Rupprecht dabf586316 ISMI to IMSI typo 2019-04-11 21:38:01 +02:00
Pedro Alvarez d7d461fb8c Change user_db.csv.example to consider static IPs. Changed warning print in HSS. 2019-04-11 15:55:46 +02:00
Joseph Giovatto 056bfef996 use inet_pton to vefify ip address validity 2019-04-11 15:55:46 +02:00
Joseph Giovatto fa99aa590e added support for optional ue static ip address (rebase #225) 2019-04-11 15:55:46 +02:00
Andre Puschmann 41c85adaf2 handle EPC config file errors gracefully 2019-04-09 17:28:09 +02:00
Pedro Alvarez 3ad19f21b6 Adding per UE authentication algorithm choice to the HSS and users_db.csv. 2019-04-09 17:17:02 +02:00
Pedro Alvarez ca603810ce Adding Downlink data notification and paging functionality to the EPC.
This entails:

  * Adding S1AP paging messaging to the MME.
  * Adding the Downlink Data Notification, Donlink Data Notification Acknoledgment, and Downlink Data Notification Failure Messages.
  * Adding the logic at the GTP-U to detect that Downlink Data notification needs to be sent.
  * Proper handling of the new GTP-C messages at the MME GTPC and SPGW GTPC classes
  * Add queuing mechanisms at the GTP-U while waiting for paging response. Queue is flushed when paging fails (timeout or other).
  * Make sure eNB's SCTP information is properly stored.
  * Make sure UE's GUTI information is properly stored.
2019-04-09 16:59:44 +02:00
Pedro Alvarez 1db959c661 Added NAS timer functionality to the EPC. This entails:
* Adding timer creation at NAS using timerfd_create
  * Adding the ability to add and remove the timer file descriptor to the MME main select loop
  * Adding the ability to the MME for the NAS to check if a timer is running
  * Adding the timer expiry handling functionality at the MME
2019-04-08 13:05:54 +02:00
Pedro Alvarez 9463b95dc1 Remove unused mutex in the SPGW. 2019-04-03 09:52:18 +02:00
Pedro Alvarez 3933b269d7 Added GTP-C message passing between MME and SPGW using UNIX sockets.
* Added S11 sockets to SPGW select and MME select
  * Added send_s11_pdu message to SPGW and MME
  * Remove pointer for replies in handle_s11_pdu
2019-04-03 09:52:18 +02:00
Pedro Alvarez 3e9f10e20d Adding S11 initialization in MME and SPGW as unix sockets. 2019-04-03 09:52:18 +02:00
Pedro Alvarez 5f7b6ba79e Split GTP-C and GTP-U functionality into seperate classes in the SPGW. Added GTP-U specific logging in the EPC. Added handle_s11_pdu function to both the MME GTP-C entity and the SPGW GTP-C entity. 2019-04-02 09:17:00 +02:00
Pedro Alvarez 6e500c5b86 Changed initilization of the NAS at the EPC, to make it easier to add new interfaces. 2019-03-20 14:00:02 +01:00
Pedro Alvarez add60c1288 Applied clang-format to the EPC. 2019-03-20 14:00:02 +01:00
Andre Puschmann a436baed39 fix build string for builds without valid .git folder 2019-01-22 12:09:52 +01:00
Pedro Alvarez c5dad67a16 Adding catch to boost program options parser. 2019-01-18 12:38:56 +00:00
Francisco Paisana 0204db2e12 new asn1 rrc library 2019-01-17 17:43:13 +01:00
Pedro Alvarez b675e1fcc9 Ciphering EMM information message. Chainging detach_request security header in the UE to integrity and ciphered to avoid malformed message. 2019-01-14 17:00:16 +00:00
Pedro Alvarez b5d5f9f91c Re-adding support for EIA2 in EPC. 2019-01-14 15:38:19 +00:00
Pedro Alvarez 179aeddfa2 Added encryption of security mode command and attach accept again. Attach is working with encryption. 2019-01-11 18:13:29 +00:00
Pedro Alvarez 412b08c4bf Fixed UL nas count increment for GUTI with known UE and Service Request. Both seem to work now. 2019-01-11 16:28:35 +00:00
Pedro Alvarez 997c24c099 Added config of cipher_algo and integ_algo initialization in NAS class. 2018-12-18 18:27:31 +00:00
Pedro Alvarez 5eacdd5418 Fixed compilation issues. Attach failing with COTS UE. 2018-12-18 16:48:25 +00:00
Pedro Alvarez 31a25067f5 Merging David Ruprecth's mme_msg_encryption branch into next. Not compiling. 2018-12-18 12:03:52 +00:00
Pedro Alvarez a5a7eb02d2 Merge branch 'next' of github.com:softwareradiosystems/srsLTE into next 2018-12-14 17:16:41 +00:00
Andre Puschmann df7ab7ffe8 Merge branch 'master' into next 2018-12-14 16:54:46 +01:00
Pedro Alvarez 60fdc9ebe2 Small commit. 2018-12-14 14:45:40 +00:00
Pedro Alvarez ac0aa76afc Small print changes on NAS. 2018-12-14 14:42:24 +00:00
Pedro Alvarez 9380d56bbf Changing prints in S1AP and SPGW. 2018-12-14 14:28:25 +00:00
Pedro Alvarez 7fd6ae4c40 Changing NAS printing. 2018-12-14 14:16:41 +00:00
Pedro Alvarez 983ba4a3ab Strating to change prints in the HSS. 2018-12-14 14:10:49 +00:00
yagoda 94ec379f68 Small commit to test changes in prints. 2018-12-14 13:37:08 +00:00
rubund b801c3dd4e Fix some spelling errors detected by lintian (#271) 2018-12-03 10:36:15 +01:00
Pedro Alvarez 0320d475e9 Fix Uninitialized QoS options in attach accept. 2018-11-28 11:16:50 +00:00
David Rupprecht c480e57721 Config based security algorithm selection 2018-11-19 15:34:57 +01:00
David Rupprecht 3b7eeb5909 Do security (integrity checks in case of NAS UL message 2018-11-19 14:38:44 +01:00
David Rupprecht 1442606ee1 Encryption for ESM request 2018-11-19 14:11:33 +01:00
David Rupprecht 82f69d66dc ul_nas_count increment tau request 2018-11-19 13:40:54 +01:00
David Rupprecht 4a2c563f85 increase uplink ul nas count 2018-11-19 13:40:16 +01:00
David Rupprecht 2543a84aa4 Minor changes in nas uplink transport and increase uplink count 2018-11-19 13:39:30 +01:00
David Rupprecht 718262eaaf restucture NAS uplink message: todo security of message 2018-11-18 22:29:32 +01:00
David Rupprecht 894471e326 restructure handle_initial_ue_message 2018-11-18 21:36:36 +01:00
David Rupprecht 0dfa6426dd restructure handle_initial_ue_message 2018-11-18 21:35:55 +01:00
David Rupprecht e5e091b0c9 Minor fixes and code clean up 2018-11-18 21:18:17 +01:00
David Rupprecht e547883a8f Wrapper functions for integrity generate 2018-11-18 20:30:22 +01:00
Andre Puschmann cd7008a269 fix typo 2018-11-16 14:56:43 +01:00
David Rupprecht 7eef2c1c4b start with decryption function 2018-11-15 23:02:30 +01:00
Andre Puschmann 23836a8ab3 Merge branch 'next' into nas_cleanup 2018-10-22 11:26:00 +02:00
Andre Puschmann 15d439761a log build info in eNB/EPC logs 2018-10-05 14:58:09 +02:00
Pedro Alvarez 3cddad79cc Adding ability to configure names of TUN interfaces. (#277)
* added config option for tun dev names vs fixed names added config option for M1-U interface addr

* Added options to sgi_mb tun name.

* Added some comments to mbms.conf.example

* Added some comments to example configs to explain the new values.
2018-10-05 11:12:31 +02:00
Pedro Alvarez 35ca9ffd34 Adding TTL option 2018-10-04 14:44:26 +02:00
Pedro Alvarez 3ecacdf3a6 Adding selection of local interface at the MBMS-GW. 2018-10-04 14:44:26 +02:00
Pedro Alvarez d443604661 Merge next into gtp_cleanup_sn. Fixed some conflicts. 2018-10-04 12:09:13 +01:00
Andre Puschmann 0deda67930 print build-info during epc startup 2018-10-01 21:44:16 +02:00
Pedro Alvarez c1f633c5c7 Dropping bitfields for now. Using #defines and uint8_t for the flags. 2018-10-01 15:17:26 +01:00
Pedro Alvarez e320c33aef Fixed last compilation issues. 2018-09-28 15:42:28 +01:00
Pedro Alvarez ee04639337 Changed gtpu header flags to use a bitfield. Fixing compilation issues. 2018-09-28 13:46:13 +01:00
Pedro Alvarez 8072aaa091 Fixed minor mistake in resolving conflict. 2018-09-25 19:11:56 +01:00
Pedro Alvarez 8dc029cc47 Merging next into NAS cleanup. 2018-09-25 18:56:03 +01:00
Andre Puschmann b27ff06e79 Merge remote-tracking branch 'origin/issue_178' into next 2018-09-25 15:10:38 +02:00
Pedro Alvarez b4f9fb06dd Changing EPC to use uint32_to_uint8 function 2018-09-25 12:09:18 +01:00
Andre Puschmann 860d8af911 Merge branch 'master' into next 2018-09-24 15:50:10 +02:00
Zhe Huang 8b526e1c20 Fix SQN incrementation arithmetic (#212)
* Fix SQN incrementation arithmetic

Current implementation of increment_sqn function increments the 48 bits
SQN directly by 1 which is incorrect according to 3GPP TS 33.102 version
11.5.1 Annex C. This bug causes commercial UEs to report AUTHENTICATION
FAILURE EMM cause #21 "synch failure" when SQN is out of sync.

According to 3GPP TS 33.102 version 11.5.1 Annex C, 48 bits SQN consists
of 43 bits SEQ and 5 bits IND parts where SEQ are incremented during
generation of authentication vector or resync procedure. A
new IND value is also assigned when an authentication vector is
generated. However, resync procedure will use the same IND value.

This patch implements the increment_sqn function according to 3GPP TS
33.102 version 11.5.1 Annex C. A new function increment_seq_after_resync
is added to handle the special case of SQN arithmetic during SQN
resynchronization.

This patch is tested with two comercial UEs (Oneplus One and Oneplus 3T).

* Fix the maximum value of SEQ value to be 2^43-1

The SEQ value is 43 bits long and previous maximum value has a typo (one
extra F) which allows SEQ value to be 2^47-1. This patch corrects the typo.
2018-09-24 11:28:07 +02:00
Andre Puschmann a9d46cbad3 Merge branch 'master' into next_test_after_merge 2018-09-20 13:01:43 +02:00
Zhe Huang cd1fb0d81e Set AMF to all zeros during resync (#213)
During the resync procedure, the security_milenage_f1_star generates a
MAC_S value that does not match the MAC_S value reported in AUTS. This
posts a security risk.

According to 3GPP TS 33.102 version 11.5.1 section 6.3.3, the AMF used
to calculate MAC-S assumes a dummy value of all zeros so that it does
not need to be transmitted in the clear in the re-synch message.

This patch corrects this problem. MAC_S reported by AUTS matches the
MAC_S calculated using f1_star function after the fix.
2018-09-20 12:57:47 +02:00
Pedro Alvarez 7bad5a52a0 Merging handling of initial UE messages as static methods into nas cleanup. 2018-08-29 18:44:18 +01:00
Pedro Alvarez 9350e03810 Changed detach request and tracking area update request to nas.cc 2018-08-29 17:47:34 +01:00
Pedro Alvarez d2cb01ce87 Deleted old service request. 2018-08-29 14:56:55 +01:00
Pedro Alvarez a9e5b3b8e9 Changed service request to nas.cc 2018-08-29 14:52:09 +01:00
Pedro Alvarez 4313fb1e72 Making sure M-TMSI is in host order in other small bug fixes. 2018-08-28 17:28:31 +01:00
Pedro Alvarez 3337f21ffa Added handle GUTI attach from known UE again. 2018-08-28 15:29:26 +01:00
Pedro Alvarez 0d80ae795b Added IMSI attach from unknown UE as a static function. 2018-08-27 19:17:23 +01:00
Pedro Alvarez 0ddb3d39dc Moved handle_imsi_attach_request_from_unknown_ue to nas.cc in static method. Working. 2018-08-27 18:13:42 +01:00
Pedro Alvarez 860e1b5491 Changing Handling of initial UE NAS messages to use static methods. Handling of unknown GUTI attach request should be ok. 2018-08-27 16:06:18 +01:00
Pedro Alvarez 9e808ff968 Starting to handle NAS initial UE messages as static methods of the nas class. 2018-08-24 18:15:06 +01:00
Pedro Alvarez c011df5612 Changing Service request to nas.cc 2018-08-23 14:15:12 +01:00
Pedro Alvarez a46f1e4e9a Changing Tracking Area Update Request Initial Message to nas.cc 2018-08-23 12:19:17 +01:00
Pedro Alvarez e3286897ce Changed the rest of the nas handling to use send_downlink_nas_transport. 2018-08-22 16:59:40 +01:00
Pedro Alvarez f1d30c7f23 Changed handle guti_attach_from_known_ue and unknown_ue to use send_downstream_nas_message. 2018-08-22 15:00:01 +01:00
Pedro Alvarez dd725be60c Changed pack identity request. 2018-08-21 18:29:28 +01:00
Pedro Alvarez 65a5139751 Fixed mistake in downlink nas transport. Changing authication request to use downlink_nas_transport. 2018-08-21 17:51:00 +01:00
Pedro Alvarez 21c34b9ce5 Changing security mode complete to use downlink nas transport 2018-08-21 16:05:08 +01:00
Pedro Alvarez 93222f582c Changed authentication response to use downlink_nas_transport(). 2018-08-21 15:17:08 +01:00
Pedro Alvarez 3073ab6822 Changed dettach request to use downlink nas transport. 2018-08-21 14:11:28 +01:00
Pedro Alvarez 749e84315a Starting to add send_downlink_nas_transport helper function. 2018-08-21 12:57:23 +01:00
Pedro Alvarez 8bcc8ecaeb Starting to move initial attach request handling to nas.cc 2018-08-20 19:47:21 +01:00
Pedro Alvarez 872f7adc49 Added find imsi from TMSI helper function. 2018-08-20 17:59:50 +01:00
Pedro Alvarez fa0c8d5995 Moved most of IMSI attach request into nas.cc. 2018-08-20 16:48:16 +01:00
Pedro Alvarez f6b8982939 Moved most of the GUTI attach to nas.cc. 2018-08-20 15:48:23 +01:00
Pedro Alvarez c518d3fde3 Starting to move inital UE messages to nas.cc. Breaking up attach request handling into smaller functions. 2018-08-16 17:45:39 +01:00
Pedro Alvarez 1f2e22adf4 coding style fixup. 2018-08-16 12:48:37 +01:00
Pedro Alvarez 23bd95c432 Whitespace fix. 2018-08-15 18:38:06 +01:00
Pedro Alvarez 55675eb532 Fixed bug in setting MCC and MNC in attach accept. Attach seems to be working again. 2018-08-15 18:13:36 +01:00
Pedro Alvarez 1fba7f0afa Moved function that gets NAS type string to liblte_mme.cc 2018-08-14 18:42:48 +01:00
Pedro Alvarez 127e214b07 Added function to print string of NAS message type based on the message code. 2018-08-14 17:19:19 +01:00
Pedro Alvarez 5d75b16ee9 Fixed up mistake in UE Context Release command. 2018-08-14 15:38:25 +01:00
Pedro Alvarez 7c53330bec Fixed NAS initialization. Attach request seems to work again now. 2018-08-14 13:59:05 +01:00
Pedro Alvarez d76053e7ec Making sure NAS message is added to the initial context setup request. 2018-08-13 18:22:30 +01:00
Pedro Alvarez cdc72b8164 Fix bug in packing of transport layer address 2018-08-13 18:06:20 +01:00
Pedro Alvarez a4be55c030 Fixed bug in re-synch procedure. 2018-08-13 16:29:44 +01:00
Pedro Alvarez 4059b19b57 Coding style fixups in SP-GW. 2018-08-13 15:55:14 +01:00
Pedro Alvarez 66dc1e0700 Fixed up the initialization of NAS context in IMSI attach request. 2018-08-13 15:54:53 +01:00
Pedro Alvarez 7077530a29 Merge branch 'next' into nas_cleanup 2018-08-13 11:59:23 +01:00
Pedro Alvarez 0aed1f47a5 White space fixes. 2018-08-13 11:58:06 +01:00
Pedro Alvarez 4ba777c9c3 Added nas log. Fixed gen_auth_info_anwser. Authentication is working again. 2018-07-24 18:38:16 +01:00
Pedro Alvarez da840ac334 Fix un-initialized buffer pool in nas.cc 2018-07-23 18:44:19 +01:00
Pedro Alvarez 4e78d70d97 Fixing issue in pack identity request. 2018-07-23 18:25:15 +01:00