Commit Graph

500 Commits

Author SHA1 Message Date
Philipp Maier 554dbf4fb7 hnbgw: do not use LOGL_DEBUG as default loglevel
The hnbgw application uses LOGL_DEBUG for all its log categories. This
is way to verbose, lets set LOGL_NOTICE as default loglevel instead.

Change-Id: If3dbed88307814764bab9e7f1821e1dc0d8be43b
Related: OS#2577
2020-04-14 13:19:52 +00:00
Vadim Yanitskiy 065c192475 tests/test-ranap: cosmetic: remove unused variable 'rc'
Change-Id: Ie931d11efd7bb083558852a7f329c984c17fec62
2020-04-07 21:11:13 +07:00
Vadim Yanitskiy 81fd48d741 tests/test-helpers: fix endianness: do not print uint32_t as raw bytes
This unit test would not pass on big-endian machines.

Change-Id: I60dbcaa89b031c9a81c35e1dd0d9c963d486014c
2020-04-07 21:05:37 +07:00
Vadim Yanitskiy 89062aeb21 tests/test-helpers: fix some -Wpointer-sign warnings reported by GCC
Change-Id: I7ebc99fe919fe7ba515c9d8ba601dceb820bf11f
2020-04-07 21:01:12 +07:00
Pau Espin 35e2058348 hnbgw_vty.c: Drop unusued variables
Change-Id: Ic7f730c9f51384006e471b5e8452f5821b458bbf
2020-03-20 20:35:06 +01:00
Pau Espin a008b17f2e Fix compiler warning on signedness of char ptr using OCTET_STRING_fromBuf()
rua_msg_factory.c:19:48: warning: pointer targets in passing argument 2 of ‘OCTET_STRING_fromBuf’ differ in signedness [-Wpointer-sign]

Change-Id: Ie0a2e8e11902dc56720ff8121edde0e148fa587a
2020-03-20 20:32:26 +01:00
Pau Espin ca74126d54 tests/test-ranap.c: Fix wrong printf format
Caught by compiler:
test-ranap.c:54:30: warning: format ‘%u’ expects argument of type ‘unsigned int’, but argument 2 has type ‘RANAP_MaxBitrate_t’ {aka ‘long int’} [-Wformat=]
test-ranap.c:78:30: warning: format ‘%u’ expects argument of type ‘unsigned int’, but argument 2 has type ‘RANAP_CauseMisc_t’ {aka ‘long int’} [-Wformat=]

Change-Id: Icc4e81beaa35e13aea3adfed983016c78b730061
2020-03-20 20:23:04 +01:00
Pau Espin 4ab00db868 tests/hnb-test-ranap.c: Fix wrong printf format
Catched by compiler:
hnb-test-ranap.c:76:44: warning: format ‘%d’ expects argument of type ‘int’, but argument 3 has type ‘RANAP_CN_DomainIndicator_t’ {aka ‘long int’} [-Wformat=]

Change-Id: Ie4cd6a36fd0e9a871a1815d600e8a321a3d2a208
2020-03-20 20:19:49 +01:00
Martin Hauke c593da5d45 tests: Missing return statement
Change-Id: I4fae9f84a83af280846b07eaa139ff4a05784a2e
2020-02-15 23:01:39 +01:00
Pau Espin 67d32a0386 Bump version: 0.5.0.23-11a1 → 0.6.0
Change-Id: I5f42c0ad1a930004415f097d984e1fd1b2d277e6
2020-01-03 17:04:15 +01:00
Vadim Yanitskiy 11a1639b2d osmo-hnbgw: make sure osmo_ss7_init() executed successfully
Change-Id: Ia9ecf903e79b282aa4fa88a291424681d0fe9d89
Fixes: CID#206089
2020-01-01 14:05:57 +01:00
Harald Welte cc0914d018 exit(2) on unsupported positional arguments on command line
Change-Id: Id33caf93325074f9e5b2b322ac497b1c21c3f406
2019-12-03 21:53:08 +01:00
Alexander Couzens 9fb8cac6dc iu_client: ranap_iu_tx_release() change default cause code to Success
The cause code no remaining rab should be only used when closing the
Iu connection on this specific reason. Change default to NAS Success
Release which is a usual release.

Change-Id: Icf3f06b0de7dcda9f967ae29863054ef813c75e5
2019-10-08 13:02:11 +02:00
Alexander Couzens a6eb09d6db iu_client: pass return value of osmo_sccp_user_sap_down() towards the caller
osmo_sccp_user_sap_down return 0 on success, negative values on failure

Change-Id: I3b7c2296eb8b26f0881cee643b834336daab86ea
2019-10-03 20:30:31 +02:00
Harald Welte e844bf7828 sabp: Generate C/H files for SABP; create libosmo-sabp
This uses the (modified) Osmocom asn1c on the (modified) SABP ASN.1
syntax to generate C code + header files for SABP parsing/encoding.

It also adds some helper code for message encoding and decoding as well
as a new libosmo-sabp shared library which can be used by programs to
implement SABP related functionality.

Change-Id: Ib9580d1af96354398da4c9f97b28a0e23d56e275
2019-09-23 20:23:51 +02:00
Pau Espin 965d53348e hnbgw: Add libosmoctrl's VTY CTRL command initialization
Otherwise, the "ctrl" VTY node is not available and CTRL ip address
cannot be set.

Change-Id: I73f64b951690ec23f829c4855b2caeefa66ad35d
2019-09-20 17:21:23 +02:00
Alexander Couzens 32fc82a803 iu_client: introduce UE field free_on_release
Allow to free UE ctx when receiving a Iu Release Complete.
In preparation of ranap_iu_tx_release_free() it requires
a field to free the Iu ctx on it's own without depending
on the upstream user.

Change-Id: Iac41cd3cce3232d01b2f7ede0cc46226c2cfb6c0
2019-09-16 13:57:50 +00:00
Alexander Couzens ff79699b48 iu_client: introduce ranap_iu_tx_release_free()
ranap_iu_tx_release_free is a fire and forget function to release
gracefully if possible. It first sends a Iu Release Command. After
a certain timeout the connection will be released.

Change-Id: I349e2c61ba0131e233b7ab927dfced0bd461dd8f
2019-09-15 20:42:30 +02:00
Alexander Couzens 8e2a0ee8e2 iu_client: allow to control the notifications
The iu_client is informing the library user about global event.
In prepration to the tx_iu_release_free() call allow to
disable upstream notificatiosn

Change-Id: Ic93ef6fd54c995405e9c37a5e0c53f81a89850b7
2019-09-12 01:34:37 +02:00
Alexander Couzens 790212fcaf iu_client: introduce a guard around global_iu_event_cb
As preparation to enable and disable notifications for a specific ue connection,
add a slim proxy before calling global_iu_event_cb

Change-Id: I49a3402a871d6dccd343cda49f8a7f82bffe150b
2019-09-10 19:10:50 +02:00
Alexander Couzens efdd80dc0a iu_client: emit RANAP_IU_EVENT_LINK_INVALIDATED on SCCP disconnect indication
Change-Id: I168b5c67336c4d1cb9fcebb9c26a7cf2fc46e420
2019-09-03 18:44:34 +02:00
Alexander Couzens 609994d146 iu_client: introduce ranap_iu_free_ue() to free the UE connections
When freeing the UE connection object, disconnect the SCCP connection.

Change-Id: I6812edb4da487507ccf9f483de801c1c65c4b72b
2019-09-03 18:44:27 +02:00
Alexander Couzens 4ae261b89b iu_client: sccp_sap_up: don't decode empty disconnect indications
Change-Id: I1fea8f19433d908583de71d8d2401bbb8c0c7900
2019-09-03 18:40:57 +02:00
Alexander Couzens 87482b335c iu_client: ensure UE is not NULL on CO primitives
When ue_conn_ctx_find() can not find a UE it returns NULL.

Change-Id: I63222fda6778417b1c986cb05772fecc51c43bb5
2019-09-03 16:42:07 +02:00
Alexander Couzens 80307924f1 iu_client: sccp_sap_up: set rc early
Allows to skip assignment later.

Change-Id: Idd803774612719df144bef569fb734289aa31282
2019-09-03 16:42:06 +02:00
Vadim Yanitskiy dab16ff3f5 hnbgw_vty.c: fix: properly pass pointer to g_hnb_gw
Otherwise the process hangs if the user enters:

  $ show hnb NAME

hnbgw_vty.c: In function ‘show_one_hnb’:
hnbgw_vty.c:234:2: warning: passing argument 1 of
                   ‘hnb_context_by_identity_info’
		   from incompatible pointer type
		   [enabled by default]
iuh/hnbgw.h:154:21: note: expected ‘struct hnb_gw *’
                    but argument is of type ‘struct hnb_gw **’

Change-Id: I42fdb10af5f6427886b5797325830dfc212af30f
2019-08-23 00:30:40 +02:00
Pau Espin 505fa9eae7 Bump version: 0.4.0.14-92ea-dirty → 0.5.0
Change-Id: I53c1743eda203bf075f93f891e336ca4ec6866a8
2019-08-07 21:23:57 +02:00
Pau Espin 92ea15a53f Remove undefined param passed to {logging,osmo_stats}_vty_add_cmds
Since March 15th 2017, libosmocore API logging_vty_add_cmds() had its
parameter removed (c65c5b4ea075ef6cef11fff9442ae0b15c1d6af7). However,
definition in C file doesn't contain "(void)", which means number of
parameters is undefined and thus compiler doesn't complain. Let's remove
parameters from all callers before enforcing "(void)" on it.

Change-Id: I31a286bebe3229671d9960ae32a753d260a26b1d
Related: OS#4138
2019-08-05 14:49:35 +02:00
Thorsten Alteholz 445bdccffa spelling stuff found by lintian
Change-Id: I8434640701746d5db8707472d1d26c313e0814e9
2019-07-16 21:48:47 +02:00
Harald Welte 11b1ddee21 ranap_msg_factory: Fix criticality of PDUs
Seveal of our RANAP messages were using criticality values at the
PDU level differing from what RANAP_PDU_Descriptions.asn states
for the respective procedures.  Let's fix that.

This was discovered while working on the initial IuCS TTCN3 tests,
where the receive templates require the criticality to match.

Change-Id: I98eec0bdc0d0cb1b9284bd5d042b1f4403abef95
2019-04-20 22:53:49 +02:00
Harald Welte 8fa35b840c iu_client: Implement transmission of ResetAcknowledge
When receiving an Iu Reset, respond with Iu ResetAcknowledge.

Closes: OS#3944
Change-Id: Ia09752983a7e2a952aa144635924edbffd894058
2019-04-20 21:13:12 +02:00
Oliver Smith f601526970 tests: use -no-install libtool flag to avoid ./lt-* scripts
This ensures that the rpath of the generated binaries is set to use only
the just-compiled so-files and not any system-wide installed libraries
while avoiding the ugly shell script wrapper.

Change-Id: I92c7391631becc09d277981179c23f2e4dba3b54
2019-03-19 13:46:08 +01:00
Neels Hofmeyr e22027ae2a osmo-hnbgw: reply with RESET ACK when receiving a RESET
Rationale: current osmo-msc refactoring introduces RESET handling on IuCS.

In particular, it makes osmo-hnbgw be able to operate with an (upcoming)
osmo-msc that has strict RESET handling: it will send a RESET and require a
RESET ACK if it sees a new IuCS peer sending messages without prior RESET.

Even though a workaround to ignore missing RESET messages on IuCS will also be
in place in the new osmo-msc, this is a first small step towards more sane
RESET handling in osmo-hnbgw.

Related: OS#3820
Change-Id: I02bc74ef9fef61f4490b4d4dc3ce6c0a6d965909
2019-03-08 05:10:48 +01:00
Neels Hofmeyr 39d7b5c646 osmo-hnbgw: logging tweaks
Log about:
- sending RESET messages to CN;
- accepting a new hNodeB peer on HNBAP.

Change-Id: I317831dbc6c463e4d4dcde9e6716431e026c4398
2019-03-08 05:10:48 +01:00
Neels Hofmeyr f8d5f37c20 osmo-hnbgw: set a proper talloc ctx for logging
Change-Id: I006103d8d7fb15e2612fff619879940d8405e045
2019-03-04 22:41:14 +01:00
Neels Hofmeyr 3c839966b6 osmo-hnbgw: fix cmdline: do not force-disable colored logging
Un-jam the commandline option to disable color: it is so far stuck in
--disable-color and overrides everything so that we never see any colored
logging from osmo-hnbgw, whichever cmdline or cfg we pass.

Change-Id: I00400b626925fa9da707ad6679d8448941dbfa98
2019-03-04 22:38:59 +01:00
Harald Welte 92a88ee73f Bump version: 0.3.0.10-9e66-dirty → 0.4.0
Change-Id: Ib2943b7fd0a1f7ca79f761116cba30aa3aa29b88
2019-01-20 21:46:06 +01:00
Stefan Sperling 319c28581e add a VTY command which shows a specific HNB
Add the 'show hnb NAME' VTY command which displays just
one specific HNB, addressed by its identity string.
This augments the functionality provided by 'show hnb all'.

Change-Id: Iab12aa4ab090b72c472358b84daf6919b30747f6
Related: OS#2774
2018-10-31 12:18:02 +01:00
Harald Welte 9aad185151 hnbgw_tx_hnb_register_rej(): Missing return statement
Change-Id: I0bdee8ede9ffdc16c16a4f5723acb7b4bceb2158
Fixes: Coverity CID#188869
2018-10-21 11:46:14 +02:00
Neels Hofmeyr a770f6967b fix transport layer addr again, for nano3g
The nano3G sends the RAB Assignment Response's Transport Layer Address in X.213
NSAP padded to 20 bytes (160bit). Do not interpret it as 4-byte IP address,
which currently breaks nano3G voice calls (wrong RTP IP address).

Recent commit I2cd1b2d8e1c1ae707cfc0dc7961a2b31ecdf29e0 fixed decoding of X.213
NSAP that is exactly seven bytes, but broke decoding of the padded version from
the nano3G.

A proper X.213 NSAP decoding would still be more welcome than this patching
back and forth, but this is (another) quick fix without spending too much time
on it.

Related: OS#3420
Change-Id: I0ad8bce6fcfd3829394c39490058c1ab85cdfde3
2018-09-30 23:35:35 +02:00
Neels Hofmeyr b876b421e3 hnbgw: vty: add SCCP related vty commands
Depends: I214ea51fc6bfa2a9a4dd7c34b43add0c77ffe22e (libosmo-sccp)
Change-Id: I2f81e078d7a26dd39f8ff9d0f9273ee1a3434232
2018-09-27 03:35:15 +02:00
Neels Hofmeyr 236d1d4865 fix decoding of incoming X.213 NSAP addr
Fix ranap_transp_layer_addr_decode() to test == 7 instead of > 7: If a femto
cell sends its Transport Layer Address as X.213 NSAP IPv4, we receive 3 header
bytes and four IP-address bytes, so the length is exactly 7.

This function is very vague on numerous other decoding details, but this patch
only fixes the vital length check that makes 3G usable with X.213 NSAP.

Related: OS#3420
Change-Id: I2cd1b2d8e1c1ae707cfc0dc7961a2b31ecdf29e0
2018-08-20 17:31:58 +02:00
Alexander Couzens ad4ea3b10e hnbgw: remove close_cb() to fix a crash when releasing a hnbgw
The read callback should catch all errors already.
Previous when a read fails it:

* hnb_context_release() -> osmo_stream_srv_destroy() -> hnb_context_release()
On the second hnb_context_release() the hnbgw will crash because calling
llist_del() twice on the same object.

Fixes: OS#3416
Change-Id: Ic84b2184b7fc850c0de2acacf179e86771e17510
2018-07-24 19:08:19 +02:00
Pau Espin ba941e553d Bump version: 0.2.0.57-cf5f-dirty → 0.3.0
Change-Id: Id5d2f749bca46e8b81cc2934447707e3db80ea18
2018-05-03 18:29:14 +02:00
Neels Hofmeyr cf5fbea78f cosmetic: use osmo_plmn_id instead of mcc,mnc
It's cosmetic since the MCC and MNC in the PLMN aren't actually used,
currently. It makes sense to do it properly anyway, while I'm still in the
3-digit MNC topic, for the future.

Change-Id: I29ebcddd45fe3079f8883589a83cc7216a535475
2018-03-21 15:55:18 +01:00
Neels Hofmeyr 3050864b73 hnb-test: log accurate three-digit MNC with leading zeros
Depends: Id2240f7f518494c9df6c8bda52c0d5092f90f221 (libosmocore)
Change-Id: Ie3dd206bca2f38a0ef7ee7f9d3b6bf2eacc899a4
2018-02-28 19:26:07 +01:00
Stefan Sperling c964a2cfa1 ensure unique CellIDs in HNB-GW
If we receive a HNB-REGISTER-REQ with a cell ID which is already used
by another registered NNB, log an error and send HNB-REGISTER-REJECT.

Tested manually by running two 'hnb-test' programs concurrently (they
need to listen on different telnet ports; this port is hard-coded so
I compiled two different hnb-test binaries).
Then I issued the 'hnbap hnb register' command on the telnet interface
of each, and verified that the correct action is logged by osmo-hnbgw.
Both hnb-test programs can connect, but only one of them can register
at a time. Killing a registered 'hnb-test' program terminates its
connection and allows the previously rejected one to register.

The new rejection log message looks like this:
 hnbgw_hnbap.c:429 rejecting HNB-REGISTER-REQ with duplicate cell
 identity MCC=901,MNC=99,LAC=49406,RAC=66,SAC=43947,CID=182250155
 from (r=127.0.0.1:42828<->l=127.0.0.1:29169)

This change depends on a new API in libosmo-netif, which is added in
https://gerrit.osmocom.org/#/c/6844/

Change-Id: Iffd441eb2b6b75dfbe001b49b01bea015ca6e11c
Depends: I8ed78fe39c463e9018756700d13ee5ebe003b57f
Related: OS#2789
2018-02-22 20:29:06 +00:00
Neels Hofmeyr 2293df070c hnbap: log errors on decoding/encoding HNB-REGISTER msgs
Change-Id: I3c039267fa2cc047c5678bcfe4a603f70c21cdd1
2018-01-18 19:01:09 +01:00
Neels Hofmeyr 8a2b6e2b6f cosmetic: hnbgw: hnbap: log rx of unsuccessful outcome
HNBAP isn't really that important to osmo-hnbgw operation, all we do is service
the few requests so that the other side is happy and uses our Iuh.
Nevertheless, could at least log if an UnsuccessfulOutcome was received.

Change-Id: I3f309dc2d3436798e9e76bcc2ebd82403ea538a1
2018-01-15 23:40:38 +01:00
Neels Hofmeyr 02296af07d hnbgw_hnbap: fix missing return in rx [un]successful outcome
Fixes: CID#57732 CID#57733
Change-Id: Iddf76d23c2c7d5824e82708f7da013c88411e832
2018-01-15 23:30:57 +01:00
Neels Hofmeyr e3644ac476 hnbgw_cn: rx ranap: set rc in all cases
There don't seem to be any evaluations of the rc, nevertheless return
well-defined values.

Fixes: CID#181968
Change-Id: I59295388564e5d270da32db6e7488755231f8a11
2018-01-15 23:28:08 +01:00
Neels Hofmeyr 6814d22d5f hnbgw_rua: fix dereference of unset pointer
In the UNITDATA case, there is no map, so a) initialize map as NULL and b)
print the RUA ctx id directly from local var context_id instead.

Fixes: CID#181969
Change-Id: I73f508b719b61a389e10cbad1bafad1650634abe
2018-01-15 23:28:08 +01:00
Neels Hofmeyr 70d3ece487 hnbgw_rua.c: log: fix integer format for cN_DomainIndicator
Fixes: CID#135219
Change-Id: I32c11100c87a59f34d7c1fefd2f0037e5d63f0e0
2018-01-15 23:28:00 +01:00
Pau Espin e9b4c390b4 iu_client.c: Remove unusued variable
Change-Id: If841d403010a73722ff69617a51719421febab56
2018-01-08 11:07:26 +01:00
Max bfeea6713b Expand ctrl interface
Add commands to get number of connected HNBs and identity string of
connected HNB based on Cell ID.

Change-Id: I3a2d6fa3d6d0829ccee4ecc0998d9299c97820e9
2017-12-31 11:02:07 +00:00
Max ef727410b2 Add control interface
* add libosmoctrl dependency
* bind control interface

Change-Id: I4637e88da00bac1ab0237c29ac73806d024863ba
2017-12-31 11:02:07 +00:00
Max 1e57ba503e Use proper package version
Use actual application version instead of hardcoded "0".

Change-Id: I8711b9d819454d810291d57b97119d9fe4a47f8e
2017-12-28 12:27:41 +01:00
Harald Welte f8b73b15c0 hnbgw_vty.c: Fix "-Werror=format-security" failure in vty_out()
We have to use a format string, we cannot directly print "name".

Fixes a build error on our OBS builds:
hnbgw_vty.c:156:5: error: format not a string literal and no format arguments [-Werror=format-security]
which was introduced in Change-Id I3c937306a011715e163a40bc8ef8ec7e8d4e5d08
about one week ago.

Change-Id: I042989c2b7b379284b2ee5fea3bd8f8ce406b09e
2017-12-26 21:41:16 +01:00
Harald Welte 8e88d37cec hnbgw_vty.c: cosmetic: Fix non-tab-indented code
This was introduced a week ago in Change-Id
I3c937306a011715e163a40bc8ef8ec7e8d4e5d08 and is now cleaned up.

Change-Id: Iaadf941aa7f1c5ae05eb02b51cc646b7b5587ba3
2017-12-26 21:41:16 +01:00
Neels Hofmeyr 3bd8a55661 vty typo: 'show hnb': SCTP stream, not SCCP stream
Change-Id: Iceb29af9f4ef6b4b4ed9778bdd683d30c201371d
2017-12-25 15:24:33 +01:00
Neels Hofmeyr 23f3fdc6b2 comments: hnbgw_rua.c: remove obsolete fixmes for asn1 free
The comments are all right above the line that does the proper asn1 free step.

Change-Id: I60e3be8c56ecc75c22e76f9e9dce8c72753e153b
2017-12-25 00:46:12 +01:00
Neels Hofmeyr 4e2681df26 osmo-hnbgw: startup: log the RNC-Id that is going to be used
Change-Id: I8aeb93fe8037e5fdc0784f5fc3bdb527de3b76bd
2017-12-25 00:46:12 +01:00
Neels Hofmeyr da58d26cbc osmo-hnbgw config: add 'rnc-id' config item
So far, the RNC-Id is hard-coded as 23. Still use 23 as default, but allow
configuring by config file. Hence make it possible to run multiple osmo-hnbgw
with differing RNC-Id each.

Change-Id: I374f558cc4bb36055f39efe9c58ae1b9bd49da46
2017-12-25 00:46:12 +01:00
Neels Hofmeyr e045da0261 cosmetic: context_map_tmr_cb(): fix comment
Change-Id: I4dd07a4d09d3cd4dc2a08e42ee48344967e5e3a6
2017-12-25 00:46:12 +01:00
Neels Hofmeyr 1e9f4f5432 rua_to_scu(): don't create a context map for UNITDATA
UNITDATA is connection-less, and as can be observed further below, the 'map'
doesn't get used in the N_UNIDATA case.

Related: OS#2776
Change-Id: Ic35562e6d7bfa54b6be859860657f9a235ad5a50
2017-12-25 00:46:12 +01:00
Neels Hofmeyr b10e2937d9 rua: discard context maps on id-Disconnect
When an id-Disconnect is received, the RUA to SCCP user context becomes unused.
Mark the context map as inactive in that case. It will be cleaned up by the
context map garbage collector.

Related: OS#2776
Change-Id: I9616f72bfa566de081098ee13e720ff0f5266c77
2017-12-25 00:46:12 +01:00
Neels Hofmeyr aa3e9ebcb4 segfault: context_map gc: use llist_for_each_entry_safe()
The context map garbage collector removes entries from the list, hence it must
use llist_for_each_entry_safe().

We haven't hit this before since nothing is yet flagging context maps to be
discarded.

Related: OS#2776
Change-Id: I9d5899923054d1bf862d542fec862fb1e6f07dce
2017-12-25 00:46:12 +01:00
Neels Hofmeyr 9e17e054e4 osmo-hnbgw: vty: revamp output of context maps on 'show hnb'
Instead of listing each and every context map, rather output a summary of
context counts.

Rationale: in a list of a hundred HNBs, I don't want to also see a dozen (or
potentially thousands of) context map lines for each. Furthermore, the conn IDs
aren't necessarily useful on network traces either.

For example, what was shown as SUA Id is incidentally the SCCP Reference, but
this is not a hard requirement and may change. Also, the reference is shown in
wireshark as a hex in mismatching byte order ... so rather don't bother.

The result now looks like

  OsmoHNBGW> show hnb all
  HNB (r=192.168.0.124:29169<->l=192.168.0.9:29169) "000295-0000152614@ap.ipaccess.com"
      MCC 901 MNC 70 LAC 14357 RAC 11 SAC 1 CID 8595638 SCCP-stream:HNBAP=0,RUA=0
      IuCS: 1 contexts: inactive-reserved:1
      IuPS: 1 contexts: active:1
  1 HNB connected

Related: OS#2772 OS#2773
Change-Id: Iae76b68e85863c8663bb5c508b85534c00e1d2c9
2017-12-25 00:46:12 +01:00
Neels Hofmeyr 140f38c55e vty: tweak / improve HNB and cnlink introspection
Add 'show cnlink' (uses new osmo_sccp_user_name(), see 'Depends' below).

Tweak 'show hnb all'.

The result looks something like:

  OsmoHNBGW> show cnlink
  IuCS: OsmoHNBGW:RI=SSN_PC,PC=0.23.5,SSN=RANAP <-> RI=SSN_PC,PC=0.23.1,SSN=RANAP
        SS7 route: pc=0=0.0.0 mask=0x0=0.0.0 via AS as-clnt-OsmoHNBGW proto=m3ua ASP asp-clnt-OsmoHNBGW (r=127.0.0.1:2905<->l=127.0.0.1:37699)
  IuPS: OsmoHNBGW:RI=SSN_PC,PC=0.23.5,SSN=RANAP <-> RI=SSN_PC,PC=0.23.4,SSN=RANAP
        SS7 route: pc=0=0.0.0 mask=0x0=0.0.0 via AS as-clnt-OsmoHNBGW proto=m3ua ASP asp-clnt-OsmoHNBGW (r=127.0.0.1:2905<->l=127.0.0.1:37699)

  OsmoHNBGW> show hnb all
  No HNB connected

  OsmoHNBGW> show hnb all
  HNB (r=192.168.0.124:29169<->l=192.168.0.9:29169) "000295-0000152614@ap.ipaccess.com"
      MCC 901 MNC 70 LAC 14357 RAC 11 SAC 1 CID 8595638 SCCP-stream:HNBAP=0,RUA=0
      IuCS 24->1002 (RUA->SUA) state=1
      IuPS 24->1003 (RUA->SUA) state=1
  HNB (r=192.168.0.15:29169<->l=192.168.0.9:29169) "000295-0000154153@ap.ipaccess.com"
      MCC 901 MNC 70 LAC 24358 RAC 22 SAC 65535 CID 1048575 SCCP-stream:HNBAP=0,RUA=0
      IuCS 23->1000 (RUA->SUA) state=1
      IuPS 23->1001 (RUA->SUA) state=1
  2 HNB connected

Related: OS#2772 OS#2773
Depends: Ib7abf69cfcf4c56273223054b280458451e6c2f6 (libosmo-sccp)
         Ia0d15a2814b08bc3f052a1ed12dbb68bade55309 (libosmo-sccp)
Change-Id: I3c937306a011715e163a40bc8ef8ec7e8d4e5d08
2017-12-25 00:43:28 +01:00
Neels Hofmeyr 66d6d760aa hnbgw: hnb info: record MCC, MNC, show on 'show hnb'
Before, MCC and MNC were always reported as zero, now the output of 'show hnb all' looks like:

  OsmoHNBGW> show hnb all
  HNB "000295-0000154153@ap.ipaccess.com" MCC 901 MNC 70 LAC 11111 RAC 99 SAC 65535 CID 1048575
     HNBAP ID 0 RUA ID 0

Change-Id: Iae094b36fa1cf18e07ed33914b9425368d7cd34b
2017-12-20 23:17:57 +01:00
Philipp Maier aa8d48cbe0 ranap_msg_factory: remove unusued variable
remove variable i in ranap_new_msg_sec_mod_compl() as it is not
used (compiler warning)

Change-Id: I93d9e95109fb78bc6cc161745b9e14de8b623d4f
2017-12-20 16:03:19 +00:00
Philipp Maier 1eb19cf690 ranap_msg_factory: check IE encoder return codes
in many functions, the returncode (rc) from the IE encoder functions
is not checked.

Add a return code check and log error message (like it is already
done in the functions which already check the return code)

Change-Id: I592c0794a94c50fde5c574b1e9bc581eb28af4ae
2017-12-20 16:03:19 +00:00
Philipp Maier ee03876dd1 iu: iu_helpers: add functions to decode ip/port from rab-ass
add ranap_transp_assoc_decode() to decode the port information from
an  RANAP_IuTransportAssociation_t field.

add ranap_transp_layer_addr_decode() to decode the ip-address from
an RANAP_TransportLayerAddress_t field.

Change-Id: I3c1a0455c5f25cae41ee19229d6daf299e023062
2017-12-20 16:03:19 +00:00
Neels Hofmeyr ade7e8b19b hnbgw: use proper talloc ctx for vty telnet init
Change-Id: I355c6e5489f24566612528cd679c5cab21eed008
2017-12-20 16:00:11 +00:00
Neels Hofmeyr f898d6bc10 fix 3 compiler warnings in ranap_common.c
ranap_common.c:282 col 45: warning: format ‘%u’ expects argument of type ‘unsigned int’, but argument 4 has type ‘RANAP_CauseNon_Standard_t {aka const long int}’ [-Wformat=]
ranap_common.c:527 col 15: warning: implicit declaration of function ‘asn1str_to_u16’; did you mean ‘asn_strtol’? [-Wimplicit-function-declaration]
ranap_common.c:546 col 11: warning: unused variable ‘addr’ [-Wunused-variable]

Change-Id: I0b399e78fa7b202a36e5e4be86f338c0ceb9823e
2017-12-20 15:55:14 +00:00
Neels Hofmeyr 2c56f6d454 hnbgw: use proper VTY port number defined in libosmocore (4261)
We used to have hardcoded 2323 from early development, use the proper
libosmocore definition instead.

Depends: Ife52a968a41cb286f640006587877971ff66c1a4 (libosmocore)
Change-Id: Id67d89695ebdc6288f507338c15ad773b8adf6e4
2017-12-20 13:57:54 +00:00
Neels Hofmeyr 69888c86ed iu client: store multiple LAC,RAC per RNC = fix paging for multiple RNC
Introduce a list of LAC+RAC entries for each RNC, hence allow serving more than
one LAC per OsmoHNBGW.

iu_client is used by OsmoMSC and OsmoSGSN, both will be able to page
successfully in a setup with multiple LACs (read: multiple hNodeB) connected to
an OsmoHNBGW.

Ensure that each LAC,RAC is registered with at most one RNC Id. If a LAC,RAC
shows up on a different RNC Id than before, move it over to the new RNC Id.

Future patches should probably add:

* timeouts of RNC Id / LAC,RAC validity, to remove unused entries.
* VTY/CTRL commands to introspect which RNCs and LAC,RACs are listed.
* VTY/CTRL commands to remove RNC Id / LAC,RAC entries.

Change-Id: I189f8e2663353276b1c615d2f78455dafe568045
2017-12-19 03:20:18 +01:00
Neels Hofmeyr accb78000b osmo-hnbgw: don't configure specific local IP address for STP connection
It's not necessary to set a local IP to connect to OsmoSTP with, 'any' is as
good as any.

Related: OS#2663
Change-Id: If5d0a1500de5e2c4b80acf025761d0264a8a51a0
2017-12-04 15:39:17 +01:00
Neels Hofmeyr b593969dd7 cosmetic: osmo-hnbgw: log remote SCCP addresses on startup
Change-Id: I6395dcde35359617cae52ff59d4eb53930097c7d
2017-11-24 04:35:41 +01:00
Neels Hofmeyr 2af648f443 osmo-hnbgw: auto-config local and remote PCs if omitted
The current default point-code for OsmoMSC is 0.23.1 and for OsmoSGSN 0.23.4.
See https://osmocom.org/projects/cellular-infrastructure/wiki/Point_Codes.

Before this patch, osmo-hnbgw requires a cs7 config and explicit point-codes
for MSC and SGSN as well as a local one. Provide default config if none is
provided:

Use above default point-codes if no MSC and/or SGSN address are provided. Also
create a default cs7 instance with local PC 0.23.5.

This allows completely omitting cs7 instance and SCCP addresses from
osmo-hnbgw.cfg in a single-box setup.

Change-Id: I056547f26858d3ad52e66a15f7a4273dcc300e97
2017-11-24 04:35:05 +01:00
Neels Hofmeyr c6ed1c3ae8 test_common: fix compiler warning: include ranap_common.h
test_common.c:85:2: warning: implicit declaration of function ‘ranap_set_log_area’

Change-Id: Ice192e1f7f1bdafe0941160f43e573349aaceb75
2017-11-22 03:11:40 +01:00
Neels Hofmeyr 54df0a1095 ranap_msg_factory: sanitize: memcpy instead of unaligned int copy
The sanitize build complains about writing to a uint32_t that is not 4-byte
aligned. Instead, write the uint32_t by memcpy.

For that, move the common ntohl() to the top and store in a local uint32_t,
memcpy() from that in both code paths.

Change-Id: Iacdd15421f824dd009448a96355b533dff28258b
2017-11-22 03:11:40 +01:00
Neels Hofmeyr d9cb19a8fb tests: sanitize: fix mem leaks, clean after tests
Fix various mem leaks in the testing code.

Add test_common_cleanup() in test_common.c, to free talloc contexts; call in
test-{helpers,hnbap,ranap}.c. Upon talloc ctx cleanup, ensure that they are
actually empty, in order to catch newly introduced mem leaks.

If non-empty, print talloc context reports.

Change-Id: Ic66c005f2a264774e18bb54e58b87bef5944511c
2017-11-22 03:11:40 +01:00
Harald Welte da86fe5ae3 Fix various compiler warnings in hnb-gw code
Since we finally started to use -Wall, the related warnings became
visible.

Change-Id: I516700eab2aa7c3412dd62775c4960aed9d4b682
2017-11-21 11:08:56 +00:00
Harald Welte ffc2093858 sccp_sap_up(): Fix never-hit "default" case in switch
As the default was called "defualt", it became a standard C label
and was never actually performing any default catch-all behavior.

As we didn't use -Wall, gcc never warned us about it so far :/

Change-Id: I9dbad21e75a55ad91b12d3d3ee8bd6dfb5326c3e
2017-11-21 08:25:52 +01:00
Harald Welte ee69470da6 hnbgw.c: Remove dead code creating libsctp linker dependency
Since I8ac15fa2fd25bedb26297177e416976a5389b573 in July 2017 we are
not using sctp_*() functions directly anymore but go via
libosmo-sigtran.  However, some dead code remained in hnbgw.c, which
means that linkage will fail if compiled without any optimization,
i.e. without -O present.

Change-Id: Ifbcb21d43e17bf512bc7b219e590410e06c434ca
2017-11-21 08:25:52 +01:00
Harald Welte 47bba70cec Add "-Wall" to the compile rules of the non-asn1c-generated source code
This is actually default in all other osmocom projects, and it's a
big surprise that it hadn't been enabled for osmo-iuh.  Now we finally
can see that there are e.g. unused static functions in the code.

Change-Id: I8d52b11e3f476ffd77f3ab185b679817cd3b2163
2017-11-21 08:25:52 +01:00
Neels Hofmeyr e90f13e82d api doc: clarify byte order in ranap_new_msg_rab_assign_*
Change-Id: Ib0d2cc538488a995be5278092d3ac105be8aad33
2017-11-20 21:38:50 +00:00
Neels Hofmeyr 8e1c07308c osmo-hnbgw: drop erratic log line on remote STP address
The stp_host is just the *default* that may be overridden by the VTY
configuration. Don't log it as the one that is going to be used.

It's not trivial to print the actual IP address being used, there may be any
number of ASP, theoretically. Hence leave logging up to
osmo_sccp_simple_client_on_ss7_id(), after another hypothetical patch.

Change-Id: Ia438143606913faccc8cdf4fd5f7d376f93e7891
2017-11-20 17:00:20 +01:00
Neels Hofmeyr dfc75df199 src/Makefile.am: drop unused COMMON_LDADD
unused since change-id Ic6a645a93406670d58eb5edf5f2f2e1266168c92
"osmo-hnbgw: Avoid useless linking to libosmogsm and libsctp"

Change-Id: I4241a1d84b54a77a6a6dad809f8ec921f45ba4bc
2017-11-16 10:01:13 +01:00
Neels Hofmeyr b0c650e7b0 vty: skip installing cmds now always installed by default
vty_install_default() and install_default() will soon be deprecated.

Depends: I5021c64a787b63314e0f2f1cba0b8fc7bff4f09b
Change-Id: I61b79f633d36814b53e40f1a92b5847c9ff4fde0
2017-11-08 02:28:31 +00:00
Harald Welte 493366ec7b Link libosmo-ranap against libosmovty
This fixes the following dh-shlibdeps warnings:

Change-Id: I08be684c45c7e95315dba6ccf9892fe6fc7c3f24
dpkg-shlibdeps: warning: symbol install_element used by debian/libosmo-ranap1/usr/lib/x86_64-linux-gnu/libosmo-ranap.so.1.0.0 found in none of the libraries
dpkg-shlibdeps: warning: symbol vty_out used by debian/libosmo-ranap1/usr/lib/x86_64-linux-gnu/libosmo-ranap.so.1.0.0 found in none of the libraries
2017-11-03 14:04:25 +00:00
Harald Welte 7235ea02d7 osmo-hnbgw: Avoid useless linking to libosmogsm and libsctp
This fixes the following dpkg-shlibeps warnings:

Change-Id: Ic6a645a93406670d58eb5edf5f2f2e1266168c92
dpkg-shlibdeps: warning: package could avoid a useless dependency if debian/osmo-hnbgw/usr/bin/osmo-hnbgw was not linked against libosmogsm.so.8 (it uses none of the library's symbols)
dpkg-shlibdeps: warning: package could avoid a useless dependency if debian/osmo-hnbgw/usr/bin/osmo-hnbgw was not linked against libsctp.so.1 (it uses none of the library's symbols)
2017-11-03 14:04:11 +00:00
Harald Welte cc1afdfb7e Tag/Release 0.2.0 + Update LIBVERSION + Debian packaging
Change-Id: I4fe653fdde6acda59485c73cee63bfc5326edf28
2017-10-27 22:35:49 +02:00
Harald Welte a3f4e79a9d Makefile.am: Link libosmo-ranap against libosmo-sigtran
In Change-Id I6a3f7ad15be03fb94689b4af6ccfa828c25f45c0 we introduced
the somewhat arguable combination of Iu code in libosmo-ranap.  This Iu
code uses functions provided by libosmo-sigtran.

However, at the time it was overlooked to explicitly link libosmo-ranap
against libosmo-sigtran, which caused linking failures of programs
using libosmo-ranap, such as the unit tests included in this package.

Below example is from building using contrib/jenkins.sh on Ubuntu 17.04:

  CCLD     test-ranap
../../src/.libs/libosmo-ranap.so: undefined reference to `osmo_sccp_local_addr_by_instance'
../../src/.libs/libosmo-ranap.so: undefined reference to `osmo_sccp_tx_unitdata_msg'
../../src/.libs/libosmo-ranap.so: undefined reference to `vty_out'
../../src/.libs/libosmo-ranap.so: undefined reference to `install_element'
../../src/.libs/libosmo-ranap.so: undefined reference to `osmo_sccp_user_bind'
../../src/.libs/libosmo-ranap.so: undefined reference to `osmo_sccp_user_sap_down'
../../src/.libs/libosmo-ranap.so: undefined reference to `osmo_scu_prim_name'
../../src/.libs/libosmo-ranap.so: undefined reference to `osmo_sccp_addr_dump'
collect2: error: ld returned 1 exit status
Makefile:418: recipe for target 'test-ranap' failed

Change-Id: Ibfbcafd31c91dc630d406ec39b3b076bdb1f4c19
2017-10-04 11:49:29 +08:00
Alexander Couzens e03d8a0c97 hnbgw_cn.c: use new signature of osmo_sccp_addr_name(osmo_ss7_instance *ss7, osmo_sccp_addr *addr)
libosmo-sccp introduce the new signature in
564ff618004b ("sccp: make osmo_sccp_addr_name() available")

Change-Id: I5c9abba321ec182d293c33bcffea3462f8717045
2017-08-15 19:33:54 +02:00
Neels Hofmeyr 1aef9a6e1f iu_client: derive local SCCP addr from sccp instance
ranap_iu_init() is passed an sccp instance that has a local primary point code.
Use this primary PC by default as the local address for IuCS and IuPS clients.

Remove the current vty command 'iu local-address point-code PC':
- It is possible that we would like to configure a differing local point code
  at some point; this should then happen via sccp address book entries, not
  parsing PC directly.
- Obtaining the local PC from the SCCP instance makes this command obsolete for
  all setups we're currently aiming at: one local PC per SCCP instance.
- There are vty doc failures in this vty command, which cause osmo-msc and
  osmo-bsc vty test failures; rather than fixing this, let's drop it entirely
  until we see a need for it (and then do it properly with the address book).

Cosmetic: prefix the local static variable with g_* like g_sccp and g_scu and
define it in the same place. No default values are needed anymore, it gets
overwritten in ranap_iu_init().

Change-Id: I3bb7fc1cd5261d214c6ba0cccfe95f637e6db087
2017-08-13 22:46:04 +00:00
Neels Hofmeyr ecbdc5cb06 make point codes configurable by SCCP address book
In the vty config, use the SCCP address book to configure the local and remote
SCCP addresses. Add VTY commands to set the remote SCCP addresses by name,
derive the ss7 instance from these addresses:

  cs7 instance 1
   point-code 0.23.0
   sccp-address msc
    point-code 0.0.1
   sccp-address sgsn
    point-code 0.0.2
  hnbgw
   iucs
    remote-addr msc
   iups
    remote-addr sgsn

Enforce that both IuCS and IuPS use the same ss7 instance. In the future, we
may add the feature to use two separate instances.

Depends: libosmo-sccp I75c67d289693f1c2a049ac61cf2b2097d6e5687d,
         Ie1aedd7894acd69ddc887cd65a8a0df4b888838c,
         I85b46269dbe7909e52873ace3f720f6292a4516c

Change-Id: I33a7ba11eb7c2d9a5dc74d10fb0cf04bf664477b
2017-08-09 15:30:14 +02:00
Neels Hofmeyr aae68b2791 move openbsc.git's iu.h, iu.c, iu_vty.c here as iu_client
To help split openbsc.git to separate MSC and SGSN repositories, place the
common Iu interface related code here in libosmo-ranap. Also apply various
improvements while moving (from intermittent code review).

The code depends on libosmo-ranap tightly. One reason to want this separate
from libosmo-ranap could be that it uses libosmo-sigtran, accepting an sccp
instance. However, including in libosmo-ranap is the simplest way to go. The
osmo-iuh build depends on libosmo-sigtran anyway because of OsmoHNBGW, and all
current users of libosmo-ranap also naturally link libosmo-sigtran already.

Apply prefix ranap_iu_ and RANAP_IU_ to allow smooth transition from the
openbsc.git iu_ to the libranap ranap_iu_ implementations.

Prune unneeded #include statements.

Instead of sccp_addr, store an rnc pointer in the ue_conn_ctx. To facilitate,
also:
- Move iu_rnc struct to iu_client.h (as ranap_iu_rnc).
- Instead of sccp_addr, pass rnc to ue_conn_ctx_alloc().
- Pass a local struct new_ue_conn_ctx containing the sccp_addr and conn_id up
  the RANAP handling stack in case of an InitialUE message.
- Separate the InitialUE message handling from cn_ranap_handle_co(), by moving
  to new and separate cn_ranap_handle_co_initial(), so we can still pass a
  looked-up ue_conn_ctx to all other cn_ranap_handle_co() code paths.
- Allocate the ue_conn_ctx only in ranap_handle_co_initial_ue(), not as early
  as before.
Note that we are not actually ever using the rnc pointer now present in
ue_conn_ctx. It could be used for more concise paging, to first page only the
RNC where we last saw the subscriber. So far we page all matching LAC/RACs.

Tweak error logging: use __func__ instead of writing the function names as
string constants.

In iu_client_vty.c:
- Move the asn.1 debug commands from logging over to the iu node. They are not
  specific to the logging target. They could qualify for an entirely separate
  'asn1' root node, but for simplicity place under 'iu'.
- Add the 'asn1' commands to ranap_iu_vty_config_write(), so far missing.
- remove the legacy "net." from a VTY error message, it is not known which name
  the parent node of 'iu' has.

Depends: libosmo-sccp I85b46269dbe7909e52873ace3f720f6292a4516c,
	 libosmo-sccp Ie1aedd7894acd69ddc887cd65a8a0df4b888838c
Change-Id: I6a3f7ad15be03fb94689b4af6ccfa828c25f45c0
2017-07-31 13:20:00 +02:00
Neels Hofmeyr a3bcd6d1e7 cn unitdata: verify correct remote addr
When receiving unitdata from the CN, verify that it is indeed coming from the
remote address that matches our CS/PS domain settings.

This patch came from an earlier stage where the is_ps out-parameter was
actually used. While it currently isn't, it doesn't hurt to leave it there.

Change-Id: I7190b4c3a05e8bac0eeffa1eab18c9e47429cb17
2017-07-27 15:49:25 +00:00