Commit Graph

57 Commits

Author SHA1 Message Date
Vadim Yanitskiy 3262f820b5 libosmocoding: migrate transcoding routines from OsmoBTS
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
2017-03-07 01:06:38 +07:00
Vadim Yanitskiy 804c4c7d42 utils/conv_gen.py: add header generation feature
Change-Id: Iae830d716f01810972edbef14fc5383ac647d0ea
2017-03-06 17:06:45 +00:00
Vadim Yanitskiy e9a90ee0d5 utils/conv_gen.py: add test vectors generation feature
Change-Id: Ie10c47ee952f253b1ba77ecf6e79f2c033545bc1
2017-03-06 17:06:45 +00:00
Vadim Yanitskiy 2c717948d9 utils/conv_gen.py: improve application flexibility
This change makes the conv_gen application more interactive
and flexible, allowing to generate not only code definitions
but also the test vectors and header files in the future.
Moreover, it becomes possible to select exact code family,
such as GSM, GMR etc.

Change-Id: I0b476b00234c17f78b41d695cf3bfd13edb64c28
2017-02-09 06:39:58 +00:00
Harald Welte f12d40f4df fix various compiler warnings (on FreeBSD-11.0)
FreeBSD 11.0 uses clang version 3.8.0 which spits various warnings
during libosmocore compilation.  Let's clean this up a bit.

Change-Id: Ic14572e6970bd0b8916604fabf807f1608fa07e5
2017-02-08 16:49:14 +01:00
Neels Hofmeyr 18d65be080 osmo-auc-gen: cmdline help: list algorithms; error messages
In the -h help output, list the names of available algorithms.

In case of option parsing failure, also print help() (so that e.g. for a typo
in the algorithm, the list of algorithms is printed along with the error
message).

If there are -2/-3 or -a missing, show an error message that explains this.

Change-Id: I76732b28d7a553a6293d1707fe398d28b5ef4886
2017-02-06 13:47:17 +00:00
Neels Hofmeyr 94e04604fc osmo-auc-gen: cosmetic: clarify output upon AUTS
When calculating a re-sync vector using AUTS, osmo-gen-vec used to print
SQN.MS + 2, the new SQN after vector generation, labeled 'SEQ.MS'.

Firstly, s/SEQ/SQN.

Secondly, print SQN.MS as umts.sqn - 2, which is the actual SQN recovered from
the AUTS. As explained in the comment, SQN.MS + 1 is used to generate the
vector, and then umts.sqn is increased a second time to indicate the next SQN.

With AUTS calculated from SQN.MS == 23, the output was:

  AUTS success: SEQ.MS = 25

Output now:

  AUTS success: SQN.MS = 23, generated vector with SQN = 24, next SQN = 25

Change-Id: I881bbe8246a5e7d3a5065b4b5b533255723b1a9e
2017-02-04 14:46:19 +00:00
Neels Hofmeyr 8352d31a86 GSUP, OAP, osmo-gen-vec: fix AUTS length to 14, not 16
GSUP transmits AUTS for UMTS authentication procedures, and OAP uses the same
procedures to authenticate. osmo-gen-vec is a utility program that passes AUTS
to our osmo_auth_gen_vec_auts() API.

According to 3GPP 33.102 6.3.3, AUTS = SQN^AK || MAC-S, which are 6 || 8 == 14
bytes. This is confirmed by 24.008 9.2.3a where the TLV has 16 bytes, TL = 2
and AUTS being the V = 14.

It is not harmful for milenage_gen_vec_auts() to pass two more AUTS bytes. But
writing 16 bytes to a GSUP struct is a potential problem when passing in a 14
byte long AUTS buffer to the GSUP API, which then reads past the AUTS buffer.
The API implies the length, so far to be 16, so passing in a 14 byte buffer to
GSUP would require copying to a larger buffer first.

Fix this by using a length of 14 for AUTS everywhere instead.

This constitues an ABI breakage, we may handle it as a "fix before an official
release", otherwise we need a version bump.

The OAP protocol document has also been updated, needs an update in the
osmo-gsm-manuals as well.

Change-Id: If25b173d9ec57ea4c504d860954912b7d82af455
2017-02-02 20:34:16 +01:00
Vadim Yanitskiy 15492bcb26 utils/conv_gen.py: separate code definitions
This change separates the convolutional code definitions from the code
generator logic, allowing us to make further changes in more specific
way. For example, adding some new codes, you change the conv_codes.py
only because such change isn't related to the generator.

Change-Id: I3428561251b7d7a180d1e9b6fcaad50bdbbc37fa
2016-12-24 17:12:49 +00:00
Vadim Yanitskiy 6431adde78 utils/conv_gen.py: use shared tables if possible
This change introduces the memory usage optimization, mentioned
in d2d9760c08. The aim is to make
code generator able to detect, whether the same tables are used
by several convolutional code definitions, and prevent one from
writing these tables multiple times.

For now, the detection process isn't fully automatic, so all
shared polynomials should be placed inside the 'shared_polys'
dictionary, for example:

shared_polys = {
	"xcch" : [
		( G0, 1 ),
		( G1, 1 ),
	],
	"mcs" : [
		( G4, 1 ),
		( G7, 1 ),
		( G5, 1 ),
	],
}

Change-Id: I84760f5cdfdaece376b801d2e6cb2954ee875a3b
2016-12-24 17:12:49 +00:00
Harald Welte 9533631e53 osmo-sim-test.c: Fix rmsg check
we wanted to check for !rmsg, but used to check for !msg, missing error
returns from read_record_nr().

Change-Id: I79b6a94b1aa947c8329317b0626865c3cd4159c1
Fixes: Coverity CID 57672
2016-11-26 14:03:04 +01:00
Vadim Yanitskiy f9c2c56c7d utils/conv_gen.py: explicitly import reduce()
This change finally makes the script able to be executed
in Python 3 environment. Due to new Python 3 restrictions,
the reduce() should be imported explicitly.

Change-Id: Icbc81c29f1a226aeed2c1245a5d60809fe124005
2016-11-02 08:37:55 +00:00
Vadim Yanitskiy 45ebc523c6 utils/conv_gen.py: don't mix print and write()
This is mostly a code style change, but it also
increases the compatibility with Python 3.

Change-Id: I5c8271d973f766aeb9cbcab30c4eddfdab54fcbb
2016-11-02 08:37:55 +00:00
Vadim Yanitskiy a6b5216ab4 utils/conv_gen.py: add EDGE MCS 1-9 definitions
Change-Id: Ie1452342f524a8b60f2babc07398a1d9c9e06aa3
2016-10-23 07:38:16 +00:00
Vadim Yanitskiy 84fc2ce210 utils/conv_gen.py: fix some typos
Change-Id: I3327b92715744af4ef61496ef0121555d9d24799
2016-10-23 07:38:16 +00:00
Vadim Yanitskiy f3d38c4937 utils/conv_gen.py: add RACH, SCH and TCH/AHS definitions
Change-Id: I0ea7151f4e8119a8798a9e129b951559e56b0d93
2016-10-23 07:38:15 +00:00
Vadim Yanitskiy 6908fa783d utils/conv_gen.py: improve output formatting
To keep the generated tables readable, line with should be limited.
So, now there are the following limitations:

 - _print_term(): up to 12 numbers per line,
 - _print_puncture(): up to 12 numbers per line,
 - _print_x(): up to 4 blocks per line.

Change-Id: I95256c4ad402a3c088bdb6c5a5cda8b17c31881c
2016-10-23 07:38:15 +00:00
Vadim Yanitskiy d2d9760c08 utils/conv_gen.py: generate a single file
Instead of generating every convolutional code into a separate
file (such as conv_xcch_gen.c, conv_cs3_gen.c), it is better to
have a single file, containing all definitions, because as many
convolutional codes we add, as many entries we will have to add
into 'src/gsm/Makefile.am'. This approach increases readability
of the Makefile.am, and also makes us able to share some data
between some convolutional code definitions.

For example: xCCH, RACH, SCH, TCH/F, both CS2 and CS3 may use
the same *_state[][2] and *_output[][2] arrays within a single
file. This optimization is currently WIP.

Change-Id: Ib4e4ee5fdde38429e68e3b2fa50ec03a18f59daa
2016-10-23 07:38:15 +00:00
Vadim Yanitskiy e31cf8057f utils/conv_gen.py: code style changes (line width, tabs, etc.)
Change-Id: I8550910b9f5c16efc6f15f23c7ee52122c588752
2016-09-24 03:37:52 +00:00
Harald Welte 4f511b67fd osmo-auc-gen: Print hex values without intermittent spaces
When generating some authentication vectors using the osmo-auc-gen
utility, it used to print values like this:

AUTN:   f7 55 bc 47 de d0 00 00 f9 ed 4b 3f 6c 2a 97 6f

which is quite difficult to copy+paste on the terminal.  Now it
generates the following format:

Change-Id: I2805615e0c2087ca632e0658b37a9e06929620b6
AUTN:   f755bc47ded00000f9ed4b3f6c2a976f
Reviewed-on: https://gerrit.osmocom.org/164
Reviewed-by: Harald Welte <laforge@gnumonks.org>
Tested-by: Jenkins Builder
2016-06-01 12:10:41 +00:00
Holger Hans Peter Freyther 3a96d2837c conv_gen: Use python2 to execute the script
The script does not work with python3:

$ python3 utils/conv_gen.py
  File "utils/conv_gen.py", line 124
    def _print_term(self, fi, num_states, pack = False):

Second there is no 'python' on FreeBSD and one needs to select
the major version to use.

  GEN      conv_cs3_gen.c
  GEN      conv_xcch_gen.c
  GEN      conv_cs2_gen.c
python: not found
python: not found
python: not found

By using python2 we solve both issues. On Debian python2 is located
inside the python-minimal package.
2016-04-29 21:24:48 +02:00
Harald Welte eea18a6f29 add two missing files (gsm0503.h / conv_gen.py) to previous commit 2016-04-29 15:18:35 +02:00
Harald Welte 5ffb50371e rename osim_file_find_* to osim_file_desc_find_*
they return an osim_file_desc, and not an osim_file, so fix the naming
2016-03-11 22:05:25 +07:00
Harald Welte 49a8f88565 utils: add TALLOC_CFLAGS to build
this is an attempt to fix the FreeBSD build
2015-12-08 14:14:29 +01:00
Alexander Huemer aab4a2497c osmo-sim-test: add missing include 2015-11-07 12:30:38 +01:00
Holger Hans Peter Freyther 91ff17c9ef osmo-auc-gen: '-a' is already the algorithm. Fix the help 2015-05-26 00:11:37 +08:00
Andreas Rottmann 9eb1c80020 build: Fix out-of-tree builds
Fixes:
In file included from ../../../include/osmocom/core/msgb.h:25:0,
                 from ../../../include/osmocom/sim/sim.h:4,
                 from ../../../src/sim/reader_pcsc.c:30:
../../../include/osmocom/core/bits.h:6:35: fatal error: osmocom/core/bit16gen.h: No such file or directory
 #include <osmocom/core/bit16gen.h>

In file included from ../../include/osmocom/core/msgb.h:25:0,
                 from ../../utils/osmo-sim-test.c:26:
../../include/osmocom/core/bits.h:6:35: fatal error: osmocom/core/bit16gen.h: No such file or directory
 #include <osmocom/core/bit16gen.h>
2015-05-17 19:19:09 +02:00
Holger Hans Peter Freyther 18bcc8ab62 pcsc: Allow to disable the PCSC dependency
* PCSC is enabled by default
* --enable-pcsc is enabling it
* --disable-pcscis disabling it
* Fix the makefile of the utilities to not build pcsc and
use the right header files/libraries.
2014-11-14 15:06:09 +01:00
Harald Welte d6ec984c51 osmo-sim-test: Fix read_binary() return check
if we expect rmsg to be set, we should check for it...
2014-10-27 20:46:40 +01:00
Harald Welte 55790aa09a sim: Prepare infrastructure for protocols != T=0 and other drivers 2014-10-26 19:50:51 +01:00
Harald Welte 3fc3f068b3 sim: Make osmo-sim-test compile again 2014-10-26 19:09:23 +01:00
Harald Welte 7674960ffa sim: add decoding of status words 2014-10-26 19:09:23 +01:00
Harald Welte a5c9255baa sim: strip the SW from the returned data, as SW is passed in msgb->cb 2014-10-26 19:09:22 +01:00
Harald Welte ad41863b8d sim: add copyright notices and merge file_codec.c into core.c 2014-10-26 19:09:22 +01:00
Harald Welte a0ba4d9438 sim: osmo-sim-test: Also dump binary files 2014-10-26 19:09:22 +01:00
Harald Welte d54c2ee8c5 initial checkin of 'libosmosim' 2014-10-26 19:09:22 +01:00
Jan Engelhardt 9ffeb9756a build: remove unused all_includes and use AM_CPPFLAGS
Preprocessor flags are best placed in AM_CPPFLAGS. Remove use of the
unused all_includes variable, which is never set.
2014-10-03 08:48:31 +02:00
Jan Engelhardt a6d83932ba utils: resolve compiler warnings on implicit declarations
CC       osmo-auc-gen.o
	osmo-auc-gen.c: In function 'main':
	osmo-auc-gen.c:216:3: warning: implicit declaration of function
	'time' [-Wimplicit-function-declaration]
2014-10-03 08:46:47 +02:00
Holger Hans Peter Freyther 17aa6b25cb osmo-auc-gen: Fix compiler warnings about aliasing
I ran "./utils/osmo-auc-gen -2 -a COMP128v1" and verified that
the RAND doen't look empty

Fixes:
osmo-auc-gen.c: In function ‘main’:
osmo-auc-gen.c:219:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
   *(uint32_t *)&_rand[0] = rand();
   ^
osmo-auc-gen.c:220:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
   *(uint32_t *)(&_rand[4]) = rand();
   ^
osmo-auc-gen.c:221:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
   *(uint32_t *)(&_rand[8]) = rand();
   ^
osmo-auc-gen.c:222:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
   *(uint32_t *)(&_rand[12]) = rand();
2014-06-22 16:53:55 +02:00
Holger Hans Peter Freyther a652abc5bf utils: Fix compiler warnings n the osmo-auc-gen utility
osmo-auc-gen.c:217:3: warning: implicit declaration of function ‘time’ [-Wimplicit-function-declaration]
osmo-auc-gen.c:249:3: warning: format ‘%lu’ expects argument of type ‘long unsigned int’, but argument 2 has type ‘uint64_t’ [-Wformat]

Fixes: Coverity CID 1040668
2013-07-14 09:14:37 +02:00
Holger Hans Peter Freyther d0ce550251 osmo-arfcn: Return something from the method
This is a fatal error when building RPMs for OpenSUSE.
2013-04-21 21:04:19 +02:00
Sylvain Munaut 5689a3b744 build: Don't use the deprecated INCLUDES in the various Makefile.am
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2012-12-11 23:59:31 +01:00
Sylvain Munaut c44310e351 utils/osmo-arfcn: Implement option to get ARFCN from frequency
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2012-12-11 23:45:03 +01:00
Harald Welte 6e264ae3cd osmo-arfcn: add support for PCS band 2012-12-06 20:58:35 +01:00
Harald Welte 6643386f3f actually install osmo-arfcn and osmo-auc-gen as part of 'make install' 2012-11-16 21:36:17 +01:00
Harald Welte b53717f418 Add missing includes to timer_test.c and osmo-auc-gen.c
This fixes the build with -Werror-implicit-function-declaration.

taken from malformatted patch of Chí-Thanh Christopher Nguyễn <chithanh@gentoo.org>
2012-08-02 08:42:59 +02:00
Harald Welte 57799ed87f osmo-auc-gen: Add "-I" mode for generating triplets.dat for strongswan
If you want to use eap-sim-file with strongswan, you need a triplets.dat
file in a specific format.  osmo-auc-gen can now generate the respective
format automatically.
2012-06-27 15:06:19 +02:00
Harald Welte cebf3f0d3c osmo-auc-gen: Add mode for verifying user-supplied AUTS
When -A is used on the command line, the respective AUTS value
will be validated and the SQN of the UICC printed.
2012-03-22 16:45:23 +01:00
Harald Welte bc6f56c221 update copyright notice 2012-03-21 23:15:32 +01:00
Holger Hans Peter Freyther 0f5f93d2db osmo-auc-gen: Add -O to the getop line to make it work 2012-03-21 21:38:42 +01:00