Hi all,
This patch set adds to libosmocore an optimized Viterbi decodeer for
architecture specific (Intel SSE) and non-specific cases. The
implementation covers codes with constraint lengths of K=5 and K=7 and
rates 1/4 to 3/4, which make up the majority of GSM use cases. Speedup
from the current implementation is in the range of 5 to 20 depending on
the processor and code type. API is unchanged.
Tested on Haswell (i7-4770K) and Atom (D2550). Additional test codes
from osmo-bts are included. Further tests for AWGN bit-error-rate
and benchmarks can be found in the following repository.
https://github.com/ttsou/osmo-conv-test
Here are some examples.
Bit error test for GPRS CS2 with SNR of 5 dB and 100000 bursts.
$ ./conv_test -c 2 -e -r 5 -i 100000
=================================================
[+] Testing: GPRS CS2
[.] Specs: (N=2, K=5, non-recursive, flushed, not punctured)
[.] Input length : ret = 290 exp = 290 -> OK
[.] Output length : ret = 588 exp = 588 -> OK
[.] BER tests:
[..] Testing base:
[..] Input BER.......................... 0.042443
[..] Output BER......................... 0.000006
[..] Output FER......................... 0.001350 (135)
[..] Testing SIMD:
[..] Input BER.......................... 0.042460
[..] Output BER......................... 0.000005
[..] Output FER......................... 0.001240 (124)
Timed AFS benchmark with 8 threads and 100000 bursts per thread.
$ ./conv_test -b -c 10 -j 8 -i 100000
=================================================
[+] Testing: GSM TCH/AFS 6.7
[.] Specs: (N=4, K=5, recursive, flushed, punctured)
[.] Input length : ret = 140 exp = 140 -> OK
[.] Output length : ret = 448 exp = 448 -> OK
[.] Performance benchmark:
[..] Encoding / Decoding 800000 bursts on 8 thread(s):
[..] Testing base:
[..] Elapsed time....................... 4.320001 secs
[..] Rate............................... 25.925920 Mbps
[..] Testing SIMD:
[..] Elapsed time....................... 0.458272 secs
[..] Rate............................... 244.396341 Mbps
[..] Speedup............................ 9.426718
-TT
Dear all,
the valuable L1SAP abstraction has been sitting out of master for too
long time. It is a pity that this has taken so long. I've finally been
able to put some time into osmo-bts again and reviewed the following
patch series. It consists of mostly Andreas' work, interspersed with
smaller patches/fixups that I introduced after the respective original
patch from Andreas.
I have started a sysmobts between all of the major steps in this patch
series and did a short manual tests involving registration (LU) of two
MS, mobile-to-mobile call and vty-to-mobile SMS. So far I couldn't see
any problems. What has not been tested yet is the PCU interface as well
as encryption support. I plan to do this later this week.
I intend to merge the code after this current review cycle. Please take
your time to have a look and provide feedback (if any), so we can get
this over and work on new features again, rather than infrastrutural
changes.
I didn't yet rebase the osmo-bts-trx interface on top of the L1SAP, as I
don't have a hardware setup for it, and I will leave it to the owners of
such hardware to publish/push the respective code after L1SAP is merged.
Regards,
Harald
--
- Harald Welte <laforge(a)gnumonks.org> http://laforge.gnumonks.org/
============================================================================
"Privacy in residential applications is a desirable marketing option."
(ETSI EN 300 175-7 Ch. A6)
Currently the BVCI is not set in all invocations to bssgp_tx_status()
when the cause is UNKNOWN_BVCI.
This patch adds the argument where it is missing.
It also adds a check for compliance (GSM 08.18, 10.4.14.1) to
bssgp_tx_status() to emit errors when the following requirement is
not fulfilled: The BVCI must be included if (and only if) the cause
is either "BVCI blocked" or "BVCI unknown".
Sponsored-by: On-Waves ehf
---
src/gb/gprs_bssgp.c | 2 +-
src/gb/gprs_bssgp_util.c | 14 ++++++++++++++
2 files changed, 15 insertions(+), 1 deletion(-)
diff --git a/src/gb/gprs_bssgp.c b/src/gb/gprs_bssgp.c
index 5ef1887..b8c6c74 100644
--- a/src/gb/gprs_bssgp.c
+++ b/src/gb/gprs_bssgp.c
@@ -998,7 +998,7 @@ int bssgp_rcvmsg(struct msgb *msg)
LOGP(DBSSGP, LOGL_NOTICE, "NSEI=%u/BVCI=%u Rejecting PDU "
"type %u for unknown BVCI\n", msgb_nsei(msg), ns_bvci,
pdu_type);
- return bssgp_tx_status(BSSGP_CAUSE_UNKNOWN_BVCI, NULL, msg);
+ return bssgp_tx_status(BSSGP_CAUSE_UNKNOWN_BVCI, &ns_bvci, msg);
}
if (bctx) {
diff --git a/src/gb/gprs_bssgp_util.c b/src/gb/gprs_bssgp_util.c
index ae4647e..261e0b0 100644
--- a/src/gb/gprs_bssgp_util.c
+++ b/src/gb/gprs_bssgp_util.c
@@ -99,6 +99,20 @@ int bssgp_tx_status(uint8_t cause, uint16_t *bvci, struct msgb *orig_msg)
struct bssgp_normal_hdr *bgph =
(struct bssgp_normal_hdr *) msgb_put(msg, sizeof(*bgph));
+ /* GSM 08.18, 10.4.14.1: The BVCI must be included if (and only if) the
+ cause is either "BVCI blocked" or "BVCI unknown" */
+ if (cause == BSSGP_CAUSE_UNKNOWN_BVCI || cause == BSSGP_CAUSE_BVCI_BLOCKED) {
+ if (bvci == NULL)
+ LOGP(DBSSGP, LOGL_ERROR, "BSSGP Tx STATUS, cause=%s: "
+ "missing conditional BVCI\n",
+ bssgp_cause_str(cause));
+ } else {
+ if (bvci != NULL)
+ LOGP(DBSSGP, LOGL_ERROR, "BSSGP Tx STATUS, cause=%s: "
+ "unexpected conditional BVCI\n",
+ bssgp_cause_str(cause));
+ }
+
LOGP(DBSSGP, LOGL_NOTICE, "BSSGP BVCI=%u Tx STATUS, cause=%s\n",
bvci ? *bvci : 0, bssgp_cause_str(cause));
msgb_nsei(msg) = msgb_nsei(orig_msg);
--
1.9.1
Hello everyone
I am new to openbsc, and trying to implement my own mobile network for my
masters project. Till now everything has gone well and my network is
working gud. But the issue is when I am trying to implement rrlp with
openbsc. I have set the rrlp mode to ms-based, but there is no response
from the phone on sending the request. I have checked that the request is
going to the phone with the help of wireshark. So please anyone help me
with this, that should i use E-OTD or ms-assisted method for getting the
response from the phone.
Thanking you in anticipation
Kunal
Hi,
I have an Odroid-XU I have setup with Debian Wheezy and a USRP B200.
After building the UHD drivers from source, I followed the "network from
scratch" page. I also configured and built osmo-trx with the
--with-neon-vfpv4 option. Things are running OK, a whole lot better than
my attempt with OpenBTS actually. I"m able to connect to the network
with my Samsung S4 phone, but after an hour or so of the BTS running, I
get a UHD recieved time out error (see below). I wonder what could be
causing this? I have the B200 plugged into the USB 3.0 port, along with
external power.
Thanks in advance for any help.
root@odroid-wheezy:~# osmo-trx
linux; GNU C++ version 4.6.3; Boost_104900; UHD_003.007.002-94-ge56809a0
Config Settings
Log Level............... NOTICE
Device args.............
TRX Base Port........... 5700
TRX Address............. 127.0.0.1
Channels................ 1
Samples-per-Symbol...... 1
External Reference...... Disabled
C0 Filler Table......... Disabled
Diversity............... Disabled
Tuning offset........... 0
-- Loading firmware image:
/usr/local/share/uhd/images/usrp_b200_fw.hex... done
-- Loading FPGA image: /usr/local/share/uhd/images/usrp_b200_fpga.bin...
done
-- Operating over USB 3.
-- Detecting internal GPSDO.... No GPSDO found
-- not found
-- Initialize CODEC control...
-- Initialize Radio control...
-- Performing register loopback test... pass
-- Performing CODEC loopback test... pass
-- Asking for clock rate 32.000000 MHz
-- Actually got clock rate 32.000000 MHz
-- Performing timer loopback test... pass
-- Asking for clock rate 26.000000 MHz
-- Actually got clock rate 26.000000 MHz
-- Performing timer loopback test... pass
-- Setting B200 1 SPS
-- Transceiver active with 1 channel(s)
ALERT 3030074464 23:06:10.4 UHDDevice.cpp:832:check_rx_md_err: UHD:
Receive timed out
ALERT 3030074464 23:06:10.5 UHDDevice.cpp:832:check_rx_md_err: UHD:
Receive timed out
ALERT 3030074464 23:06:10.6 UHDDevice.cpp:832:check_rx_md_err: UHD:
Receive timed out
ALERT 3030074464 23:06:10.7 UHDDevice.cpp:832:check_rx_md_err: UHD:
Receive timed out
ALERT 3030074464 23:06:10.8 UHDDevice.cpp:832:check_rx_md_err: UHD:
Receive timed out
ALERT 3030074464 23:06:10.9 UHDDevice.cpp:832:check_rx_md_err: UHD:
Receive timed out
ALERT 3030074464 23:06:11.0 UHDDevice.cpp:832:check_rx_md_err: UHD:
Receive timed out
ALERT 3030074464 23:06:11.1 UHDDevice.cpp:832:check_rx_md_err: UHD:
Receive timed out
ALERT 3030074464 23:06:11.2 UHDDevice.cpp:832:check_rx_md_err: UHD:
Receive timed out
ALERT 3030074464 23:06:11.3 UHDDevice.cpp:832:check_rx_md_err: UHD:
Receive timed out
ALERT 3030074464 23:06:11.4 UHDDevice.cpp:832:check_rx_md_err: UHD:
Receive timed out
ALERT 3030074464 23:06:11.5 UHDDevice.cpp:832:check_rx_md_err: UHD:
Receive timed out
ALERT 3030074464 23:06:11.6 UHDDevice.cpp:832:check_rx_md_err: UHD:
Receive timed out
ALERT 3030074464 23:06:11.7 UHDDevice.cpp:832:check_rx_md_err: UHD:
Receive timed out
ALERT 3030074464 23:06:11.9 UHDDevice.cpp:832:check_rx_md_err: UHD:
Receive timed out
ALERT 3030074464 23:06:12.0 UHDDevice.cpp:832:check_rx_md_err: UHD:
Receive timed out
ALERT 3030074464 23:06:12.1 UHDDevice.cpp:832:check_rx_md_err: UHD:
Receive timed out
ALERT 3030074464 23:06:12.2 UHDDevice.cpp:832:check_rx_md_err: UHD:
Receive timed out
ALERT 3030074464 23:06:12.3 UHDDevice.cpp:832:check_rx_md_err: UHD:
Receive timed out
ALERT 3030074464 23:06:12.4 UHDDevice.cpp:832:check_rx_md_err: UHD:
Receive timed out
ALERT 3030074464 23:06:12.5 UHDDevice.cpp:832:check_rx_md_err: UHD:
Receive timed out
ALERT 3030074464 23:06:12.6 UHDDevice.cpp:832:check_rx_md_err: UHD:
Receive timed out
ALERT 3030074464 23:06:12.7 UHDDevice.cpp:832:check_rx_md_err: UHD:
Receive timed out
ALERT 3030074464 23:06:12.8 UHDDevice.cpp:832:check_rx_md_err: UHD:
Receive timed out
ALERT 3030074464 23:06:12.9 UHDDevice.cpp:832:check_rx_md_err: UHD:
Receive timed out
ALERT 3030074464 23:06:13.0 UHDDevice.cpp:832:check_rx_md_err: UHD:
Receive timed out
ALERT 3030074464 23:06:13.1 UHDDevice.cpp:832:check_rx_md_err: UHD:
Receive timed out
ALERT 3030074464 23:06:13.2 UHDDevice.cpp:832:check_rx_md_err: UHD:
Receive timed out
ALERT 3030074464 23:06:13.3 UHDDevice.cpp:832:check_rx_md_err: UHD:
Receive timed out
ALERT 3030074464 23:06:13.4 UHDDevice.cpp:832:check_rx_md_err: UHD:
Receive timed out
ALERT 3030074464 23:06:13.5 UHDDevice.cpp:832:check_rx_md_err: UHD:
Receive timed out
ALERT 3030074464 23:06:13.6 UHDDevice.cpp:832:check_rx_md_err: UHD:
Receive timed out
ALERT 3030074464 23:06:13.7 UHDDevice.cpp:832:check_rx_md_err: UHD:
Receive timed out
ALERT 3030074464 23:06:13.8 UHDDevice.cpp:832:check_rx_md_err: UHD:
Receive timed out
ALERT 3030074464 23:06:13.9 UHDDevice.cpp:832:check_rx_md_err: UHD:
Receive timed out
ALERT 3030074464 23:06:14.0 UHDDevice.cpp:832:check_rx_md_err: UHD:
Receive timed out
ALERT 3030074464 23:06:14.1 UHDDevice.cpp:832:check_rx_md_err: UHD:
Receive timed out
ALERT 3030074464 23:06:14.2 UHDDevice.cpp:832:check_rx_md_err: UHD:
Receive timed out
terminate called after throwing an instance of 'uhd::assertion_error'
what(): AssertionError: accum_timeout < _timeout
in uint64_t radio_ctrl_core_3000_impl::wait_for_ack(bool)
at /root/uhd/host/lib/usrp/cores/radio_ctrl_core_3000.cpp:232
I wrote a short post about using nanoBTS behind NAT and getting proper connection.
http://manatails.net/blog/2014/09/setting-arbitary-destination-ip-for-rtp-p…
As OpenBSC does not natively support NAT like Asterisk does, One needs to use a simple hack to manually tell the BSC about the connection information.
Regards,
Pierre
Hello, I've been working with my nanoBTS units again. But I've noticed some crashes while using GPRS data.
I am currently using the newest git repo for everything. And a nanoBTS 1900 and an iPhone.
Attached is the log of the crash. Please let me know if you need more information.
Regards,
Pierre
Dear Sir
I am trying to use the RRLP protocol implemented in openbsc, till now i am
able to send the rrlp request and activate the phone gps(ms-based mode) but
i am not getting any reply from the phone's side neither any location error
or any location. So please suggest me what to do in this case.
Thanks & Regards
Snehasish
Dear list,
It seems that after the last 2-3 weeks massive committing storm, I
lost the ability to compile an interworking version of
OpenBSC/Osmo-BTS/Osmo-PCU because the Osmo-PCU and the Osmo-BTS cannot
connect anymore.
According to the wiki, I need to use "jolly/multi-trx" for Osmo-Abis
and "jolly/trx" for Osmo-BTS, and "jolly/testing" with OpenBSC.
Previously this setup was working, but now Osmo-BTS tells the PCU
socket is not connected, while the PCU is running with the correct
config on the same PC.
I also wanted to try "201409-trx" branch (moved back to master with
osmo-abis and openbsc for this one, otherwise I got errors during the
configuration phase), but I got compilation errors with Osmo-BTS at
RSL.c
If someone can point me in the right direction which branches should I
use to get an interworking copy with a B200, that would be awesome. I
am also happy to try the new branch "201409-trx" if someone can tell
me which branches to use for that too.
Thanks!
Csaba
Hi Steve and Max,
sorry for catching up that late. It is only now in my holidays that I
finally am able to find some time to read through the osmocom mailing
lists again.
On Wed, Mar 26, 2014 at 08:17:58PM +0100, Steve Markgraf wrote:
> On 26.03.2014 18:26, Max.Suraev(a)fairwaves.co wrote:
> > I've just noticed (yepp, I'm very observant :) that COPYING in
> > libosmocore is GPLv2. Is there any particular reason we still do
> > not use GPLv3?
libosmocore was started as a GPLv2+ project, in order to ensure maximum
compatibility to a variety of applications. Some free software
applications out there are still GPLv2, and we want them to be able to
use libosmocore.
* libosmocodec is pure GPLv2+
* libosmoctrl is pure GPLv2+
* libosmovty is pure GPLv2+
> Good point, git grep "either version 3" actually shows that there are
> quite some files that are GPLv3+, so the compiled and linked binaries
> already make use of the "or any later version" of the other GPLv2+
> licensed files.
This is actually a problem, and one that needs fixing.
1) libosmogb
Most of the hits are in libosmogb, as the libosmogb code was first
developed as part of (AGPLv3+) OpenBSC/OsmoSGSN and then migrated to
libosmocore.git reporitory to be also used from osmo-pcu, not just from
the SGSN side.
The majority of the osmo-pcu codebase appears to be GPLv2+, so linking
with a GPLv3+ libosmogb is fine. However, an AGPL libosmogb would not
be suitable.
I've reviewed the copyright ownership /authorship situation of libosmogb
and see if we can make sure that all authors agree to a GPLv3+ licensing
of it. Based on the review, we have the following copyright holders:
* Harald Welte
* Holger Freyther
* sysmocom (Jacob, Holger?)
* Andreas Eversberg
Holger/Andreas:
* Would you agree to license libosmogb under GPLv2+ or GPLv3+?
* Do you have any preference regarding v2+ or v3+?
2) libosmocore: strrb.c / loggingrb.c
These are the only two files of libosmocore, which claim to be GPLv3+.
I would personally consider this a mistake at the time, but I've
included Katerina in the Cc.
Holger/Katerina:
* Do you remember how and why this code states it is GPLv3+ instead of
the usual GPLv2+ in libosmocore?
* Was this intentional or a mistake?
* Irrespective of the past, would you agree to license strrb/loggingrb
under GPLv2+? If yes, I will commit the related code change
3) libosmogsm: gsm0411_smc.c und gsm0411_smr.c
This is due to jolly first writing them as part of osmoocomBB and then
later moving them to libosmocore.
Jolly: Can you please confirm if you are willing to license them under
GPLv2+ instead of GPLv3+ as indicated in the source code?
4) libosmogsm: the imported milenage code.
it is GPLv2 or BSD, so we have to use it under BSD license.
This should be indicated somewhere explicitly.
> So replacing COPYING with GPLv3 definitely would make sense imho.
See above, the devil is in the details, it's not that simple.
Regards,
Harald
--
- Harald Welte <laforge(a)gnumonks.org> http://laforge.gnumonks.org/
============================================================================
"Privacy in residential applications is a desirable marketing option."
(ETSI EN 300 175-7 Ch. A6)
Hi mister Harald,
thank you very much for your answer. I am an engineering student and I have started to work on my thesis.
I would like to perform a GPRS core network completely using virtual machine (virtual box based) and use it to prove that an operator can manage M2M traffic just using standard hardware, virtual machine and open source components (osmocom project ).
At this moment i deployed 4 virtual machine, one for each osmo component (osmoNITB, openGGSN, osmoSGSN) on the fourth VM I want to run the fakeBTS because I don't have a bts.
I would like to simulate it as if there are some M2M devices generate request(attach, pdp context for example).
When I try the communication between NITB and fakeBTS there are some error Messages related to RSL. Then there isn't communication between NITB-fakeBTS and SGSN-GGSN.
Do you detect any configuration error?
Thank you.
Best regard
Calo
-------- Original message --------
Subject: Re: GPRS core network simulation
From: Harald Welte <laforge(a)gnumonks.org>
To: calogero cannizzaro <can_ni(a)hotmail.it>
CC: "openbsc(a)lists.osmocom.org" <openbsc(a)lists.osmocom.org>
Hi Calogero,
* what is the goal / use case of your simulation?
* what exactly do you need to simulate?
* what is the input/output of the simulation?
In general, the vaious Osmo-* implementations are not designed for
simulation buy for actual network operation. So you will likely need to
implement quite a lot in order to use it in a simulation context. The
most important question is, that you need code that will behave as
actual handsets on a network, and code to manage all those virtual
handsets, tell them what they should be doing, etc.
--
- Harald Welte <laforge(a)gnumonks.org> http://laforge.gnumonks.org/
============================================================================
"Privacy in residential applications is a desirable marketing option."
(ETSI EN 300 175-7 Ch. A6)
Currently BSSGP messages with an NS BVCI of 0 (signalling) are
discarded if they aren't RESET messages. Thus valid signalling
messages (e.g. BLOCK) are not handled properly, because the BVCI IE
is ignored if it present. Instead a STATUS message referring to BVCI
0 (instead of the BVCI used in the BLOCK message) is returned.
This patch changes the implementation to use the BVCI contained in
the BVCI IE if that is present in a signalling message.
It fixes BSSGP BLOCK/UNBLOCK for the osmo-sgsn.
Note that signalling messages without an BVCI IE (e.g.
SUSPEND/RESUME) are still rejected.
Ticket: OW#1205
Sponsored-by: On-Waves ehf
---
src/gb/gprs_bssgp.c | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/src/gb/gprs_bssgp.c b/src/gb/gprs_bssgp.c
index b8c6c74..0e9fd38 100644
--- a/src/gb/gprs_bssgp.c
+++ b/src/gb/gprs_bssgp.c
@@ -976,6 +976,7 @@ int bssgp_rcvmsg(struct msgb *msg)
struct bssgp_bvc_ctx *bctx;
uint8_t pdu_type = bgph->pdu_type;
uint16_t ns_bvci = msgb_bvci(msg);
+ uint16_t bvci = ns_bvci;
int data_len;
int rc = 0;
@@ -991,14 +992,17 @@ int bssgp_rcvmsg(struct msgb *msg)
rc = bssgp_tlv_parse(&tp, budh->data, data_len);
}
+ if (bvci == BVCI_SIGNALLING && TLVP_PRESENT(&tp, BSSGP_IE_BVCI))
+ bvci = ntohs(*(uint16_t *)TLVP_VAL(&tp, BSSGP_IE_BVCI));
+
/* look-up or create the BTS context for this BVC */
- bctx = btsctx_by_bvci_nsei(ns_bvci, msgb_nsei(msg));
+ bctx = btsctx_by_bvci_nsei(bvci, msgb_nsei(msg));
/* Only a RESET PDU can create a new BVC context */
if (!bctx && pdu_type != BSSGP_PDUT_BVC_RESET) {
LOGP(DBSSGP, LOGL_NOTICE, "NSEI=%u/BVCI=%u Rejecting PDU "
- "type %u for unknown BVCI\n", msgb_nsei(msg), ns_bvci,
+ "type %u for unknown BVCI\n", msgb_nsei(msg), bvci,
pdu_type);
- return bssgp_tx_status(BSSGP_CAUSE_UNKNOWN_BVCI, &ns_bvci, msg);
+ return bssgp_tx_status(BSSGP_CAUSE_UNKNOWN_BVCI, &bvci, msg);
}
if (bctx) {
--
1.9.1
Hi All,
I've started implementing reception of multiple channels of a BTS as
part of my gr-gsm project and I encountered little problem. C0 channel
(most probably) uses different training sequence than the rest of ARFCNs
from Cell Allocation. I'm not sure that this is the case. But if I
compute cross correlation I always get the strongest peak for a
different training sequence.
The training seqence number used on C0 is usually equal to BCC (BTS
Color Code) that is transmitted in SCH bursts (I've never seen different
situation in the wild). I can also find training sequence code of C0
transmitted on BCCH inside of Channel Description in System Information
Type 4 messages. Where BTSes transmit training sequence (/sequences) of
ARFCNs other than C0?
Best Regards,
Piotr Krysik
I everybody,
I’m a new subscriber. I have a question for you :
1.
Can i use FakeBTS to simulate a gprs core
network , using osmoNITB, osmoSGSN and
openGGSN, without BTS hardware?
2.
If not, can i simulate the core network without
BTS?
Many Thanks
Best regards.
C.Cannizzaro
Hello,
anyone can sell me a NanoBTS (Siemens BS-11 etc...) / Network in a Box
(UltraWAVE...) or other bts hardware (RangeNetworks, Ip.Access...) that
works with OpenBSC?
contact me at: ricardohassa [ at ] googlemail.com
I am living in germany
From: Pablo Neira Ayuso <pablo(a)soleta.eu>
./configure --help indicates:
--enable-external-tests Include the VTY/CTRL tests in make check
[default=no]
but
./configure ... --enable-external-tests
configure: WARNING: unrecognized options: --enable-external-tests
the name of the option seems to be --enable-ext-tests.
---
openbsc/configure.ac | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/openbsc/configure.ac b/openbsc/configure.ac
index 0777c0d..40ee444 100644
--- a/openbsc/configure.ac
+++ b/openbsc/configure.ac
@@ -141,7 +141,7 @@ AC_ARG_ENABLE([vty_tests],
[Include the VTY/CTRL tests in make check (deprecated)
[default=no]]),
[enable_ext_tests="$enableval"],[enable_ext_tests="no"])
-AC_ARG_ENABLE([ext_tests],
+AC_ARG_ENABLE([external_tests],
AC_HELP_STRING([--enable-external-tests],
[Include the VTY/CTRL tests in make check [default=no]]),
[enable_ext_tests="$enableval"],[enable_ext_tests="no"])
--
1.7.10.4
Currently the BVCI is not set in all invocations to bssgp_tx_status()
when the cause is UNKNOWN_BVCI.
This patch adds the argument where it is missing.
It also adds a check for compliance (GSM 08.18, 10.4.14.1) to
bssgp_tx_status() to emit errors when the following requirement is
not fulfilled: The BVCI must be included if (and only if) the cause
is either "BVCI blocked" or "BVCI unknown".
Sponsored-by: On-Waves ehf
---
src/gb/gprs_bssgp.c | 2 +-
src/gb/gprs_bssgp_util.c | 14 ++++++++++++++
2 files changed, 15 insertions(+), 1 deletion(-)
diff --git a/src/gb/gprs_bssgp.c b/src/gb/gprs_bssgp.c
index 5ef1887..b8c6c74 100644
--- a/src/gb/gprs_bssgp.c
+++ b/src/gb/gprs_bssgp.c
@@ -998,7 +998,7 @@ int bssgp_rcvmsg(struct msgb *msg)
LOGP(DBSSGP, LOGL_NOTICE, "NSEI=%u/BVCI=%u Rejecting PDU "
"type %u for unknown BVCI\n", msgb_nsei(msg), ns_bvci,
pdu_type);
- return bssgp_tx_status(BSSGP_CAUSE_UNKNOWN_BVCI, NULL, msg);
+ return bssgp_tx_status(BSSGP_CAUSE_UNKNOWN_BVCI, &ns_bvci, msg);
}
if (bctx) {
diff --git a/src/gb/gprs_bssgp_util.c b/src/gb/gprs_bssgp_util.c
index ae4647e..261e0b0 100644
--- a/src/gb/gprs_bssgp_util.c
+++ b/src/gb/gprs_bssgp_util.c
@@ -99,6 +99,20 @@ int bssgp_tx_status(uint8_t cause, uint16_t *bvci, struct msgb *orig_msg)
struct bssgp_normal_hdr *bgph =
(struct bssgp_normal_hdr *) msgb_put(msg, sizeof(*bgph));
+ /* GSM 08.18, 10.4.14.1: The BVCI must be included if (and only if) the
+ cause is either "BVCI blocked" or "BVCI unknown" */
+ if (cause == BSSGP_CAUSE_UNKNOWN_BVCI || cause == BSSGP_CAUSE_BVCI_BLOCKED) {
+ if (bvci == NULL)
+ LOGP(DBSSGP, LOGL_ERROR, "BSSGP Tx STATUS, cause=%s: "
+ "missing conditional BVCI\n",
+ bssgp_cause_str(cause));
+ } else {
+ if (bvci != NULL)
+ LOGP(DBSSGP, LOGL_ERROR, "BSSGP Tx STATUS, cause=%s: "
+ "unexpected conditional BVCI\n",
+ bssgp_cause_str(cause));
+ }
+
LOGP(DBSSGP, LOGL_NOTICE, "BSSGP BVCI=%u Tx STATUS, cause=%s\n",
bvci ? *bvci : 0, bssgp_cause_str(cause));
msgb_nsei(msg) = msgb_nsei(orig_msg);
--
1.9.1
Hi all,
I plan to setup a meetup about Osmocom in Boston closer to the end of Sept.
If you're interested - please sign up for it here, to help us gauge the
interest:
http://www.meetup.com/Open-source-telecom/
The plan is to have this as a more or less regular meeting around
open-source solutions for telecom, particularly Osmocom, OpenBTS and
OpenLTE, but including projects like Freeswitch, Clearwater, etc. These
projects are interesting to me personally and after the first meeting the
list might be shrunk or expanded based on the interest from other
participants.
--
Regards,
Alexander Chemeris.
CEO, Fairwaves, Inc.
https://fairwaves.co