Commit Graph

1296 Commits

Author SHA1 Message Date
Sylvain Munaut e28bc6876d build: Add .version to EXTRA_DIST
This is required to make distcheck work and apparently that's
the "good way" to do it.

See http://comments.gmane.org/gmane.comp.lib.gnulib.bugs/27780

Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2014-06-15 18:47:03 +02:00
Holger Hans Peter Freyther da73aa640e gsm0411_smr: Fix the size of the array
The code is lacking a "," at the end of a string and we ended up
doing string concatination instead of having an invalid state.

Fixes Coverity CID 1206564
2014-05-23 08:51:22 +02:00
Holger Hans Peter Freyther 61d33925a0 gsm0411_smr: Make the look-up table static 2014-05-23 08:49:34 +02:00
Holger Hans Peter Freyther 8e5435a864 timer: Use the now parameter when it is not NULL
The code would have used an uninitialized current_time in case
"now" was not NULL. As now is const and timersub expects a non
const parameter I decided to copy now into current_time.

Fixes: CID #1040661
2014-05-23 08:37:02 +02:00
Álvaro Neira Ayuso 550b06c04c abis_nm: Add the abis_nm_osmo_att_tlvdef to the abis header
Avoid compiler warnings and declare the presence of the new
tlv_description.

Signed-off-by: Alvaro Neira Ayuso <anayuso@sysmocom.de>
2014-05-20 08:45:59 +02:00
Harald Welte 5b5650f3de Fix introducing osmocom speficic OML attributes
Rename NM_ATT_O_REDUCEPOWER to NM_ATT_OSMO_REDUCEPOWER, which
makes it more clear that this is an osmcoom specific attribute.

Also, we cannot simply overload 0x01 as an already defined OML
attribute.  The problem is quite simple: When we use abis_nm_att_tlvdef
during the TLV parse, 0x01 will match to NM_ATT_ABIS_CHANNEL,
which is defined as { TLV_TYPE_FIXED, 3 }.

So instead, we need to introduce a new abis_nm_osmo_att_tlvdef[],
which has to be patched into abis_nm_att_tlvdef[] by the means of
tlv_def_patch(), exactly how we do it for bs-11 and nanobts specific
attributes.

I'm using 0xfe for the attribute, as 0xfe doesn't overlap with the IPA
specific attribues (and we might want to combine/merge the 12.21 plus
IPA plus osmocom spefici attributes)
2014-05-19 11:25:46 +02:00
Álvaro Neira Ayuso c22d72cded protocol/gsm_12_21.h: Add the Manufacturer Attribute ID O_REDUCEPOWER.
Signed-off-by: Alvaro Neira Ayuso <anayuso@sysmocom.de>
2014-05-15 21:40:59 +02:00
Holger Hans Peter Freyther 92e1e70dba select: Fix english in comment 2014-05-15 21:40:15 +02:00
Holger Hans Peter Freyther c2c042dfd7 backtrace: Speculative fix for FreeBSD10.0 and execinfo.h
FreeBSD 10.0 ships an execinfo.h but one needs to link to an
additional library for the backtrace functions. Check if there
is a backtrace symbol in libexecinfo and if so link to that
library.
2014-04-17 23:19:10 +02:00
Holger Hans Peter Freyther 0c50b17a26 Release: Prepare the release of 0.6.6 2014-03-31 15:40:46 +02:00
Álvaro Neira Ayuso 5ade61a4f4 src/socket: Adding unix domain socket support
Added some function for adding the unix domain socket support.

Signed-off-by: Alvaro Neira Ayuso <anayuso@sysmocom.de>
2014-03-26 19:50:46 +01:00
Alexander Chemeris cc0645b26d sms: Add missing brackets in the relative validity time calculation. 2014-03-26 19:35:33 +01:00
Holger Hans Peter Freyther d0ed9218bc Merge remote-tracking branch 'daniel/lapdm-desync'
This should fix long delays when sending a long SMS on an encrypted
channel. It is the most minimal change to the polling mode. One
option we discussed internally is to queue a higher level representation
and generate the actual LAPDm frames later.
2014-03-26 18:15:57 +01:00
Daniel Willmann 3dc4e16786 gsm/lapdm: Prevent LAPD tx_queue from filling up in polling mode
If LAPDm receives an I-Frame while there already is an I-Frame in the
tx_queue the code generates an additional RR (to acknowledge the
received I-Frame). Instead, N(R) of the I-Frame in the tx_queue should
be updated to ACK the data.
2014-03-26 18:11:07 +01:00
Daniel Willmann 09129352f9 tests/lapd: Add a testcase to check for LAPDm sync issues
Regression test for LAPDm recording the current state
2014-03-26 14:53:29 +01:00
Daniel Willmann 55405fb40b lapdm: Make lapdm_datalink_for_sapi public
This API allows you to get the lapdm_datalink for a SAPI. It's needed in
the lapdm_test, so make it public.
2014-03-26 13:52:27 +01:00
Alexander Chemeris e4c50d5a43 sms_test: Do not crash on logging. 2014-03-20 22:02:46 +01:00
Holger Hans Peter Freyther 1512ea6452 lapd: Improve log message and mention the SAPI the dl is on
When debugging an issue that involves SAPI=0 and SAPI=3 the
log file does not have enough context. Add the SAPI to this
message so we at least understand which SAPI we are talking
about.
2014-03-16 23:59:58 +01:00
Alexander Chemeris e47523874d sms: Fix typo in a macros name: GSM340_SMS_RESSERVED -> GSM340_SMS_RESERVED. 2014-03-12 13:33:01 +01:00
Holger Hans Peter Freyther 4b3de6840e Merge branch 'jerlbeck/fixes/ladp-sms' 2014-03-10 15:00:20 +01:00
Jacob Erlbeck 8dac4159ad ladpm: Fix msgb handling and SAPI=3 establishment delay
Currently it takes 3s to establish a SAPI 3 SACCH connection with
osmo-bts. This is due to the fact, that a broken SABME request is
sent first and and is ignored by the MS. Then, after a T200 timeout
(2s) the SABME command is sent again (this time correctly) and
answered by the MS.

The first SABME message is broken (it has a length field of 3 and
ends with 3 bytes from the tail of the original RSL message),
because of it is expected throughout lapdm.c that msg buffers
containing RSL have msg->l2h == msg->data. Some abis input drivers
fulfill this but IPA doesn't, thus the 3 bytes of the IPA header
are still part of the msg and confuse length computation.

Since internal fields of the msg are modified directly, this is
difficult to see.

This patch adds a new function msgb_pull_to_l3() that explicitely
skips over all headers prepending L3 and therefore resets l1h and
l2h. This function is then used instead of msgb_pull_l2h() which
only worked correctly when msg->l2h == msg->data. In addition,
code manipulating msg->tail and msg->len directly has been replaced
by calls to msgb_trim().

Note that this patch does not fix all issues of this case in the LADP
related code.

Ticket: SYS#192
Sponsored-by: On-Waves ehf
2014-03-10 14:57:26 +01:00
Jacob Erlbeck 7d5f17aa21 lapd/test: Check for empty ACCH queue, too
This just adds a single test to verify that the ACCH queue is
actually empty.

Sponsored-by: On-Waves ehf
2014-03-04 13:34:38 +01:00
Jacob Erlbeck c893c2233a lapd/test: Extend test case to test msgs having data before l2h
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-04 13:34:38 +01:00
Jacob Erlbeck 2462cf6ee1 lapd/test: Show dequeued messages
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-04 13:34:38 +01:00
Jacob Erlbeck baa225ed86 msgb: Add msgb_hexdump() function
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-03-04 13:30:12 +01:00
Holger Hans Peter Freyther 10f0bdecad lapd: Use the right struct for the talloc_zero_array call
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-09 20:05:17 +01:00
Holger Hans Peter Freyther f4f5a8489c sms: The msg_ref is passed from the outside so remove the wrong fixme 2014-02-08 15:15:40 +01:00
Jacob Erlbeck 90937fe2c5 lapd/test: Add test case for RSL EST REQ -> LAPD
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-26 08:39:20 +01:00
Holger Hans Peter Freyther c620604dfc lapdm: Fix typo in the comment 2014-01-23 15:00:55 +01:00
Holger Hans Peter Freyther 050e9c4a1c debian: Build the new upstream version of libosmocore 2014-01-20 10:37:42 +01:00
Jacob Erlbeck 85bc549ea5 gsm/gsm48ie: Fix range 256 W[i] decoding
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-13 15:15:11 +01:00
Jacob Erlbeck 26cbd459fc sms: Fix gsm_7bit legacy functions return value
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-09 08:22:14 +01:00
Holger Hans Peter Freyther d4d87c5427 abis: Use the right return value for abis_nm_pchan4chcomb
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-02 14:10:25 +01:00
Nils O. Selåsdal 3244702058 utils: Greatly improve performance of osmo_hexdump routines
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-02 14:08:11 +01:00
Holger Hans Peter Freyther b79a148eca utils: Add a simple testcase for osmo_hexdump
This code makes a simple dump and tests for the corner case
2014-01-02 13:59:10 +01:00
Holger Hans Peter Freyther b7d0f4686b logging: Copy the filter_fn and fix the IMSI filter in OpenBSC
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-29 19:38:01 +01:00
Holger Hans Peter Freyther 6308c29711 debian: Enable hardening options for debian 2013-12-12 12:41:11 +01:00
Max 4f0abc0e3e Refactor COMP128v23 implementation and add test suit 2013-12-07 18:10:38 +01:00
Holger Hans Peter Freyther 56cc60dc20 gb: Remove comment about ABI changes from the Makefile
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-22 16:05:26 +01:00
Jacob Erlbeck 1fa1664623 debian: Update the changelog
Sponsored-by: On-Waves ehf
2013-11-11 13:04:17 +01:00
Jacob Erlbeck 9b591b7da8 gprs: Fix VTY NSVC initialisation bug by changing gprs_nsvc_create()
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-11 13:04:17 +01:00
Kevin Redon be355cd78a implement COMP128 version 2 and 3 A3/A8 algorithm
simple copy into C from reversed code from www.hackingprojects.net
2013-11-03 15:05:25 +01:00
Jacob Erlbeck 3d557b18d0 gprs: Ignore NS RESET_ACK and ALIVE_ACK without RESET
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-30 15:23:18 +01:00
Jacob Erlbeck e7c427165f grps: Add test for NS messages that shall be ignored
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-30 15:23:15 +01:00
Holger Hans Peter Freyther ce397dee70 lapd: Extend the test to check if lapdm_channel_exit is idempotent
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 f5a079f739
2013-10-26 13:35:15 +02:00
Holger Hans Peter Freyther 9e1cd5a5a5 gprs: Address coverity warning for gprs_ns_tx_status result
Add a #define for the check and use this in this path as well.

Fixes: Coverity CID 1103092
2013-10-25 11:11:51 +02:00
Holger Hans Peter Freyther 726e2729fa gprs: Address coverity warning on unchecked return of gprs_ns_tx_reset_ack
Fixes: Coverity CID 1111545
2013-10-25 11:05:10 +02:00
Holger Hans Peter Freyther 7c91bfdd4e gprs: Address coverity warning on unchecked return of gprs_ns_tx_status
We could consider creating a CHECK MACRO that will print a message
in case of a tx failure.

Fixes: Coverity CID 1111544
2013-10-25 11:02:51 +02:00
Holger Hans Peter Freyther 0cccf40860 gprs: Make sure that the buf is NULL terminated at the end
Fixes: Coverity CID 1107253
2013-10-25 11:00:23 +02:00
Holger Hans Peter Freyther 7fcb3ce2df debian: Update the changelog 2013-10-25 09:52:58 +02:00