Commit Graph

1185 Commits

Author SHA1 Message Date
Harald Welte ab50cc295b BSSGP_Emulation: Fix inbound BVC-RESET
We cannot handle this in as_ptp_allstate(), as the respective clauses
are never hit:  In as_ptp_unblocked() we broadcast all BSSGP messages
without a TLLI, "hiding" the BVC-RESET handling.

Change-Id: Ie3e7a997554e6af42ae7e7294829b6f8d2447d60
2020-11-26 20:57:54 +01:00
Harald Welte ddfc6676d5 BSSGP_Emulation: Implement handling of BVC-UNBLOCK in SGSN role
Change-Id: I7c9cda916f6583613fbf3cdf31f3f08ceadf58d4
2020-11-26 20:57:54 +01:00
Neels Hofmeyr 9ebabc8b0e vty: log failed vty command
Add a log label argument to f_vty_wait_for_prompt(), and feed the sent
command from f_vty_transceive*(), so that the failure verdict already
lists the vty command that caused the failure.

A common error is to issue insufficient 'exit' commands, so that I often
think the newly added VTY command failed, even though it is a subsequent
command causing the failure. I want to shorten the "time-to-aha" there.

Change-Id: Icfd739db150d86e9256a224f12dc979dcd77879f
2020-11-26 01:04:57 +00:00
Harald Welte fba7afdd89 BSSGP_Emulation: Include NSEI in BsgpStatusIndication for PTP BVC
Change-Id: I0d8f18d0e6438a98c75ff24e2a9c8136d8b417d2
2020-11-25 17:14:25 +01:00
Harald Welte 57de220cdb BSSGP_Emulation: Introduce a GLOBAL port in the BSSGP_CT
The per-NSE BSSGP_CT gets a new GLOBAL port which is used for procedures
that are not specific to one BVC, such as the SUSPEND/RESUME related
PDUs, which all are on the signalling BVC without any BVCI in the BSSGP.

Change-Id: I40d973d80709f5d56f59247e8647b52754f09bc8
2020-11-25 17:14:25 +01:00
Daniel Willmann 00c0bbf272 Add templates for LLC_DISCARDED
Change-Id: I587ec89471083e339065f6371ffe6253d49007bf
Related: SYS#5210
2020-11-25 16:10:23 +00:00
Daniel Willmann 7f1d78e164 Add templates for FLUSH_LL_ACK
Change-Id: I57ef98b9a3022ed5915381504aa129979799bee8
Related: SYS#5210
2020-11-25 16:10:23 +00:00
Daniel Willmann 379fc250de Add templates for FLUSH_LL
Change-Id: Id432022fdd7f96bc014f0fd81658fa4aa796a688
Related: SYS#5210
2020-11-25 16:10:23 +00:00
Vadim Yanitskiy 42d8bd5012 BTS_Tests: re-organize configuration of TRX/TS params
Change-Id: I9b225249d135399f63d3c7e4c567121dfea63f75
2020-11-24 11:58:49 +01:00
Vadim Yanitskiy 802508e696 library/RSL_Types: add 'bs_power_params' to 'RSL_IE_Body'
The value part of this IE is defined as vendor-specific.

Change-Id: I48703c45d26cd88c1d9b5fda1a9df42616cb7cc0
2020-11-24 11:58:49 +01:00
Vadim Yanitskiy bc8ebce10e library/GSM_RR_Types: make ts_MEAS_REP more user-friendly
Change-Id: Ica1ea41ebba5c518d515a211e77ca6651c4173d6
2020-11-24 11:58:49 +01:00
Vadim Yanitskiy 05a236a2fc library/GSM_Types: add the Uplink flag to GsmBandArfcn
Change-Id: Ib9bd7268b8a0fd8ed64064871c09fab35e15a761
2020-11-24 11:58:49 +01:00
Vadim Yanitskiy 1acc7bb184 library: move Osmocom_Types.Arfcn to GSM_Types.GsmBandArfcn
In some cases GsmArfcn itself is not enough.  It case of L1CTL
and GSMTAP, it needs to be equipped with a band discriminator:

  - DCS / PCS (as the numbers may overlap),
  - Downlink / Uplink (not yet there).

Let's rename this record and move it to GSM_Types.  Also, add
send / receive tamplates, so we can add new fields later.

Change-Id: I7a63f03bbd15a06caafb786122dc12991d115771
2020-11-24 11:58:49 +01:00
Harald Welte 0e18824f3b gpborxy: Implement variety of paging tests for PS-PAGING and CS-PAGING
Change-Id: Ida44b62dfdb9c4ce2755de63d51a9907d34f247f
2020-11-23 14:51:38 +01:00
Harald Welte 80a249aa07 NS_Emulation: Include NS-VCI in NsUnitdataIndication
The primitive normally only contains NSE + BVCI, but in a tester
we actually want to verify which NS-VC a given message has arrived on,
and hence it makes sense to add the NSVCI, too.

Change-Id: I9402bf0be47e5b93c9cfb081eb8f9fa6734c9227
2020-11-21 22:52:51 +01:00
Daniel Willmann 670bbc0c4e Osmocom_Gb_Types: Fix indentation
Change-Id: I4ca156b53dfe9daa190d52a7de46be56cf74099a
2020-11-20 15:09:00 +00:00
Daniel Willmann 05d4638b9b Add templates for BSSGP Radio Status procedure
Change-Id: I6d49eb4907c4568d88da5d6fd7962e388a3607fb
Related: SYS#5210
2020-11-20 15:53:55 +01:00
Pau Espin e8db673d22 pcu: Implement ACKing EGPRS Dl TBF blocks
Change-Id: I9f1b621a8365e69d2e1a33d59cb8c7a59639ad94
2020-11-18 11:51:14 +00:00
Harald Welte e15299ab20 NS_Emulation: Fail if an unsupported NS provider is chosen
This took me quite some time: Tried to use NS_PROVIDER_FR, but the
code was compiled without support for it.  It just failed silently
without printing any error or ever sending any message on the FR link.

Change-Id: I96475127a2079830b3456a8e288adf4c6c908887
2020-11-17 17:42:23 +01:00
Daniel Willmann ace3ece7be gbproxy: Add test for RA Capability Update procedure
Change-Id: I023b3d24a31d117f05c7327b08e9f8f930720944
Related: SYS#5210
2020-11-16 20:32:20 +01:00
Harald Welte 6dc2ac471b gbproxy: Test for RA Capability procedure
Change-Id: If7e5a5cab1e445e0b4ef0466990e352143c31245
2020-11-16 20:32:20 +01:00
Harald Welte 2436fb5bcc BSSGP: parametrize tr_BSSGP_DL_UD
Change-Id: Ib4a1d64da634813b49474c13ae080d729bbabcf1
2020-11-16 19:13:26 +00:00
Harald Welte 199f386e89 BSSGP_Emulation: Introduce MGMT port to per-BVC component
This port can (optionally) be connected to, and it will receive
state change notifications as well as permit the user to block/unblock
and reset the specific PTP BVC.

Change-Id: I1f0289c8805168e3daace4a7d76764b45cead3d0
2020-11-16 19:13:26 +00:00
Harald Welte 4d112c926c BSSGP_Emulation: Allow a "CreateCb" to handle unknown inbound TLLI
The existing BSSGP Code assumed that the TLLIs were always known "a
priori" by the test case.  With the newly-introduced create_cb,
the user can provide a function to handle any incoming messages for an
unknown TLLL.  The default handler behaves like before: fail +
terminate.

Change-Id: Ice0e145f5a6518ff79547dd851042b7965f38e00
2020-11-16 19:13:26 +00:00
Pau Espin afdd28d73b RLCMAC: Implement type+template for EGPRS Dl Pkt ACK/NACK
Change-Id: I0d6555f8644e39da6124be2e861d57fda3b3d8a1
2020-11-16 10:48:25 +01:00
Pau Espin 68a7a49354 RLCMAC_EncDec: Implement decoding of Egprs Dl Data block HeaderType 2 and 1
Change-Id: I3b8199711e08bc128821e02c626ded1bc6aa30d7
2020-11-16 10:48:25 +01:00
Pau Espin cca530fbf4 RLCMAC_EncDEc: Fix decode of DlEgprsDataBlock without LI
Change-Id: Iec7e1a2d876abfdc911a65113cc6c9e888257c61
2020-11-16 10:48:25 +01:00
Pau Espin cb00c52b07 pcu: Specify (M)CS to use when sending UL rlcmac data blocks
Apply padding and spare bits in the encoder according to CS/MCS format.

Change-Id: I918acac81f550077daeda3374b3de9b426ff3572
2020-11-16 09:14:28 +00:00
Vadim Yanitskiy be33f6b158 library/L1CTL_Types: add missing template restrictions
The template restrictions are quite useful, becaue they give hints
to the TTCN-3 compiler, so it can spot more bugs.  For example,
the lack of thereof would not prevent one from passing 'omit' to
a template, that assigns a value to a non-optional field, so that
might lead to a DTE at run-time in some cases.

Since adding 'template (restriction) ' to each template parameter
obviously makes templates look more cumbersome, let's move the
part with template name and arguments onto a separate line, just
like it's sometimes done for function definitions in C.

Change-Id: I7e6846381e0b3fb611059fcfbafb19bd6c15cfd8
2020-11-14 21:38:15 +00:00
Harald Welte 8f66af1665 move f_gprs_tlli_{type,random} to Osmocom_Gb_Types
Those functions don't depend on any L3 specific data structurs, and
it is not a good idea to burden every user with having to impot all
of a 2G/3G Layer3 just to generate some hexstring identifiers.

Change-Id: I6fc41ed94e97e0ec44dc4ea56d110bdd9ac77a72
2020-11-12 21:51:40 +01:00
Harald Welte 69b3a4839f move f_gen_{imsi,imei,msisdn} from L3_Templates to Osmocom_Types
Those functions don't depend on any L3 specific data structurs, and
it is not a good idea to burden every user with having to impot all
of a 2G/3G Layer3 just to generate some hexstring identifiers.

Change-Id: I7880633a46afc607f16f8aa6ea1a277f7958c95b
2020-11-12 21:51:40 +01:00
Harald Welte c450552c59 NS_Emulation: Introduce Load Sharing Function
The Load Sharing Function distributes traffic among all unblocked NS-VC
within a NS-VCG.  The sharing is done based on a LSP (Link Selector
Parameter) which is passed with the NS-UNITDATA.req primitive from BSSGP
to NS.  Details are implementation specific, but NS must ensure that all
traffic of one LSP is always sent through the same NS-VC, as long as
that NS-VC is alive/unblocked.

We use the LSP as follows:
* Signaling BVC always only uses lsp 0
* PTP BVC messages unrelated to user straffic use a per-BVC static LSP,
  which is the BVCI
* User traffic can set whatever LSP it wants
* NS keeps an array of NSVCs currently unblocked and uses the LSP modulo
  the array size as an index into it

Change-Id: I8b960ec4d729f50cadca353bb52685311cd45eed
Related: SYS#5084
2020-11-12 20:02:07 +00:00
Harald Welte dc0a090ae1 NS+BSSGP: Only send BVC-RESET when _first_ NSVC of NSVCG becomes unblocked
In case of a NS-VCG with multiple NS-VC, we must BVC-RESET only when the
first NS-VC becomes unblocked, i.e. as soon as we have any connection
to the peer at all.  Whether we have further additional links doesn't
matter, at least not in the sense that all state should be reset.

Change-Id: I69b2e9bd919fc981f189b6671b4234c3642e2449
2020-11-12 20:02:07 +00:00
Harald Welte 445fc61dc7 BSSGP_Emulation: Match on proper NSEI from NS layer
Change-Id: I682574bc54b4432357adef2b4662b1f74495578c
2020-11-12 20:02:07 +00:00
Harald Welte 90f1974fb0 NS_Emulation: Support multiple NS-VC within one NSE (NS-VCG)
This is something we need to simulate more complex scenarios,
particularly in the context of frame relay.

Change-Id: If1220852785853f8a5d8de183d5053ddd6ccb958
2020-11-12 20:02:07 +00:00
Pau Espin f8fe2d2ef3 RLCMAC_CSN1: Fix missing padding zero bits in UlAckNackEgprs
Se 3GPP TS 44.060 Table 11.2.28.1

Change-Id: Iee04f39b43dc42efb9c2d96c46ff8e496664594a
2020-11-11 20:09:08 +00:00
Pau Espin 80c1baa71e RLCMAC: Fix stall_ind param not used
Change-Id: Ie1b6c66467028da8f93ccc42e5048daca3b68192
2020-11-11 20:08:47 +00:00
Pau Espin a05b2bc8a3 RLCMAC_EncDec: Fix Encoding of TLLI in UlEgprsDataBlock
Change-Id: If13f36db9c86c10d7c5a6a307c430ee090b7dd06
2020-11-10 12:55:33 +00:00
Pau Espin 081b168060 RLCMAC_EncDec: Implement encoding for RlcmacUlEgprsDataHeader HeaderType 1 and 2
Change-Id: I4e0b0e0960634fd2e5f09073a1ef093200dbe707
2020-11-10 12:55:33 +00:00
Pau Espin 563bcd6cb5 RLCMAC_EncDec: Fix encoding of TI and E bits in UlEgprsDataBlock
Change-Id: I442a12a16fe0d0664c677eec10bb81e2544235aa
2020-11-10 12:55:33 +00:00
Vadim Yanitskiy 6b29571091 library/L3_Common: use f_rnd_octstring() from Osmocom_Types
Change-Id: Iad46c3ab25244389a2a536065653c7ed231d1234
2020-11-10 12:16:21 +00:00
Pau Espin 4fbeefd8cf pcu: Relax some CS/MCS expectancy checks
Previous commit implemented the CS/MCS verification, and hence now some
tests fail because they had too restrictive checks.

In theory the verifications could be done so restrictive by configuring
the PCU accordingly at the start of the test, but we are not
really interested in checking the exact CS/MCS in these tests, only
checking if GPRS/EGPRS is being used.

Change-Id: I79b81d473b7428b57a0ec501c5bd0d88e35c81e3
2020-11-06 14:20:37 +01:00
Pau Espin 5abfded61e RLCMAC_EncDec: Provide decoded (m)cs in (E)GPRS data blocks
Let's provide this information to higher layer since CS is mostly
discovered by original bitstring size which is available during
decoding.

Call the size2mcs converter in each function to avoid having to pass it
as a parameter and have it selfcontained, meaning one can simply call
decode(bitstring) from TTCN3 code and be done with it.

Change-Id: I80ed44e575cc0a11510832e5bbfc07173e7b75b8
2020-11-06 14:20:37 +01:00
Pau Espin 745a48bce3 pcu: prepare tests for new GPRS/EGPRS multiplex support
Once GPRS/EGPRS multiplexed support is ready, it will be controlled
through pcu info_ind.flags by enabling
MCS or not; the "egprs only" VTY comamnd will be dropped.
The usual setup would be to support both GPRS+EGPRS, so make that the default.
Most tests require to be passed the _noMCS variant to work in older
versions of PCU, since those versions use the "egprs only" concept which
will reject egprs_ms_class=0. Same tests enabling MCS in newer osmo-pcu
shouldn't be a problem.

Related: OS#4544
Change-Id: Ib95aae155b0712313a30f0c5404a8cb1f28b98f5
2020-11-06 14:20:37 +01:00
Pau Espin 2aead38cdc pcu: Add infra to handle multitrx and multits envs
ARFCNs are allocated sequentially, so that conversion between
arfcn<->trx_nr is easily done.

Some helper functions are introduced to be able to submit and expect
messages on a given TRX+TS, which is required for setups with several
TRX and PDCH-enabled TS different than the default. These new APIs
will be used in PCU_Tests.ttcn in subsequent patches.

Change-Id: I28430e6d8c77d2b7dc630d186d425a5d82587b82
2020-11-06 13:08:50 +00:00
Vadim Yanitskiy d5321fbdea library/PCUIF_Types: add f_PCUIF_ver_INFO_PDCHMask_set()
Change-Id: I443bc99d35994dda14cdf9c41609d528368c401f
2020-11-01 02:01:59 +07:00
Vadim Yanitskiy 2a9accef09 library/PCUIF_Types: f_PCUIF_ver_INFO_PDCHMask_get() returns BIT8
Change-Id: Ib8e497b596370d0b48e76e6e86c01f0c1d9c5df5
2020-10-31 20:25:15 +07:00
Vadim Yanitskiy 2f8ee5a0c7 library/PCUIF_Types: add '_get' prefix to f_PCUIF_ver_INFO_PDCHMask()
Change-Id: I0ce8f3fe8cfd47c61199fbbdf0d80d19e6f105e9
2020-10-31 20:25:15 +07:00
Vadim Yanitskiy e94164d22e library: fix Repeated Page Info IE in PacketPagingReq
Change-Id: I39e8e3991cc248602460b7f162a0b57c2925315f
Related: OS#4838
2020-10-31 20:24:44 +07:00
Pau Espin bfd69f6133 pcu: Introduce test TC_multitrx_multims_alloc
Related: OS#1775
Change-Id: I6b20fded6b2a1896fb7ec47c7c5dcbdcbe27f771
2020-10-26 17:46:44 +01:00
Pau Espin b88f21cc84 pcu: Assign different ARFCN numbers to each PCU TRX
Change-Id: I78f5c1da9e040cd69071e9ce4c99ce5655f0c477
2020-10-26 11:06:13 +01:00
Alexander Couzens 7b1e44f791 PCU: add IPv6 support for SNS
With PCUIF 10 the remote can be IPv4 or IPv6.
Add all missing parts including SNS IPv6 elements,
the support to omit IPv4 elements and a PCU_Tests_SNSv6.cfg
configuration to run all tests with IPv6

Change-Id: I43d64caca600fff78f3fbbb3e8179f447f235d46
2020-10-21 11:49:54 +00:00
Vadim Yanitskiy 8fc43df69f library/RSL_Types: reorder the arguments of ts_RSL_ChanMode_SIGN
This way it's consistent with ts_RSL_ChanMode, and there is
no need to pass dtx_downlink := false as the first param.

Change-Id: I0b87ef87f8cfff1c96b0beead29d549d5fe0b7c6
2020-10-20 02:24:14 +07:00
Philipp Maier ac693462dd BTS_Tests: fix CHANnel ACTIVation message in TC_meas_res_sign_tchX
The testcase TC_meas_res_sign_tchX activates a traffic channel in
signalling mode and checks the RSL resulting measurement reports.

The CHANnel ACTIVation message sets "SDCCH" as "Channel rate and Type"
value. This is invalid, the "Channel Rate and Type" sould be set to "Half /
Full rate TCH Channel Lm / Bm" (while the speech or data indicator is
still set to "Signalling")

Change-Id: I51887b0d0379fcc1f4483d08dfdd6869e7a9f963
Related: OS#4799
2020-10-19 19:07:44 +00:00
Pau Espin 5fa5b8823c cosmetic: library/LAPDm_Types.ttcn: Fix trailing whitespace
Change-Id: I1fa46a10ca714f63c782004c877f7df96c591fad
2020-10-19 20:19:47 +02:00
Vadim Yanitskiy 161858372a library/L1CTL_Types: use traffic forwarding mode by default
Calypso PHY (unlike trxcon) needs to be explicitly configured to
enable forwarding of the TCH traffic.  Otherwise it's handled
internally by the DSP and routed to/from the built-in speaker/mic.

Change-Id: I5b9ca5683627716868e85dc33f91d8ca4824cd61
Related: OS#4799
2020-10-19 17:36:19 +00:00
Vadim Yanitskiy 52787bf97f BTS_Tests: indicate TCH mode to the L1 in f_est_dchan()
Otherwise the L1 (trxcon or Calypso PHY) would 'think' that we're
in signalling mode, and would not send us Bad Frame Indications.

Change-Id: I0ade3bd63f604c7f0665124b182a023d50030d0b
Depends: I6f403ed0506b4b1872361d9976d3186bfe514b52
Related: OS#4799
2020-10-19 17:36:19 +00:00
Pau Espin d0ec1490c6 bts-oml: Verify BTS obj becomes Enabled durig OPSTART ACK
Change-Id: Iabe2677a458e169e646eb5a105ec9897c48eecc4
2020-10-19 17:33:37 +00:00
Vadim Yanitskiy 3b1fae4529 library/L1CTL_Types: add missing template for L1CTL_TCH_MODE_REQ
Change-Id: I7641c373dca7280d208f4eac85185a9899f0cb71
Related: OS#4799
2020-10-19 17:37:02 +07:00
Vadim Yanitskiy 7ce605fc8b library/L1CTL_Types: add missing 'loop_mode' to 'L1ctlTchModeReq'
Change-Id: Ia62cfc949603780b36f76bd6a9c16815b6152fcd
2020-10-19 17:37:02 +07:00
Vadim Yanitskiy 3240312a16 library/L1CTL_Types: relax some params of tr_L1CTL_TRAFFIC_IND()
A TRAFFIC.ind with 'num_biterr' > 0 or 'fire_crc' != 0 is still
a valid TCH frame - Bad Frame Indication.  Let's relax those
parameters for tr_L1CTL_TRAFFIC_IND().

Change-Id: Ia3357e06f986ae59dd0438f9ace3042cae8d3684
Related: OS#4799
2020-10-19 15:46:53 +07:00
Vadim Yanitskiy 2cdb97f166 library/L1CTL_Types: fix definition of L1ctlDmEstReq
In osmocom-bb 'struct l1ctl_dm_est_req' is defined as follows:

  struct l1ctl_dm_est_req {
    uint8_t tsc;
    uint8_t h;
    union {
      struct l1ctl_h0 h0;
      struct l1ctl_h1 h1;
    },
    uint8_t tch_mode;
    uint8_t audio_mode;
  } __attribute__((packed));

so the overall size of the union is size of the biggest member:

  sizeof(struct l1ctl_h0) is 2
  sizeof(struct l1ctl_h1) is 132

Therefore we need to fix our definitions:

  - introduce 'record L1ctlH0' (with padding),
  - introduce 'union L1ctlH0H1':
    - move hopping indicator to L1ctl{H0,H1},
    - use it as 'TAG' in 'union L1ctlH0H1'.

Change-Id: I53964f794260f0676cc2771a7acbb679befb06d5
Related: OS#4799
2020-10-19 14:33:24 +07:00
Vadim Yanitskiy fe052960b2 library/L1CTL_Types: turn L1ctlTchMode into an enumerated type
Change-Id: Ib547b5984078bc6c6a66addb4622a471487c7342
Related: OS#4799
2020-10-19 14:33:13 +07:00
Vadim Yanitskiy e7c4a99160 library/L1CTL_PortType: fix indention in alt() statements
Change-Id: Ic13c2acbe1379558884fa7d11ba0b52ef31544f3
2020-10-19 13:55:15 +07:00
Vadim Yanitskiy 79da4ce0fb library/GSM_RR_Types: declare {enc,dec}_SacchL1Header()
Change-Id: If2acd617d8bb543851e827ec74bb93d8da5b4966
Related: SYS#4916
2020-10-18 20:11:12 +07:00
Neels Hofmeyr 4f5d7be579 bsc: clarify RESET logging: BSSMAP vs RANAP vs BSSMAP-LE
When a RESET-ACK times out, the logs currently are indistinguishable between
BSSMAP and BSSMAP-LE. Add protocol naming for each RESET / RESET-ACK logging to
make sure the information does not need guesswork.

Example of a test failure shown in jenkins:

  BSC_Tests.TC_unsol_ass_compl
  Stacktrace

  Timeout waiting for RESET-ACK after sending RESET
        BSC_Tests.ttcn:8295 BSC_Tests control part
        BSC_Tests.ttcn:4274 TC_unsol_ass_compl testcase

Nothing conveys that it is (presumably) the background *BSSMAP-LE* timeout
halting the test 5 seconds in, and not an A-interface failure.

Change-Id: I874567e68b8279bf2460b9474241f0a9fe5ff0ff
2020-10-16 16:31:52 +02:00
Daniel Willmann 654f85e2b8 Correctly handle ALIVE/TEST procedure with FR/NS-over-IP without SNS
If IP-SNS is not used we should wait for the RESET procedure to finish
before sending NS-ALIVE.
For IP-SNS start NS-ALIVE in both roles (sgsn and bss) and don't handle
NS-RESET.

Also unified the log messages a bit (received -> Rx).

Related: SYS#5002
Change-Id: Ie01fee70297255b3d9c091bc2cec75b0f915c588
2020-10-15 10:48:34 +02:00
Neels Hofmeyr 79bd2e93d0 Revert "BSSAP_LE_Emulation: configure sending vs receiving RESET"
This should not have been merged. It is an intermediate attempt to make the BSC
send the BSSMAP-LE RESET, which doesn't work because the BSC is not restarted
across test runs. I dropped the patch from my branch, while it remained on
gerrit accidentally; then someone else merged it without noticing that it was
no longer part of my lcs branch.

This reverts commit b2b3704d2a.

Change-Id: If191cf0ee5c239066fa41621e812efbdcca2a2b8
2020-10-15 01:57:55 +00:00
Neels Hofmeyr 6ea71cda5a BSSAP_LE_Emulation: on register_imsi, make sure to wait for RESET ACK
Change-Id: Id0d087a90394369ef60846baa4d02289e9d0be1e
2020-10-13 08:43:10 +00:00
Neels Hofmeyr e52bc2d9df BSSMAP templates for LCS
Both BSSMAP-LE and BSSMAP use the LCS Cause IE with identical definition. In
order to not add further dependencies from BSSMAP_Templates.ttcn to
BSSAP_LE_Types.ttcn to BSSLAP_Types.ttcn, duplicate the LCS Cause enum.

Change-Id: Ifee698c128a5345f6bf0301ad4dac9e083285d56
2020-10-13 08:43:10 +00:00
Neels Hofmeyr fc64f53c49 BSSMAP_LE template tweaks
Change-Id: I9728690e412266001b2a02b0e14d382152d5ab4e
2020-10-13 08:43:10 +00:00
Neels Hofmeyr 0d774653c0 BSSLAP: add some templates
Change-Id: I6774bb6aefed67ebbfd5da8e52bb463cd6279ed4
2020-10-13 08:43:10 +00:00
Neels Hofmeyr 8a6863ccba BSSMAP_LE_IE_LcsCause: fix IEI value and len
Change-Id: I8ea9d91745dc7bcbfdb69779487a1e9fc6cc7fcd
2020-10-13 08:43:10 +00:00
Neels Hofmeyr b2b3704d2a BSSAP_LE_Emulation: configure sending vs receiving RESET
Expecting OsmoBSC to send a RESET to the SMLC implies that the virtual SMLC
stays quiet until a RESET is received. Add flag to configure RESET behavior of
BSSMAP-LE.

Change-Id: I49a749b037b614f922044165a4357fe20b68860b
2020-10-12 18:28:20 +00:00
Neels Hofmeyr a7326888e8 fix ts_BSSMAP_LE_ResetAck
Change-Id: Ia3b3e02f0ea71546e36a7612d77e3e55f2d3810d
2020-10-12 18:28:20 +00:00
Harald Welte cb14e0665c Osmoocm_Gb_Types.ttcn: Add various additional templates
Those can help to match if messages meet certain constraints stipulated
in the BSSGP specification.

Change-Id: I05c768f5a9e4f0b5c1375c2603135a349c38e849
2020-10-11 16:34:39 +00:00
Harald Welte e97e3af203 PCU_Tests_{NS,SNS}: Fix our expectations regarding CellID in BVC-RESET
The BVC-RESET / BVC-RESEt-ACK follow a set of rules:

* Signaling BVCI=0 never has a CellId in BVC-RESET nor BVC-RESET-ACK
* Any BVC-RESET or BVC-RESET ack in BSS->SGSN direction must have CellID
* Any BVC-RESET or BVC-RESET ack in SGSN->BSS direction must NOT have CellID

Let's adjust our test expectations accordingly.

This will break tests against "latest", but the amount of work-arounds
needed in this code outweighs the benefit.

Change-Id: Ic8a83f5214c372faa15178dd9b54364e7d2a60cb
2020-10-09 14:59:56 +02:00
Harald Welte 5339b2e372 BSSGP_Emulation: Support multiple PTP-BVC within one Entity
The existing BSSGP_Emulation is built around the assumption that every
instance of BSSGP_Emulation only servers one signaling-BVC and one
PTP-BVC.  While this is true for osmo-pcu at this point (BTS-colocated
PCU), other BSS/PCU implementations differ.

In general, there can always be any number of PTP BVC (one per cell)
next to the signaling BVC (one per BSS).  Let's represent this in
BSSGP_Emulation so we can create more comprehensive tests.

Change-Id: I7e30b4c4e188518a574e082962fba457b3a97ce3
2020-10-09 12:27:11 +02:00
Harald Welte 23e274919d PCU_Tests_NS: Fix our expectations regarding CellID presence/absence
This is required by the spec, and implemented libosmocore since
Change-Id Ie87820537d6d616da4fd4bbf73eab06e28fda5e1

So let's change our test expectations.  Meanwhile, introduce
mp_tolerate_bvc_reset_cellid for working around the bug in 'latest'.

Change-Id: Icebee25b53fef623db6ae91ca0d943e70a3c86b7
2020-10-09 12:27:11 +02:00
Harald Welte 12d19b81a7 BSSGP_Emulation: Ensure BVC-RESET for BVCO=0 has no CellId IE
This is required by the spec, and implemented libosmocore since
Change-Id Ie87820537d6d616da4fd4bbf73eab06e28fda5e1

So let's change our test expectations.  Meanwhile, introduce
mp_tolerate_bvc_reset_cellid for working around the bug in 'latest'.

Change-Id: If6245d73ed701e631b67146ace4ba028bdb4226c
2020-10-09 11:44:20 +02:00
Harald Welte c967d0e6f2 BSSGP_Emulation: Only add CellId to BVC-RESET[-ACK] conditionally
We always used to include the CellID IE, but 3GPP TS 48.018 is
actually quite specific about when it should be present and when not.

Change-Id: Iffd023f0272c9ccb087bdd225fcfb08424a46bdf
2020-10-04 21:09:11 +02:00
Harald Welte 847a77e32f NS_Emulation: pass around string idenifier for components created
We want to see useful identification for components in the log, and
hence must be giving every component a name at create() time.

Change-Id: I0fe650243953e4d85161684865acd0354b2e465f
2020-10-03 18:27:05 +02:00
Harald Welte 3dd8355d7d NS_Emulation: Delay Tx of first NS-RESET until Provider tells us it's up
Change-Id: I300cfeb120540940990a834596b0a83a539df080
2020-10-03 18:27:05 +02:00
Harald Welte 4a6a663654 NS_Emulation: Refactor if/elseif/... clause to altsteps with guard
This makes for much more readable code, and we can even do without
activating any default altsteps.

Change-Id: I4c38dd55b7c27899735f5730851d36c1410d96a8
2020-10-03 18:27:05 +02:00
Harald Welte bd612cd328 NS_Emulation: Introduce status events from provider -> emulation
This allows NS_Emulation to react to changes of the underlying
transport layer (e.g. Frame Relay Link/DLCI up).

Change-Id: If00e9c50dc664ce62b6c0cbde99d741e8173169b
2020-10-03 18:26:59 +02:00
Harald Welte 867243a3ec NS_Emulation: Add [optional] support for FrameRelay transport
This adds a NS_Provider_FR which interfaces between FrameRelay_Emulation
and NS_Emulation.  Include support for it only if enabled at compile
time to avoid pulling in a dependency on the FrameRelay stack for every
user of NS_Emulation.

Change-Id: I42ca811d23e383e362d2527c8ff2c916a62a5b42
2020-10-03 18:24:50 +02:00
Neels Hofmeyr 67de93784e BSSAP_LE: comment/log tweaks
Change-Id: I39ae5abc932c8cb5eb37b8c25a84621bd9ff30ca
2020-10-01 06:48:55 +02:00
Neels Hofmeyr 7b562bfe42 fix typo BSSMAP_LE_LCS_CAUSE_UNSPEIFIED
Change-Id: Iff154cba13febf1a2e623b6de64fb39ffb91b302
2020-10-01 06:48:55 +02:00
Neels Hofmeyr c4c2a9176b fix BSSAP_LE_Types FIELDORDER
Change-Id: I6f3d5b238912923431db36a1ba7b4973ae4e2e91
2020-10-01 06:48:55 +02:00
Harald Welte 5e8573e9b7 NS_Emulation: Prepare NSConfiguration for non-IP providers
NSConfiguration currently contains parameters relevant only for IP
based transport.  Move IP/UDP parameters into a sub-structure in
anticipation of Frame Relay support.

Change-Id: I6904520d8c2f546327029777d68b1907611a8cf5
2020-09-27 09:15:32 +00:00
Harald Welte 9a7c512bbd NS_Emulation: Fix Tns-alive/Tns-test expiration detection
Change-Id: Icb7d076f57c166b498c1b3edd84edcf13ea9739d
2020-09-25 10:01:53 +00:00
Alexander Couzens 904f50115d Move RAW_NS to library to use it in SGSN NS tests
Change-Id: I5a0e62cc9f032c515188530c0ceee29061fe11d2
2020-09-25 01:31:44 +02:00
Pau Espin befd3aaca4 mgw: Introduce test TC_crcx_osmo_ign
Related: SYS#5063
Change-Id: I79415c385e89fe859854430bb20940f078fccea0
2020-09-22 19:32:11 +00:00
Vadim Yanitskiy befa21c5c9 {BTS,PCU}_Tests: bump default PCUIF version: 9 -> 10
Both osmo-bts and osmo-pcu are switching to PCUIFv10 soon, so let's
use the new version by default.  For older (latest) IUT versions
not supporting PCUIFv10, one would need to override this module
parameter in {BTS,PCU}_Tests.cfg.

Change-Id: I9350c4a54434c3d46ce9424f382ca0057e58d053
Related: SYS#4868, SYS#4915
2020-09-22 00:53:26 +07:00
Alexander Couzens 3ee8268e91 NS_Provider_IPL4: map the IPL4 port to the system port before using it
Change-Id: Ia588ff82764e531c14665454eed035cd17b047ad
2020-09-17 23:54:42 +02:00
Alexander Couzens e0f7c543b7 NS_Emulation: remove dependency on PCUIF_Types
The dependency of PCUIF_Types creates also a dependency on

Replace the PCU_AddrType by an unix like address family defined
in the Osmocom_Types to reduce the dependency.

Change-Id: I0b4fda96accef401ffc009010f9f5621583fd6dd
2020-09-17 23:29:16 +02:00
Harald Welte 013d65af1e NS_Emulation: Introduce NS_Provider underneath NS_Emulation
This is a step to prepare the NS_Emulation for operating on top of
Frame Relay, not just UDP/IP.  We replace the NS_CodecPort (mapping to
a IPL4asp) with a newly introduced NS_Provider_CT, specifically a
NS_Provider_IPL4_CT.

This change removes any IP specific bits from NS_Emulation and moves
it into the newly-created NS_ProvideR_IPL4.

Change-Id: I4d0b7ad0ed9447a038dd3eeee2b975146d10fba0
2020-09-17 15:26:52 +00:00
Harald Welte 07cb87a90c BSSGP_Emulation: Fix build without BSSGP_EM_L3
Change-Id: Ic58e2d6bc37cb8fd8f0235b8497f674db7cfdd85
2020-09-17 15:26:52 +00:00
Alexander Couzens efca79da05 PCUIF_Types: fix version 9 remote address
Change-Id: I8a337399632e11d8a376e7a7fa3ff7a2396a80b1
2020-09-16 18:41:27 +00:00
Pau Espin 563b3d013b mncc: Support IPv6 addresses (new version mncc 7)
Apparently commit 06b859ca31 forgot to
bump the MNCC_SOCK_VERSION field from 5 to 6.

Change-Id: I5448ff931ec33f24f4837a51376f1703fe97683b
2020-09-16 10:36:44 +00:00
Pau Espin 28aa466dd9 library: CBSP_Adapter: Improve robustness of rebind and reconnect
Change-Id: Ibafbc8496eeadd0ea1b97056ef3b8a92bc43e9f1
2020-09-16 10:24:40 +00:00
Vadim Yanitskiy 220fa204da fixup library/PCUIF_Types: version 10: do not add redundant padding
Unlike osmo-pcu, osmo-bts does check length of the messages received
over the PCU interface, so I7a532d7abff8af354e40c5d706bb882efc6f905f
caused all the related test cases in ttcn3-bts-test to fail.

Reverting it is not a solution, because we cannot maintain different
padding attributes for two different protocol versions.  Let's add
a wrapper function that would call enc_PCUIF_Message() and append
padding depending on the configured protocol version.  In addition,
let's add a module parameter that would allow us to (optionally)
disable padding for ttcn3-pcu-test.

This change makes all broken PCUIF specific test cases pass.

Change-Id: Ica9e0c49c8b16e7d585a481670762c6433c61118
2020-09-15 19:15:22 +07:00
Vadim Yanitskiy ca81392360 BTS_Tests: group hopping parameters into a separate record
Change-Id: Iedb5d858a2d4f5d5a45e7465ae6586b3ae4bbb72
Related: SYS#4868, OS#4708
2020-09-14 09:04:39 +00:00
Harald Welte 93331e736b BSSGP_Emulation: Make L3 (SM/GMM) decoding a compile-time option
This allows us to build low-level tests that don't require all of L3.

Change-Id: I7ef7e93e2cd1d37e7e4a62947ca8dfde30d93b95
2020-09-13 10:18:41 +02:00
Harald Welte 6ce47c3ea7 lib: Move ts_RaCapRec from RLCMAC_CSN1_Templates to L3_Templates
There is no reason whatsoevery why a L3_Templates.ttcn file should
ever include types from RLC/MAC.  This creates a dependency nightmare.

The type for which ts_RaCapRec is written (MSRACapabilityValuesRecord)
originates from titan.ProtocolModules.MobileL3 so it's completely
unclear how any of that ever related too RLC/MAC.

Change-Id: Ie1ccef090ad51e26ccae17998e4294c6e27cf9c8
2020-09-13 10:18:41 +02:00
Harald Welte 557c9f8cb8 move some key types from GSM_RR_Types to GSM_Types
This in turn means Osmocom_Gb_Types doesn't need to depend on
GSM_RR_Types anymore, which is particularly ugly as the latter
now depends on RLCMAC_*, creating a long chain of dependencies.

Change-Id: I8c8da7709695ff0023f71b3999291e2515b22e46
2020-09-13 10:18:41 +02:00
Alexander Couzens 4231de67fc library: Osmocom_Types: fix extra indention tab
The top level context doesn't have an indent.

Change-Id: Ib94fa74a7752f21ba8203a5de17ce2b10d800d16
2020-09-11 20:24:19 +02:00
Alexander Couzens 5e6ae79d0c library: GSM_Types: fix extra indention tab
The top level context doesn't have an indent.

Change-Id: Ifece2e9fa782f173665e10fa9174403cccac7eb6
2020-09-11 20:24:19 +02:00
Vadim Yanitskiy a93088ae64 library/PCUIF_Types: version 10: do not add redundant padding
Change-Id: I7a532d7abff8af354e40c5d706bb882efc6f905f
2020-09-11 12:58:00 +00:00
Alexander Couzens 1e5dc48213 library/PCUIF_Types: version 10: support IPv6 NSVC addr
Change-Id: I13b03c380edc2dc609c5e4053462a3cd6f78ce72
Tweaked-By: Vadim Yanitskiy <vyanitskiy@sysmocom.de>
Related: SYS#4915
2020-09-11 10:35:56 +00:00
Pau Espin 08005d7475 library/RTP_Emulation: Close previous socket after rebind
If test calls RTPEM_bind twice, the previous socket is kept open
(ConnId 1) while the new one is assigned to the the expected ConnId for
RTP/RTCP packets received (ConnId), however, if remote was already
sending packets, it may happen that the port still receives those with
ConnId=1, which may make test fail with message:
"Received unexpected type from RTP"

Change-Id: I73f4af4e590dd3958e3f4d1dba0496c0750d642d
2020-09-09 11:43:51 +00:00
Vadim Yanitskiy 43ccaf51f2 library/PCUIF_Types: version 10: add Mobile Allocation length field
My initial assumption was that we can skip redundant '0'B bits or
even '00'O octets in the Mobile Allocation IE, and thus reduce
the overall size of this element.  Unfortunately, this is wrong.

3GPP TS 44.018, section 10.5.2.21 clearly states that the Mobile
Allocation IE contains a bit-string of size NF, where NF is the
number of frequencies in the cell allocation.  If NF % 8 != 0,
then '0'B padding bits must be appended to make it octet-aligned.

In other words, if the cell allocation contains let's say 13
frequencies, but a hopping timeslot makes use of only a small
fraction of it (e.g. 4 first channels), we would still need to
transmit at least 13 bits (+padding), including all redundant
bits and octets.

In RLC/MAC frames though it's not required to make the bit-string
octet aligned, so we need to send exactly NF bits without padding.

In order to achieve that:

  a) add MA length field to INFO.ind (record PCUIF_InfoTrxTs);
  b) ajust the existing test cases to use this field.

It's safe to merge this change as the related patches have not
been merged to osmo-pcu and osmo-bts yet.

Change-Id: I2709673c90a0cd7d76de9db8b8ad82ac59ca84a0
Related: SYS#4868, OS#4547
2020-09-08 19:04:20 +00:00
Vadim Yanitskiy ac1a4fddc7 library/BSSAP_LE_Types: fix: add missing FIELDLENGTH attributes
Otherwise TITAN would refuse to decode any messages:

  Dynamic test case error: While RAW-decoding type
  '@BSSAP_LE_Types.PDU_BSSAP_LE': Can not decode type
  '@BSSAP_LE_Types.PDU_BSSAP_LE', because invalid message was received

Change-Id: I3db7e8784efd067ccf0bc7dbc234d9b4ff1c033c
Related: OS#4597
2020-09-08 18:26:19 +00:00
Pau Espin 6a846bca2c library: Add template helpers for AoIP Transport Layer Address
This way one can simply pass an IP addr in string format and return the
IE no matter the IP version.

Change-Id: I743dbb7c89e504762498b7f278c12e130352e5f0
2020-09-07 08:05:28 +00:00
Pau Espin 384e949cd2 library/MGCP_Templates: Apply MGCP AddressType based on provided address
Change-Id: I1212abd31f6a4758105675908a1b7cb841caa3dd
2020-09-07 08:05:28 +00:00
Alexander Couzens 9843b66952 Osmocom_Gb_Types: add a simple tr_NS_STATUS()
Change-Id: I0de6c483361a00a924a278a77151253450a0c1a2
2020-09-07 06:12:51 +02:00
Vadim Yanitskiy 5fec37c0d5 library/GSM_RR_Types: add minimalistic HandoverCommand
Similar to [1], the existing implementation [2] is unfriendly
to use, so let's work this around by defining a minimalistic
implementation of (RR) Handover Command.

[1] If1a5244a688abed6e6de2bf3f6e19e0e28129ea5
[2] titan.ProtocolModules.MobileL3_v13.4.0
    MobileL3_RRM_Types.PDU_RRM_HandoverCommand_NW_MS

Change-Id: I08e6d33a725f99e2c92f93153b2369c4c764c012
Related: SYS#4868, OS#4545
2020-09-02 19:02:42 +07:00
Vadim Yanitskiy 480c2ac415 library/GSM_RR_Types: cosmetic: fix formatting in RrL3Union
Change-Id: I00bcc5ebb6e098f8ec4986a3dec7e6d7e31e12f8
2020-09-01 17:15:21 +07:00
Vadim Yanitskiy 27b3801bed library/GSM_RR_Types: add minimalistic AssignmentCommand
Unfortunately, the existing implementation [1] is somewhat
incomplete and unfriendly to build templates on:

  - some fields holding integer numbers defined as BITx,
    so we would have to do bit2int() / int2bit();

  - some bit-map fields defined as octetstrings;

  - some fields are not decoded at all (raw octetstrings).

Let's work this around by defining a minimalistic implementation
of (RR) Assignment Command with all mandatory and some optional
fields.  Reuse some IEs directly from MobileL3_RRM_Types.

[1] titan.ProtocolModules.MobileL3_v13.4.0
    MobileL3_RRM_Types.PDU_RRM_AssignmentCommand_NW_MS

Change-Id: If1a5244a688abed6e6de2bf3f6e19e0e28129ea5
Related: SYS#4868, OS#4545
2020-09-01 14:43:33 +07:00
Neels Hofmeyr 1393d02d0d comment: Osmocom_CTRL: fix example for f_counter_name_vals_list_add()
Change-Id: I2ff77176267058ced3639a42127f0063bed2fd60
2020-08-31 16:40:11 +00:00
Vadim Yanitskiy e02dbcce9f library/RSL_Types: add missing Channel Identification IE
Change-Id: I4698fd15a14ee55aa4004d80e65912531f78cf06
2020-08-31 15:05:57 +00:00
Vadim Yanitskiy c3156ed104 library/GSM_RR_Types: add receive templates tr_ChanDesc{H0,H1}
Change-Id: I1ff98c97f2670e47be5e03f3540a4e2ec8e4c373
2020-08-31 15:05:57 +00:00
Vadim Yanitskiy 7d6eef3a72 library/GSM_RR_Types: restrict Mobile Allocation length
Change-Id: I8333900949c0f39dc1cb777904e207ed1e212440
2020-08-31 15:05:57 +00:00
Vadim Yanitskiy 27057e0e23 library/Osmocom_Types: fix f_rnd_ra_cs(): ensure non-emergency RA
Change-Id: Idbb2a2c7c2024adea5ff5ee639aeca6eab8ebb3b
2020-08-31 15:05:57 +00:00
Vadim Yanitskiy 146efe6391 library/Osmocom_Types: fix: '10111111'B is a valid emergency RA
Most likely, the second part of the condition was copy-pasted
from ra_is_ps(), where the specs. require that at least one
of the three LSB's shall be zero.  This requirement does not
apply to emergency RA values in range '101xxxxx'B.

Change-Id: I4c923682edfeee9c6bf3aeeeb67438809a54109f
2020-08-31 15:05:57 +00:00
Harald Welte a803b72488 library: Add BSSLAP_LE_{CodecPort,Emulation}
Those two modules are analogous to BSSAP/BSSMAP CodecPort and Emulation,
but for the Lb interface (BSC-SMLC) instead of the A interface.

Change-Id: I92fd91056731abb8d3c01560f80c01c6a48a6fc9
2020-08-30 16:07:00 +00:00
Harald Welte f7c2b20741 TTCN-3 definitions for BSSMAP-LE and BSSLAP protocols
Both are part of GSM LCS and are spoken between BSC and SMLC

Change-Id: If31830be2c8e1b624579f6663e74955763db9d0e
2020-08-30 16:07:00 +00:00
Pau Espin c03eb12b58 pcu: Test Downlink UNIT_DATA messages from SGSN containing IMSI IE
osmo-pcu.git 0052051c07af63da98137c9f8e3b3119642eb587 introduced a bug
(fixed in 1d68cdff928f32941aff36c70e4543203c283d15) where no MS could
GMM attach to the network, but no test showed the issue.
This couple test verifies both correct behavior and also ensures wrong
IMSI is detected and reported.

Related: OS#4729
Change-Id: I5072d80b7ed9945a6083cdf3254efb8b8f119c54
2020-08-29 07:56:46 +00:00
Vadim Yanitskiy 4806396589 BSSMAP_Templates: add tr_BSSMAP_IE_Cause and tr_BSSMAP_SAPInReject
Change-Id: Ibf80419df4d198a1aa6f52087bd9356231de65f5
Related: SYS#5047, OS#4728
2020-08-28 18:18:11 +07:00
Vadim Yanitskiy 8352af7502 library/BSSAP_CodecPort: turn conn_id into a template param
Change-Id: I9b9ccee970b3a5bf608f2bdba51b317e35e678c7
2020-08-28 18:17:55 +07:00
Vadim Yanitskiy 6f9f7d2662 library/Osmocom_Types: share RA generation helpers from BTS_Tests
Change-Id: I7c9c3d243b39bbd3d521009d23c1043df729ee10
2020-08-28 05:56:39 +07:00
Vadim Yanitskiy 74e1f6b5d6 library/GSM_SystemInformation: move 'MobileAllocationT' to GSM_RR_Types
Change-Id: I149cf58c4bc1a8e08c69c52eb567706a0de4f9f1
2020-08-28 05:55:58 +07:00
Vadim Yanitskiy 3b464a9812 library/GSM_RR_Types: s/MobileAllocation/MobileAllocationLV/g
Change-Id: Ica803221e885b4746fd42c17cd2828c0ef35a6aa
2020-08-28 05:55:58 +07:00
Vadim Yanitskiy d8051724ff library/PCUIF_Types: fixup: keep PCUIF_InfoV10Trx aligned
Change-Id: I92ba84c5d1f77c86f7871c488965f6345c2dbbe2
Related: SYS#4868, OS#4547
2020-08-22 02:33:26 +07:00
Vadim Yanitskiy 0d59080469 library/PCUIF_Types: fix typo: s/local_pprt/local_port/g
Change-Id: Ic81469107d16c47f02db93a4fe9c35b7825d74b5
2020-08-21 11:59:00 +00:00
Harald Welte bae6be8acc GSM_RR_Types: Fix compiler warning
GSM_RR_Types.ttcn: In TTCN-3 module `GSM_RR_Types':
 GSM_RR_Types.ttcn:957.2-983.2: In template definition `ts_IMM_ASS':
  GSM_RR_Types.ttcn:957.2-983.2: While checking template restriction `value':
   GSM_RR_Types.ttcn:146.14-16: warning: Inadequate restriction on the referenced template parameter `len', this may cause a dynamic test case error at runtime
   GSM_RR_Types.ttcn:145.44-63: note: Referenced template parameter is here

Change-Id: I0d17102294430d23eb683e16d5ac66abe806f2c1
2020-08-21 13:17:59 +02:00
Harald Welte bd98295fcb L3_Templates: Fix compiler warning about missing qualifier
L3_Templates.ttcn: In TTCN-3 module `L3_Templates':
 L3_Templates.ttcn:120.1-125.1: In template definition `tr_MI_IMSI':
  L3_Templates.ttcn:122.25-124.2: In template for record field `oddEvenInd_identity':
   L3_Templates.ttcn:123.11-28: In template for union field `imsi':
    L3_Templates.ttcn:123.23-28: In actual parameter list of function `@L3_Templates.f_tr_MI_IMSI':
     L3_Templates.ttcn:123.24-27: In parameter #1 for `digits':
      L3_Templates.ttcn:123.24-27: warning: Inadequate restriction on the referenced template parameter `imsi', this may cause a dynamic test case error at runtime
      L3_Templates.ttcn:120.37-59: note: Referenced template parameter is here

Change-Id: Ia6979dff7d3c58f8609ebe55de2550446c3f1781
2020-08-21 13:17:58 +02:00
Harald Welte 9bf43cc30d L3_Templates: fix compiler warning
L3_Templates.ttcn:1099.1-1108.1: In template definition `ts_ML3_MO_CC':
  L3_Templates.ttcn:1099.53-1108.1: warning: Field `msgs' is missing from template for record type `@MobileL3_Types.PDU_ML3_MS_NW'

Change-Id: Id131274ae7832846df6c09cbe6763b9e147ef372
2020-08-21 13:17:58 +02:00
Harald Welte 88ee36088c RAN_Emulation: Fix compiler warnings about unreachable code
RAN_Emulation.ttcn: In TTCN-3 module `RAN_Emulation':
 RAN_Emulation.ttcnpp:1294.1-1343.1: In function definition `ExpectedCreateCallback':
  RAN_Emulation.ttcnpp:1309.4-1313.2: In else statement:
   RAN_Emulation.ttcnpp:1312.3-12: warning: Control never reaches this statement
  RAN_Emulation.ttcnpp:1342.2-11: warning: Control never reaches this statement

Change-Id: I4e7cc0a7e6bff5c5e569458548fa70e814bd200c
2020-08-21 13:17:58 +02:00
Harald Welte 09daa2e6cc StatsD_Types: Use 'present' qualifier; use template hierarchy
Change-Id: Ic9207e465bbee77d898d4d710a696656e43eac8d
2020-08-21 11:16:33 +00:00
Harald Welte aecdcec8ca StatsD_Types: Fix compiler warnings about missing record fields
StatsD_Types.ttcn: In TTCN-3 module `StatsD_Types':
 StatsD_Types.ttcn:51.1-55.1: In template definition `tr_StatsDMetric':
  StatsD_Types.ttcn:51.126-55.1: warning: Field `srate' is missing from template for record type `@StatsD_Types.StatsDMetric'
 StatsD_Types.ttcn:57.1-61.1: In template definition `tr_StatsDMetricCounter':
  StatsD_Types.ttcn:57.106-61.1: warning: Field `srate' is missing from template for record type `@StatsD_Types.StatsDMetric'
 StatsD_Types.ttcn:63.1-67.1: In template definition `tr_StatsDMetricGauge':
  StatsD_Types.ttcn:63.104-67.1: warning: Field `srate' is missing from template for record type `@StatsD_Types.StatsDMetric'

Change-Id: I6d3b40dc719b42481dacb5599eb7eeb3be0426b4
2020-08-21 12:39:40 +02:00
Harald Welte b75bbf89c4 RSL_Emulation: Fix compiler warning about dead code
RSL_Emulation.ttcn: In TTCN-3 module `RSL_Emulation':
 RSL_Emulation.ttcn:478.1-713.1: In function definition `main':
  RSL_Emulation.ttcn:500.2-712.2: In while statement:
   RSL_Emulation.ttcn:501.3-711.3: In alt construct:
    RSL_Emulation.ttcn:695.4-28: In function instance:
     RSL_Emulation.ttcn:725.9-744.1: In function definition `f_WaitingQueue_dispatch':
      RSL_Emulation.ttcn:729.2-740.2: In for statement:
       RSL_Emulation.ttcn:732.3-736.3: In if statement:
        RSL_Emulation.ttcn:735.4-8: warning: Control never reaches this statement

Change-Id: I1e080a8543a9f26b45b345e47881b6f6d4c9b362
2020-08-21 12:39:40 +02:00
Harald Welte afd87efcd1 CBSP_Templates: Fix tons of compiler warnings
CBSP_Templates.ttcn:385.1-401.1: In function definition `ts_CBSP_REPLACE_CBS_COMPL':
  CBSP_Templates.ttcn:396.2-398.2: In if statement:
   CBSP_Templates.ttcn:397.3-50: In variable assignment:
    CBSP_Templates.ttcn:397.40-50: In actual parameter list of template `@CBSP_Templates.ts_CbspCellList':
     CBSP_Templates.ttcn:397.41-49: In parameter #1 for `list':
      CBSP_Templates.ttcn:397.41-49: warning: Inadequate restriction on the referenced template parameter `cell_list', this may cause a dynamic test case error at runtime
      CBSP_Templates.ttcn:387.8-68: note: Referenced template parameter is here

Change-Id: I54c21d17ab3235ec37d5f07867d8c6c83d699088
2020-08-21 12:39:40 +02:00
Harald Welte 420c6b0bea BSSMAP_Templates: fix compiler warnings
BSSMAP_Templates.ttcn: In TTCN-3 module `BSSMAP_Templates':
 BSSMAP_Templates.ttcn:181.1-192.1: In template definition `ts_BSSMAP_Reset':
  BSSMAP_Templates.ttcn:181.1-192.1: While checking template restriction `value':
   BSSMAP_Templates.ttcn:188.21-54: warning: Inadequate restriction on the referenced function `f_enc_osmux_support(osmux_enabled)', this may cause a dynamic test case error at runtime
   BSSMAP_Templates.ttcn:174.9-179.1: note: Referenced function is here
 BSSMAP_Templates.ttcn:207.1-217.1: In template definition `ts_BSSMAP_ResetAck':
  BSSMAP_Templates.ttcn:207.1-217.1: While checking template restriction `value':
   BSSMAP_Templates.ttcn:213.21-54: warning: Inadequate restriction on the referenced function `f_enc_osmux_support(osmux_enabled)', this may cause a dynamic test case error at runtime
   BSSMAP_Templates.ttcn:174.9-179.1: note: Referenced function is here

Change-Id: I947e1a6aeb1fe40167eb268906906edd7e857232
2020-08-21 11:55:23 +02:00
Harald Welte cc5e159c61 GSM_Types: Fix compiler warning
GSM_Types.ttcn:45.4-12: warning: Control never reaches this statement

Change-Id: I3572f59f4c2a266e8f549a805c3dffeae0570a8c
2020-08-21 11:55:23 +02:00
Neels Hofmeyr cb11a97aaf bsc CBSP: fix tr_CBSP_KILL_FAIL, no lengthof() on record-of with '*'
Keep a local next_idx so that lengthof() doesn't fail after adding a '*' entry.
Fixes this error in BSC_Tests_CBSP.TC_cbsp_write_then_kill:

 Dynamic test case error: Performing lengthof() operation on a template of type @CBSP_Types.CBSP_IEs with no exact length.

Change-Id: I4d95a8ca311f145fa5ea371b6aed099db771d7b8
2020-08-13 19:31:23 +00:00
Daniel Willmann 742372880b Add parsing and checking of StatsD metrics
Change-Id: Icd1317b5f192d98e6cdc6635788d450501992bf1
Related: SYS#4877
2020-08-13 15:02:15 +00:00
Neels Hofmeyr f793a7e464 comment: Osmocom_Types.ttcn: clarify f_rnd_int() return val
Change-Id: I0841b037d39fcadb75e1c13cf97d22917b68e2aa
2020-08-13 05:36:26 +00:00
Neels Hofmeyr 95a5edc308 bsc: test RR Channel Release cause codes from Clear Command cause codes
Invoke Clear Command with various Cause codes and verify that the RR Channel
Release reflects them.

Depends: I734cc55c501d61bbdadee81a223b26f9df57f959 (osmo-bsc)
Change-Id: Ie6c99f28b610a67f2d59ec00b3541940e882251b
2020-08-12 18:21:24 +00:00
Neels Hofmeyr 0edf4ac242 bsc: test RR Channel Release EARFCNs
Add a DCHAN and release to recently added SI2quater tests (because these tests
already configure various amounts of EARFCNs in osmo-bsc).

Verify that the RR Channel Release for CSFB contains all configured EARFCNs.

In GSM_RR_Types.ttcn, add coding for "Cell selection indicator after release of
all TCH and SDCCH IE".

In f_expect_chan_rel(), add optional arg csfb_expect_cells, and, if present,
decode the RR Channel Release message's L3 part, and in turn the Cell Selection
Indicator Value contained. Match against csfb_expect_cells.

In f_tc_si2quater_n_earfcns(), also compose a list of EARFCNs as found in the
RR Channel Release, and pass to f_expect_chan_rel().

Depends: I59e427e4ebb1c6af99b27a15c40fed82457ac8ab (osmo-bsc)
Change-Id: I882c5e1f70bcc4833fc837a95c900ce291919cc5
2020-08-12 18:21:24 +00:00
Neels Hofmeyr 5c59a8f04a another fixup for "fix mscpool cleanup (fixes LCLS tests)"
During patch grooming of the previous fixup, one patch line went missing, which
breaks the ttcn3-bsc-test-latest completely. Add that change now.

Change-Id: I75295d638072df9f5213a7e74e4a960c009c2865
2020-08-12 11:19:23 +00:00
Neels Hofmeyr 345a15f213 log: for VTY Unknown Command, fix weird log message
In f_vty_wait_for_prompt(), this:

   testcase.stop(fail, "VTY: Unknown Command")

outputs:

   failVTY: Unknown Command

The first stop() argument 'fail' is not actually a test verdict, but gets
rolled into a log output string, becoming "failVTY".

Fix that by simply using the normal pattern of setverdict() followed by
mtc.stop().

Change-Id: Id09986444de02c10b4fba582d454d54568b6e8a2
2020-08-12 01:05:59 +00:00
Neels Hofmeyr e4b0a662ca fixup for "fix mscpool cleanup (fixes LCLS tests)"
For the VTY "Unknown Command" code path, we must actually call 'repeat', to
avoid racey VTY behavior from cruft stuck in the VTY pipe.

The missing 'repeat' caused massive random fallout in the 'latest' builds,
which often hits the 'Unknown Command' code path; fixed by this patch.

Change-Id: Ibd5adb359b3fb302e2c70700d911878aef605ff3
2020-08-12 01:05:48 +00:00
Neels Hofmeyr 2fe5ad171d f_vty_transceive: allow to ignore unknown vty commands
When a new test uses a VTY configuration that may not yet be available in the
'latest' build, it can be useful to ignore the "Unknown VTY Command" error.

To be used by f_init() for multiple MSCs, setting a default 'allow-attach' flag
per MSC implicitly -- such vty config is not yet supported in the latest build.

Change-Id: I284c42e10c0cb282c8410db87959b471867edef6
2020-08-10 20:16:09 +00:00
Vadim Yanitskiy 355604cbcf library/PCUIF_Types: add receive templates for PCUIF_InfoTrxTs
Change-Id: I062079de4440d2c9c0a079cc4cc4328ea0ea37dd
2020-08-09 20:03:38 +07:00
Vadim Yanitskiy 9e1206c791 library/PCUIF_Types: version 10: add frequency hopping parameters
This change introduces new version 10 specific extensions, in
particular: the frequency hopping parameters of each timeslot.
These parameters are used to compose Channel Description IE
in the packet resource assignment messages.

In order to maintain backwards compatibility with version 9 of
the PCUIF, and thus to still be able to run test cases against
the latest release of osmo-pcu, I kept the old parts of the
INFO.ind and gruoped them together with the new records
into union 'PCUIF_InfoTrxs'.

During decoding, the content of this union is resolved by the
TITAN's RAW codec itself, depending on value of the 'version'
field.  During the encoding, it's the responsibility of the
API user to set a proper field of the union.  I implemented
both f_PCUIF_ver_INFO_{Trxs,PDCHMask} helpers for that.

Version 9 is kept as default, so this change can be merged
independently of the actual implementation.  We can bump
it and remove the compatibility glue once the new versions
of both osmo-bts and osmo-pcu are released.

Change-Id: Idf11bc4ba3ff0b00b32f2beab8fd020c67119d05
Related: SYS#4868, OS#4547
2020-08-09 19:58:25 +07:00
Neels Hofmeyr 7944004f28 bsc CBSP: add log context for CBSP port errors
Change-Id: Ifd90e84ee65d0cb03eefc7ae1da2605650daf7ac
2020-07-29 20:03:50 +00:00
Vadim Yanitskiy e2a6fdf304 fixup library/GSM_RR_Types: fix BYTEORDER in MobileAllocation
The following bitstring in TITAN:

   0                 N    // N = NF - 1
  -------------------->
   0001 1011 1110 0100    // '0001101111100100'B

needs to be be encoded as follows 'on the wire':

   N                 0    // N = NF - 1
  <--------------------
   0010 0111 1101 1000    // '0010011111011000'B

so it basically gets inversed => we need to use BYTEORDER(first).

Change-Id: Iea2e3a9a7a0557d1ab5d935877d2161ee0988077
Fixes: I70b1baf01859d0cf3b8cec1aed04d73fc097a9b1
Related: SYS#4868, OS#4547
2020-07-23 04:53:16 +07:00
Vadim Yanitskiy 06c416125e library/RLCMAC_CSN1_Types: fix length field in GprsMobileAllication
- Length of field 'MA_BITMAP' is specified in bits, not bytes;
  - The value range of field MA_LENGTH is 0..63, therefore:
    - value  0 means that field 'MA_BITMAP' is  1 bit long,
    - value  1 means that field 'MA_BITMAP' is  2 bits long,
    - value 63 means that field 'MA_BITMAP' is 64 bits long.

Change-Id: Iec19da18637febfa15bc09175bc51504c721c42f
Related: SYS#4868, OS#4547
2020-07-23 04:50:59 +07:00
Vadim Yanitskiy 9fa1db5572 library/RLCMAC_CSN1_Types: fix byte/bit order in GprsMobileAllication
According to 3GPP TS 44.060, table 12.10a.2, given that the number
of bit positions in MA_BITMAP equals NF, the first bit position
in MA_BITMAP corresponds to ARFCN_INDEX = NF-1, the last position
corresponds to ARFCN_INDEX = 0.

To put differently, the following bitstring in TITAN:

   0                 N    // N = NF - 1
  -------------------->
   0001 1011 1110 0100    // '0001101111100100'B

needs to be be encoded as follows 'on the wire':

   N                 0    // N = NF - 1
  <--------------------
   0010 0111 1101 1000    // '0010011111011000'B

so it basically gets inversed.  Let's add both BYTEORDER and
BITORDER attributes to achieve that.

Change-Id: I8f2c8c7b234605523a4fd518210b45ea3c088ff6
Related: SYS#4868, OS#4547
2020-07-23 04:50:59 +07:00
Vadim Yanitskiy 41b4dd8957 library/RLCMAC_CSN1_Types: fix definition of PacketDlAssignment
- s/PacketDlAssignmentRel1999SubStruct/PktDlAssR99EGPRS/g,
  - fix Additions in Release 1999 (missing spare bit),
  - fix RLC_MODE field (it takes 1 bit, not 2),
  - fix PRESENCE(p0) attribute (defined twice).

Change-Id: I98efe66bf43853b580f38bed36487fa10a53298a
2020-07-22 14:49:41 +07:00
Vadim Yanitskiy fdbfd6eff2 library/RLCMAC_CSN1_Types: fix definition of COMPACTreducedMA
Change-Id: If16359edf5f0a270af3223522b9bf5efb14412e3
2020-07-22 14:48:33 +07:00
Vadim Yanitskiy 4728e09ce8 library/RLCMAC_CSN1_Types: fix definition of ZeroOneGamma
Change-Id: I197f300cdfe22bba1be6341381399420e38d81ad
2020-07-22 14:48:28 +07:00
Vadim Yanitskiy a01a05531c library/Osmocom_Types: add f_rnd_bitstring() and f_pad_bit()
Change-Id: I9be55f6979c8ce1cbf5b2ef317c998ae30488e0e
2020-07-21 16:14:20 +00:00
Vadim Yanitskiy c227ea93ae library/RLCMAC_Templates: cosmetic coding style change
Change-Id: I76931373fe9e1cf0de4263c09e36442bad7c3ce1
2020-07-21 16:14:20 +00:00
Vadim Yanitskiy f3cb4ddc86 library/RLCMAC_Templates: make ts_RLC_UL_CTRL_ACK accept a template
Change-Id: Ia71401b5c0d439eeb0dc58739ef0e68b15d4123f
2020-07-21 16:14:20 +00:00
Vadim Yanitskiy cb33c74383 library/RLCMAC_CSN1_Types: make use of 'LENGTHTO(...)+N' syntax
Thanks to LaF0rge, this syntax is now supported by TITAN.

Change-Id: I16ddc3e9f57dffba3e0f2ea80eeb63be3468da06
Related: SYS#4868, OS#4547
2020-07-21 16:14:20 +00:00
Vadim Yanitskiy c155930c22 library/PCUIF_Types: make PCUIF version configurable
When changing the PCUIF, we have to maintain backwards compatibility
with the release versions of both osmo-pcu and osmo-bts, not only
with the recent master.  In order to achieve that, let's introduce
'mp_pcuif_version', so the PCUIF version can be adjusted.

Change-Id: I3cf7f908e606b91dd2cbddc168827dd074aed052
Related: SYS#4868, OS#4547
2020-07-20 04:32:59 +07:00
Vadim Yanitskiy 3ddb3abdc0 library/GSM_RR_Types: fix bit/byte order in MobileAllocation
For more details, see 3GPP TS 44.018, figure 10.5.2.21.1.

Change-Id: I70b1baf01859d0cf3b8cec1aed04d73fc097a9b1
Related: SYS#4868, OS#4547
2020-07-20 04:32:44 +07:00
Vadim Yanitskiy cf1ed3f960 library/GSM_RR_Types: also match MobileAllocation in tr_IMM_TBF_ASS()
Change-Id: Icb13b8414d4a784eccaae2daa85232f066f92f08
2020-07-20 04:06:16 +07:00
Vadim Yanitskiy eec14f0951 BTS_Tests_LAPDm: consider frequency hopping parameters
Change-Id: Idd1ffe0ee97805b40bb5e37645aa53a9b1dc4b0a
Related: SYS#4868, OS#4546
2020-07-14 21:07:50 +07:00
Vadim Yanitskiy f7181ed9c9 library/GSM_RR_Types: share send templates for ChannelDescription
They're going to be used in other modules too, not only in BTS_Tests.
Also, take a chance to rearrange the list of arguments, so the ones
with default values are placed after mandatory ones.

Change-Id: Ia33ebf2e680f16f774a981fc33422dfe5036637f
2020-07-14 20:31:07 +07:00
Vadim Yanitskiy 5bcd91996a library/GSM_RR_Types: add ts/tr templates for MaioHsn
Change-Id: I0c5581c3d95018d808907bd2bc5e8ddd0a730bea
2020-07-14 20:31:07 +07:00
Pau Espin 630c1cf9c6 RLCMAC: Improve support of Pkt Ul AckNack messages
Change-Id: I8586248f435b1a70042ea25f633b75542bbc14aa
2020-07-14 09:49:31 +00:00
Vadim Yanitskiy cb478ec0ab library/GSM_SystemInformation: add dec_SystemInformationSafe()
Some types of System Information (mostly the Rest Octets) are not
fully implemented, so calling the generic dec_SystemInformation()
may result in a DTE.  Let's add dec_SystemInformationSafeBT() with
"prototype(backtrack)", so it would return a non-zero integer if
decoding fails.  Let's add a wrapper dec_SystemInformationSafe()
that would additionally check the RR Protocol Discriminator.

Change-Id: Id4d73e0f3347e1d4c4c77aec75b767311d662292
Related: OS#4662
2020-07-12 12:34:49 +00:00
Neels Hofmeyr ad132f286e bsc: more SI2quater EUTRAN ARFCN tests
Add more EUTRAN ARFCNs, reaching the maximum allowed amount.

Add tests with 12, 23, 42 EARFCNs, just for the sake of testing some arbitrary
numbers.

Add tests with 32 and 33 EARFCNs because before osmo-bsc
Iabeed10053ee5899b4def3509aedd25abb2410a9, only 32 EARFCNs could be stored by
osmo-bsc.

Add a test with 48 EARFCNs to verify the maximum amount of EARFCNs and maximum
amount of SI2quater multiplexes works as expected.

Add a test with 49 EARFCNs to verify the VTY error response when adding too
many EARFCNs, and showing that osmo-bsc still sends 16 SI2quater with 48
EARFCNs.

Depends: Iabeed10053ee5899b4def3509aedd25abb2410a9 (osmo-bsc)
Change-Id: I99bf9b3381812d1db6fd0757f65995bae48da776
2020-07-09 13:27:50 +00:00
Vadim Yanitskiy eacec8abb5 library/GSM_RestOctets: add SI2quater EUTRAN templates
Will be used in upcoming System Information tests.

Change-Id: I4162cc39ad351f5e96f5941116a424adc44efaa2
2020-07-08 23:12:58 +02:00
Neels Hofmeyr bb2777451a GSM_SystemInformation: add SI2quater
Change-Id: I879c37eb51ece55d79346c6bf1a4951c3f11c77e
2020-07-08 15:27:50 +00:00
Neels Hofmeyr c865573668 GSM_RestOctets: SI2quater fixup: rename "Cell List" to "Repeated Cells"
So far the naming is so that the EUTRAN_NeighborCell sounds like it reflects a
single E-ARFCN, while in fact it contains a list of E-ARFCNs. In 3GPP TS 48.018
it is more accurately named "Neighbor Cells", in plural.

There is another "list layer" that allows repeating these lists of E-ARFCNs,
which the spec names Repeated Neighbor Cells, i.e. have a list of (=repeat) the
lists of E-ARFCNs.

  Repeated Neighbor Cells = {
     // first cells list
     Neighbor Cells = {
          cell descriptions = {
                  { e_arfcn = 1, meas_bw = 3 },
                  { e_arfcn = 2, meas_bw = 3 },
                  { e_arfcn = 3, meas_bw = 3 },
          },
          prio, thresh, ...
     },
     // second cells list
     Neighbor Cells = {
          cell descriptions = {
                  { e_arfcn = 4, meas_bw = 3 },
                  { e_arfcn = 5, meas_bw = 3 },
                  { e_arfcn = 6, meas_bw = 3 },
          },
          prio, thresh, ...
     },
     ...
  }

Adjust the naming of the SI2quaterRestOctets members to more closely resemble
this structure, adopting the naming in 3GPP TS 48.018:

  EUTRAN_NeighborCell -> EUTRAN_NeighborCells
    because it is really a collection of multiple E-ARFCNs

  EUTRAN_NeighborCells -> EUTRAN_RepeatedNeighborCells
    because it is a list of E-ARFCN lists, and 3GPP TS 48.018 names it
    "Repeated Neighbor Cells".

Also rename the EUTRAN_NotAllowedCells accordingly.

Change-Id: Ib11d72c04cdb8997ec97321257fb58b2c113e790
2020-07-08 15:27:50 +00:00
Neels Hofmeyr a5f0ed2ba4 GSM_SystemInformation: use GSM_RestOctets for SI3 and SI4 rest_octets
Change-Id: I3f00dd0b4863582fc5edf08149103150b8b5e97b
2020-07-06 16:49:52 +00:00
Pau Espin 245bfcb742 pcu: Support sending with CS other than CS1 in f_ms_tx_ul_block()
Change-Id: Ibafa4246b442e7c26666eb0d37570bfbbf1dbda7
2020-07-06 12:50:01 +00:00
Pau Espin 05b6c178fc pcu: Introduce test TC_ul_flow_multiple_llc_blocks
Related: OS#4559

Change-Id: I62f42981d31bc5c2e4c61e92bea329bd74cb2d19
2020-07-06 12:50:01 +00:00
Vadim Yanitskiy 13c26f9279 BTS_Tests: move ts_RRM_GprsSuspReq to L3_Templates.ttcn
Change-Id: Ib1aa0053cfca8ccd6ff613ab3b1c4f5afbd27534
2020-07-04 21:39:47 +07:00
Vadim Yanitskiy d5f6bfe7bd library/GSM_RestOctets: initial SI2quater Rest Octets definition
This is a very minimalistic (incomplete) implementation of SI2quater
Rest Octets as per 3GPP TS 44.018, table 10.5.2.33b.1.  Should be
enough to decode some of the E-UTRAN specific parameters though.

Some BITn fields might need to be replaced with more specific
enumerated or integer types.  Beware [1], the bit ordering rules
are different for integer and bitstring (sub-)types if a field
ends up on boundary of the two octets!

[1] https://bugs.eclipse.org/bugs/show_bug.cgi?id=562488

Change-Id: I6a12c9ee12f8df8b4fc0976dd593152dc1195718
Related: SYS#4870
2020-07-03 03:30:00 +02:00
Neels Hofmeyr 9656e923bf fixup for Osmocom_CTRL_Functions: rate counters in bulk
At the time of writing Ief0d9b096feeee7d37b5f2429dd3e80de0161806 I wasn't aware
of the 'inout' keyword, which allows to pass the counter list by reference.

Rather modify the counter lists in-place. Instead of requiring

  list := f_counter_name_vals_add(list, ...)

rather implement by directly modifying list:

  f_counter_name_vals_add(list, ...)

Change-Id: I85ac56b042fe4bb1db392c1f451c8e900582cc2a
2020-06-30 04:24:59 +02:00
Neels Hofmeyr 7418059a6a Osmocom_CTRL_Functions: add: retrieve and verify rate counters in bulk
First user will be new MSC pooling tests in ttcn3-bsc-test, see
I2006f1def5352b4b73d0159bfcaa2da9c64bfe3f.

Change-Id: Ief0d9b096feeee7d37b5f2429dd3e80de0161806
2020-06-25 20:13:11 +00:00
Pau Espin abcdf78892 library/RSL: pass lost link event to upper layers instead of failing
Some tests may expect that behavior so let the test decide what to do
with it.

Change-Id: Idd4bdfc99514f4c439837f0ce4a20ec5ff45e86c
2020-06-25 09:25:20 +00:00
Harald Welte eddf0e9e10 bsc: Add CommonID Test: Send CommonID from MSC and check it is processed
Related: OS#2969
Change-Id: I501108bc6c19b17d3fc680211c7290a31770a159
2020-06-23 20:08:58 +00:00
Pau Espin 709650980a library/RSL: fix trailing whitespace
Change-Id: I84b23fef3a75dcd6d86855408adcb41142da3407
2020-06-23 14:30:13 +02:00
Vadim Yanitskiy e9c0635dae library/RSL_Emulation: implement waiting queue for DChan messages
Since change [1] has been merged, we see multiple regressions in
ttcn3-bsc-test (all LCLS test cases) and ttcn3-bsc-test-sccplite
(sporadic failures). In all failed cases, the reason is similar:

  RSL for unknown Dchan
      BSC_Tests.ttcn:4501 BSC_Tests control part
      BSC_Tests.ttcn:2176 TC_assignment_codec_fr testcase

The mentioned change enables TCP_NODELAY option for all IPA based
connections, including both OML and RSL. This option disables
Nagle's algorithm [2], so we get less delays on IPA based links.

It took me a lot of time to investigate, and finally, I figured
out what is actually causing those regressions. The TCP_NODELAY
itself is not a problem, of course. As it turned out, the
problem is here, in our TTCN-3 test case framework.

Each test case involves several components (actors) running in parallel.
One of them is RSL_Emulation_CT, which is responsible for handling and
routing of RSL messages between the connected components.

A test case may register dedicated channel handlers by calling
f_rslem_register(), so DCHAN/RLL/IPACCESS messages will be matched
by RslChannelNr/TrxNr and routed to the corresponding one.

If no handler is found for a given RSL message, the RSL_Emulation_CT
would abort the test case execution. And that's where the problem is.

Given that all components are running in parallel, it may happen
that a received RSL message would be processed by the RSL emulation
component faster than the test case would call f_rslem_register().
The test case would be aborted due to "RSL for unknown Dchan".

Speaking in context of the failing BSC test cases, a test case
calls f_rslem_register() on receipt of an Assignment Command as
it contains all the assignment parameters. After that we expect
to receive an RSL ip.access CRCX for that channel.

The problem is that both Assignment Command and ip.access CRCX
messages are sent by the BSC simultaneously, so the later may
be handled faster than the first one. Race condition!

Let's work this around by maintaining a waiting queue, where the
messages, for which no handler was found, will be kept until the
corresponding dedicated channel is registered.

This is an optional feature that needs to be enabled explicitly
by calling f_rslem_dchan_queue_enable(), and then explicitly
disabled by calling f_rslem_dchan_queue_disable().

If at the moment of calling f_rslem_dchan_queue_disable() the
waiting queue is not empty, e.g. because the IUT sent us more
messages than we expected, test execution will be terminated.

The actial fix for the LCLS test cases will be submitted next.

[1] Ia3d4c41bf0659e682f0b7ae5f3d58ed0f28edb58
[2] https://en.wikipedia.org/wiki/Nagle%27s_algorithm

Change-Id: I25e10e28de174337233e6a3bb32cc16f2d7d614e
Related: OS#4619
2020-06-21 20:46:49 +00:00
Vadim Yanitskiy a38c26595f library/RSL_Emulation: fix comment near f_rslem_suspend()
Change-Id: If6487065329a4fc44275999de1972f76ded06562
2020-06-21 20:46:49 +00:00
Neels Hofmeyr 0fbec5678d RAN_Emulation: drop unused function f_bssap_wait_for_reset()
Change-Id: I9ecf4fdeaee8e5437427564ef860c9053ffa4241
2020-06-20 21:43:21 +02:00
Neels Hofmeyr 4f11841173 bsc: add MSC pooling tests
The MSC pooling feature is implemented in osmo-bsc
Ifbdea197b26e88751a391c8a80c41f04e7d5e047.

A VTY command ('mscpool roundrobin next') that allows deterministic testing is
added in I2155d906505a26744966f442ffb1e87a6a9b494c.

osmo-bsc.cfg changes needed for these tests to succeed are in docker-playground
I1986e4ef43beee161c82193694421b56136c1afe

The new tests will fail until the above have been merged.

Change-Id: I21cbab193cd0de2e5692665442eae113d5f61904
2020-06-18 11:54:47 +00:00
Harald Welte a36b246462 Osmocom_Gb_Types: tr_BSSGP_PS_PAGING should use template arguments
Change-Id: I7d0110e6f26fd407e11b2c60d78f4cd16f0d45af
2020-06-18 11:28:42 +00:00
Neels Hofmeyr a8264612df RAN_Emulation: allow sending UnitData from MSC_ConnHdlr
Add BSSAP_N_UNITDATA_req to RAN_Conn_PT, so that we are able to send a Paging
from a test function that runs on MSC_ConnHdlr.

This will be needed by upcoming MSC pool tests, see
I21cbab193cd0de2e5692665442eae113d5f61904.

Change-Id: I36d486db05169b0fc3f19112b5a9008248d62930
2020-06-17 01:01:13 +02:00
Neels Hofmeyr d7eabd6ce6 RSL_Emulation: fix rx of tr_RSL_PAGING_CMD()
For tr_RSL_PAGING_CMD, also check comp_ref against null.

Upon receiving a tr_RSL_PAGING_CMD, the code tries to dispatch the Paging
Command to all valid clients. However, the ConnectionTable[*].comp_ref is
*always* present, and actually null for unconnected clients.
So, before this patch, a Paging Command from osmo-bsc gets sent to a null
client, which disconnects the RSL emulation and aborts the test.

There is currently no test using this, but the upcoming MSC pool tests will:
see I21cbab193cd0de2e5692665442eae113d5f61904.

Change-Id: Iaf7730153a3a19e448a33298c3e12212a55929d5
2020-06-17 01:01:13 +02:00
Vadim Yanitskiy 117c176de7 library/RSL_Types: fix RSL_IE_BS_Power: Power Level is 4 bit long
Unlike the RSL_IE_MS_Power, where power_level is 5 bit long, in
the RSL_IE_BS_Power it's 4 bit long. Fix this.

Change-Id: Ic0cb2275ef585754b9ae5e3d8077ca652afd9365
2020-06-16 01:40:24 +07:00
Neels Hofmeyr 7985aebeb3 move type RAN_Configurations to RAN_Adapter.ttcnpp
So far used only in MSC_Tests.ttcn, but soon to be used also in BSC_Tests.ttcn.

Change-Id: If8f7fd50a88302af645ab337a907d8f0ad79a306
2020-06-14 10:54:11 +00:00
Neels Hofmeyr 1661781611 fix f_enc_IMEI_L3() oddevenIndicator
f_gen_imei() calls f_enc_IMEI_L3() with a 14 digits argument, but the IMEI_L3
template used is hardcoded to 15 digits. So the oddevenIndicator must always
indicate odd, not depend on the digits argument.

f_gen_imei() should probably also compose a Luhn checksum, leaving that to
another patch.

Found by using the new osmo_mobile_identity API in osmo-msc, which is stricter
about odd/even and filler digits than our previous implementations.
See osmo-msc Idfc8e576e10756aeaacf5569f6178068313eb7ea .

Change-Id: Iaa9ba1214c4c15fd9620e68fe2e842fdf52912c0
2020-06-14 10:52:48 +00:00
Vadim Yanitskiy 82af0b53d4 library/RSL_Emulation: optional IPA stream ID patching
Unfortunately, the latest release of osmo-bts still has a bug,
that has been fixed [1] in the recent master. Because of that,
most of the test cases in ttcn3-bts-test-latest currently fail.

The problem is that all transceivers use IPAC_PROTO_RSL_TRX0,
regardless of what the BSC tells them to use. Let's work this
around by patching IPA stream ID in ASP_RSL_Unitdata messages
coming from the IPA emulation.

[1] I5927f59a49724170a63e87be604973f7c9d5d8be

Change-Id: I66cecc9ea24ba79e1a03492e3fda2874951d37a0
2020-06-09 20:28:44 +07:00
Vadim Yanitskiy f79d936b9a library/RSL_Emulation: cosmetic: improve logging messages
Change-Id: Iefb6bc96e57822e216f8d8480337e6b4afc4d892
2020-06-05 21:06:27 +07:00
Vadim Yanitskiy 204d1b832f library/L1CTL_PortType: f_L1CTL_DM_EST_REQ_IA(): handle hopping params
Change-Id: I8c14fee3ec8f7a799469c681b5afe79ab74a5dfc
Related: OS#4546
2020-05-29 22:33:13 +07:00
Vadim Yanitskiy eda908106b library/L1CTL_Types: introduce ts_L1CTL_DM_EST_REQ_H1
Change-Id: Ie236c48a906679a5f46346ac7cbaf5866fd8befc
Related: OS#4546
2020-05-29 15:31:12 +00:00
Vadim Yanitskiy e8ea3ee10e library/L1CTL_Types: fix definition of L1ctlH1 (hopping parameters)
Change-Id: I87555de751e6e4af6ac5fe308c3e77fa15c8bb16
Related: OS#4546
2020-05-29 15:31:12 +00:00
Vadim Yanitskiy 5afe885d26 library/L1CTL_PortType: refactor L1CTL channel establishment
- Get rid of f_L1CTL_DM_EST_REQ, it's not really needed.
  - Derive ts_L1CTL_DM_EST_REQ_H0 from ts_L1CTL_DM_EST_REQ.
    - Turn all its params into (value) templates.
    - Turn it into a (value) template itself.
  - Pass GsmArfcn directly to ts_L1CTL_DM_EST_REQ_H0.

Change-Id: I4f275e22d4309a23b4ed301a0779c4ecb92023a8
Related: OS#4546
2020-05-29 15:31:12 +00:00
Pau Espin 6791eb6b93 pcu: TC_mt_ping_pong: Request UL TBF on last DL ACK
Let's test the code path where UL TBF is requested through DL ACK/NACK
here, since we already test the usual UL TBF through CCCH approach in
most tests.

rlc_mode is changed to ACKED since that's the mode we are using so far
in tests.

Change-Id: I5a9a2e8107c87fdbf74cc2f09ae5eeafbb13ad55
2020-05-28 22:13:10 +07:00
Vadim Yanitskiy ff0072cb50 library/GSM_RR_Types: fix MaioHsn: add missing MAIO and HSN fields
Change-Id: I76a05e0ee8e46241b1d3bbc71b7ec01f193dd40e
Related: OS#4546
2020-05-27 20:14:08 +07:00
Vadim Yanitskiy 6de2fcbfe9 library/RSL_Emulation: server mode: handle multiple transceivers
Since change [1], the IPA emulation component allows us to handle
multiple IPA connections, thus multiple RSL connections. The idea
is to attach a TCP/IP connection identifier to each message.

On top of that, this change implements mapping between TCP/IP
connection identifiers and RSL stream identifiers, so we can
finally talk to any of connected transceivers (up to 4 for now),
not only the last connected one (as it was before). The actual
mapping is done during the IPA identification procedure.

Instead of forwarding ASP_IPA_EVENT_UP to a test case, the RSL
emulation component now sends a new event - RSLEM_EV_TRX_UP,
with transceiver number (actually, IPA stream-id) attached.

[1] I93c58c08cf296e5cea81d811650caa1a09b8a579

Change-Id: I86afb55ecc6703ce7a229aaa626223f9331a4778
Related: OS#4546
2020-05-26 20:57:00 +07:00
Vadim Yanitskiy 11edf3cdba library/IPA_Emulation: server mode: expose IPA IDENTITY RESPONSE
Change-Id: I685c2697cdbe932572e1839420d0c74c8fa94ee2
Related: OS#4546
2020-05-26 18:00:26 +07:00
Vadim Yanitskiy 40ee56cbac library/IPA_Emulation: server mode: also request IPA UnitID
Change-Id: I195894d72cf40f081d286a6c0a6d2531e3d0a45c
Related: OS#4546
2020-05-26 18:00:26 +07:00
Vadim Yanitskiy ef9bcd21ba library/IPA_Emulation: handle optional conn_id in ASP_RSL_Unitdata
This would allow the RSL Emulation component to maintain several
transceiver connections in server mode. In order to send an RSL
message to a specific transceiver, its TCP/IP connection ID needs
to be included in the ASP_RSL_Unitdata message.

Change-Id: I5c48d043cd746aad03e4329d9ffd2a627b640f64
Related: OS#4546
2020-05-26 18:00:26 +07:00
Vadim Yanitskiy 6643e8d3c7 library/IPA_Emulation: server mode: handle multiple client connections
This change basically does two simple things:

  a) adds TCP connection identifier to ASP_IPA_Event,
  b) splits g_ipa_conn_id into g_self_conn_id and g_last_conn_id.

Change a) would let the upper layers of code (based on the IPA
emulation component) know which TCP/IP connection a given event
belongs/relates to.

Change b) solves the problem, happening in server mode when a new
client connects, and TCP/IP connection identifier of another
previously connected client gets overwritten.

With this change applied, g_self_conn_id holds TCP/IP connection
identifier of the client or server itself (depending on g_mode),
while g_last_conn_id is only used in server mode and holds
connection identifier of the last connected client.

Change-Id: I93c58c08cf296e5cea81d811650caa1a09b8a579
Related: OS#4546
2020-05-26 17:51:44 +07:00
Vadim Yanitskiy a60e5cffa4 library/RSL_Emulation: fixup: handle RSL messages from any TRX
As a side effect of change [1], the RSL emulation component has
stopped to handle RSL messages from transceivers other than
TRX#0. Let's fix this by using template '?' for stream ID.

[1] I4c4a98458cfa33512db661b5435f484a38e2ef4f

Change-Id: I5ff05bbd985ddc5e39a390e4b775a16f066a53ea
2020-05-26 17:51:19 +07:00
Vadim Yanitskiy efc9413afc library/RSL_Emulation: fix comments near f_cid_{create,delete}_cnr()
Change-Id: I0fde6ea9c7e549d9cf9f6ce2a8e4e702df313b27
2020-05-25 22:14:04 +07:00
Vadim Yanitskiy a2c12c9c4e library/RSL_Emulation: use existing tr_ASP_RSL_UD template
Change-Id: I4c4a98458cfa33512db661b5435f484a38e2ef4f
2020-05-25 22:14:04 +07:00
Vadim Yanitskiy 9b4e356886 library/IPA_Emulation: assume TRX#0 in ASP_RSL_Unitdata templates
Change-Id: I93297680a2644516870222c2bb8eee03c6b575a9
2020-05-25 22:14:04 +07:00
Vadim Yanitskiy 6b4856dd17 library/IPA_Emulation: cosmetic: fix template restrictions
Change-Id: I375d1b50491ff0c848088277a86dc061be0a943b
2020-05-25 22:14:04 +07:00
Vadim Yanitskiy 44f0c48a3e library/IPA_Types: cosmetic: s/IPAC_IDTAG_UNIT/IPAC_IDTAG_UNITID/g
Change-Id: Iec9cbbea9d38813f0cd3b98fb6b252111d150220
2020-05-25 20:04:04 +07:00
Vadim Yanitskiy 16e24aa4e7 library/GSM_RR_Types: add receive templates for IMM ASS Reject
Change-Id: Icece9245f4a85dcf59021a76d51d419cf1c13990
2020-05-22 20:14:35 +07:00
Vadim Yanitskiy 7ef121d2d9 library/GSM_RR_Types: add IAR Rest Octets definition
See 3GPP TS 44.018, section 10.5.2.17 "IAR Rest Octets".

Change-Id: Ib1f16b310d6ca94f19a1700c78cb37e8b35ac570
2020-05-22 03:24:34 +07:00
Vadim Yanitskiy c3cebd31d9 library/GSM_RR_Types: fix definition of FeatureIndicator
Change-Id: I06ad58f25aa97bf13de87127e7e2c6237a90557e
2020-05-22 02:43:22 +07:00
Pau Espin 984d09fb2f library/RLCMAC_CSN1_Types: Extend support for PacketDlAssignment
Change-Id: I5788d9fffe768bb8ebbb3fc2d93ebf014648e9bf
2020-05-20 10:46:14 +00:00
Pau Espin 692222cb99 Add initial support for Packet Uplink Ack/nack EGPRS Struct
Some stuff like EGPRS Ack/Nack description is still not implemented, but
it's enouh for now to be able to match against this kind of ACK blocks.

Change-Id: I8066fba0e71911f0c6344c1540a501f1853daa7f
2020-05-19 19:21:29 +00:00
Vadim Yanitskiy a2afacc905 library/IPA: use tr_ASP_IPA_EV instead of inline templates
This way we can easily add new parameters to ASP_IPA_Event.

Change-Id: Icc37286fcb4d43836d56a26424ecb9dcba58d1f1
2020-05-18 21:16:35 +07:00
Vadim Yanitskiy 61564be045 library/IPA: split t_ASP_IPA_EVT_UD into send / receive templates
Change-Id: Ib5494bff3f9aa0ac396b729c326e7b4a64c5a5dd
2020-05-18 20:47:14 +07:00
Vadim Yanitskiy 8701b273dd library/IPA: rename ASP_IPA_EventUpDown to ASP_IPA_EventType
The old name was a bit confusing, because this enumerated type
also contains ASP_IPA_EVENT_ID_ACK, among with UP/DOWN events.

Change-Id: I8f73a64de40d1c8e9b7f43f538d6b59dcede065f
2020-05-18 20:37:20 +07:00
Pau Espin 42acafc9b8 pcu: Introduce TC_mo_ping_pong_with_ul_racap_egprs_only
Change-Id: I396dbd0ca200fbf9365c534f4d479f903d0417ff
2020-05-17 07:26:34 +00:00
Pau Espin 45b664b8af pcu: Support decoding Egprs Pkt Ul Ass on PDCH
Change-Id: I30fb98aab67303997b803a0359ffc2e0b65ebf01
2020-05-15 13:29:10 +02:00
Pau Espin 2ec84fd0e5 Move some types from GSM_RR_Types.ttcn to RLCMAC_CSN1_Types.ttcn
Some types already available in GSM_RR_Types.ttcn will also be required
by messages sent over PDCH and which belong to RLCMAC_CSN1_Types. Since
GSM_RR_Types.ttcn already requires RLCMAC_CSN1_Types.ttcn, let's move
them there so they can be used in both places.

Change-Id: Iccaaa2743dc44a36046c19d4d4ff882dc02fb479
2020-05-15 11:27:08 +00:00
Pau Espin 02c972d8aa pcu: use correct RA type to properly test 2phase access
Old code was not setting Single Block Packet Access type, and 2phase
access was not properly triggered.

Once it's triggered, message flow changes quite a lot from the 1phase
access, specially because the 2nd Ul Assignment arrives through PDCH
instead of CCCH, which means a different record is received and hence
code for 1phase cannot be easily re-used.

For similar reasons, f_tx_rlcmac_ul_n_blocks() is modified to receive
the only required tfi param instead of a full dl_block.

Some functions are also extended to support SingleBlock Allocation
instead of usual DynamicAllocation.

Change-Id: If636a4898dfa175fdbd6baf04f7f2c955a9c525d
2020-05-15 11:27:08 +00:00
Neels Hofmeyr b2168516f3 hlr: add tests for GSUP proxy routing
GSUP proxy routing, as it is implemented in an upcoming osmo-hlr patch,
requires that osmo-hlr returns a received Source Name IE back as Destination
Name IE. Add tests for these, for various situations.

These tests pass since GSUP request handling with request->response association
was introduced to osmo-hlr in I179ebb0385b5b355f4740e14d43be97bf93622e3.

Implement this by adding a source_name to the g_pars, which should be sent out
in ts_GSUP_* to osmo-hlr, and expected back as destination_name in returned
messages.

Add source_name and destination_name to various templates, with default :=
omit.

Add f_gen_ts_ies() and f_gen_tr_ies() to compose expected IEs more generically.

Change-Id: I3728776d862c5e5fa7628ca28d74c1ef247459fa
2020-05-11 17:31:57 +00:00
Vadim Yanitskiy b6733a67ec PCU: refactor and simplify f_rx_rlcmac_dl_block_exp_data()
This function was written in a way that it tries to do as
many different (but related) things as possible:

  a) send an RTS.req to the IUT, expect a DATA.ind in return,
  b) decode RLC/MAC message contained in the received DATA.ind,
  c) make sure that it's either GPRS or EGPRS data block,
  d) calculate the last TDMA frame number of RRBP using
     f_rrbp_ack_fn() regardless of its validity,
  e) make sure that the block contains a given LLC payload.

Everything is ok except point d). The problem is that this is
only the case for the first block of RRBP, and not applicable
to the rest having 'rrbp_valid' flag unset. Furthermore, this
function did not match GPRS DL blocks with 'rrbp_valid' flag
unset, for some odd reason.

Let's move RRBP calculation into a separate function called
f_dl_block_ack_fn() and return TDMA frame number of the
received DATA.ind message instead.

Among with that, there are more little changes:

  - simplify matching of (E)GPRS DL data blocks,
  - use 'in' qualifier in parameter list where possible,
  - turn parameter 'data' into a template (present).

Change-Id: I1528408b4399d0a149a23961805277eaab90d407
Signed-off-by: Vadim Yanitskiy <axilirator@gmail.com>
2020-05-10 21:34:38 +07:00
Vadim Yanitskiy d4f22aaf31 library: enrich tr_RLCMAC_DATA_RRBP, rename to tr_RLCMAC_DATA_GPRS
Let's make this template more flexible, so it can be used to match
any GPRS DL data blocks, not only those with rrbp_valid == true.

Note that behavior of f_rx_rlcmac_dl_block_exp_data() is
intentionally left unchanged, and will be fixed later.

Change-Id: I3940216368cdbb58fe89420675d1d8d5f5e49b05
Signed-off-by: Vadim Yanitskiy <axilirator@gmail.com>
2020-05-10 21:14:12 +07:00
Vadim Yanitskiy 0a9b148d2c library: fix t_RLCMAC_DlMacH: RRBP is always present
This template is not (yet) used anywhere, but let's fix it
anyway to avoid possible confusion.

Change-Id: Ic819f2b0eb292170de73abc7e200d79fcf02a76c
Signed-off-by: Vadim Yanitskiy <axilirator@gmail.com>
2020-05-10 14:48:17 +07:00
Vadim Yanitskiy 2742bcd6fd PCU: introduce f_rrbp_ack_fn(), fix poll frame number calculation
The resulting frame number shall be within the period of TDMA hyperframe.

Change-Id: I794a14f69293cbbc937d62d09dd5794956b882db
Signed-off-by: Vadim Yanitskiy <axilirator@gmail.com>
2020-05-10 12:46:03 +07:00
Vadim Yanitskiy c06688efe2 library: cosmetic: fix misleading comment in RSL_Types.ttcn
Change-Id: Id7974dc666d61025453b79b7e054306c8122ca65
Signed-off-by: Vadim Yanitskiy <axilirator@gmail.com>
2020-05-06 15:22:53 +07:00
Vadim Yanitskiy 12cf3d908a BTS: manually compose Rest Octets for SI Type 3 and 4
Finally, we can get rid of hard-coded octetstrings and control
every field of the Rest Octets we're sending to the IUT.

Note that template 'ts_SI4_default' did not contain any Rest
Octets at all, thus the GPRS indicator was (and still is)
absent. This will be fixed in a follow up change.

Change-Id: I0a95b34b495267edf1f48692e24fcd5ede8ccdd1
Signed-off-by: Vadim Yanitskiy <axilirator@gmail.com>
2020-05-06 02:26:03 +07:00
Vadim Yanitskiy 0217b05050 library: fix enc_SystemInformation(): properly pad messages
Due to a buggy nature of TITAN's padding attributes [1], we cannot
apply them to individual fields of the records that are embedded
into other structured types, like records and unions.

Ensure that encoded System Information messages are padded to
either 23 or 19 octets, depending on their type. In order to
achieve this, rename and wrap the external encoding function.

[1] https://bugs.eclipse.org/bugs/show_bug.cgi?id=562849

Change-Id: I3368df52985e576ad180c9a74d4925dd9c952b55
Signed-off-by: Vadim Yanitskiy <axilirator@gmail.com>
2020-05-06 02:25:10 +07:00
Vadim Yanitskiy b7bc2e6746 library: relax length constraints applied to SI Rest Octets
As it turned out, the length constraints introduced in [1] were
too strict. In particular, the use of FIELDLENGTH attribute made
it impossible to assign an octetstring of a smaller size and then
pad the remaining octets with '2B'O. TITAN would just use '00'O
instead, ignoring all my attempts to talk some sense into it.

[1] I183d3ba9000e3ced8ecce74a4390b80075ddf25d

Change-Id: Ie1b6d4100c064b6ae08ed55cd797b9416c6faf14
Signed-off-by: Vadim Yanitskiy <axilirator@gmail.com>
2020-05-05 00:16:38 +07:00
Vadim Yanitskiy 135b45eed9 library: add PADDING attributes to SI3/SI4 Rest Octets
Change-Id: Icce6d1e565edc6dce51310364079fc3840a18d45
Signed-off-by: Vadim Yanitskiy <axilirator@gmail.com>
2020-05-05 00:16:38 +07:00
Vadim Yanitskiy 2b98bda8dc library: clarify length restrictions for SI4 Rest Octets
Change-Id: I54bfe5710f744cdd61752f3e46b1b00e9f2f3e43
Signed-off-by: Vadim Yanitskiy <axilirator@gmail.com>
2020-05-03 22:54:08 +07:00
Vadim Yanitskiy edae16aaa3 library: System Information: use RestOctets where possible
The 'RestOctets' is a sub-type of the 'octetstring' with additional
padding attributes. Let's use it for SI2bis, SI2ter, and SI6 too.

Change-Id: I183d3ba9000e3ced8ecce74a4390b80075ddf25d
Signed-off-by: Vadim Yanitskiy <axilirator@gmail.com>
2020-05-03 22:48:23 +07:00
Vadim Yanitskiy 3c74a1113a library: get rid of Si1RestOctets and Si3RestOctets
Both are basically sub-types of GSM_RR_Types.RestOctets with length
constraints. We don't really need to have them as separate symbols,
especially since we have SI3RestOctets and SI4RestOctets now, so
let's apply these constraints within the corresponding records.

Change-Id: I2b126348ae5c5425fea4267ab2b77ea0192795ac
Signed-off-by: Vadim Yanitskiy <axilirator@gmail.com>
2020-05-03 22:20:13 +07:00
Vadim Yanitskiy 72add6d7ed library: implement mandatory part of SI4 Rest Octets
Optional "Rest Octets S" part is left for later.

Change-Id: Ib0814e79f8627f3e2b4746b7e521e06ff82bf2d7
Signed-off-by: Vadim Yanitskiy <axilirator@gmail.com>
2020-05-03 21:50:34 +07:00
Vadim Yanitskiy 0df8c94d69 library: implement SI3 Rest Octets as per 3GPP TS 44.018
Change-Id: Iaf86f1451a956bf1deef0a9d98fa0513aeb8164b
Signed-off-by: Vadim Yanitskiy <axilirator@gmail.com>
2020-05-02 17:06:33 +07:00
Vadim Yanitskiy e05d7162a2 library/GSM_RR_Types.ttcn: fix: work around TITAN bug 562488
Commit [1] introduced multiple regressions, because it basically
changed the byte order in all fields of the whole module from
'first' (implicit default) to 'last'. This is not what we need.

Instead, let's apply BYTEORDER(last) to 5 bit 'ext_ra' fields
unless the bug [2] in TITAN's RAW codec is fixed.

[1] I481a40daef3eed4a3daa687ad87c4128a13181b4
[2] https://bugs.eclipse.org/bugs/show_bug.cgi?id=562488

Change-Id: If998ef72c13787f04fee79e1e646cd9a6787028a
Signed-off-by: Vadim Yanitskiy <axilirator@gmail.com>
2020-05-02 17:06:33 +07:00
Pau Espin 2456dad91e RLCMAC_EncDec.cc: Fix egprs data block encode alignment
Selftests I'm using in the pcu testsuite to verify encoding are attached
too.

Change-Id: Id0e21248853eb5fac89e863822804cfbecf3c865
2020-05-01 15:54:17 +02:00
Pau Espin 27d6af5edb RLCMAC_Templates: Add functions to convert HeaderType<->MCS<->CPS
They will be used by tests, templates and RLCMAC_EncDec.cc itself.

MCS HEader Type 1 and 2 to CPS conversion lefts as a TODO with
placeholder functions to easily implement when needed.

Change-Id: I18ff55a8067165bf081bf21473b4f88af955bf5b
2020-04-30 20:22:25 +02:00
Pau Espin 0b8e22be46 RLCMAC_EncDEc.cc: Support decoding Egprs Ul Data HeaderType2
Change-Id: I4dfc994beb7d0ee5522770651150c77701c573fe
2020-04-30 20:10:17 +02:00
Pau Espin 82d22bc326 RLCMAC_EncDEc.cc: Use copied structure as other parts of the function
Change-Id: Iffe45b3d220c0f95f1fdb54e1b90f0a0cef88ee3
2020-04-30 20:09:12 +02:00