Commit Graph

6614 Commits

Author SHA1 Message Date
Pau Espin a9e4268a0a paging: paging_request_bts: Fix wrong return value
Change-Id: I48f5efbcddd98e15256edfca06ba0ae6acb5bab1
2018-03-26 18:33:35 +02:00
Pau Espin cf48c54e47 bsc_vty: Fix uninitialized var false positive on gcc 7.3.1
Change-Id: If2b315d76081f7ef5f2faf07c502f20196ba6a09
2018-03-26 18:20:34 +02:00
Pau Espin 39fb1fb916 libbsc: nokia_site: Fix uninitialized return val
Fixes following compilation warning:
bts_nokia_site.c:1248:9: error: ‘ret’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
  return ret;

This could happen if parameter len is passed with value 0.
If we reach the end of the function, it means everything went fine, so
we can return 0 instead of using ret, which is only used to store error
code before returning.

Change-Id: Ic60c8c632a6ddadb8f197d56cc68c2dbfc121d05
2018-03-26 18:10:15 +02:00
Pau Espin 052364d906 contrib: osmo-bsc.service: Fix osmo-mgw.service dependency
Since a while ago, osmo-bsc works only with osmo-mgw.

Change-Id: If95d20db4d379b9632342f7e552237066124ac40
2018-03-23 15:44:19 +00:00
Pau Espin 6c4d01efd3 contrib: osmo-bsc.service: Update description
Change-Id: I99d02bd8bd5842580518b34865dd0cbd0433bf27
2018-03-23 15:44:19 +00:00
Philipp Maier 63d619edef cosmetic: remove dead code: osmo_bsc_reset.c
Change-Id: I22f92541982489a0948bd1dedc008439981fb33e
Related: OS#3102
2018-03-23 15:24:06 +00:00
Philipp Maier 200f5b9921 bs11: make bs11_config build again
The BS-11 related tool bs11_config is currently not built due
to dependancy issues added by GSCON FSM.

- Re-Add bs11_config to makefile.am
- Add dependencies and stubs

Change-Id: I77ee8d2d36813ad98542317d003a9057c4f84e75
Related: OS#2823
2018-03-22 19:05:57 +00:00
Philipp Maier 7c900c20db ipaccess: make ipaccess-config build again
The nanobts related tool ipaccess-config is currently not built due
to dependancy issues added by GSCON FSM.

- Re-Add ipacces-config to makefile.am
- Add dependencies and stubs

Change-Id: I1d0a45bed61b45352ed305b6b1fd8d9b3d3cecae
Related: OS#2823
2018-03-22 19:05:57 +00:00
Neels Hofmeyr 8e3c9b49c1 gsm0408_test: drop LAI encoding test
The LAI encoding test in gsm0408_test.c uses deprecated API, and a more
thorough test for LAI encoding has been added in libosmocore/test/gsm0408/.

Change-Id: I8a55d717ab15ba23943a2639accaadc33a4f731a
2018-03-22 17:27:57 +00:00
Neels Hofmeyr cd3bf6249b vty: drop unused vty definitions (*_NODE, msc_*)
Change-Id: I2a6516756bada8cc9375422e4f93891ab8d65ca5
2018-03-22 17:27:57 +00:00
Harald Welte ead291aaf2 bssmap: State correct speech codec in ASSIGNMENT COMPLETE
Correctly compute the TS 48.008 "speech mode" (codec) for AMR on TCH/F.

There are way too many different ways how to express a given voice
codec.  There are two different schemes in TS 48.008 alone, plus one
on TS 48.058 and one in 04.08 / 44.018.  Let's avoid unneeded
conversion (that we might get wrong) and avoid storing information in
a sub-struct of the lchan if we can simply derive it from the lchan
at the time we need it.

Also, move BSSAP related encoding/conversion functions closer to the
user (osmo_bsc_bssap), rather than in libbsc.

Without this patch, TCH/F with AMR was erroneously reported as TCH/H
with AMR in the BSSMAP ASSIGNMENT COMPLETE.  After this patch, it's
reported correctly.

Change-Id: I6feebfae77fdc93a7ce333a25dd9b9267c5a4a2e
Related: OS#3094
Related: OS#3095
Related: OS#3096
2018-03-22 15:15:12 +00:00
Harald Welte 6900f81236 GSCON FSM: Fix argument order when calling gsm0808_assign_req()
The first argument is the channel mode (codec), the second one is
a flag whether or not it's a full-rate channel.

Before this patch the two arguments are reversed, resulting in
* all assignments being TCH/F in general
* all assignments have FR1 as codec, as the full_Rate=1 is interpreted as FR1

Change-Id: I80f2a016a7646252bce8d86ed0bab236f3adbfca
Related: OS#3094
2018-03-22 15:15:12 +00:00
Harald Welte 31a6368703 BSSAP: document match_codec_pref() more thoroughly
Change-Id: If08c2c2db674d6ddc43339744a78b1632d075d4a
2018-03-22 15:15:11 +00:00
Harald Welte b360ec1b4a BSSAP: Fix test_codec_pref() implementation for AMR
In AMR-type cahnels, the gsm0808_speech_codec doesn't only include
the codec (like EFR/FR/AMR) but also the specific codec configuration,
i.e. the sub-set of AMR modes.

Hence, we cannot convert from a channel type (just the codec) to the
full gsm0808_speech_codec and then memcmp() that with the codec config
received from the MSC.  Rather, we must only compare the *type*.

Change-Id: I0a3f362667a689135d5b62d151d491490dfd2976
Related: OS#3094
2018-03-22 15:15:11 +00:00
Philipp Maier 12e3c81dd1 cosmetic: remove old, already commented-out code
Change-Id: Ief994b840e3fe694b37330c46c3899746d810a39
Related: OS#2823
2018-03-22 12:55:47 +00:00
Philipp Maier 5444f13387 cosmetic: remove dead code and obsolete fixmes
Change-Id: Ib171f4b5697c04603a20ffc6ebd617260a38ccb4
Related: OS#2823
2018-03-22 12:55:46 +00:00
Philipp Maier 70fcde63a1 Cosmetic: fix missing semicolon after osmo-assert
- add the missing semicolong,
- correct wrong indentation caused by the missing semicolon

Change-Id: I9a1144b70ab82156175c6cdee32a6d22b4b53539
Related: OS#2823
2018-03-22 12:55:46 +00:00
Philipp Maier 393165cb67 cosmetic: fix incomplete sentence in comment.
Change-Id: I6a04811704750cf715e72eba2959d08e761ced29
Related: OS#2823
2018-03-22 12:55:44 +00:00
Philipp Maier 8ff02fc065 cosmetic: remove needless fixme note.
Change-Id: I4860412f8228756f7cd5669c4f6c7d845904e36b
Related: OS#2823
2018-03-22 12:55:43 +00:00
Philipp Maier 4be98dc5d6 cosmetic: fix argument order of forward_dtap()
The order of the arguments for forward_dtap() differs from
submit_dtap() and sigtran_send()

- bring arguments into a uniform order for all three functions

Change-Id: Ida77c82e600f99d690ffa1850450925359e33ae8
Related: OS#2823
2018-03-22 12:55:43 +00:00
Philipp Maier 79745fc0cb cosmetic: fix typo
Change-Id: I36ed82dcb6010b331fe247a60f373d8e2e8a4bfc
Related: OS#2823
2018-03-22 12:55:41 +00:00
Philipp Maier 458d8a19c9 cosmetic: remove unused enum members
The enum gscon_fsm_event has three unused members.

- remove GSCON_EV_RR_HO_ACC, GSCON_EV_RR_HO_COMPL, GSCON_EV_RR_HO_FAIL

Change-Id: I301f7160b9ec8380849f9c9906b41c121a54f49f
Related: OS#2823
2018-03-22 12:55:40 +00:00
Neels Hofmeyr 48213a2750 fixup: apply mnc3 change also in ipaccess/network_listen.c
Preceding commit I38ac98a4d25159cfd4f686efbfbaf8f00625a6d8 changed the
ipac_bcch_info.cgi type to osmo_cell_global_id, but did not carry out
corresponding changes in ipaccess/network_listen.c.

The reason this was not caught is that recent commit
I68286d26e2014048b054f39ef29c35fef420cc97 adding the new gscon FSM actually
disables ipaccess-config in the build.

Fix the build, given that ipaccess-config were re-enabled.

Change-Id: I15cd58e8ba0563ce4e42a61e79d01394b61593dd
2018-03-22 05:33:22 +01:00
Neels Hofmeyr da5b09a08e cosmetic: abis_nm: use osmo_cell_global_id, parse 3-digit MNC
Instead of a local redefinition, use osmo_cell_global_id.

This change is cosmetic because the decoded PLMN is currently actually never
used.

Change-Id: I38ac98a4d25159cfd4f686efbfbaf8f00625a6d8
2018-03-22 04:13:09 +00:00
Stefan Sperling 9cf2babed9 fix an error message in bssmap_handle_paging()
This error message suggested that parsing a cell identifier list
failed because the list was too short. While, in fact, this code
has no insight into the reason behind the parsing failure.
A generic error message is more appropriate.

Change-Id: I033747e2183984159f1505e772d7c9494b759058
Related: OS#3073
2018-03-19 13:38:15 +01:00
Pau Espin 835b02ab14 contrib: jenkins.sh: Add --enable-werror flag
Change-Id: Ife9ca2a5b835dfd6d03c981dcf0e48265eb861eb
2018-03-18 17:40:09 +00:00
Pau Espin 9d075ea6f7 pcu_sock.c: Avoid breaking strict-aliasing on ptr derreference
Fixes following warning:
pcu_sock.c: In function 'pcu_rx_data_req':
pcu_sock.c:406:3: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing]
   tlli = *((uint32_t *)data_req->data);
   ^

Change-Id: I5c93487c72d15b061e73ed4f9acbf2e77dec967a
2018-03-18 17:31:49 +00:00
Harald Welte f94cbf607b RR: Send RR STATUS in case of unsupported/unknown message
This fixes BSC_Tests.TC_err_84_unknown_msg

Related: OS#2903
Change-Id: I7ecb48971c6a162c7f4c749d128c31d0dbc4916f
2018-03-17 21:46:56 +01:00
Harald Welte 4a1580b7ff paging: Unify formatting of log messages with (bts=%d) prefix
Change-Id: I3eabe8b7553711a4de02fe87994163bfe8955509
2018-03-17 19:15:26 +01:00
Harald Welte fe00edae7f abis_nm: Improve and fix OML logging
This code is among the oldest surviving parts of old bsc_hack/OpenBSC,
and it shows.  We used arcane constructs to puzzle together log
messages, attempting to switch the log level between a LOGP and LOPGC
[which doesn't work], not properly used log levels in general, ...

Let's fix this up by using the new abis_nm_dump_foh() function
introduced in libosmocore I9b2c2afec28882b817d104d5b062651ade7aadd8

Change-Id: Ibd757836c39edd2d1ce59e528342f8923a9e75e4
2018-03-17 19:15:22 +01:00
Harald Welte e9903fdec4 cosmetic: Fix infinite number of formatting errors in gscon_fsm_states
I'm not sure how this got past our review :/  Guess I need to be extra
careful.

Change-Id: I8724cadda774c96f13f957d6d5e708bebb81e3ba
2018-03-17 17:14:28 +01:00
Pau Espin e249045ef4 tests: handover_test.c: Add missing header
Fixes following compilation warning:
osmo-bsc/tests/handover/handover_test.c:48:83: warning:
‘struct mgcp_conn_peer’ declared inside parameter list will not be visible outside of this definition or declaration
 int __real_mgcp_conn_modify(struct osmo_fsm_inst *fi, uint32_t parent_evt, struct mgcp_conn_peer *conn_peer);
                                                                                   ^~~~~~~~~~~~~~

Change-Id: I1b5e91adee3daaec71122a7691a214aa8240bce2
2018-03-17 01:16:58 +01:00
Pau Espin 55677de7a5 bsc_subscr_conn_fsm.c: Fix wrong param list passed to LOGPFSML
Fixes: 3561bd4897

Change-Id: Ifbf84bd3b64eea5bf315b83c95561e4534acc3b7
2018-03-17 01:12:55 +01:00
Pau Espin f73886992d bsc_api.c: bsc_handle_lchan_signal: Remove unused variable
Variable is unused since 3561bd4897.

Change-Id: I8ecff940ae848b965b26b7dc07153dd88b365fe4
2018-03-17 01:00:12 +01:00
Pau Espin b1b8b624a6 ipaccess-config: Check cmdlie arg unit-id format
Print a clear error when the format in not correct. I was in the
situation several times in which I was passing "123" instead of
"123/0/0", and spent a while seeing what was wrong.

Change-Id: I70906939b3320473c56a87929c4886aac9d7d064
2018-03-16 18:54:44 +00:00
Pau Espin 8972f3fe4c abisip-find: Improve use information output
Interestingly, SO_BINDTODEVICE used to bind to a specific iface
requires root permissions. However, the same target can be accomplished
by binding to a local IP addr set on the target interface, which doesn't
require root permissions in this case.

Change-Id: Ie123c45005d68b186cb06538f7bd31f3b2513007
2018-03-16 18:54:44 +00:00
Harald Welte 3561bd4897 introduce an osmo_fsm for gsm_subscriber_connection
In the current implementation of osmo-bsc, the subscriber connection is
not handled (very) statefully. However, there is some state keeping in the
code that handles the mgcp connection, but there are still to much loose ends
which allow odd situations to happen, which then lead severe error situations
(see also closes tags at the end) This commit adds a number of improvements
to fix those problems.

- Use an osmo-fsm to control the gsm_subscriber_connection state and
  make sure that certain operations can only take place at certain states
  (e.g let connection oriented SCCP traffic only pass when an SCCP connection
  actually exists.

  Remove the old osmo_bsc_mgcp.c code. Use the recently developed MGCP client
  FSM to handle the MGCP connections.

  Also make sure that stuff that already works does not break. This in
  particular refers to the internal handover capability and the respective
  unit-tests.

  See also OS#2823, OS#2768 and OS#2898

- Fix logic to permit assignment to a signalling channel. (OS#2762)

- Introduce T993210 to release lchan + subscr_conn if MSC fails to respond

  The GSM specs don't have an explicit timer for this, so let's introdcue
  a custom timer (hence starting with 99).

  This timeout catches the following situation:
  * we send a SCCP CR with COMPL_L3_INFO from the MS to the MSC,
  * the MSC doesn't respond (e.g. SCCP routing failure, program down, ...)

  The MS is supposed to timeout with T3210, 3220 or 3230.  But the BSC
  shouldn't trust the MS but have some timer on its own.

  SCCP would have a timer T(conn est), but that one is specified to be
  1-2min and hence rather long.

  See also: OS#2775

- Terminate bsc_subscr_conn_fsm on SCCP N-DISC.ind from MSC

  If the MSC is disconnecting the SCCP channel, we must terminate the FSM
  which in turn will release all lchan's and other state.

  This makes TC_chan_rel_hard_rlsd pass, see also OS#2731

  As a side-effect, this fixes TC_chan_act_ack_est_ind_refused(),
  where the MSC is answering with CREF to our CR/COMPL_L3.

- Release subscriber connection on RLL RELEASE IND of SAPI0 on main DCCH

  The subscriber connection isn't really useful for anything after the
  SAPI0 main signalling link has been released.  We could try to
  re-establish, but our best option is probably simply releasing the
  subscriber_conn and anything related to it.

  This will make TC_chan_rel_rll_rel_ind pass, see also OS#2730

This commit has been tested using the BSC_Tests TTCN3 testsuit and the
following tests were passed:

TC_chan_act_noreply
TC_chan_act_ack_noest
TC_chan_act_ack_est_ind_noreply
TC_chan_act_ack_est_ind_refused
TC_chan_act_nack
TC_chan_exhaustion
TC_ctrl
TC_chan_rel_conn_fail
TC_chan_rel_hard_clear
TC_chan_rel_hard_rlsd
TC_chan_rel_a_reset
TC_rll_est_ind_inact_lchan
TC_rll_est_ind_inval_sapi1
TC_rll_est_ind_inval_sapi3
TC_rll_est_ind_inval_sacch
TC_assignment_cic_only
TC_assignment_csd
TC_assignment_ctm
TC_assignment_fr_a5_0
TC_assignment_fr_a5_1_codec_missing
TC_assignment_fr_a5_1
TC_assignment_fr_a5_3
TC_assignment_fr_a5_4
TC_paging_imsi_nochan
TC_paging_tmsi_nochan
TC_paging_tmsi_any
TC_paging_tmsi_sdcch
TC_paging_tmsi_tch_f
TC_paging_tmsi_tch_hf
TC_paging_imsi_nochan_cgi
TC_paging_imsi_nochan_lac_ci
TC_paging_imsi_nochan_ci
TC_paging_imsi_nochan_lai
TC_paging_imsi_nochan_lac
TC_paging_imsi_nochan_all
TC_paging_imsi_nochan_plmn_lac_rnc
TC_paging_imsi_nochan_rnc
TC_paging_imsi_nochan_lac_rnc
TC_paging_imsi_nochan_lacs
TC_paging_imsi_nochan_lacs_empty
TC_paging_imsi_a_reset
TC_paging_counter
TC_rsl_drop_counter
TC_classmark
TC_unsol_ass_fail
TC_unsol_ass_compl
TC_unsol_ho_fail
TC_err_82_short_msg
TC_ho_int

Authors:
Harald Welte <laforge@gnumonks.org>
Philipp Maier <pmaier@sysmocom.de>
Neels Hofmeyr <neels@hofmeyr.de>

Closes: OS#2730
Closes: OS#2731
Closes: OS#2762
Closes: OS#2768
Closes: OS#2775
Closes: OS#2823
Closes: OS#2898
Closes: OS#2936
Change-Id: I68286d26e2014048b054f39ef29c35fef420cc97
2018-03-16 18:49:47 +00:00
Stefan Sperling 2cf46b97d3 use libosmocore to parse cell identifiers in osmo-bsc
This replaces custom cell identifier parsing in the paging code with
calls to the new cell identifier parser implementation in libosmocore
(which was derived from the code that is now being replaced here).

The bssap tests will fail unless this other change is merged to
libosmocore as well: https://gerrit.osmocom.org/#/c/7288/

Related: OS#2847
Change-Id: I9e2002fbbe135287e9ce09caa3f0a85a84529463
Depends: I7f3e8ace26176e9cbfe2542961d2a95662aa4d97
2018-03-14 21:02:33 +00:00
Pau Espin b4d39eb67e ipaccess-config: Improve handling of last parameter
Check exact number of parameters to avoid explicit void params ("") to
be used as BTS IP by an incorrect caller.
Exit successfully if firmware analysis is requested and there's no BTS
IP provided (meaning no BTS set up is required).
Save BTS IP into bts_ip variable as using optind is tricky.
Use new bts_ip variable to print the IP of the BTS we are trying to
connect to.

Change-Id: I8071aaf2be217207261ad698f87344f7ca15ccc4
2018-03-13 08:40:03 +00:00
Pau Espin c80b876344 ipaccess-config: Add missing path with log error
Change-Id: Id903e3e20e12a143cedab72dc14669c07f4d11ac
2018-03-13 08:40:01 +00:00
Pau Espin 5e2812c94d ipaccess-config: Enable logging all categories to print errors
log_parse_category_mask is preventing errors from being printed, which
makes debugging issues with the application harder.

Change-Id: I69ee2de921979f8bfaa8b501c6b05db1717b0c36
2018-03-13 08:39:52 +00:00
Neels Hofmeyr 1bb555439d configure: add --enable-werror
Provide a sane means of adding the -Werror compiler flag.

Currently, some of our jenkins.sh add -Werror by passing 'CFLAGS="-Werror"',
but that actually *overwrites* all the other CFLAGS we might want to have set.

Maintain these exceptions from -Werror:
a) deprecation (allow upstream to mark deprecation without breaking builds);
b) "#warning" pragmas (allow to remind ourselves of errors without breaking
   builds)

As a last configure step before generating the output files, print the complete
CFLAGS and CPPFLAGS by means of AC_MSG_RESULT.

Change-Id: I8cf0f135131c348d0b43f25b1d444af5827f148d
2018-03-13 00:01:17 +00:00
Pau Espin 34b59acc83 abisip-find: Add --format-json option
This format outputs json format which can be more easily parsed if
launched by scripting launguage with json support like python.

Change-Id: Ib2d461c79fbc242141dc342578467c3e9c6ed5fc
2018-03-12 17:58:36 +00:00
Pau Espin e845b0fc0f abisip-find: Force stdout buffer flush
If list-view is not enabled, then a line with the new BTS is printed to
stdout buffer. That's fine if stdout goes to the terminal, since it's
line buffered, but if abisip-find write to a pite or to a file, then the
buffer won't be flushed until a full page is full, which may take a
while, and produce delays in scripts using abisip-find.

Change-Id: I19f8c7f747fa7a130a436e5e07a8648932404bf0
2018-03-12 17:58:36 +00:00
Pau Espin 4becc845b8 abisip-find: Add option to bind to a specific source address
When the BTS answers, it uses the src addr used by abisip-find to send
the boardcast packets. This way a different IP than the one
automatically specified by default routing can be used.
An extra benefit: more than one abisip-find process can now be run in
parallel on the same interface.

Change-Id: I6b805f22d261003239d7002d9e568ea4797a2b0b
2018-03-12 17:58:36 +00:00
Philipp Maier f27dbc5f88 bsc_vty: display bts features in show bts
The command show bts displays all kind of BTS related info, but it
does not display the bts features yet.

- display bts specific features in vty-command show bts

Change-Id: I650133563436349d4ce55f292ea683dbb2ae68d7
2018-03-12 10:18:07 +00:00
Philipp Maier 8c498fc26b gsm_data: use feature list from libosmocore
In order to avoid code duplication the feature list (bit masks) and
the desciptive value strings as well as the function to set and get
the feature bits have been moved to libosmocore.

- use feature list functionality provided by libosmocore

Depends: libosmocore Change-Id Id0c35aef11aa49aa40abe7deef1f9dbd12210776
Change-Id: I3e80517539cc5d0e5d8189d434a5e3cc0fdea1a0
2018-03-12 10:18:05 +00:00
Harald Welte d6012ffc19 sysinfo: Fix regression causing missing L2 Pseudo-Length in SI5/SI6
Fixes a regression in the code generating SI5* and SI6 on SACCH,
where the L@ pseudo-length is not part of the 'struct' definition
we have in gsm_04_08.h and hence has to be encoded manually into
the first byte of the SI buffer.

We were doing this correctly until April 2017, when the following
patch was merged:

> commit 6f0e50c833
> Author: Max <msuraev@sysmocom.de>
> Date:   Wed Apr 12 15:30:54 2017 +0200
>
>     Prepare for extended SI2quater support

This patch cacidentially overwrote the l2_plen that was just enoded,
as the 'struct' was no longer pointing to 'output' (si_buf+1), but
now directly to the start of the si_buf.

NOTE: The Wireshark RSL dissector (and more recently also LAPDm)
contain a similar bug, so the SACCH will not be decoded correctly
after applying this patch. Nevertheless, it's correct.

Change-Id: Ie8c907b1317566670aeb68f933ceefd552c17565
Closes: #3059
Related: #2963
2018-03-12 00:28:58 +01:00
Neels Hofmeyr 4ac7763bc7 pcu_if: implement support for 3-digit MNC
Add the mnc_3_digits member to the info_ind.

Instead of changing to e.g. osmo_plmn_id, add the flag separately, and instead
of bool use a uint8_t, to not raise any struct packing issues and clarify the
flag's size beyond any doubt.

Bump the PCU interface version to 9.
This is one part of the three identical pcuif_proto.h patches:
- I49cd762c3c9d7ee6a82451bdf3ffa2a060767947 (osmo-bts)
- I787fed84a7b613158a5618dd5cffafe4e4927234 (osmo-pcu)
- I78f30aef7aa224b2e9db54c3a844d8f520b3aee0 (osmo-bsc)

Depends: Id2240f7f518494c9df6c8bda52c0d5092f90f221 (libosmocore)
Change-Id: I78f30aef7aa224b2e9db54c3a844d8f520b3aee0
2018-03-11 00:45:45 +01:00
Pau Espin cea3b51e2c debian: Move abisip-find from osmo-bsc to its own package
In some scenarios osmo-bsc is not required, only abisip-find to do the
initial set-up of the BTS, so no need to install osmo-bsc with it.

Change-Id: If3d476a1bd67abcb9cff241ab5989db923873986
2018-03-09 12:38:29 +01:00