| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
| |
osmo_mnc_from_str() preserves leading zeros in the string and is useful for
VTY config parsing (osmo-bsc, osmo-msc, osmo-sgsn, osmo-pcu).
osmo_{plmn,mnc}_cmp() takes care of the slight intricacy of ignoring the 3-digit flag
if the MNC is anyway >99. Will be used by osmo-sgsn.git and osmo-bsc.git. (All
current users just care about identical MNC, but a proper cmp doesn't hurt.)
Change-Id: Ib7176b1d65a03b76f41f94bc9d3293a8a07d24c6
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Enable representing three-digit MNC with leading zeros. The MNCs 23 and 023 are
actually different; so far we treated both as 23. Re-encode an incoming BCD or
string of 023 as it were, i.e. not dropping the leading zero as 23.
Break ABI compatibility by changing the size and ordering of structs
gprs_ra_id, osmo_plmn_id, osmo_cell_global_id, ... by adding an mnc_3_digits
flag.
Change ordering in gprs_ra_id because the canonical oder is {Mobile Country
Code, Mobile Network Code}, so have the mcc member first.
ABI compatibility cannot be maintained for struct gprs_ra_id, since it is a
direct member of structs bssgp_bvc_ctx and bssgp_paging_info, and even just
adding a flag to the end would cause ABI changes of those structs. Similarly,
osmo_plmn_id is a direct member of osmo_location_area_id, and so forth.
Add new API to set and read this additional flag to preserve leading zeros:
- osmo_plmn_to_bcd(), osmo_plmn_from_bcd() after
gsm48_mcc_mnc_to_bcd() and gsm48_mcc_mnc_from_bcd().
- gsm48_decode_lai2(), gsm48_generate_lai2() after
gsm48_decode_lai(), gsm48_generate_lai().
- gsm0808_create_layer3_2() after gsm0808_create_layer3() and gsm0808_create_layer3_aoip().
- various osmo_*_name() functions in gsm23003.h (osmo_rai_name() still in
gsm48.h close to struct gprs_ra_id definition). The amount and duplication of
these may seem a bit overboard, but IMO they do make sense in this way.
Though most code will soon see patches unifying the data structures used, in
some cases (vty, ctrl) they are required singled out. Without these
functions, the formatting ("%0*u", mnc_3_digits ? 3 : 2, mnc) would be
duplicated all over our diverse repositories.
In various log output, include the leading MNC zeros.
Mark one TODO in card_fs_sim.c, I am not sure how to communicate a leading zero
to/from a SIM card FS. The focus here is on the core network / BSS.
To indicate ABI incompatibility, bump libosmogsm and libosmogb LIBVERSIONs;
adjust debian files accordingly.
Implementation choices:
- The default behavior upon zero-initialization will be the mnc_3_digits flag
set to false, which yields exactly the previous behavior.
- I decided against packing the mnc with the mnc_3_digits field into a
sub-struct because it would immediately break all builds of dependent
projects: it would require immediate merging of numerous patches in other
repositories, and it would make compiling older code against a newer
libosmocore unneccessarily hard.
Change-Id: Id2240f7f518494c9df6c8bda52c0d5092f90f221
|
|
|
|
|
|
|
|
|
|
|
| |
This breaks all existing / older osmocom-bb builds, and hence
cannot be accpeted. See also https://gerrit.osmocom.org/#/c/6679
Related: OS#2985
This reverts commit 3c38e60cd55814a7b4c34f22e0b2e6e671f883c4.
Change-Id: Icfc52ca4e5cbe3a444d98037d27fa101e3614e06
|
|
|
|
|
|
| |
The code is based on Osmocom-BB implementation.
Change-Id: I78f6968edaa3ed535673411fb2a80060a472290f
|
|
|
|
|
|
|
|
| |
Add generic function which allows caller to set Mobile Identity
explicitly. This allows to use IMEI or IMEISV for example. Make
gsm48_generate_mid_from_imsi() into wrapper around new function.
Change-Id: Id79be7abfff75ecd0d248bbeed93e605abeec9b3
|
|
|
|
| |
Change-Id: I1b2f6fc6f455b0ba2a5732c567a4867bca97c3b0
|
|
|
|
|
|
|
|
| |
As MNCC is rather hard to debug (wireshark cannot trace UNIX domain
sockets), let's add our own decoder that we can use from related
debug log statements in the respective programs.
Change-Id: I216aaf70868ba5f3860a60c4b2442957531a3011
|
|
|
|
|
|
|
| |
Used for logging Speech Codec List entries in osmo-bsc, during handover
decision.
Change-Id: Ie6418d16db333188e9bcd2b32b7216f277ae8832
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add gsm48_encode_ra() which takes appropriate struct as [out] parameter
instead of generic buffer. Using uint8_t buffer instead of proper struct
type prooved to be error-prone - see Coverity CID57877, CID57876.
Old gsm48_construct_ra() is made into tiny wrapper around new
function. The test output is adjusted because of the change in function
return value which was constant and hence ignored anyway.
Related: OS#1640
Change-Id: I31f9605277f4945f207c2c44ff82e62399f8db74
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
To send a Ciphering Mode Command, we may need to derive a Kc from UMTS AKA
tokens. gsm_milenage() derives Kc from 3G tokens, but also derives an SRES.
For SRES, it requires an OPC, which may need to be derived from OP first. All
we need is a Kc, so we could feed a zero OPC ... but to simplify the function
call for cases where just a Kc is required, separate the c3 function out from
gsm_milenage(), as osmo_auth_c3(). Obviously call osmo_auth_c3() from
gsm_milenage() (meaning that osmo-hlr's 55.205 derived auc tests still cover
exactly that implementation).
Prepares: If04e405426c55a81341747a9b450a69188525d5c (osmo-msc)
Related: OS#2745
Change-Id: I85a1d6ae95ad9e5ce9524ef7fc06414848afc2aa
|
|
|
|
|
|
|
|
|
|
|
| |
Add support for extended RACH (11 bit) according 3GPP TS 45.003 §5.3.2:
* convolutional code with puncturing
* encoding/decoding routines
* corresponding tests
Change-Id: I85a34a82d5cd39a594ee89d91a2338226066ab5d
Related: OS#1548
|
|
|
|
|
|
|
|
|
| |
Add osmo_sub_auth_type_names[] and osmo_sub_auth_type_name().
Also add a hint to enum osmo_auth_algo's API doc that osmo_auth_alg_name()
already exists (it is defined further below).
Change-Id: I652a929bcd11c694d86812fb03d0a1cbd985efda
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The function is a wrapper on top of getrandom() (if available via glibc) or
corresponding syscall. If neither is available than failure is always
returned.
It's intended to generate small random data good enough for session
identifiers and keys. To generate long-term cryptographic keys it's
better to use special crypto libraries (like GnuTLS for example)
instead.
As an example it's used to replace old insecure random number generator
in osmo-auc-gen utility.
Change-Id: I0241b814ea4c4ce1458f7ad76e31d390383c2048
Related: OS#1694
|
|
|
|
|
|
|
|
|
| |
Add GSM23003_IMSI_MIN_DIGITS definition.
Add regression test gsm23003_test.c to test the two new functions.
Will be used by OsmoHLR to validate VTY and CTRL input.
Change-Id: I1e94f5b0717b947d2a7a7d36bacdf04a75cb3522
|
|
|
|
|
|
| |
Those functions can be used to look up the size of (E)GPRS blocks.
Change-Id: I05ff75ef7dfae639886bbd09fe35f03a8af9d988
|
|
|
|
|
|
|
| |
Convert a given frame number into a printable string that displays
the sub components of the frame number.
Change-Id: I8015d2ded3940b01b35df7b72fc35c70c25e9926
|
|
|
|
|
|
| |
Used by osmo-bts, moved from osmo-bts l1sap.c:dump_gsmtime.
Change-Id: Ib5452e2c20f53006c0f6d197fb055728947125d8
|
|
|
|
|
|
|
|
|
|
|
| |
Recent commit 884ba0f2bcaf385cabee0b4228a2598d61fa406b adds function
gsm0808_chan_type_to_speech_codec() but adds a mismatching name in
libosmogsm.map. openbsc.git's aoip branch can't build with this.
This must have been an on-the-fly rename that wasn't properly tested. Always
test your patches!
Change-Id: I68feb14f7bcb2f62b89f9b2d8c085d6824b493bc
|
|
|
|
|
|
|
|
|
|
|
|
| |
Recent commit 3149b0d076477303a38df735fe579b1b06ee17b2 adds function
gsm0808_chan_type_to_speech_codec() but adds a completely mismatching name in
libosmogsm.map, as well as a definition with a typo in the name.
Fix the entry in libosmogsm.map.
Add the missing 'c' in gsm0808_utils.h
Change-Id: I5a621fa5ef6b632eabbe224f3dd383eacaffb695
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The contents of the speech codec element (struct gsm0808_speech_codec),
that is also used in the speech codec list element (struct
gsm0808_speech_codec_list) can be generated directly from the
permitted speech parameter in the channel type field (struct
gsm0808_channel_type) when full AoIP with compressed speech via
RTP/UDP/IP is assumed and when the codec configuration on the air
interface exactly matches the codec configuration on the IP backhaul.
This patch adds a function that can be used as a helper to fill
out spech codec fields by only giving a permitted speech parameter
as input.
Change-Id: I257c972e9fdf0dfe940a8d483447085bd62e50a2
|
|
|
|
|
|
|
|
|
|
|
|
| |
The permitted speech field used in channel type element (struct
gsm0808_channel_type) uses a different representation as
the type field in the speech codec element (struct
gsm0808_speech_codec)
This patch adds a function to convert from permitted speech to
speech codec type.
Change-Id: Ib26a9c20864459b2baaa04f49b6e7902ba44b7cb
|
|
|
|
| |
Change-Id: I1f4fc2761b55a4f83544c1c3793ab67fec9fc120
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* add osmo_earfcn_bit_size_ext() function which allows to specify how many
EARFCNs we should skip when estimating required bit size for SI2quater
* make old osmo_earfcn_bit_size() into wrapper over newly added function
and mark it as deprecated
This is necessary to properly estimate necessary space for EARFCNs when
they are spread over several SI2q messages with different index.
Change-Id: I92e12e91605bdab9916a3f665705287572434f74
Related: RT#8792
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* data structure representing 3GPP TS 52.021 §9.4.62 SW Description
* function to serialize it into msgb
* function to deserialize it from buffer
* functions to extract/estimate buffer size for SW Description
* test harness (partially taken from OpenBSC)
There are several similar functions to deal with SW Description in
OpenBSC, there's also need to use similar functionality in
OsmoBTS. Hence it's better to put the code into common library with
proper tests and documentation.
Change-Id: Ib63b6b5e83b8914864fc7edd789f8958cdc993cd
Related: OS#1614
|
|
|
|
|
|
|
|
|
|
| |
The ipa.c file already contained code to parse an ID RESPONSE into the
'struct ipaccess_unit', but it didn't so far contain code to put
together an ID RESPONSE packet based on that structure. Let's change
that with ipa_ccm_make_id_resp() and a helper wrapper
ipa_ccm_make_id_resp_from_req().
Change-Id: Icbcd8827a75fd5f3393351c1ca372de85275ad35
|
|
|
|
|
|
|
|
|
|
|
| |
The create function to generate the RESET ACKNOWLEDGE
message is not accessible from outside, as it does not
appear in limosmogsm.map. It also has not testcase.
This commit adds gsm0808_create_reset_ack() to the
map file and also adds a testcase.
Change-Id: I82d3411484f82b4a9205d407fa0442244678f183
|
|
|
|
|
|
|
|
|
|
| |
gsm0808.h/c lacks functionality to generate BSS_MAP_MSG_ASSIGMENT_RQST messages.
These messages are required if the code is used in an MSC implementation.
This commit adds a gsm0808_create_assignment() function, that generates an
A/AoiP BSS_MAP_MSG_PAGING message.
Change-Id: I4d1d455a1e1cf95407e23ded7b7defbcf2dd6ff0
|
|
|
|
|
|
|
|
|
|
| |
gsm0808.h/c lacks functionality to generate BSS_MAP_MSG_PAGING messages. These
messages are required if the code is used in an MSC implementation.
This commit adds a gsm0808_create_paging() function, that generates an A/AoiP
BSS_MAP_MSG_PAGING message.
Change-Id: I9afecf0109305ca5153bf081bb29cd94071dd2b7
|
|
|
|
|
|
|
|
|
|
| |
gsm0808.h/c lacks functionality to generate CIPHER MODE COMMAND messages. These
messages are required if the code is used in an MSC implementation.
This commit adds a gsm0808_create_cipher() function, that generates an A/AoiP
CIPHER MODE COMMAND message.
Change-Id: I8eb1c357860c3e740b0f5d17e1c256bc87920958
|
|
|
|
|
|
|
|
|
|
| |
The planned support for true A over IP requires the encoding of
the a Cell Identifier List element (see also BSS_MAP_MSG_PAGING).
This commt adds encoding/decoding functionality and tests for
the element mentioned above, however, it is not yet actively used.
Change-Id: I625245dd1dd396fc2bc189e8cd2c444a33042528
|
|
|
|
|
|
|
|
|
|
| |
The planned support for true A over IP requires the encoding of
the an Encryption Information element (see also BSS_MAP_MSG_CIPHER_MODE_CMD).
This commt adds encoding/decoding functionality and tests for
the element mentioned above, however, it is not yet actively used.
Change-Id: I8262050a9d9fd3f17462cfbb046c6e034dccc6fb
|
|
|
|
|
|
|
|
|
|
| |
The planned support for true A over IP requires the encoding of
the a Channel Type element (see also ASSIGNMENT REQUEST).
This commt adds encoding/decoding functionality and tests for
the element mentioned above, however, it is not yet actively used.
Change-Id: Id0e2164d84b8cbcc6fe6a090fc7f40a1251421d7
|
|
|
|
|
|
|
|
|
| |
the classic A implementation in libosmocore lacks support for AoIP
message elements. This patch adds support for AoIP by adding a set
of new gsm0808_create_..., which support the missing AoIP message
elements
Change-Id: I77f866abec1822d19871052f3c647ad782785b34
|
|
|
|
|
|
|
|
|
|
| |
The planned support for true A over IP requires the encoding and
decoding of a so called "Speech Codec Element" element.
This commt adds parsing functionality and tests for the element
mentioned above, however, it is not yet actively used.
Change-Id: I0e1e2edf47adaa45b22d4b0bcae3640dba7ca200
|
|
|
|
|
|
|
|
|
|
| |
The planned support for true A over IP requires the encoding and
decoding of a so called "AoIP Transport Layer Address" element.
This commt adds parsing functionality and tests for the element
mentioned above, however, it is not yet actively used.
Change-Id: I57933b0a06a3f54ec2a41e6ecb6ced9fbbc89332
|
|
|
|
|
|
|
|
| |
Add human-readable names for Message Types from 3GPP TS 52.021 §9.1
Related: OS#1614
Change-Id: Ide8202b4387351f57ceee34a9eb8c30aef09a663
|
|
|
|
|
|
|
| |
Add human-readable names for Attributes from 3GPP TS 52.021 §9.4
Change-Id: I861247c01557dac7e484ef6fb9b170f69c8a7f55
Related: OS#1614
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Composing the message type string requires knowing the protocol discriminator.
To ease printing the message type, add this function to switch between the
defined value_string[]s depending on pdisc.
Also publish the message type value_string[]s -- without inline functions to
access them because it is anyway more convenient to use
gsm48_pdisc_msgtype_name() instead.
Since gsm48_pdisc_msgtype_name() is nontrivial, do not add as inline function
-- in case the message type is not known, it needs a static string buffer.
Change-Id: I0fca8e95ed5c2148b1a7440eff3fc9c7583898df
|
|
|
|
|
|
|
| |
I often want to log the protocol discriminator in the openbsc debug log. It's
more useful to get the name directly instead of looking it up every time.
Change-Id: I0f053e2a4360b27ffccda7cf82469fb1b1cbb3ae
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
There are some projects, such as GR-GSM and OsmocomBB, which would
benefit from using one shared implementation of GSM 05.03 code. So,
this commit introduces a new sub-library called libosmocoding, which
(for now) provides GSM, GPRS and EDGE transcoding routines, migrated
from OsmoBTS.
The original GSM 05.03 code from OsmoBTS was relicensed under
GPLv2-or-later with permission of copyright holders (Andreas Eversberg,
Alexander Chemeris and Tom Tsou).
The following data types are currently supported:
- xCCH
- PDTCH (CS 1-4 and MCS 1-9)
- TCH/FR
- TCH/HR
- TCH/AFS
- RCH/AHS
- RACH
- SCH
Change-Id: I0c3256b87686d878e4e716d12393cad5924fdfa1
|
|
|
|
|
|
|
| |
It is in the public header file and allows to easily bind it from
other languages (without having to go through the abstraction).
Change-Id: I0128d529c52ec030cfb87b0aff3c69cadf2c59d2
|
|
|
|
| |
Change-Id: Ic29b588b72893821d73fe90ecc16c6bf78d5a360
|
|
|
|
| |
Change-Id: If56b521429af497ddd5a47170eb2c085b1fb78ba
|
|
|
|
|
| |
Change-Id: I71413fbe703e459782a235e5b1d8487265de3780
Related: OS#1615
|
|
|
|
|
|
|
|
| |
Add string representation of Probable Cause Type from 3GPP TS 12.21 §
9.4.43.
Change-Id: I9fe14ed3b5398f59dd06a509e4d419e074cc20a7
Related: OS#1615
|
|
|
|
|
|
|
|
| |
Add 3GPP TS 12.21 § 8.8.2 Failure Event Report function which pack given
vararg string and parameters into msgb.
Change-Id: I58c198d8ea588432c62520928b08f0b2a7035e93
Related: OS#1615
|
|
|
|
|
|
|
|
| |
Add human-readable descriptions to event causes from 3GPP TS 12.21 §
9.4.43.
Change-Id: Id173c978616c98b7831fbafb5401064257f1cf73
Related: OS#1615
|
|
|
|
|
|
| |
Add functions to copy and merge parsed TLV structures from OsmoBTS.
Change-Id: Ieaaaed19da9c069fe451faa53d24c5b84d7d5615
|
|
|
|
|
| |
Change-Id: I9c3bc15662949654e7bba6aad5488c69ee7d0c45
Related: OS#1615
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In the process, also:
* Change the license from AGPLv3 to GPLv2-or-later;
* correct spelling of 'sysmocom' to lowercase;
* add '2016' to the copyright;
* rename to osmo_*;
* add API docs;
* add logging category DLOAP: define id and add to internal_cat;
* redirect all oap.c logging to DLOAP.
A unit test will follow in a subsequent patch, since it needs a minor tweak for
decoding of boolean values.
The related openbsc change-id is I2f06aaa6eb54eafa860cfed8e72e41d82ff1c4cf.
Tweaked-by: Neels Hofmeyr
Change-Id: If5099e60681a215e798b6675f21813f26769c253
|