aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)AuthorFilesLines
2014-03-04lapd/test: Check for empty ACCH queue, tooJacob Erlbeck1-0/+2
This just adds a single test to verify that the ACCH queue is actually empty. Sponsored-by: On-Waves ehf
2014-03-04lapd/test: Extend test case to test msgs having data before l2hJacob Erlbeck2-4/+16
Since e.g. the IPA input driver leaves it's specific header in front of msg->l2h, so that msg->l2h != msg->data. The lapdm code does not expect this at least in rslms_rx_rll_est_req(). This patch modifies the test program to add a dummy L1 header to generated messages (unless the test would abort when doing so). Note that the ok file reflects the current state which is not correct. Sponsored-by: On-Waves ehf
2014-03-04lapd/test: Show dequeued messagesJacob Erlbeck2-32/+72
This adds and uses a wrapper for lapdm_phsap_dequeue_prim() that prints information about the message that has been taken from the queue.
2014-03-04msgb: Add msgb_hexdump() functionJacob Erlbeck2-0/+50
This function works like osmo_hexdump() and returns a static buffer containing hex bytes along with markers for the layers. Note that it uses osmo_hexdump() internally, thus a call to msgb_hexdump() invalidates the buffer that has been returned by an earlier call to osmo_hexdump(). In short: don't mix them in a single call printf(). Sponsored-by: On-Waves ehf
2014-02-09lapd: Use the right struct for the talloc_zero_array callHolger Hans Peter Freyther1-2/+2
I saw this while playing with talloc pools and wondered why lapd_core is creating a log_info. Use the right struct for the array.
2014-02-08sms: The msg_ref is passed from the outside so remove the wrong fixmeHolger Hans Peter Freyther1-1/+1
2014-01-26lapd/test: Add test case for RSL EST REQ -> LAPDJacob Erlbeck2-15/+112
This test case processes RSL establish requests for SMS (SAPI 3) on the SDCCH and the SACCH channels. The TX queues are checked after processing each message. Ticket: SYS#192 Sponsored-by: On-Waves ehf
2014-01-23lapdm: Fix typo in the commentHolger Hans Peter Freyther1-1/+1
2014-01-20debian: Build the new upstream version of libosmocoreHolger Hans Peter Freyther1-1/+7
2014-01-13gsm/gsm48ie: Fix range 256 W[i] decoding0.6.5Jacob Erlbeck1-4/+4
Currently w[14]/w[15] and w[18]/w[19] are swapped in range 256 format decoding in gsm48_decode_freq_list(). This patch fixes this. Sponsored-by: On-Waves ehf
2014-01-09sms: Fix gsm_7bit legacy functions return valueJacob Erlbeck4-6/+44
The legacy 7bit conversion functions (those without the '_n_' in the name) gave wrong return values on 64 bit platforms due to unproper signed/unsigned conversions and the usage of SIZE_MAX. This patch fixes this by using a smaller max size (see GSM_7BIT_LEGACY_MAX_BUFFER_SIZE, currently set to 64k) for the legacy wrappers and by using unsigned int for max_septets. In addition, there are tests now that check the return values of legacy encoding and decoding. Sponsored-by: On-Waves ehf
2014-01-02abis: Use the right return value for abis_nm_pchan4chcombHolger Hans Peter Freyther2-2/+2
abis_nm_pchan4chcomb will return a pchan for a given channel combination but returned a value of the channel combination. Fix it to return the physical channel combination. Fixes: Coverity CID 1040767
2014-01-02utils: Greatly improve performance of osmo_hexdump routinesNils O. SelÄsdal2-6/+14
In the osmo-bts and libosmo-abis code the hexdump routine is used for every incoming/outgoing packet (including voice frames) and the usage of snprintf showed up inside profiles. There is a semantic change when more than 4096 characters are used. The code will now truncate at byte boundaries (and not nibbles). Code: static const int lengths[] = { 23, 1000, 52 }; char buf[4096]; int i; for (i = 0; i < 30000; ++i) char *res = osmo_hexdump(buf, lengths[i & 3]); Results: before: after: real 0m3.233s real 0m0.085s user 0m3.212s user 0m0.084s sys 0m0.000s sys 0m0.000s
2014-01-02utils: Add a simple testcase for osmo_hexdumpHolger Hans Peter Freyther4-2/+64
This code makes a simple dump and tests for the corner case
2013-12-29logging: Copy the filter_fn and fix the IMSI filter in OpenBSCHolger Hans Peter Freyther2-0/+18
The filter_fn has not been copied into the new structure breaking the imsi and other filters in OpenBSC. Looking at the code we should also introduce a callback for the reset of the context so we could use subscr_get/subscr_put on the subscriber structure.
2013-12-12debian: Enable hardening options for debianHolger Hans Peter Freyther1-0/+2
2013-12-07Refactor COMP128v23 implementation and add test suitMax8-42/+4216
2013-11-22gb: Remove comment about ABI changes from the MakefileHolger Hans Peter Freyther1-3/+0
Okay. this comment thing has not worked (I totally forgot about it). I think either we try to find ABI breakages with tools or we use #error macros and check for a version...
2013-11-11debian: Update the changelogJacob Erlbeck1-1/+7
Sponsored-by: On-Waves ehf
2013-11-11gprs: Fix VTY NSVC initialisation bug by changing gprs_nsvc_create()Jacob Erlbeck1-3/+3
Currently the field nsvci_is_valid is set to 0 in the NSVC object returned by gprs_nsvc_create(). This was a semantic change probably introduced by commit 5e6d679d. As a result, NSVC created via the VTY have this flag set to 0 causing RESET_ACK messages to be rejected. This patch changes the default behaviour of gprs_nsvc_create() to always set this flag. So it must be set to 0 explicitely if needed which is more intuitive and thus less error prone. It fixes breaking connections from the Gbproxy to the SGSN. Ticket: OW#874 Sponsored-by: On-Waves ehf
2013-11-03implement COMP128 version 2 and 3 A3/A8 algorithmKevin Redon5-5/+264
simple copy into C from reversed code from www.hackingprojects.net
2013-10-30gprs: Ignore NS RESET_ACK and ALIVE_ACK without RESETJacob Erlbeck2-6/+17
Currently those messages are answered by a NS_STATUS message when received on an uninitialised (no NS_RESET hat been seen yet) NS_VC which violates GPP TS 08.16 7.3.1 and 7.4.1. This patch adds checks to gprs_ns_vc_create() and eventually returns before the error NS_STATUS message is generated. Sponsored-by: On-Waves ehf
2013-10-30grps: Add test for NS messages that shall be ignoredJacob Erlbeck2-0/+55
Several messages shall not be answered when a RESET hasn't been received on a NS-VC: - NS_RESET_ACK (see 3GPP TS 08.16, 7.3.1) - NS_ALIVE_ACK (see 3GPP TS 08.16, 7.4.1) - NS_STATUS (see 3GPP TS 08.16, 7.5.1) Sponsored-by: On-Waves ehf
2013-10-26lapd: Extend the test to check if lapdm_channel_exit is idempotentHolger Hans Peter Freyther1-0/+10
I have a crash with an older libosmocore and the sysmobts. I am not sure how we can have a release for a channel where the lapdm_channel has not gone through lapdm_channel_init. But to prevent the crash we can promise lapdm_channel_exit to be idempotent. It has been idempotent since f5a079f739c57d8be7c59149fd45475c402a45fc
2013-10-25gprs: Address coverity warning for gprs_ns_tx_status resultHolger Hans Peter Freyther1-8/+10
Add a #define for the check and use this in this path as well. Fixes: Coverity CID 1103092
2013-10-25gprs: Address coverity warning on unchecked return of gprs_ns_tx_reset_ackHolger Hans Peter Freyther1-1/+5
Fixes: Coverity CID 1111545
2013-10-25gprs: Address coverity warning on unchecked return of gprs_ns_tx_statusHolger Hans Peter Freyther1-1/+4
We could consider creating a CHECK MACRO that will print a message in case of a tx failure. Fixes: Coverity CID 1111544
2013-10-25gprs: Make sure that the buf is NULL terminated at the endHolger Hans Peter Freyther1-0/+1
Fixes: Coverity CID 1107253
2013-10-25debian: Update the changelogHolger Hans Peter Freyther1-1/+2
2013-10-24gb: Create new NSVC object instead of patching the NSVCIJacob Erlbeck3-16/+40
When a RESET is received on the same link with a different NSVCI from a BSS on a dynamically created NS connection do not patch the nsvc object but create a new one instead. Thus the NSVCI is never modified at a nsvc object after the NS-VC has been established. Sponsored-by: On-Waves ehf
2013-10-24gb: Fix RESET handling with changing NSEIJacob Erlbeck2-50/+67
This modifies the NS stack's behavior to accept RESET and RESET_ACK NSEI changes for NS-VC dynamically created by RESET messages from BSSes. This feature is not used for NS-VC configured via VTY or NS-VC to a SGSN. Sponsored-by: On-Waves ehf
2013-10-24gb: Fix NS RESET/RESET_ACK abnormal casesJacob Erlbeck4-157/+294
This changes the implementations for the reception of RESET and RESET_ACK to be compatible with 3GPP TS 08.16, 7.3.1: - Just send a RESET_ACK with correct values back to the SGSN when a RESET with an invalid NSVCI or NSEI has been received. - Check RESET_ACK for matching NSEI and NSVCI. - Ignore unexpected RESET_ACKs. In addition, use RESET_ACK from a BSS to update the BSS source address based on the NSVCI to be tolerant with changing UDP source addresses/ports. Sponsored-by: On-Waves ehf
2013-10-24gb: Add test cases for NS RESET proceduresJacob Erlbeck2-0/+703
Add a test handling proper and mismatching RESETs. The latter may occur, when ports change within a NS-VC without the SGSN getting notice. This tests for the behavior of the NS protocol stack for RESET and RESET_ACK messages which changing/invalid NSEI and NSVCI like it is being described in 3GPP TS 08.16, 7.3.1. Sponsored-by: On-Waves ehf
2013-10-24gb: Fix gprs_nsvc_delete() to free ctr groupJacob Erlbeck3-0/+128
This fixes a SEGV error that happens the next time the statistics are updated. Addresses: Program terminated with signal 11, Segmentation fault. #0 0xb7711fa5 in rate_ctr_group_intv (grp=<optimized out>) at rate_ctr.c:107 107 for (i = 0; i < grp->desc->num_ctr; i++) { #0 0xb7711fa5 in rate_ctr_group_intv (grp=<optimized out>) at rate_ctr.c:107 #1 rate_ctr_timer_cb (data=0x0) at rate_ctr.c:129 #2 0xb770ec59 in osmo_timers_update () at timer.c:243 #3 0xb770ef7a in osmo_select_main (polling=0) at select.c:133 #4 0x08049987 in main (argc=3, argv=0xbfba8084) at gb_proxy_main.c:306 Sponsored-by: On-Waves ehf
2013-10-24gb/vty: Fix the VTY node string for L_NS_NODEJacob Erlbeck1-1/+1
Use 'config-ns' instead of plain 'ns' and append a blank after the '#' to make the vty python test script work. Sponsored-by: On-Waves ehf
2013-10-24gb/vty: Perform NS-VC operations based on NS-VCIJacob Erlbeck1-5/+15
This adds a 'nsvc nsvci <0-65535> (block|unblock|reset)' vty command. It selects the NS-VC based on the nsvci instead of using the first with a matching NSEI, like it is done when the 'nsei' keyword is used instead. Sponsored-by: On-Waves ehf
2013-10-17misc: Ignore generated filesHolger Hans Peter Freyther1-0/+2
* compile is generated by newer automake * ignore the test binary
2013-10-17debian: Bump the changelog for some new packagesHolger Hans Peter Freyther1-1/+2
2013-10-17gb: Fix gprs_active_nsvc_by_nsei()Jacob Erlbeck2-12/+12
The state matching condition is inverted. This is corrected by this fix. Sponsored-by: On-Waves ehf
2013-10-17gb: Test sending messages to the SGSNJacob Erlbeck2-53/+418
This adds tests for the gprs_ns_sendmsg() function. For this it merges back functions from the gbproxy test. Sponsored-by: On-Waves ehf
2013-10-15release: Prepare the 0.6.4 release of libosmocore0.6.4Holger Hans Peter Freyther4-4/+10
New interfaces and ABI incompatible changes in the GB library
2013-10-15ussd: Fix text of RELEASE COMPLETEAlexander Huemer1-1/+1
Before the assigned value (0xFF) was truncated, reg->text[0] is of type char. A corresponding test for the same value in openbsc could only fail.
2013-10-15gb: Fix gprs_ns_rx_reset to not create NS-VC duplicatesJacob Erlbeck4-77/+187
Under special circumstances (see below) receiving a NS-RESET leads to duplicated NS-VC entries. This happens when the source port of a NS-VC changes to a new one that has already been used by another NS-VC. This patch changes gprs_ns_rx_reset() to check for this case and to use the existing NS-VC object. The NS-VC object that was associated with the source address before is detached from this source but kept in the NS-VC list so that it can be reattached when a correspondent NS-RESET is received later on. Meanwhile it will have a cleared link layer address which will not match a real link info. A new counter NS_CTR_REPLACED is incremented each time when the NS-VC object is replacing another one. A new signal S_NS_REPLACED is added which gets dispatched in this case, too. Another new counter NS_CTR_NSEI_CHG is incremented each time when the NSEI of a NS-VC object (with fixed NSVCI) changes. Ticket: OW#874 Sponsored-by: On-Waves ehf
2013-10-15gb: Add functions to access the LL part of the NS-VC objectsJacob Erlbeck4-12/+52
Adds the functions gprs_ns_ll_copy() and gprs_ns_ll_clear(). Renames gprs_ns_format_peer() to gprs_ns_ll_str(). All of these functions uniformly access the link layer part within the NS-VC objects. Sponsored-by: On-Waves ehf
2013-10-14gb: When sending on a NS-VC group use the first active NS-VCJacob Erlbeck1-18/+29
Currently this first NS-VC with a matching NSEI is always used to send a UNITDATA message via gprs_ns_sendmsg(). If the NS-VC found is either dead or blocked, an error is returned. This patch changes to code to skip blocked or dead NS-VCs while searching and return the error if no usable NS-VC is found. This makes it possible to have several NS-VCs per connection group. Sponsored-by: On-Waves ehf
2013-10-11tests/gb: Show invoked signals in test outputJacob Erlbeck4-1/+57
Register an osmo signal handler to print a short notice about every SS_L_NS signal that is generated while processing the tests. Sponsored-by: On-Waves ehf
2013-10-10vty: Make vty_event dispatch signals and use it in the testcaseHolger Hans Peter Freyther4-5/+45
The testcase didn't work on Ubuntu 12.04 because vty_create will directly call vty_event (e.g. not through the plt). This means that the approach to override vty_event in the testcase failed. Use the signal interface of libosmocore and make the testcase use it. The signals can be generally useful as well.
2013-10-10debian: Print test results in case of a failureHolger Hans Peter Freyther1-0/+4
2013-10-08gb: Use the NS-VCI to find an existing NS-VCJacob Erlbeck2-7/+8
Currently when a NS-RESET is recevied over a link that has not yet been associated with a NS-VC, the NSEI is used to find an existing NS-VC. If one is found, the reset procedure is initiated. This behaviour is not conformant with 3GPP TS 08.16 (see chapter 4.2.3) which allows to use several NS-VC between two endpoints in parallel. The patch changes the implementation to use the NSVCI instead of the NSEI to search for an existing NS-VC object. Ticket: OW#874 Sponsored-by: On-Waves ehf
2013-10-08gb: Fix NS-RESET response message orderJacob Erlbeck2-23/+25
According to 3GPP TS 08.16, 7.3 "Reset procedure" the entity receiving a NS-RESET PDU responds with a NS-RESET-ACK and 'then' starts the test procedure which essentially means, that a NS-ALIVE gets sent and a timer is started. Currently the NS-ALIVE is sent before the NS-RESET-ACK. This patch fixes the implementation by reversing the order in which these messages are sent. Sponsored-by: On-Waves ehf