aboutsummaryrefslogtreecommitdiffstats
path: root/src
AgeCommit message (Collapse)AuthorFilesLines
2017-12-11Generate SI2ter Rest OctetsMax2-1/+20
Previously we simply omitted SI2ter Rest Octets which is spec violation which lead to 'Malformed Packet' error in Wireshark RSL dissector. Fix this by generating empty 'no rest octets' with proper padding. Adjust test output accordingly. Change-Id: Ie4419aaaf93a462f501f8d8f7bf2677d37c58f94 Fixes: OS#2711
2017-12-10mgcp: cosmetic fixupsPhilipp Maier1-105/+39
- use unique enum/struct fsm struct names - use macro to shift bits in FSM description - use OSMO_STRINGIFY to generate the state names - remove duplicate logging of states and events - remove unnecessary space in log strings - prefix hexadecimal enpoint ids with - remove unnecessary log messages - rename bsc_mgcp_cause_codes_str to bsc_mgcp_cause_codes_names Change-Id: I663e03046cde3c786af72d15681bf7497330d7f9
2017-12-10OML: expand status reporting checksMax3-1/+20
* check GPRS state: if GPRS is enabled for the BTS but NSE, CELL or both NSVC are locked than report it as degraded * check TRX usability: use already available function to check that TRX is actually usable when reporting OML status via CTRL * fix tests linking: libbsc is using gsm48_create_mm_serv_rej() which is defined in libcommon-cs but neither libbsc itself nor tests using it are actually linked against libcommon-cs Related: OS#2486 Change-Id: I9dce1d3b0cabe149a90cfca58a3fe55f8d6a72bc
2017-12-09Remove 'msc' counter group from BSCHarald Welte1-6/+0
This is left over from the OsmoNITB days. We're defining and allocating these MSC counters, but never actually using them. This also means that the automatic counter export will list them, raising the expectation at users that such counters could be used in OsmoBSC. Let's remove them. They are in OsmoMSC, but not OsmoBSC. Change-Id: I5bd9e6e333b1c396beae46630986b17e7f8b82ef
2017-12-09Move many counters from BSC-global to per-BTS granularityHarald Welte5-24/+32
We used to have a lot of counters only globlly per BSC, but they're much more useful on a per-BTS level. Change-Id: I954b9dda72b83b91d46a934c221a8b3375743599
2017-12-01cosmetic: use fsm pointer from parameter listPhilipp Maier1-39/+31
the parameter list of osmo-fsm callbacks contains a pointer to the fsm instance. Use this pointer instead of reaching out for mgcp_ctx->fsm. Change-Id: I05ff62e7e2de64c2dbf5ea2736f5e58faf16df0b
2017-12-01cosmetic: correct sourcecode formattingPhilipp Maier1-1/+2
add missing line break Change-Id: Ia117e4099046fefcf35ccb94400554062e667869
2017-12-01cosmetic: add missing log prefixPhilipp Maier1-6/+6
the log messages have prefixes that mark important phases (CRCX/BTS, etc...). Some lines lack the prefix. Add missing prefixes. Change-Id: Iea5ea9e54f4b5c998b1d5fe18a98a94abd7b728b
2017-12-01cosmetic: do not cast void pointerPhilipp Maier1-5/+5
remove the casting of void *data, just assign directly Change-Id: I2e37630e315b3602da2f14e2364bb76be9dd2894
2017-12-01cosmetic: remove duplicate loggingPhilipp Maier1-24/+2
The log output of the reset FSM duplicates lots of the built in FSM log output. Remove duplicate logging, use more expressive log messages where needed. Change-Id: Ia5af309207476291f88af47878dc1d32b2dada06
2017-12-01mgcp: do not fail silently on snprintf()Philipp Maier1-2/+1
The snprintf() that is used to compose the fsm name on an assignment request may cause a silent failure. The buffer is large enough to take the string under all circumstances. If snprintf() fails, this would mean we have some other serious problem. use OSMO_ASSERT in case the snprintf() fails, so the failure gets noticed. Change-Id: I3c36df8cfd0880c524244048a993cd136be41f56
2017-12-01mgcp: add missing switch casePhilipp Maier1-0/+8
In the beginning of the CRCX phase for the network does not distinguish between EV_MDCX_BTS_RES and EV_TEARDOWN, so a Teardown due to an error could be misinterpreted as a successful MGW response. Add missing case statement to distinguish CV_MDCX_BTS_RES from EV_TEARDOWN. Change-Id: I9bf49df167d94b33ad65d8b9382a01f160b5aec0
2017-12-01mgcp: use mgw assigned connection identifiersPhilipp Maier1-11/+14
osmo-mgw assigns connection identifiers which are returned with the response to the CRCX. store the assigned connection identifiers and use them to identify the connections. Depends: osmo-mgw Iab6a6038e7610c62f34e642cd49c93d11151252c Closes: OS#2648 Change-Id: Ib379a6f40875bb8f2cf29038a5b5b7a40a21adab
2017-12-01mgcp: use hexadecimal digits in endpoint namesPhilipp Maier1-1/+1
The current implementation of osmo-mgw parses the numerical digit inside the endpoint name as hexadecimal number. also use hexadecimal numbers in endpoint names. Change-Id: I64a970d300b7290d50ec84b0640d5a321d903f5e
2017-11-30auth: remove obsolete VTY commandsPhilipp Maier2-18/+0
authentication (optional|required) is no longer needed, the related decisions are now made in the HLR. Change-Id: Ib6c6331cc86004c4862067031e4fcb12a6975b63
2017-11-30sccp-lite: remove obsolete VTY commandsPhilipp Maier1-43/+0
remove obsolete vty commands: - token - auth-key - no auth-key Change-Id: I9101d750a424b8af46d603bc7c877229bbae8727
2017-11-30bssap: remove libosmo-legacy-mgcp dependancyPhilipp Maier1-4/+15
the functions mgcp_timeslot_to_endpoint() and rtp_calculate_port() which are used to calculate the port in the sccp-lite / non AoIP case are part of libosmo-legacy-mgcp. Unfortunately libosmo-mgcp and libosmo-legacy-mgcp cause problems when used at the same time. Replace the functions mgcp_timeslot_to_endpoint() and rtp_calculate_port() with a local helper function. Change-Id: Id10311332aeabd8fd3ba1922198e34708e04cef9
2017-11-29HO prep: pass gsm_network to gsm_bts_alloc() alreadyNeels Hofmeyr2-3/+4
Prepare for a future change that accesses bts->network during gsm_bts_alloc(). Currently, gsm_bts_alloc() takes a ctx parameter, and gsm_bts_alloc_register() then gets the gsm_network pointer and sets bts->network to it. All callers anyway pass gsm_network as ctx to gsm_bts_alloc(), and anything else would not make sense anyway. So enforce passing exactly gsm_network to gsm_bts_alloc() and already set the bts->network pointer from there. Prepares-for: I00870a5828703cf397776668d3301c0c3a4e033a Change-Id: Ie590c14aa08df4c4f345596b23e5226c5577057a
2017-11-29cosmetic: handover.h: use "#pragma once", declare structs, commentsNeels Hofmeyr1-0/+2
Use new #pragma style instead of #ifndef dance. Forward-declare all structs we're using pointers of. Move function comments to their definitions in the .c file. Change-Id: I3d43ec01897c0ef9eaf506e68d5a1ec1977f70ea
2017-11-29compiler warnings: constify in abis_nm.cNeels Hofmeyr1-4/+5
Constify in- and output arguments for Parse Attribute Response Info chain to avoid compiler warnings, and more clearly indicate const data in the first place. Change-Id: Ib7d069fe1fda69e89dfd171cd76b1ed6d6db0ceb
2017-11-29compiler warnings: drop some unused variablesNeels Hofmeyr2-4/+0
Change-Id: I840b0cd8ee3e7c521e7c9053a992deeb9ec22ff4
2017-11-29cosmetic: mark gsm_objclass2mo as staticMax1-1/+1
It's only used once in the same file so there's no need to put it into global header. Change-Id: Id9674cad54bab6cc04475719678efc2c25d058a9
2017-11-29cosmetic: tighten function type signaturesMax2-9/+9
* change return type to bool * constify parameters The nm_is_running(), trx_is_usable() and ts_is_usable() always return boolean value and are always used as such anyway. The also do not change their parameters. Change-Id: I6a572fc78371c69f5308edbad0ebe15e143d0505
2017-11-29cosmetic: bsc_vty: Document bvci reserved valuesPau Espin Pedrol1-0/+1
Change-Id: I7a4374c3619cb83ef8beef594281f887d9fbf70a
2017-11-29cosmetic: bsc_vty: Fix trailing whitespacePau Espin Pedrol1-2/+2
Change-Id: I7089062285c40ec11af479c98b43d1d407397c82
2017-11-29auth: remove obsolete VTY commandsPhilipp Maier4-57/+0
Authentication is no longer done in the BSC, the variables that set the authentication policy and the IMSI regex have no longer any effect. Remove auth policy and authorized-regexp Change-Id: Ie31b921b5fd0af5501ec0c77c0f08089c10075e2
2017-11-29cosmetic: remove obsolete ROLE_BSCMax1-13/+0
It's leftover from the time when gsm_data_shared.* was actually shared with OsmoBTS. Nowadays ROLE_BSC is always defined so we can just drop it entirely and make working with gsm_data_shared.h slightly easier. Change-Id: I34fc9ee5955c14bbbde68d5499cf2acfd329afbc
2017-11-29OML: consider administrative state when reportingMax2-2/+7
Report state as degraded if BTS or any of its TRX are administratively locked. Change-Id: Ic9ee998d972ca870ce5d039c3ed95edb6ba8b36f Related: OS#2486
2017-11-24vty: Add cmd to configure 3g Early Classmark SendingPau Espin Pedrol4-3/+31
In state prior to this patch, "3G Early Classmark Sending Restriction" bit in SI3 rest octets was always set to H, which is a sane default as the policy to send the information is then controlled by "Early Classmark Sending Control" bit in the same octet. However, it seems Quortus SoftCore can have some issues decoding the option, so let's add a vty cmd to be able to disable it for those having any issues. Related: SYS#4021 Change-Id: Ic1afe071038a3bb5871d7ff40f665c8644f801ec
2017-11-24Use type bool for boolean fields in gsm48_si_ro_infoPau Espin Pedrol1-7/+7
Change-Id: Ic0981fca96f4927717ca335be1dab00a5d17fd6c
2017-11-23bsc filter: don't ignore imsi-allow on "global" filter levelNeels Hofmeyr1-3/+7
First off, there are "global" and "local" IMSI black/whitelist levels: "global" "local" VTY 'bsc' 'msc' for osmo-bsc VTY 'nat' 'bsc' for osmo-bsc_nat Both in osmo-bsc and osmo-bsc-nat, the "global" IMSI filter so far completely ignores all 'imsi-allow' rules it may contain. A comment in imsi_allow() proclaims actions that are missing in the code. Notably, in our example config osmo-bsc_nat.cfg, there is an imsi-allow on the 'nat' level, which with the code before this patch cannot have been effective in any way. Furthermore, on the "local" level the order is to check imsi-allow first, and imsi-deny after that. The comment says to do that in reverse order on the "global" level. There is no apparent reason for reversing. Add evaluation of imsi-allow directives on the "global" level, i.e. 'bsc' in osmo-bsc and 'nat' in osmo-bsc-nat, in the same order as on "local" level, to avoid confusion. Swap the comment to be consistent. Before this patch, to have effective imsi-allow, this config would be necessary for osmo-bsc: bsc access-list acl imsi-allow 999999999999999 access-list acl imsi-allow 9017.* access-list acl imsi-deny .* msc 0 access-list-name acl ... msc 1 access-list-name acl ... With this patch, imsi-allow also works on the "global" level: bsc access-list acl imsi-allow 999999999999999 access-list acl imsi-allow 9017.* access-list acl imsi-deny .* access-list-name acl msc 0 ... msc 1 ... Change-Id: Idb6c8dd62aa90666ba6fcd213f59d79f5498da3f
2017-11-21bsc_init: fix Werror: define rc for 2quater with si2q_count == 0Neels Hofmeyr1-0/+1
src/libbsc/bsc_init.c: In function ‘rsl_si’: src/libbsc/bsc_init.c:153:2: error: ‘rc’ may be used uninitialized in this function [-Werror=maybe-uninitialized] return rc; ^ Change-Id: Iedad1efcb477c77db8c741777ea076761658c7d1
2017-11-20reset: remove name variable from reset contextPhilipp Maier1-8/+9
The reset context contains a string buffer to allow for setting a human readable name, that is then displayed in the logs. Since OSMO-FSMs already have such a feature there is no need for an extra name variable. Use LOGPFSML and the name parameter of osmo_fsm_inst_alloc() to display the name of the FSM Fixes: Coverity CID#178664 Change-Id: I34511698923abec7545a6f3defd595f97b4bbeb1
2017-11-12osmo-bsc: Print NOTICE message on unimplemented BSSMAP UDTHarald Welte1-0/+4
When we receive unimplemented/unhandled message types, we shouldn't simply silently discard them, but print a log message for the benefit of the user. Change-Id: I65489578b1c214f193b1ce0e9ba59432dcd42a3e
2017-11-12mgcp: remove unused variablePhilipp Maier1-4/+0
The function handle_error asserts mgcp_ctx->conn to be non null, but it does not access it otherwise. remove unused variable conn Change-Id: I09851c957395d1ddb2f9471b99ffc091bc250404
2017-11-12mgcp: add missing out statePhilipp Maier1-1/+1
Even in the very early ST_CRCX_BTS phase, the error handler may decide to go to ST_CALL in order to initate the termination of a possibly half open connection. Add ST_CALL to the out state list in ST_CRCX_BTS Change-Id: Ic67aa7c67a4e98a38bff156be3ebf612012eb842
2017-11-12cosmetic: replace term MGCP-GW with MGWPhilipp Maier1-7/+7
The term MGCP-GW is deprecated, use now MGW Change-Id: Ibccda7e95c42267ce5f44e9fc4256a0083b6f68f
2017-11-12cosmetic: reorder case listPhilipp Maier1-2/+2
the switch statement in fsm_send_assignment_complete() has the default case at the beginning. Move the default case to the end to match common coding style rules Change-Id: I360842fe899b95972c44da3cb74a3dc51b379fdc
2017-11-10use osmo_sccp_inst_addr_name() instead of looking up ss7Neels Hofmeyr1-8/+4
Depends: libosmo-sccp I70ec5c8b42682a23f11a5820431c7e34e225709b Change-Id: Idb451597c724ac87a391121cebd0b0a927dd49d1
2017-11-09osmo-bsc vty: be fatal for addressbook entry errorsNeels Hofmeyr1-10/+8
So far, the config would log an error upon config parsing, and then continue to use defaults, which is super easy to miss. On errors, return CMD_ERR_INCOMPLETE to abort the program in a config parsing error. Be fatal for non-existing addressbook entries and for using address book entries from mismatching cs7 instances. Though it is mixing in cosmetic changes, add "Error:" to the output and arrange the erratic name to the end of the message, as is customary for error messages. Related: libosmo-sccp I2f71b9c4dd30f919d2054da81283dd7035f44f60 Change-Id: Ia4e58902a2d3757b266cf35ac89f256cfb8f0eec
2017-11-09osmo-bsc: SCCP addrs: default only if unset, reject invalidNeels Hofmeyr1-32/+25
So far, if the user entered an invalid SCCP address in the config, the osmo_bsc_sigtran_init() code simply replaced that with the default, i.e. running with a completely different address than the user may intend. Use the default SCCP addresses only when they are unset by the user. Default MSC addr: set directly, do not detour via cs7 instance PC. The default MSC SCCP addr is just a point code + SSN, deriving it from the cs7 instance first is a confusing step. Just set the PC and SSN, and done. Using default addresses does not constitute an "auto configuration": if we set up a cs7 instance automatically, we do not want to have to create a second one automatically, to prevent "auto-confusion", and want to bail instead. But for each MSC on its own, using default SCCP addresses makes sense and is orthogonal to automatic cs7 instance creation. Hence drop the auto config semantics from the default SCCP address parts. Always validate the SCCP addresses we will end up using, and bail immediately if they are erratic. i.e. don't overwrite a non-empty invalid SCCP address with defaults, but straight bail. Beneficial side effects: - Fix some grammar ultra confusion in log messages. - Add context: log the MSC number the logging refers to. - Drop code dup: since we're always logging the used SCCP addresses, might as well log those once, unconditionally, in the end. Change-Id: Iadbc2e9740457e1b389b7e7ad9c94274e7d8cb11
2017-11-09osmo-bsc RESET FSM: use distinct struct namesNeels Hofmeyr1-10/+10
Use distinctive struct names: s/fsm_/fsm_bsc_reset/. They only exist in the static context and it works fine, but the mad fsm-to-dot.py script breaks with identical struct names. Can't hurt to have unique names. Change-Id: I986377a74ccd83ca3b52e7f058bbc9115f05f741
2017-11-07mgcp: use osmo-mgw to switch RTP streamsPhilipp Maier8-65/+1252
osmo-bsc currently negotiates the RTP stream directly with the BTS and reports back the RTP IP/Port on the BTS. This works fine for a single BTS, but for Handover the port/ip pointing to the MSC side must not change, so an entity in between the BTSs and the MSC is required. Integrate the mgcp-client and use osmo-mgw to switch the RTP streams. Depends: osmo-mgw Ib5fcc72775bf72b489ff79ade36fb345d8d20736 Depends: osmo-mgw I44b338b09de45e1675cedf9737fa72dde72e979a Depends: osmo-mgw I29c5e2fb972896faeb771ba040f015592487fcbe Change-Id: Ia2882b7ca31a3219c676986e85045fa08a425d7a
2017-11-07bssap: paging: page entire BSS for unimplemented cell id listNeels Hofmeyr1-9/+39
3GPP TS § 08.08 defines various types of Cell Identifier List IEs, but we only implement "entire BSS" and "one LAC". If the MSC sends a Cell Identifier List that we don't implement, it is best for interoperability to page the entire BSS and post a log message instead of rejecting the paging altogether. Apart from resource management, it is not harmful to page more than the MSC requested; if use of resources becomes an issue, the log message will guide towards the solution of providing an actually implemented Cell Identifier List IE. Upon IE length that is other than we expect, log the error, but also fall back to paging the entire BSS. Overall message length correctness has been checked earlier. The particular case observed is that a Huwaei MSC sends a LAI for Cell Identifier List (MCC+MNC in bcd, followed by a LAC), parsing of which we may want to add later. Improve logging: identify the subscriber that is being paged. Coding style: use a switch() statement to clarify flow and provide a place to add more implementations later. Add regression test bssap_test.c: fabricates BSSAP Paging messages with the two implemented Cell Identifier List IEs as well as the unimplemented LAI identifier, verify the resulting paging LAC in wrapped function and stderr. Change-Id: Ie934c5d229140a89763bf2efff86d6a3766cd351
2017-11-02Check OML state per-BTSMax2-9/+9
To properly decide if a given OML link is degraded we have to use BTS-specific information about MO state. * move check function into BTS-specific part * add generic wrapper Related: OS#2486 Change-Id: Iddc7a4d20fbb95a6566eed1487a12733e5adb9e2
2017-11-01vty: skip installing cmds now always installed by defaultNeels Hofmeyr6-12/+0
vty_install_default() and install_default() will soon be deprecated. Depends: I5021c64a787b63314e0f2f1cba0b8fc7bff4f09b Change-Id: If2edf59a687a78d6db6bc73117a27509374b0fc6
2017-10-28Don't link osmo-bsc_nat against libosmoabisHarald Welte1-2/+0
This fixes the following dpkg-shlibdeps warning: Change-Id: Iea00c209652e8070a59942504bef660db0999e86 dpkg-shlibdeps: warning: package could avoid a useless dependency if debian/osmo-bsc-nat/usr/bin/osmo-bsc_nat was not linked against libosmoabis.so.6 (it uses none of the library's symbols)
2017-10-28osmo-bsc_nat: Don't link against libosmonetifHarald Welte1-2/+0
This fixes the following dpkg-shlibdeps warning: Change-Id: I31af5fb8b52ef1fd5effb139d9cdea1ebe9a41b4 dpkg-shlibdeps: warning: package could avoid a useless dependency if debian/osmo-bsc/usr/bin/osmo-bsc_nat was not linked against libosmonetif.so.4 (it uses none of the library's symbols)
2017-10-26log: output hexdump of transmitted sccp messagesPhilipp Maier1-2/+2
We output a hexdump for each sccp message we receive, but not when sending. Also log the hexdump of sccp messages when sending. Change-Id: Ibfe52a0b7dbca4c569c603a008d73d0d99d1c345
2017-10-26log: log the sccp message type of messages sentPhilipp Maier1-0/+16
We already log the message type of sccp messages we receive, but for transmitting the log output is missing. Also log the message type for tramsitted sccp messages. Change-Id: I6736f15ddc03e5f70c3504abffbae6cbf766c9d7