aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)AuthorFilesLines
2016-05-01RAB Assignment Response: Handle TEID changesHarald Welte1-2/+16
When the RNC confirms the RAB Assignment, it can each time indicate a new TEID for the GTP-U endpoint on the RNC side. We need to update our information about the PDP context and include that in the UPDATE PDP CONTEXT that we're sending towards the GGSN. This is similar to updating the RNC-side IP address of the GTP endpoint.
2016-05-01iu_rab_act_ps: Use GGSN-side TEI in RAB Assignment RequesetHarald Welte1-3/+3
When we send the RAB Assignment Request to the RNC, we need to tell it the GGSN-side TEI for data, not "our" (SGSN side) TEID. In the RAB-Assignment.req we inform the RNC of the TEID on the GGSN side, and in the RAB-Assignment.resp the RNC informs us of the TEID on the RNC side.
2016-05-01Identify PDP context by RAB ID, not TEIHarald Welte3-22/+2
When receiving an RAB-Assignment response from the RNC, we should use the RAB ID (=NSAPI) to resolve the PDP context. We cannot use the TEID, as the TEID chosen by the RNC for this RAB has no relationship to the TEID we were using for the RAB-Assignment request. TEIDs are local to each of the peer, like UDP port numbers.
2016-05-01libiu: Fix missing break statements in switch in cn_ranap_handle_co()Harald Welte1-0/+2
2016-05-01SGSN: Use PDP Context NSAPI as RAB IDHarald Welte4-16/+2
As Dieter has pointed out, the RANAP spec requires the RAB ID to be equal to the NSAPI of the PDP context for which it is established.
2016-05-01Fix parsing of auto-generated config fileHarald Welte1-1/+1
When starting with empty config file, saving it by 'write file', and then re-starting osmo-cscn, it would complain: Error occurred during reading below line: long name Osmocom Circuit-Switched Core Network The problem is that the vty parser is configured to expect a single token and not a list of tokens here, but we initialize the default value with multiple words (which are treated as separate token).
2016-04-27debug log for paging: add/tweakNeels Hofmeyr1-5/+2
2016-04-25RAB: add debug log for PS RAB assignmentNeels Hofmeyr1-0/+4
2016-04-25RAB parameters: apply use_x213_nsap parameter additionNeels Hofmeyr4-5/+8
Add use_x213_nsap parameter to iu_rab_act_ps(), pass the new parameter from two callers as 1 such that there is no functional change.
2016-04-25paging_signal_data: remove unused lac memberNeels Hofmeyr2-2/+0
2016-04-25paging response: remove extraneous null check, assert conn and msg further upNeels Hofmeyr1-1/+4
In handle_paging_response(), don't check conn against NULL after using it all the time anyway. To ensure beyond doubt that it is actually never NULL, assert conn further up in the call stack, i.e. in gsm0408_dispatch(), the main entry point for receiving data from the BSC/RNC level. Also assert msg while at it. Fixes: CID#93769
2016-04-20add preliminary paging response handling, incompleteNeels Hofmeyr3-19/+59
In gsm_04_08.c, add a static handle_paging_resp() to take over from the libbsc function gsm48_handle_paging_resp(). Use the subscr->requests listing to handle a Paging Response and call the pending cbfn. In NITB, this used to be done via BTS, and I haven't entirely resolved yet how exactly to rewire this in standalone libmsc. So far, this "works for me", but is worth another visit. Still missing: enable Integrity Protection.
2016-04-20gsm_04_08.c: fix security mode cmd: use auth tuple from MM authNeels Hofmeyr1-12/+2
2016-04-20cosmetic: auth tuple memcpy: rather use target's sizeof()Neels Hofmeyr2-6/+6
2016-04-20tweak tmp_rand[] type to avoid compiler warningsNeels Hofmeyr2-4/+4
2016-04-20gprs_gmm.c: include openssl/rand.h against RAND_bytes() compiler warningNeels Hofmeyr1-0/+2
2016-04-20IuCS auth: generate auth tuples, factor outNeels Hofmeyr1-11/+32
Factor out hardcoded-Ki and auth tuple creation into a static function. Add generation of fresh random bytes and generate a valid auth tuple so that the authentication token is different for every MM Auth.
2016-04-20cscn: enable SMS queue (by removing an '#if 0')Neels Hofmeyr1-2/+0
2016-04-20cscn: enable 'subscriber' vty commands for libmscNeels Hofmeyr2-1/+1
This involves removing the openbsc_vty_print_statistics() from vty_interface_layer3.c, as this would link across the MSC/BSC border.
2016-04-20cn_ranap_handle_co: add error rc and logging for PR OutcomeNeels Hofmeyr1-0/+5
2016-04-20cosmetic: debug and error logging, comment tweaksNeels Hofmeyr5-4/+38
2016-04-20cscn: don't redefine talloc_asn1_ctx from iu.cNeels Hofmeyr1-2/+0
2016-04-20IuCS: more detailed debug log upon IuCS rxNeels Hofmeyr1-2/+9
2016-04-20Add Iu pagingNeels Hofmeyr4-3/+104
Add iu_page_cs() and iu_page_ps() API, also add to libiudummy for linking in tests. Implement msc_paging_request() by calling iu_page_cs().
2016-04-20iu.c: add registry of RNC-Ids in LACsNeels Hofmeyr3-2/+130
Introduce struct gsm_rnc, stored in a global list, static to iu.c. (This list is not part of gsm_network so that the code can be used from both MSC and GPRS code, i.e. both for CS and PS.) Parse RANAP Global RNC Id, add GSM flags to build for gsm48_mcc_mnc_from_bcd() to decode the PLMN Id. Upon every Initial UE message, record/verify RNC Id and LAC for that connection. In case of mismatch, so far just log an error.
2016-04-19iu.c: introduce talloc_iu_ctxNeels Hofmeyr1-3/+6
Introduce talloc_iu_ctx, setup during iu_init() as child of the talloc_ctx passed in by the caller. Allocate ue_conn_ctx from talloc_iu_ctx, used to be from NULL. Allocate osmo_sua_user and talloc_asn1_ctx from talloc_iu_ctx, used to be from the ctx passed in by iu_init() caller.
2016-04-19cosmetic: comment, whitespaceNeels Hofmeyr2-3/+2
2016-04-19iu.h: add iu_link_del()Neels Hofmeyr2-0/+17
2016-04-19Iu RANAP event: add IU_EVENT_LINK_INVALIDATEDNeels Hofmeyr3-3/+8
See in-code comment...
2016-04-19libmsc: Pass KeyStatus to iu_tx_sec_mode_cmdDaniel Willmann1-1/+1
2016-04-19gprs: Activate RABs from RoutingArea update request as wellDaniel Willmann1-8/+9
2016-04-19gprs: Keep track of key negotiation and set the key status flag in sec_mod_cmdDaniel Willmann5-34/+11
2016-04-12gprs: Change auth key for every new Iu connectionDaniel Willmann1-9/+57
2016-04-11cscn: record and use LAC on incoming InitialUE msgNeels Hofmeyr3-8/+33
Add lac argument to gsm0408_rcvmsg_iucs(), to record the LAC in newly allocated gsm_subscriber_connections. In effect, fix the LAC sent to UE during Location Updating Accept message. Before, 0 was stored as LAC and sent to the UE, regardless of the actual LAC in use.
2016-04-11remove subscr_conn_allocate_iu() from public headerNeels Hofmeyr1-4/+0
It is only used statically in iu.c
2016-04-11add osmo-cscn.cfg exampleNeels Hofmeyr1-0/+36
Include a cscn section with subscriber-create-on-demand even though that is the default.
2016-04-11iu.c: check return value of ranap_parse_lai()Neels Hofmeyr1-2/+8
2016-04-08sgsn: Reset mm ctx state in service request and after authorizationDaniel Willmann1-0/+4
2016-04-08sgsn: Don't send the pdp context accept every time the RAB activatesDaniel Willmann1-1/+4
2016-04-08gprs: Save integrity protection status inside ue ctx, not mm ctxDaniel Willmann3-5/+6
2016-04-08gprs: Use different RAB IDs for activationDaniel Willmann4-9/+29
2016-04-08sgsn: Pass RAB ID to iu_rab_act_ps() functionDaniel Willmann4-6/+5
2016-04-05vty l3 help: fix typo 'comamnds'; fix english s/his//Neels Hofmeyr1-5/+5
2016-03-31cosmetic: comments, debug log, msgb alloc nameNeels Hofmeyr1-3/+3
2016-03-31mscsplit: rewire MSC gsm0808_submit_dtap() to msc_tx_dtap()Neels Hofmeyr5-19/+22
2016-03-31Merge branch 'master' into sysmocom/iuNeels Hofmeyr13-26/+455
Conflicts: openbsc/src/libmsc/auth.c openbsc/src/libmsc/gsm_04_08.c openbsc/src/osmo-bsc/osmo_bsc_vty.c openbsc/tests/Makefile.am
2016-03-31Fix MM Auth: zero-initialize auth tuple before first useNeels Hofmeyr3-2/+37
Make sure a new auth tuple is initialized after db_get_lastauthtuple_for_subscr() returns an error, i.e. if no tuple is present for the subscriber yet. Before this patch, the first key_seq depended on the typically uninitialized value that was present in auth tuple's key_seq upon calling auth_get_tuple_for_subscr(). The very first key_seq used for a new subscriber will now always be 0. Before, it used to be mostly 1 ("(0 + 1) % 7"), but depended on whether the key_seq was indeed initialized with 0, actually by random.
2016-03-31Fix MM Auth: disallow key_seq mismatchNeels Hofmeyr3-0/+39
In auth_get_tuple_for_subscr(), add missing condition to match incoming key_seq with stored key_seq, so that re-authentication is requested for mismatching key_seqs. Add test for this issue.
2016-03-31MM Auth: return AUTH_NOT_AVAIL instead of hardcoded zeroNeels Hofmeyr1-4/+4
AUTH_NOT_AVAIL == 0, so this is no functional change.
2016-03-31MM Auth: introduce AUTH_ERROR constant.Neels Hofmeyr4-5/+6
Instead of using hardcoded -1 for errors, include -1 in the enum auth_action type; apply its use. In the mm_auth test, the string output changes from '(internal error)' to 'AUTH_ERROR', since now the proper enum value is used in auth_action_names[].