aboutsummaryrefslogtreecommitdiffstats
path: root/src/gb
AgeCommit message (Collapse)AuthorFilesLines
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-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-10-30gprs: Ignore NS RESET_ACK and ALIVE_ACK without RESETJacob Erlbeck1-0/+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-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-24gb: Create new NSVC object instead of patching the NSVCIJacob Erlbeck1-4/+12
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 Erlbeck1-28/+40
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 Erlbeck1-56/+215
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: Fix gprs_nsvc_delete() to free ctr groupJacob Erlbeck1-0/+1
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-17gb: Fix gprs_active_nsvc_by_nsei()Jacob Erlbeck1-2/+2
The state matching condition is inverted. This is corrected by this fix. Sponsored-by: On-Waves ehf
2013-10-15release: Prepare the 0.6.4 release of libosmocore0.6.4Holger Hans Peter Freyther1-1/+1
New interfaces and ABI incompatible changes in the GB library
2013-10-15gb: Fix gprs_ns_rx_reset to not create NS-VC duplicatesJacob Erlbeck1-74/+149
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 Erlbeck2-6/+40
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 Erlbeck1-0/+1
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-08gb: Use the NS-VCI to find an existing NS-VCJacob Erlbeck1-4/+4
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 Erlbeck1-5/+7
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
2013-10-08gb: Separate nsvc creation from NS message processingJacob Erlbeck1-55/+144
This patch refactors gprs_ns_rcvmsg() by moving the parts relevant to the NS messages into the new functions gprs_ns_vc_create() (nsvc object creation) and gprs_ns_process_msg() (main NS automaton). These do not contain code that directly depends on the link layer (they call other functions that still do). This reduces the gprs_ns_rcvmsg() function to calling these two functions and optionally setting up the link layer specific fields of the nsvc. Sponsored-by: On-Waves ehf
2013-07-06libosmogb: Add function to close NS instance without destroying itHolger Hans Peter Freyther2-7/+13
2013-06-29BSSGP: prevent divide-by-zero in flow controlHarald Welte1-10/+33
If the BTS tells us to not send any data at all anymore (bucket leak rate of 0 bits per second), then we should respect this and not run into a divide-by-zero. However, as this indicates complete overload, we print a log message to that regard.
2013-03-25gprs_ns: Allow to set the DSCP for the UDP socket.Holger Hans Peter Freyther3-0/+24
Allow to tag the NS service with a custom DSCP.
2013-01-12Fix build on CygwinEvgeny Zverev1-1/+5
2012-12-11build: Don't use the deprecated INCLUDES in the various Makefile.amSylvain Munaut1-2/+1
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2012-10-27Do not use --version-script linker flag on OSXTobias Engel1-1/+1
Add a check to not use --version-script linker flag if compiled on OSX since it doesn't exist there
2012-10-27Define struct iphdr for OSXTobias Engel1-1/+1
Use FreeBSD struct iphdr definition for OSX also. From the commentary in the source file: On BSD the IPv4 struct is called struct ip and instead of iXX the members are called ip_XX. One could change this code to use struct ip but that would require to define _BSD_SOURCE and that might have other complications. Instead make sure struct iphdr is present on FreeBSD.
2012-09-30Doc: Adding new parameter descriptions in gprs_bssgp_bss.cAndreas Eversberg1-1/+9
2012-09-30Fix: Correcting bssgp_tx_fc_bvc, bssgp_tx_fc_ms, bssgp_tx_ul_udAndreas Eversberg2-9/+28
2012-09-29Fix: gprs_ns_destroy() now frees all NSVCs and its timersAndreas Eversberg1-4/+14
Freeing memory of registered timers and file descriptors cause corrupt lists.
2012-09-10Gb: Add functions for sending flow control messages from BSS sideHarald Welte1-0/+105
2012-09-10Gb: Add header file for BSS-side BSSGP functionsHarald Welte1-0/+1
.. not sure how we could have missed that so far.
2012-09-08libosmogb: make build conditional, disable in embedded buildHarald Welte1-0/+2
when we build for osmocom-bb cross-compilation, we don't have sockets nor netinet/in.h and thus NS/BSSGP make no sense...
2012-09-07BSSGP: print per-bvc flow control parameters on vtyHarald Welte1-1/+12
2012-09-07BSSGP: make bvc_ctx->fc a dynamic talloc allocationHarald Welte1-5/+7
this ensures that we can talloc the flow-control queue entries as siblings off the bvc_ctx.
2012-09-07BSSGP flow-control: various fixesHarald Welte2-10/+36
* add more comments on units of struct members * make sure to parsre FC-BVC message correctly * add error message in case user passes PDU larger than bucket size * add new function to initialize flow control struct
2012-09-07libosmogb: Port BSSGP flow control from openbsc/laforge/bssgp_fc branchHarald Welte2-4/+225
This code is supposed to implement the BSSGP flow control algorithm, both for the per-BSS and for the per-MS flow control. The code currently has no test cases, they will come in a separate commit.
2012-09-07BSSGP: fix unused variable compiler warningsHarald Welte1-8/+2
2012-09-07libosmogb: build without strict aliasing rulesHarald Welte1-1/+1
This allows us to reliably do the trick with casting structures like libgb_msgb_cb to the msgb->cb[] array. Shamelessly stolen from the Linux kernel.
2012-08-03gb: Make suspend_ref a plain uint8_t instead of a uint8_t*Holger Hans Peter Freyther1-1/+1
The OpenSUSE build is not happy about the uint8_t to uint8_t* assignment. As the suspend_ref is a mandatory field we can make it a plain uint8_t. Increase the LIBVERSION as the ABI has changed.
2012-08-02libgb: Link to the libraries used by libgbHolger Hans Peter Freyther1-1/+4
The Mandriva linker appears to be more strict in enforcing the as-needed rules. Link to the libraries that are used by libgb.
2012-07-21Fix encoding of BSSGP_IE_NUM_OCT_AFF in bssgp_tx_llc_discarded()Andreas Eversberg1-1/+1
This is a 24bit integer value, and thus we need to encode the three least significant octets of the network-byte-order 32bit value, not the three most significant octets.
2012-07-12freebsd: Make libgb compile on FreeBSDHolger Hans Peter Freyther2-0/+38
Include header files for recfrom/AF_INET and include a struct ip_hdr as it is not available on *BSD.
2012-07-04bssgp: check for IMSI being a null pointer, not just an empty string.Harald Welte1-1/+1
2012-06-30build: use LT_INIT(pic-only) instead of forcing -fPIC.0.5.2Diego Elio Pettenò1-1/+1
This actually allows for the user to override the decision and at the same time supports compilers that might not be able to use -fPIC at all. Signed-off-by: Diego Elio Pettenò <flameeyes@flameeyes.eu>
2012-06-19add missing Makefile.am for libosmo-gbHarald Welte1-0/+21
2012-06-18libosmogb: export btsctx_* functionsHarald Welte1-0/+4
Those should be private, but osmo-pcu currently needs them...
2012-06-17libosmogb: export missing symbols0.5.1Harald Welte1-0/+2