Commit Graph

84 Commits

Author SHA1 Message Date
Pau Espin a9b33a40af Close LLSK during shutdown procedure
This way we notify the lower layers that state must be reset, eg. when
Iuh conn drops.

Related: OS#6826
Change-Id: I282f3e75d31b3e481136aade34b30074300ab631
2024-03-12 18:48:26 +01:00
Pau Espin b04885005b Free UE contexts when starting shutdown procedure
They are not valid anymore since the Iuh conn is closed.
If kept alive, then if GTP/RTP traffic comes from CN while shutting down
the payloads may be forwarded to LLSK which may have been closed (eg.
because shutdown procedure was started precisely due to death LLSK
because other end closed it).

Related: OS#6826
Change-Id: I51aa449e7fd5b1049fcaaeef3f1378423a838c05
2024-03-12 18:47:35 +01:00
Pau Espin ab8db8fabd llsk: Add APIs to interact with llsk->link
This also clarifies the type of available uses/features.

Change-Id: I7723467d34670f89710f55c0c6731e2e38560f35
2024-03-12 18:47:35 +01:00
Pau Espin d3cd9e7afa cosmetic: Fix typo in comment
Change-Id: Ie13952075be29201751d5b7884ca572a285ca9dd
2024-03-12 17:42:56 +01:00
Pau Espin 8ff216bf02 Name llsk prim_srv{_link}
This allows easily identifying the prim_srv{_link} in logs.

Depends: libosmo-netif.git Change-Id Iba683e4d65e0aba81e13bdf1b9d5a9065b1fc89c
Change-Id: Idae27bc9a2a223710edb9fca905ad5ae924dde80
2024-03-12 12:25:55 +01:00
Pau Espin 9f2a584fb6 iuh: Name stream_cli connection
This makes it easier to figure out the conn log lines.

Change-Id: I1503b322f8ff053088688b3088a70801d10b3d88
2024-03-12 12:03:16 +01:00
Andreas Eversberg 4bc90a6be7 Use uniform log format for default config files
Related: OS#6272
Change-Id: I239229c0f23f70a75155ca8790b51a7c39acca21
2023-12-01 12:47:33 +01:00
Harald Welte fed4bf196a Use 'iuh/local-ip' as local IP for RTP sockets
Don't use the wildcard IPv4 address for RTP sockets, but instead use
the address explicitly configured by the user for the Iuh interface.

Closes: SYS#6657
Change-Id: I90e2cbb1765d4d2db5a19f64f0ff09cdc18b7911
Depends: libosmocore.git Change-Id I6b5c0bf8ca97e6358d992fb2ff45ffd53ba15197
2023-11-21 19:53:02 +01:00
Vadim Yanitskiy b303e296b7 tests: enable commented-out 'python-tests' target
Keep the last line running the CTRL tests commented out as the
CTRL interface is not implemented yet.  Add a TODO.

Change-Id: I76e24184aecafa8460d1da9419a424d9990730c5
Related: OS#5989
2023-11-03 14:47:59 +07:00
Vadim Yanitskiy 11b379d95a tests/ctrl_test_runner.py: fix wrong CTRL port
Change-Id: I88432b77dae923df373055a657a77838268a32e1
Related: OS#5989
2023-11-03 14:47:57 +07:00
Vadim Yanitskiy be5af799c3 vty: fix incomplete docs for 'asn-debug' command
Change-Id: I7174e1833be206a62afd95ddc27e9d912a7efcfc
Related: OS#5989
2023-10-30 15:38:55 +07:00
Pau Espin 4f7362272f Bump version: 0.1.1.8-6968-dirty → 0.1.2
Change-Id: Ib6cba818c589f7c280827311de7e4e5568714f2a
2023-09-12 17:22:11 +02:00
Pau Espin 69682c8deb rua: Fix null ptr access in hnb->llsk.srv
At startup, osmo-hnodeb connects the Iuh socket to the HNBGW, and start
the LLSK unix socket link_server waiting for lower layers to connect.
If for some reason the lower layers don't connect and an Iuh messages
arrives which was to be forwarded to LLSK, it would try to access it
without first checking if it was already available.
This patch adds a check to avoid a crash when accessing the null
pointer.

Change-Id: I32d8f91b2fc5401ace386e1085c248476228cd18
2023-07-25 11:27:59 +02:00
Oliver Smith 4d94531f6f systemd: depend on networking-online.target
Related: SYS#6400
Change-Id: Ib6c78c76c5f13b9482428ce653a61b03b2aca1d3
2023-05-26 14:10:45 +02:00
Vadim Yanitskiy b4a5d3d9a8 copyright: fix typo: sysmocom s/s.m.f.c./s.f.m.c./ GmbH
Change-Id: I9ad500784d1c99cc764b38729ac0d86ab8441379
2023-05-18 18:46:29 +07:00
Oliver Smith eee4534364 debian: set compat level to 10
Related: OS#5958
Change-Id: I5d26ab03aacf3b8ef8c1c4c669c12090fd0b7899
2023-04-25 16:48:23 +02:00
Vadim Yanitskiy a2aa6b19b2 tests: do not depend on undefined $(BUILT_SOURCES)
Change-Id: I43c78aac0d23274d2a9bb01021cde0371c231be2
2023-03-30 03:02:45 +07:00
Vadim Yanitskiy 54899f76b0 tests: make 'vty-test' target depend on the respective binary
Change-Id: I53ff9a1659a0e25a6c3a5bc987dbae82d0312259
2023-03-30 03:01:22 +07:00
Vadim Yanitskiy 9b356e1c5c build: remove $(COVERAGE_LDFLAGS) from osmo_hnodeb_LDADD
Change-Id: Id088775f444640df863c346b225c1bae61725249
2023-03-30 03:00:24 +07:00
arehbein ad5981352b Transition to use of 'telnet_init_default'
Related: OS#5809
Change-Id: Icc57c68337d55c6594c1c36e9bf41624d11dab0a
2023-02-25 17:48:58 +01:00
Pau Espin 69f91b1773 Bump version: 0.1.0.3-1bad-dirty → 0.1.1
Change-Id: I6c1170506c76b794fd4e762b64adf63a039053ca
2023-02-07 18:03:49 +01:00
Oliver Smith 1bad165c69 contrib/jenkins.sh: use --enable-werror
Fixes: OS#5290
Change-Id: Ic32464b9a52a5de4ee81fc3a4dbb5717b3b43e39
2022-11-15 12:40:36 +01:00
Max 9c2c2654ba Set working directory in systemd service file
By default systemd will execute service with root directory (or home directory for user instance) which might result in
attempts to create files in unexpected place. Let's set it to 'osmocom' subdir of state directory (/var/lib for system instance) instead.

Related: OS#4821
Change-Id: I67564759f43193f4739b0b194d5f5da92e3bc6ae
2022-08-30 19:51:47 +07:00
Vadim Yanitskiy f74f944784 configure.ac: do not require unused dlopen
Change-Id: Idd4a816babcfb2e2302fbd21cb48989659940d5c
2022-08-19 20:29:35 +07:00
Pau Espin 8ffe838a81 Bump version: 0.0.1.30-5263-dirty → 0.1.0
Change-Id: I3c3eff6d3cd473a307b36bc78cdd0654c840b36e
2022-06-29 12:37:29 +02:00
Michael Iedema 52636f32c1 typo: SAC needs 16bit range, not 8bit as copied from RAC entry
Change-Id: I756fbab449151d912cde48f1da01d3b645b7627c
2022-06-23 02:04:23 -07:00
Pau Espin 19a475bcf4 llsk: Fix previous audio sapi version passed instead of current
This bug showed up when running the whole TTCN3 hnodeb-test testsuite.
llsk_audio_sapi_version_confirmed() was setting the expected struct size
fo the version previously set.

Related: SYS#5516
Change-Id: Ic94881f46b20ba2817b56d88ada9da5d13b1e294
2022-06-21 12:39:01 +02:00
Harald Welte 71f758939a update git URLs (git -> https; gitea)
Change-Id: I64be70776dd7f3eb691c4dc8810a746c096a50ae
2022-06-18 12:12:44 +02:00
Pau Espin f320ac5841 audio: Introduce SAPI v1 with unordered RFCI support
This commit introduces support for the new llsk_audio SAPI v1.
This new version is almost the same as v0, with the exception that
primitive <REQUEST,HNB_AUDIO_PRIM_CONN_ESTABLISH> wins an extra field
appended at the end:
"""
uint8_t rfci[HNB_MAX_RFCIS]; /* values range 6 bits */
"""

This allows lowerlayers to provide an unordered array of RFCIs, which
was seen may happen under some conditions. For instance:
"""
rfci[HNB_MAX_RFCIS] = { 2, 3, 1};
[0] RFCI 2
[1] RFCI 3
[2] RFCI 1
"""

OsmoHNodeB still supports v0 if the lowerlayer asks for it, and will
continue having the exact behavior as before in this case (using
position in the array as RFCI). Hence, no compatibility breakage occurs
in this patch. New clients, on the other hand, can provide the extra
information by announcing V1 support during version negotiation at
startup.

Related: SYS#5516
Change-Id: I860d18b80c1041bf63a1570d435e0568c0f6b01b
2022-06-08 18:38:37 +02:00
Pau Espin 780def0114 llsk: Validate received SAPI versions at startup
Change-Id: I172abfee3bfadb383aa6bce6fe76306291c7cd7f
2022-06-08 18:06:09 +02:00
Pau Espin 0843c8ae6e hnb: move llsk fields inside substruct
More fields will be added, let's better organize them this way.

Change-Id: Idfe644a7c2eccd94b602816a86e38b56264141af
2022-06-08 18:03:38 +02:00
Pau Espin fc660017e8 llsk: Fix typo in log message
Change-Id: I3c8be85e56df23cd68e58f0112238647add3d97f
2022-06-08 18:03:35 +02:00
Pau Espin 3dffff3147 rtp: Update code to libosmogsm IuUP API changes
NOTICE: This commit implies an API change when using libosmogsm.
However, the previous API was never available in any libosmogsm release,
and only available in both libosmogsm and osmo-hnodeb master, so we are
only breaking compatibility between different master versions, which is
acceptable.

Related: SYS#5969
Change-Id: Ia26a945147d68511bb1750d51ed91909e48b4139
2022-05-25 18:55:09 +02:00
Pau Espin 8875abd3f9 Do not turn some compiler warnings into errors by default
We build with --enable-werror during development and in CI. If the code
is built with a different compiler that throws additional warnings, it
should not stop the build.

This patch also effectively removes dependency on autoconf-archive.

Related: OS#5289
Related: SYS#5789
Change-Id: Ie30d8024ee2ad48073dd8be2e02856b6ce1a6b0b
2022-01-11 18:30:57 +01:00
Pau Espin 70b65c55f6 gtp: Fix uninitialized var if no extension flags set in gtp header
The logic was plain wrong, bug introduced while typing initial code.

Closes: Coverity CID#243535
Change-Id: I497667edd0571fff91ab41c8b57bdcf277e5988d
2022-01-07 13:44:31 +01:00
Pau Espin 14cceb5dfb Get rid of libgtp for GTP-U
It doesn't make much sense to pull whole libgtp to implement only the
user plan side of GTP. Let's drop it and add a minimal GTP-U
implementation here.

Related: SYS#5516
Change-Id: I53ad4915aaed3bc7574036e963be10514e370fe2
2021-12-23 15:55:21 +01:00
Pau Espin e4f127f1a3 Add initial support for IuUP RTP based Transport Layer
Use the recently introduced IuUP support in libosmocore to send and receive
proper IuUP over RTP instead of regular RTP.
The LLSK AUDIO primitives are updated to provide required information
back and forth.

Depends: libosmocore.git Change-Id Ibe356fa7b1abaca0091e368db8478e79c09c6cb0
Related: SYS#5516
Change-Id: Ie137809e1f91dfd702853c52be97ca79e8604eab
2021-12-23 15:55:17 +01:00
Pau Espin 387b892b1d Add example default config file
This config file is also installed and used by the systemd service by
default. Local ip address of 127.0.0.3 is used by default to avoid
collisions with default configs of osmo-sgsn and osmo-ggsn.

Related: OS#5360
Change-Id: I02d628f48ca5adbc46e75a015c39a6fb5614a2d6
2021-12-20 11:57:57 +01:00
Pau Espin 272f296cd3 gtp: Fix possible null pointer dereference
Closes: Coverity CID#242771
Change-Id: I412082cc5fa93818d321210c34a2d22c038cb985
2021-12-17 13:45:36 +01:00
Pau Espin 5869201039 contrib/osmo-hnodeb.spec.in: Fix missing dep libosmotrau
Change-Id: Ia40b6a28caecdd94ce3c53172fe531b12a0a221f
2021-12-17 13:40:41 +01:00
Pau Espin 64d8fd6298 llsk_audio: Fix false positive about uninitialized var access
Let's make gcc in Ubuntu 21.10 happy.

Change-Id: If085b0ca0e1d3e7237696eb67cf6301ea84793e0
2021-12-17 13:37:32 +01:00
Pau Espin 3363db5c90 llsk_gtp: Early return if conn alloc fails
Change-Id: Iaf597b76ceb9cce3f27c42625f963f740c8f213e
2021-12-17 13:35:36 +01:00
Pau Espin 381c4cccc5 rtp: Use dynamic Payload Type 96
Change-Id: I6ca83c274200d8fc0fb3d8914e970b05df91f6ea
2021-12-16 13:01:13 +01:00
Pau Espin 7550ba3d05 Update AUDIO and GTP SAPs to support multiple conns per UE
This is needed for instance:
* AUDIO: video calls
* GTP: secondary pdp contexts

For better abstraction, now both AUDIO and GTP conns use unique ID
namespaces, and one ID is used to identify each one. Each conn relate in
turn to a UE since a context_id is passed during connection
establishment.

Related: SYS#5516
Change-Id: Ib3f60d5ba21defe5259c25e2034fc2217c4d93df
2021-12-16 13:01:12 +01:00
Pau Espin ecc76ef69a Fix several Coverity found issues
Closes: CID#242770
Closes: CID#242769
Closes: CID#242767
Change-Id: I6d73a970919889953539fbacc601d679d7ec4113
2021-12-16 12:58:51 +01:00
Pau Espin a7dc04ef26 First implementation of the LLSK gtp SAPI
This first implementation uses libgtp to manage the GTPv1-U socket and
pdp contexts, as a proof of concept to have something working for now.
At a later step, it is expected to drop libgtp and use some adhoc code
to handle GTP-U.

Related: SYS#5516
Change-Id: I5a6f5dfc4e508c92adb35210b4dc576d64353366
2021-12-14 15:47:53 +01:00
Pau Espin b3af382157 First implementation of the LLSK audio SAPI
This first version can send and receive regular RTP, but does not talk IuUP.
Support for IuUP will be added in a future patch. This way we can
already test the whole LLSK<->RTP path.

Change-Id: I9909a7c054ddaabb1bb63d7d06331cc79f642b5d
2021-12-14 12:43:19 +01:00
Pau Espin cd1baf0649 Initial implementation of LowerLayer UD Socket
The LLSK socket is an interface allowing thid-parties to implement and
hook their RLC/MAC/RRC stack to osmo-hnodbe, which takes care of
interconnection with the rest of the RAN and core network (Iuh, RTP,
GTP-U, etc.).

Related: SYS#5516
Change-Id: Icaabb2206d6f141d4fba47dedf71f8ec37e6257d
2021-12-14 12:43:15 +01:00
Pau Espin d8da64bb46 Drop NAS and RANAP code and VTY commands
The higher level bits were used in originally imported hnb-test code in
order to control interaction with the HNBGW over the VTY. This is no
longer needed in osmo-hnodeb, as NAS is in layers above the ones being
handled by an hNodeB.
Regarding RANAP, most of it is going to be handled by the LowerLayer UD
socket peer to be introduced in the future, so we can drop most of it,
as in osmo-hnodeb we'll basically be speaking RUA to the HNBGW and
passing RANAP buffers transparently.
We keep the .c/.h files since some small helpers functions will be
ntroduced later on when adding support for the mentioned LL socket.

Related: SYS#5516
Change-Id: I6aae54734c1c4607beede19169f16bafe35b3a61
2021-11-30 11:02:52 +01:00
Pau Espin 5689081325 hnbap: Improve rx path and implement HnbRegisterReject
The process is shut down if we receive such a message.

Change-Id: Id4656140b7f51b07860dcbeed449ed68c3a9f85a
2021-11-24 21:31:32 +01:00