summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Add new osmo_fd_get_by_fd() functionHarald Welte2016-03-192-0/+14
| | | | | | This function can be used to obtain the osmo_fd corresponding to a given fd. The latter can be useful when integrating libosmocore main loop with other libraries.
* sim: Add simplistic unit test for APDU class tablesHarald Welte2016-03-175-2/+76
|
* sim: add class_tables / card profilesHarald Welte2016-03-174-2/+359
| | | | | The tables permit code to determine the APDU class of an APDU based on it APDU/TPDU header (CLA/INS/P1/P2/P3).
* Improve BSSGP debug outputMax2016-03-172-17/+17
| | | | | Print string representation of Cause IE and PDU type instead of numerical value.
* add missing #include <stdbool.h>Harald Welte2016-03-171-0/+1
|
* Rename struct to better match libosmocore conventionsMax2016-03-172-7/+7
|
* Revert "gsm48: move to hex TMSI representation"Harald Welte2016-03-171-1/+1
| | | | This reverts commit f451ce66eb8206bad1078849723edcb209632834.
* gsm48: move to hex TMSI representationVadim Yanitskiy2016-03-171-1/+1
| | | | Signed-off-by: Vadim Yanitskiy <axilirator@gmail.com>
* Add basic EARFCN supportMax2016-03-173-1/+85
| | | | | | Add structure representing group of EARFCNs with common priority, threshold etc. Add functions to populate this structure.
* Add function to add bits from array to bitvecMax2016-03-174-0/+119
| | | | | | | | | Add function which adds specified number of bits from each element of array to the bit vector prefixing each addition with one and finishing entire sequence with adding 0. This is very common patter for various repetitive data structures described with CSN.1 in 3GPP standards. Corresponding test vectors and doxygen headers are added too.
* gsm48: factor out MCC+MNC BCD parsing for re-use in UMTSNeels Hofmeyr2016-03-153-21/+39
| | | | | | | | | | For 3G, I need a BCD composer/parser similar to gsm48_generate_lai()/ gsm48_decode_lai(). Those functions also handle a trivial extra member (lac) which I don't need in this way for 3G. So create new functions to take on the MCC+MNC BCD handling and call those from gsm48_generate_lai() and gsm48_decode_lai(). In this way, the 3G code in openbsc can use only the BCD functionality without code duplication.
* 04.08: add inline funcs for transaction id bitsNeels Hofmeyr2016-03-151-0/+19
| | | | | | Various users of gsm48_hdr apply the same hardcoded shifts/bitmasks to obtain the transaction ID encoded in the upper nibble of the protocol discriminator. Centralize. Patch for openbsc.git will follow.
* 04.08: switch to r99 msg type bitmasks by defaultNeels Hofmeyr2016-03-151-1/+1
| | | | | [hfreyther: Separated from the previous patch to allow an easy revert]
* 04.08: add inline funcs for pdisc + msg type bitmasksNeels Hofmeyr2016-03-152-2/+58
| | | | | | | | | | | | | | | | Add inline functions for both release <= 98 and release >= 99 as well as a default define. Use the release 98 by default since the current code base uses the r98 bitmasks. These inline functions relieve callers of the decision on masking bits of the protocol discriminator and message type octets. Also add a define for the protocol discriminator extension to one octet length (GSM48_PDISC_EXTEND). Apply new pdisc function in gsm0480.c. [hfreyther: Make the hdr param const]
* Add helper function to convert numerical BSSGP PDU type to stringMax2016-03-112-0/+47
|
* Add support for SI2quater messagesMax2016-03-111-0/+7
| | | | Add basic data structure for System information Type 2quater.
* rename osim_file_find_* to osim_file_desc_find_*Harald Welte2016-03-113-7/+9
| | | | they return an osim_file_desc, and not an osim_file, so fix the naming
* sim: Add osim_file_find_{fid,sfid}() functionsHarald Welte2016-03-112-0/+31
| | | | | We don't always want to look-up by name, but the latter is the only implemented 'find' function so far. Let's change that.
* merge_doc.xsl: Don't copy the 'descripiton' element of commandsHarald Welte2016-03-111-1/+3
| | | | | | | If a vty_additions.xml file contained a <description> element inside a command> element, then the description was copied twice (once during the <node> copy, and once during the <command> copy). Let's avoid one of the two copies.
* debian: Make sure that libtalloc-dev is installedHolger Hans Peter Freyther2016-03-051-1/+1
| | | | | This way libosmo-abis, libosmo-sccp, openggsn, openbsc does not need to install it.
* logging: Remove unused variable after recent changesHolger Hans Peter Freyther2016-02-291-1/+0
| | | | | The variable is not used anymore as the decision is done in the newly added check_log_to_target method.
* Merge branch 'sysmocom/shared/log-speed'Holger Hans Peter Freyther2016-02-294-34/+106
|\
| * logging: Move the filter check up as wellHolger Hans Peter Freyther2016-02-293-18/+24
| | | | | | | | | | | | There doesn't seem to be a reason not to check the filter. Update and extend the test. Currently the filter function will be called once for the log check and once for the output of it.
| * logging: Remove some code duplicationHolger Hans Peter Freyther2016-02-291-37/+37
| | | | | | | | | | | | Extract the mapping of the subsystem number and the checking for the loglevel to a inline method that is shared between the new and old.
| * log/test: Extend test case for log_check_levelJacob Erlbeck2016-02-292-1/+11
| | | | | | | | | | | | | | | | This commit adds OSMO_ASSERTs for mandatory conditions related to log_check_level, and fprintfs for optional conditions, since it is always safe for log_check_level to return != 0. Sponsored-by: On-Waves ehf
| * log: Add conditional logging based on log_check_levelJacob Erlbeck2016-02-291-4/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently the LOGP/DEBUGP arguments are always evaluated even if no logging will happen at all. This can be expensive, for instance if hexdumps or pretty printed object names are generated. This causes high base load especially on embedded devices and is a major part of CPU usage e.g. of the osmo-pcu. This commit uses the log_check_level function to avoid the evaluation of the parameters if it is known in advance, that no logging entry will be generated. Sponsored-by: On-Waves ehf
| * log: Add log_check_level functionJacob Erlbeck2016-02-292-0/+40
|/ | | | | | | | | | | | | | | | | | This commit adds this predicate function which can be used to avoid the execution of code if a certain log level is not enabled. The function will only return 0 (false), if it is sure that a logging call for the same facility and level will not produce any output. This safety criterion shall ensure, that no logging output is lost due to the use of this predicate as a guard. On the other hand, even if the predicate returns != 0 (true), no logging output might get generated by a similar logging command. Note that the current implementation is not focussed on performance, which could be improved by using a lookup table instead of iterating through every target. Sponsored-by: On-Waves ehf
* comment typoNeels Hofmeyr2016-02-291-1/+1
|
* fix gsm_7bit_decode API comment: septets, not octetsNeels Hofmeyr2016-02-291-1/+2
|
* Add byte printing macrosMax2016-02-252-12/+22
| | | | | | It's sometimes handy for debugging to be able to immediately see which bits are set in a given byte. Generalize macro used for that in bitvec tests and make it available for the rest of the library.
* vty: add ctrl section for Control interface bind addressNeels Hofmeyr2016-02-255-2/+104
| | | | | | | | | | | | | | | | | | | | | | | This may seem like overkill for a mere const char * config item, but it makes the Control interface VTY commands reusable in any main() scope (inspired by libosmo-abis' VTY config). Add API functions ctrl_vty_init() and ctrl_vty_get_bind_addr(), in new files src/ctrl/control_vty.c and include/osmocom/ctrl/control_vty.h, compiled and/or installed dependent on ENABLE_VTY. Using these functions allows configuring a static const char* with the VTY commands ctrl bind A.B.C.D which callers shall subsequently use to bind the Control interface to a specific local interface address, by passing the return value of ctrl_vty_get_bind_addr() to control_interface_setup(). Add CTRL_NODE to enum node_type, "eating" RESERVED4_NODE to heed that comment on avoiding ABI changes.
* add ctrl_interface_setup_dynip() for bind addressNeels Hofmeyr2016-02-252-1/+13
| | | | | | Make the ctrl interface bind address configurable, so that it may be made available on other addresses than 127.0.0.1. The specific aim is to allow running multiple osmo-nitbs alongside each other (commits in openbsc follow).
* vty: add bind command for telnet vty lineNeels Hofmeyr2016-02-252-0/+31
| | | | | | | | | | | | | | | | | | | | Add VTY command line vty bind A.B.C.D The command merely stores the configured IP-address, which can then be used by the calling main program to set the telnet port of the VTY line. (Commits in openbsc and osmo-iuh will follow up on this.) Add function vty_get_bind_addr() to publish the address in the vty.h API. Add static vty_bind_addr to store. For allocation/freeing reasons, a NULL address defaults to 127.0.0.1. BTW, I decided against allowing keywords 'any' and 'localhost' in place of an actual IP address to make sure a written config is always identical to the parsed config.
* Extend L1SAP PH-DATA with presence informationMax2016-02-222-0/+12
| | | | | | | | | Previously the presence of header and data blocks were communicated in-band which decreases code readability and makes it unnecessary hard to add support for new hardware. Note: OsmoBTS have to be modified to take advantage of extended ph_data_param structure.
* gb: Add bssgp_msgb_copy functionJacob Erlbeck2016-02-225-0/+70
| | | | | | | | | | | | | | This function originates from openbsc/src/gprs but is just specific to BSSGP/Gb on the same level like bssgp_msgb_alloc. This commit puts the former gprs_msgb_copy function beside bssgp_msgb_alloc. Renamed function: gprs_msgb_copy -> bssgp_msgb_copy Sponsored-by: On-Waves ehf
* bitvec: Untested speculative UBAN fix for the new routineHolger Hans Peter Freyther2016-02-181-1/+1
| | | | | | | | int << 31 does not seem to be defined, let's try to make it an unsigned variable and see if that is pleasing the system. Fixes: bitvec.c:219:15: runtime error: left shift of 1 by 31 places cannot be represented in type 'int'
* Add T4 bit map compression routinesMax2016-02-189-3/+631
| | | | | | | | | | | | | | | Add bit map encoder and decoder functions: decoder is fully functional while encoder is good enough for testing - no backtracking to find the best possible compression is implemented. If somebody is willing to implement MS side of EDGE than this has to be expanded. Add corresponding tests. N. B: the encoding is implemented according to ETSI TS 44.060 which is slightly different from T4 used for fax according to CCITT G31D (RFC 804). Ticket: OW#2407 Sponsored-by: On-Waves ehf Signed-off-by: Max <msuraev@sysmocom.de>
* Expand bitvec interfaceMax2016-02-184-7/+396
| | | | | Add bit filling, shifting and other functions necessary for bit compression implementation. Add corresponding tests.
* Add CSCN ctrl port defsNeels Hofmeyr2016-02-152-0/+2
|
* add vty port nr for osmo-cscnNeels Hofmeyr2016-02-101-0/+1
|
* bivec: Fix the output of the testcaseHolger Hans Peter Freyther2016-01-302-12/+16
| | | | | | | | | | | | | | osmo_hexdump_nospc/osmo_hexdump is an old school C routine with a static internal array. This means that printf will most likely one of the two strings twice. For Linux/glibc this is the first string (for whatever reason?) and for FreeBSD it is the last call of the osmo_hexdump_nospc. We could have noticed by both strings being of the same length besides the different length input. The second issue is that we cast a hexstring to uint8_t and dump the string as hex. So the two strings should not match at all. Fix it by printing the hex string as plain hex and separating the two printf calls. Update the test output.
* bitvec: Test and fix regression for C++->C conversionHolger Hans Peter Freyther2016-01-304-11/+42
| | | | | | | | | | | | | bitvec_read_field/bitvec_write_field in the PCU used a C++ reference and when porting to C it was decided to pass the parameter by value and this lost the "back propagation" of the new index. Change the parameter to be an in/out parameter and this way do not have a silent semantic break in the osmo-pcu (where we copy the reference in csn.1 by value) and have a true compile failure. Add Max's simple test for bitvec_unhex function leaving the checking of bitvec_read_field and the side effect in the datastructure about the number of bits still open.
* Add doxygen comments to clarify function useMax2016-01-301-1/+14
|
* bitvec: Fix build on older gccHolger Hans Peter Freyther2016-01-271-1/+3
| | | | | | bitvec.c: In function 'bitvec_unhex': bitvec.c:389: error: 'for' loop initial declarations are only allowed in C99 mode bitvec.c:389: note: use option -std=c99 or -std=gnu99 to compile your code
* Add bitvec-related functions from Osmo-PCUMax2016-01-262-0/+104
| | | | | | Allocation, pack/unpack, field access and helper routines used extensively by Osmo-PCU. Whenever memory allocation happens, alocator context is passed explicitly by caller.
* test: Fix compiler warnings on 64bit systemsHolger Hans Peter Freyther2015-11-096-17/+18
| | | | | | Use %td to print ptrdiff_t use %zu to print size_t, include time.h on FreeBSD. Some more compiler warnings are left but they require more thinking.
* ipa: recv is declared in different headers on BSDHolger Hans Peter Freyther2015-11-091-0/+2
| | | | | | | | Include the headers mentioned by the manpage ipa.c:346:9: warning: implicit declaration of function 'recv' is invalid in C99 [-Wimplicit-function-declaration] ret = recv(fd, msg->tail, needed, 0);
* vty: Use NULL to have a null pointer instead of '\0'Holger Hans Peter Freyther2015-11-091-3/+3
| | | | | | | | | | | | | | | | | | '\0' gets translated to zero but the argument to vector_set is a pointer and it gets converted to a pointer. vty.c:985:21: warning: expression which evaluates to zero treated as a null pointer constant of type 'void *' [-Wnon-literal-null-conversion] vector_set(vline, '\0'); ^~~~ vty.c:1095:21: warning: expression which evaluates to zero treated as a null pointer constant of type 'void *' [-Wnon-literal-null-conversion] vector_set(vline, '\0'); ^~~~ vty.c:1097:21: warning: expression which evaluates to zero treated as a null pointer constant of type 'void *' [-Wnon-literal-null-conversion] vector_set(vline, '\0'); ^~~~
* Ignore test binariesMax2016-01-221-0/+3
|
* bitvec: Fix interface to consistently use unsigned intMax2016-01-222-12/+12
| | | | | | | Use unsigned int for the length throughout the interface. We will never have a a negative length. Sponsored-by: On-Waves ehf