Commit Graph

5506 Commits

Author SHA1 Message Date
Daniel Willmann
d8b0b61ca8 gprs_gmm: Call gsm48_gmm_authorize from RA upd request
In Iu mode the RA upd request can be called from a new Iu connection so we
might need to reauthenticate the connection as well as turn on integrity
protection.
2016-03-18 14:08:14 +01:00
Daniel Willmann
19f0735752 cscn: Follow libiu move to generic event handler 2016-03-18 14:00:03 +01:00
Daniel Willmann
ffd9968d3a libiu: Change gprs_transp_upd_key to be useful for CS as well
gprs_transp_upd_key only sends a security mode command which is needed for CS
as well so change it.

Make sure it is called after the UE is authenticated in Iu mode.
2016-03-18 13:58:20 +01:00
Daniel Willmann
deb227b98e gprs_gmm: Fix RA UPD handling for IU mode 2016-03-16 18:39:52 +01:00
Daniel Willmann
5e611021b0 Move event callback to gprs_gmm 2016-03-16 18:38:58 +01:00
Daniel Willmann
d04db9d907 libiu: Replace RAB assignment response callback with a general one
The new iu event callback will now be called for RAB assignment response, IU
release and security mode complete
2016-03-16 10:35:09 +01:00
Neels Hofmeyr
3c94c2c597 bsc_scan_msc_msg: check protocol discriminator
The function assumed an MM protocol discriminator without verifying it.
2016-03-15 13:14:56 +01:00
Neels Hofmeyr
372a3bd346 04.08: apply new transaction id inline functions
libosmocore recently added inline functions to relieve callers from applying
bitmasks and bit shifts to access the transaction id of a GSM 04.08 header.
Apply these functions.
2016-03-15 13:14:19 +01:00
Neels Hofmeyr
51bf76ef47 04.08: apply new bitmask functions, fix bitmask use
Replace hardcoded protocol discriminator and message type bitmasks with
function calls recently introduced in libosmocore.

Note that the release 98 bitmasks slightly differ from the release 99 bitmasks.
This patch uses the "default" gsm48_hdr_msg_type invocation, thus it depends on
libosmocore whether 98 or 99 bitmasks are used.

In some places, use of the bitmask was erratic. Fix these implicitly by
employing the bitmask functions:

 * silent_call.c: silent_call_reroute(): add missing bitmask for MM.
 * bsc_msg_filter.c: bsc_msg_filter_initial(): RR vs. MM messages.
 * osmo_bsc_filter.c: bsc_find_msc() and bsc_scan_bts_msg(): RR vs. MM
   messages.
 * bsc_nat_rewrite.c: bsc_nat_rewrite_msg(): SMS vs. CC messages.
 * bsc_ussd.c: no bitmask is applicable for the message types used here.
 * gb_proxy.c: gbproxy_imsi_acquisition(): missing bit mask for pdisc.

In gprs_gb_parse.c: gprs_gb_parse_dtap(), add a log notice for unexpected
message types.
2016-03-15 13:14:17 +01:00
Neels Hofmeyr
aa60582036 cosmetic: comments 2016-03-15 13:13:15 +01:00
Neels Hofmeyr
6b2623d944 cscn: fix VTY port: don't use SGSN's port number 2016-03-14 23:58:23 +01:00
Neels Hofmeyr
8b1272a6d3 msc: allow only authentication without ciphering
So far the code did only auth+ciph or none. Add case handling for only
authentication without ciphering (basically just fill in the blanks).
2016-03-14 23:58:23 +01:00
Neels Hofmeyr
080921a551 HACK: hardcode subscriber auth tuple for IuCS 2016-03-14 23:58:23 +01:00
Neels Hofmeyr
8e7f4c6f21 cosmetic 2016-03-14 23:58:23 +01:00
Neels Hofmeyr
4a9b871de5 Adjust authentication logic for Iu, move a log notice
Depending on conn->via_iface, fail upon missing auth for 3G.

Move the log notice saying "skipping auth" to gsm48_secure_channel() where
conn->via_iface is actually known.
2016-03-14 23:58:23 +01:00
Neels Hofmeyr
93f6fa5a81 spread a few debug logs around authentication 2016-03-14 23:58:23 +01:00
Neels Hofmeyr
f1777ee843 fix confusing typo in constant (THAN -> THEN) 2016-03-14 23:58:23 +01:00
Neels Hofmeyr
9e8e0e6a29 Remove unused auth code and add comment
As commented in the code, the GSM_SECURITY_AUTH_FAILED path is never invoked by
the gsm48_secure_channel() function as it is today.

Note that the upcoming Iu auth will probably add a GSM_SECURITY_AUTH_FAILED
status. In that case, sending a LU Reject immediately may be desirable, but
arguably a bit of timeout could make life harder for auth attackers.

The code removed by this patch doesn't send out a LU Reject ever, since a call
to release_loc_updating_req() only releases the connection. To reject, a call
to gsm0408_loc_upd_rej() would be necessary, as seen in loc_upd_rej_cb().

And finally, if _gsm0408_authorize_sec_cb() doesn't do anything about anything,
the same loc_upd_rej_cb() will be run by a timeout and send a LU Reject
properly (as commented in the code).
2016-03-14 23:58:23 +01:00
Neels Hofmeyr
cf3d2a1fad fix build: add xsc to osmo-bsc and tests/bsc-nat 2016-03-04 15:36:59 +01:00
Neels Hofmeyr
e4baf402cb move two gsm0480_send_*() to xsc as gsm0480_gen_*()
Have two separate gsm0480_send_ussdNotify() and gsm0480_send_releaseComplete()
for each of libbsc and libmsc. Move their core into libxsc as generator
functions returning a msgb.

Add src/libbsc/gsm_04_80_utils.c (note, not 04_08) to implement the libbsc
side of it.

The code is identical, but the linked structs and functions differ in each
case. There could be a common source file built for both, but I decided against
it, for more clarity I hope.
2016-03-04 15:34:18 +01:00
Neels Hofmeyr
53d782fc38 fix two minor Makefile.am errors 2016-03-04 15:27:48 +01:00
Neels Hofmeyr
33a343858d move sms_next_rp_msg_ref() to libxsc, for gsm0408test
Also change the signature to avoid using gsm_subscriber_connection, which
has different members in libbsc and libmsc.
2016-03-04 14:58:09 +01:00
Neels Hofmeyr
15b1fce69c rename nitb vty config to cscn, move to cscn_vty.c 2016-03-04 14:58:09 +01:00
Neels Hofmeyr
2f8117d214 disable code trying to reach across BSC/MSC bounds, make build pass
Disable ipacc_rtp_direct, Osmo SMPP TLVs, Ctrl interface and channel_test.
These need to be reimplemented with proper separation of libs.

Add some tall_* pointers the linker requires for osmo-cscn.
2016-03-04 14:58:09 +01:00
Neels Hofmeyr
8927bb46d5 libmsc: stubify paging (A-/Iu-interfaces need to reimplement this) 2016-03-04 14:57:59 +01:00
Neels Hofmeyr
d52b1c4342 add libmsc/a_iface.c for A-interface stubs (so far only mock) 2016-03-04 14:57:09 +01:00
Neels Hofmeyr
5d9004bc9b gsm_subscriber_connection: further split between BSC and MSC
Move some Iu/A members into the MSC #ifdef.

Have separate allocate and free functions for the two scopes.
2016-03-04 14:57:09 +01:00
Neels Hofmeyr
a4198d1922 create libxsc and move some code, never link libbsc and libmsc
libbsc and libmsc have conflicting definitions of gsm_subscriber_connection
and do no longer belong together anyway.

Create libxsc, meaning 'lib[bm]sc', to hold all code used by both libmsc
and libbsc, and make sure gsm_subscriber_connection isn't used there.

In various binaries and tests, do not link libbsc and libmsc.

(Note: this commit was reshaped out of a large wip chunk, it may not
compile properly without the subsequent commits)
2016-03-04 14:57:09 +01:00
Neels Hofmeyr
544a203f67 Remove osmo-nitb, cannot link libbsc with libmsc anymore 2016-03-03 16:19:12 +01:00
Neels Hofmeyr
b40df4c09e cscn: apply vty bind addr configuration 2016-03-03 16:19:12 +01:00
Neels Hofmeyr
5c1c0bad89 debug: set almost everything to LOGL_DEBUG for easier dev 2016-03-03 16:19:12 +01:00
Neels Hofmeyr
1e361301d1 cscn_main.c: fix ctrl init
Include control_vty.h so that ctrl_vty_get_bind_addr() is properly declared.
Add ctrl iface vty commands.
2016-03-03 16:19:12 +01:00
Neels Hofmeyr
9e8322ca0c wip: exclude more bsc stuff from gsm_subscriber_conn 2016-03-03 16:19:12 +01:00
Neels Hofmeyr
9bd121b75b cscn: minor dbg log tweak 2016-03-03 16:19:12 +01:00
Neels Hofmeyr
fa029f08c2 cscn: apply socket path / bind addr changes after rebase
After rebasing onto 1b0e5540db, some changes need to be applied to
cscn_main.c, originally a copy of bsc_hack.c before the rebase. On master,
configurable MNCC socket path and Control interface bind address were added.
2016-03-03 16:19:12 +01:00
Neels Hofmeyr
db9c064dd4 osmo-bsc: half-fix tz override to allow compilation
As described in a comment, for MSCSPLIT the tz data has been moved to network
level. To allow compiling osmo-bsc on the sysmocom-iu branch, move tz up to
network level in osmo-bsc as well.

This could be done better for osmo-bsc, rather easily too, still allowing
per-BTS timezone settings. But I'm trying to focus on IuCS and would like to
come back to this later.
2016-03-03 16:19:12 +01:00
Daniel Willmann
a0da2dbe9e WIP: gprs_gmm: Get mm ctx from RA update in Iu mode
Iu mode doesn't have tlli, so look up according to p-tmsi
2016-03-03 16:19:12 +01:00
Daniel Willmann
7df5705251 WIP: Try and activate RABs after service request 2016-03-03 16:19:12 +01:00
Daniel Willmann
da7424cc54 gprs_gmm: Log service request if not receieved from Iu mode 2016-03-03 16:19:11 +01:00
Daniel Willmann
8146cfa782 gprs_gmm: Send gmm_service_accept from gsm48_gmm_authorize() 2016-03-03 16:19:11 +01:00
Daniel Willmann
330898afb7 gprs: Update ue ctx from msg
In case a Iu connection is reconnected we need to update the ue ctx
2016-03-03 16:19:11 +01:00
Daniel Willmann
77544a65b5 sgsn_test: Fix mmctx llme and tlli struct names after merge 2016-03-03 16:19:11 +01:00
Daniel Willmann
4e5ddfa91a gprs_gmm: Fix mmctx tlli member rename after merge 2016-03-03 16:19:11 +01:00
Daniel Willmann
cba441f3de gprs: Handle GMM service request (Iu mode only)
Iu mode has a GMM service request message which a UE in PMM-IDLE mode
can use to switch back to PMM-CONNECTED mode.
2016-03-03 16:19:11 +01:00
Daniel Willmann
3acbc817f6 osmo-bsc: Pass gsmnet to bsc_vty_init() 2016-03-03 16:19:11 +01:00
Neels Hofmeyr
bcb98b1754 libmsc/smpp: disable lchan access for now
To make the IuCS build work, disable the BSC-land access from MSC's SMPP code.
Some way shall be found to make the Osmocom vendor-specific SMPP TLVs work over
the A-interface (after the MSCSPLIT), but we're concentrating on IuCS for now.
2016-03-03 16:19:11 +01:00
Daniel Willmann
2a7426d7cb libmsc: Don't use bts field of gsm_subscriber_connection
Use gsm_subscriber_connection does not have a bts field if building as
libmsc. Use network directly.
2016-03-03 16:19:11 +01:00
Daniel Willmann
b9bb2a4f54 sgsn: fix use of opaque RANAP_RAB_SetupOrModifiedItemIEs_s decl 2016-03-03 16:19:11 +01:00
Neels Hofmeyr
098c14800f cscn: fix use of opaque RANAP_RAB_SetupOrModifiedItemIEs_s decl 2016-03-03 16:19:11 +01:00
Neels Hofmeyr
a46c651a4a iu.h: fix opaque declaration of RANAP_RAB_SetupOrModifiedItemIEs_s
struct RANAP_RAB_SetupOrModifiedItemIEs_s; may be declared, but not the
corresponding typedef. It leads to a redefinition error in our coverity
build.
2016-03-03 16:19:11 +01:00