Commit Graph

633 Commits

Author SHA1 Message Date
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 4325a2ac4b add --enable-sanitize config option
Change-Id: Id9bb6cc982cd30b86f772207184398af6b899f66
2017-11-17 03:38:07 +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
Neels Hofmeyr 8a257b6c5a jenkins: use osmo-clean-workspace.sh before and after build
See osmo-ci change I2409b2928b4d7ebbd6c005097d4ad7337307dd93 for rationale.

Depends: I2409b2928b4d7ebbd6c005097d4ad7337307dd93
Change-Id: I7261e006163eda4bee8a4695fbd5bd29307babe6
2017-10-28 15:08:39 +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 257771ca65 debian: depend on libosmo-sigtran-dev, not libosmo-sccp-dev
We recently fixed package naming / sub-packagign in the libosmo-sccp
git repository, so now we need to depend on the proper package name.

Change-Id: I6e4f8fa96e5f39f988d6993ba3931cb7df70e905
2017-10-27 22:35:49 +02:00
Harald Welte 961674aa09 update dependencies to latest libosmo-* releases
Now that we have tagged releases that include the support needed
in osmo-iuh, let's require them.

Change-Id: I579ba94e8f0f700b598a2346c5020cce3b159f27
2017-10-27 22:35:49 +02:00
Alexander Couzens 5164038993 debian/rules: show testsuite.log when tests are failing
Change-Id: Ice1c9f51225cef335626d5689ffb306395d7e2b6
2017-10-11 07:11:55 +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
Max 5a3df8fa9f Use release helper from libosmocore
See
https://osmocom.org/projects/cellular-infrastructure/wiki/Make_a_new_release
for details.

Change-Id: I3ccc8202b650268cc9d1721719ba2f205c351a67
Related: OS#1861
2017-08-28 10:58:58 +00:00
Max 3ce7584281 Use value string check from osmo-ci
Change-Id: I9fc4a0ce4ca29f8b76e189d040097f3e63298ba5
2017-08-28 08:34:35 +00: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
Alexander Couzens e485cdd38b add /debian package support
Change-Id: I985805aea0e48fe70619de8b81206098e4e37613
2017-08-13 04:21:13 +02: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
Alexander Couzens 5e0292a641 add .gitreview to support git review plugin
Change-Id: If8ebdb687f41911f55679472a0c87f9734264e80
2017-08-08 17:02:18 +00: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 13850b1e5d ranap_common.h: fix include of asn1c/asn_application.h
Change-Id: I152377813cdcfef73e2c4309b0f8c97807d7d4f8
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
Neels Hofmeyr 3b42658836 set RANAP msgb headroom to 512 (times two)
With a headroom of 256, the SGSN crashes with:

  msgb(0x6e3b90): Not enough headroom msgb_push (256 < 264)

I'm not perfectly sure what amount of headroom is strictly necessary. The only
reason to pick 512 is that it is twice the amount of 256.

Change-Id: I9a193846902a0477af0873f78283c4f2bedaf5dd
2017-07-06 13:53:42 +00:00
Neels Hofmeyr 54e6e1fc30 rua_to_scu(): add debug log for calling/called addr
This might help in resolving whether we are conforming to SCCP specs regarding
our calling/called address choices.

Change-Id: Ie91953f7e9033419257d556d3a9f14e125f5c60d
2017-07-05 13:04:16 +02:00
Neels Hofmeyr c3614318af rua_to_scu(), rua_rx_init_connect(): add debug logging
In rua_to_scu(), log domain indicator and remote address.

In rua_rx_init_connect(), add domain indicator to log.

Change-Id: Ibe510bf0aca5eadbc0ce6031d3026e770de6559f
2017-07-05 13:04:16 +02:00
Neels Hofmeyr cb24631650 sccp_sap_up(): guard against NULL pointers
Change-Id: Icd64b92b00461cace5c476c8bcf69eec3fdbbdd3
2017-07-05 13:04:16 +02:00
Neels Hofmeyr 0f88c11009 migrate osmo-hnbgw to libosmo-sigtran's SCCP/M3UA
libosmo-sigtran now has a "proper" SCCP/M3UA stack, so we can make our hnb-gw
3GPP compliant by switching from the old SUA code to the new universal SCCP
user API with support for (currently) M3UA and SUA.

Main changes:

Use one cn_link to STP: We will connect to the core network using an (Osmo)STP
instance that routes to MSC and SGSN, so we want one SCCP link instead of two.
The only difference between IuCS and IuPS is a different remote osmo_sccp_addr.

This has various effects through the messaging code; the patch is a bit larger
than I would like, but it is hard to separate out truly independent smaller
changes.

CS or PS domain was previously flagged in the separate cn_link, as ctx pointer
for two separate sccp_sap_up()s. Now there's just one such ctx, so determine
is_ps from the RANAP Domain Indicator, or from the conn's hnbgw_context_map:

- Add is_ps to context_map_alloc_by_hnb().
- To find a matching context, the RUA ID alone is no longer sufficient, also
  match is_ps (possible optimization todo: separate lists).

We would send separate CS or PS Reset messages based on the cn_link, instead
send both CS and PS Reset at the same time for the single cn_link. This could
be adjusted to detect presence of MSC or SGSN instead.

Pending: adjust the VTY config to reflect that there is only one remote
address. Place a TODO comment for that.

Smaller changes:

rua_to_scu(): populate called and calling addresses for N_CONNECT and
N_UNITDATA.

Remove DSUA.

Don't build dummy_cn, which is still implemented on SUA. Mark todo to maybe
re-include it based on M3UA later.

In hnbgw_cnlink, place sccp related items in a separate sub-struct.

Do not keep an llist of cn_links, just have the one. Remove iteration and list
management.

Change jenkins script to build libosmo-sccp master.

Patch-by: hwelte, nhofmeyr
Change-Id: I8ac15fa2fd25bedb26297177e416976a5389b573
2017-07-05 13:04:15 +02:00
Neels Hofmeyr 12ed975996 cosmetic: move callers' common switch() into rua_to_scu()
Change-Id: If6274e3738dc04646d0dc18332c12237e6910d18
2017-07-05 13:03:47 +02:00
Neels Hofmeyr e305f4d506 jenkins: build from libosmo-netif master
After merge of the sysmocom/sctp branch to master, it was forgotten to change
this build script to move along to master.

Change-Id: I473d1361b99ff0ff8adba9326b0e2dfbc48a3aef
2017-07-05 12:53:50 +02:00
Daniel Willmann 26531f9efc contrib: Add systemd service file for osmo-hnbgw
Change-Id: I650bb5650b6d4f474e2040b57e6f78ee9d013825
2017-05-04 18:48:41 +02:00
Daniel Willmann e3b025bf75 examples: Adjust IP address of example config
Change-Id: Ide4f1592c314f7a764bef30b76bdb21ce0fb6dc2
2017-05-04 18:48:30 +02:00
Pau Espin 46fea15afc hnbgw: Fix crash if cnlink fails to connect
Return NULL in the error code path, otherwise an uninitialized pointer
is returned and later accessed when a UE tries to register using the
cnlink.

Change-Id: I4f3e2e0680de3216e2e569958bd64f70dc30c2a3
2017-04-06 18:53:20 +02:00
Pau Espin 166a3767bd asn1tostruct.py: specify python version in shebang
The script is expected to be run using python 2.x, but nowadays some
distros are already using python 3 as default, which will fail to run
this script.

This change fixes compilation in my Archlinux box.

Change-Id: I6eb95351538a64f2b23d638824972818591b1b66
2017-04-05 11:22:53 +02:00
Neels Hofmeyr c23c4fe06c doc: fix osmo-hnbgw.cfg example
'bind' was changed to local-ip in 39ee926062

The 'logging all everything' is known to not work, use 'all debug' instead.

Fix indenting of the 'log' items.

Change-Id: Ie7828073a4b4a5555f418246b20588e903ef4135
2017-03-29 17:09:13 +02:00