aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)AuthorFilesLines
2012-12-30introduce control interface command to return the number of currently active ↵zecke/29c3Peter Stuge4-0/+55
subscribers
2012-12-30libbsc: Make argument optional in some 'show' commandsSylvain Munaut1-6/+6
The actual command implementation was already for this, but some bad vty parsing prevented optional range arguments from working properly. Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2012-12-30libmsc: Allow to set sender id when sending SMS from the VTYSylvain Munaut4-17/+55
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2012-12-30libmsc: Refuse service to anyone not attachedSylvain Munaut1-0/+4
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2012-12-30Merge remote-tracking branch 'origin/daniel/t3212-work'Holger Hans Peter Freyther8-10/+154
This implements http://openbsc.osmocom.org/trac/wiki/Tasks/NITBPeriodicDetach.
2012-12-29gsm_04_08: Display debug message correctly on DETACH INDICATIONdaniel/channel-ho-wipDaniel Willmann1-3/+5
Log messages would get mangled before if we receive detach by TMSI or IMSI.
2012-12-29libbsc: With the new SAPI states we don't need sacch_deact anymoreDaniel Willmann2-2/+0
2012-12-29gsm_data_shared.h: Keep a list of SAPI states per lchanDaniel Willmann1-0/+13
2012-12-27osmo-nitb: Add a timer to regularly expiredaniel/t3212-workJan Luebbe1-0/+12
2012-12-27libmsc: Track and update the location update expiryJan Luebbe5-6/+138
Set the subscriber expiry timeout to twice the duration of the location update period and provide functions subscr_expire() and db_subscriber_expire() to mark subscribers offline that have missed two location update periods. This patch increases the DB revision to 3, so the hlr will be incompatible with prior versions. We should allow 0 for T3212 as well to disable the location update period. In that case we will need a way to indicate that in the database.
2012-12-27Stricter limits for T3212 (location update period)Daniel Willmann2-4/+4
libcommon: Default to 30min location update period libbsc: Limit VTY value for periodic update and disallow the value 0 According to GSM 04.08 Table 10.5.33 "The value 0 is used for infinite timeout value i.e. periodic updating shall not be used within the cell." This was the default value until now, but the code that deals with expiring inactive subscribers in the next commit can't handle that case so this remains a TODO for now.
2012-12-26libmsc: One of assign_compl and assign_fail will always be calledHolger Hans Peter Freyther1-12/+0
Remove the log messages and comments as they are wrong for now. Even for the mode modify we will get the assign complete call.
2012-12-26tests: Don't delete atconfig in cleanDaniel Willmann1-1/+1
This file is created in ./configure so we shouldn't remove it with make. Otherwise ./configure && make clean && make check fails with: make[3]: *** No rule to make target `atconfig', needed by `check-local'. Stop.
2012-12-26abis_test: Fix the test case and calculate the right offsetHolger Hans Peter Freyther2-4/+4
We parse the load_config, take the ptrdiff_t from start and load_config and from the previous array as the alignment can differ on different ABIs. This was found by Daniel when executing the tests on a 64 bit userspace.
2012-12-26handover: Fix the handover signalling for IP based BTSesHolger Hans Peter Freyther5-49/+36
This was reported by Kevin when he was testing handover. The problem is the order of the signal handlers for S_ABISIP_CRCX_ACK. Right now the handover signal handler is called before the one inside the libmsc gsm_04_08.c. This means S_HANDOVER_ACK is signalled _before_ there is a rtp socket created for the channel. The result is that the MDCX will never be sent and the called will not be properly switched _after_ the handover detection. I do not want to play with the order of signal handlers, remove the CRCX ack handling from the handover_logic.c and force the NITB (and later the BSC) to check if the lchan is involved with a handover and do the switching in there. This means right now we do what two signal handlers did in one. Reproduced and tested with the FakeBTS Handover test. Log message: <0004> abis_rsl.c:1954 (bts=1,trx=0,ts=3,ss=0) IPAC_CRCX_ACK ... <000c> gsm_04_08.c:1400 no RTP socket for new_lchan <001a> rtp_proxy.c:533 rtp_socket_create(): success <001a> rtp_proxy.c:615 rtp_socket_bind(rs=0x48703c8, IP=0.0.0.0): ...
2012-12-26gsm: Do not attempt to release SAPI=0 if it was never allocatedHolger Hans Peter Freyther3-0/+26
In case of handover (but probably on RACH) we would send a RLL for SAPI=0 even if this SAPI was never established. After we have released all SAPI>0 locally check that SAPI=0 is established and if not release the rf channel directly.
2012-12-26libbsc: Fix DL QUAL decoding from measurement reportsSylvain Munaut1-2/+2
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2012-12-25gsm_subscriber: change subscr_bsc_active_subscriber to pluralJan Luebbe2-10/+10
This was requested by Holger Freyther <zecke@selfish.org>.
2012-12-25nitb: Add a VTY command to initiate a handover to another BTSHolger Hans Peter Freyther1-0/+53
2012-12-23Merge branch 'zecke/channel-release'Holger Hans Peter Freyther16-117/+180
Merge the channel release re-work. The most notable change is that SAPI > 0 will now be released on the local end and that the release process should be both more fast and more standard conform. With SMS spamming/mass sending the nanoBTS is crashing but this does not appear to originate from any of these changes. I used git rebase to go through each of the change to see where the nanoBTS is crashing but couldn't reproduce it. It might be a general overload or something generated by the modems of the sysmocom modem bank. Merge it before the 29C3 so we can test this code some more.
2012-12-23lchan: Introduce T3109 handling for the release procedureHolger Hans Peter Freyther12-24/+63
T3109 is started when the SACCH is deactivated. It is stopped when the phones sends the DISC/UA/UM on LAPDm for the main signalling link. In case of timeout the abnormal release procedure will be initiated. Make sure to not issue the SACCH Deactivate twice to avoid confusing the equipment. This is still not fully spec compliant. In case of a timeout the abnormal release handling will be started which involves starting T3111+2. The error handling should be split out of the rf channel release method, e.g. lchan_release should be called and check if the channel release was already initiated.
2012-12-23lchan: Introduce a BROKEN state for the lchanHolger Hans Peter Freyther3-4/+6
If the CHAN ACTIV is NACKED we set the state backto NONE. This is problematic as our channel allocator will allocate from the front or from the back and if the channel is early in the list it might cause permanent failures. Introduce a BROKEN state and use it when the channel activation is failing for an unknown reason. Copy the cause so it can be inspected later.
2012-12-23lchan: Document the behavior/quirks for abnormal channel releaseHolger Hans Peter Freyther1-5/+29
Deactivate the SACCH and release all SAPIs locally as of GSM 04.08. Add documentation to the code and explain what will happen as part of the release process.
2012-12-23lchan: Release the lchan more quickly, align with GSM 04.08Holger Hans Peter Freyther5-63/+55
* Release all channels with SAPI > 0 with the "local end release" (as of NOTE 1 of GSM 04.08). * No need to wait for all SAPIs to be torn down and the normal REL_IND/REL_CONF will call rsl_handle_release and the channel should be released. * Update the documentation
2012-12-23lchan: Release all higher sapis on the local end.Holger Hans Peter Freyther1-1/+1
According to GSM 04.08 3.4.13.1.1 RR connection release in NOTE 1 one should release all non main signaling links using the local end link release.
2012-12-23rsl: Cosmetic changes to the release codeHolger Hans Peter Freyther1-8/+12
Put the idiom that sets the lchan state to none and respecting the error state into a shared method. This way the special handling for the abnormal case is just in one place.
2012-12-23rsl: Call the release function with the enum name and not the numberHolger Hans Peter Freyther2-11/+11
Done with the semantic patch: @rule1@ expression E; expression F; @@ - lchan_release(E, F, 1); + lchan_release(E, F, RSL_REL_LOCAL_END); @rule2@ expression E; expression F; @@ - lchan_release(E, F, 0); + lchan_release(E, F, RSL_REL_NORMAL);
2012-12-23rsl: Rename the reason to release_mode and use the enum valueHolger Hans Peter Freyther5-9/+11
The API with 0 and 1 as legal values is hard to understand. Use the recently introduced enum values instead.
2012-12-23rsl: Use LOGL_ERROR instead of LOGL_NOTICE act/deact timeoutsHolger Hans Peter Freyther1-2/+2
It is a grave error when the BTS does not respond to the ACT/DEACT requests, use LOGL_ERROR for such conditions.
2012-12-22paging: Do not page when there is no OML linkHolger Hans Peter Freyther1-0/+4
Avoid printing error messages when paging while the BTS is down. In case a BTS is going down it is best to just let the timers expire normally. We can not expire them right away as multiple BTS could be paged and we do not want to interfere with that. There is no need to stop the queue right now.
2012-12-22libmsc: Avoid a crash on lchan release during call controlHolger Hans Peter Freyther1-5/+16
If subscriber A is calling B and has sent a CC Setup message we will allocate the MO and MT transaction and link them together. When the BTS or the lchan is failing the BSC API will send a clear request, as part of the clear request all pending transactions will be released. As part of taking down the transaction, the remote leg will be informed and will send a MNCC_REL_REQ. This results in a call to trans_free. The llist_for_each_entry_safe does not handle removing other elements from the list and we would segfault. One way to fix this is to move the transaction list into the subscriber connection. This might require to create the subscriber connection for MT handling earlier. Otherwise one could have one transaction list inside the subscriber connection and a global list for MT- transactions.
2012-12-22libmsc: Set trans->subscr = NULL after we release itHolger Hans Peter Freyther1-1/+3
This is a cosmetic change and should happen to find use after free of the subscriber.
2012-12-21autoconf: Fix the --disable-* case for the AC_ARG_ENABLE macrosHolger Hans Peter Freyther1-27/+20
--disable-smpp would actually not disable SMPP but enable it. Correct it for all usages of AC_ARG_ENABLE. Move the unconditional invocation of PKG_CHECK_MODULES before the conditional one to make it work as the pkg-config m4 macro appears to expand the first usage differently and searches for the pkg-config exuable. Use "$enableval" to see if the feature should be enabled or disabled and then search for the module afterwards.
2012-12-20osmo-bts: Include lapdm.h to fix autoconf usability testHolger Hans Peter Freyther1-0/+4
Include the LAPDm header file so the size of struct lapdm_channel is known and gsm_data_shared.h can be included by itself.
2012-12-20Merge branch 'zecke/abis-sw-selection'Holger Hans Peter Freyther9-32/+301
2012-12-19abis: Activate the newest available installed on the BTSHolger Hans Peter Freyther4-13/+92
Select thew newest software from all available file versions.
2012-12-19abis: Create a routine that can parse all SW Descriptions of a SW ConfigHolger Hans Peter Freyther9-33/+223
Be able to parse the entire SW Config IE. Parse the SW Descruption into a struct provided by the caller.
2012-12-19misc: Fix compilation now that the method is located in libosmocoreHolger Hans Peter Freyther2-8/+1
These TLV helper functions are now located in libosmocore.
2012-12-16nitb: Do not crash on IMSI Detach messages from a phoneHolger Hans Peter Freyther1-1/+0
This has been reported and analyzed by Tobias Engel. The IMSI Detach is dispatched as part of the complete layer3 message. I had patched the code to release the anchor and call msc_release_connection to release the connection as fast as possible (otherwise the anchor would trigger in a couple of seconds). With commit 70ae5d3000edd12aee38497a6f541595a8c7dee8 I made this more generic to release the connection immediately if there are no operations, no transaction and no silent call. This leads to the subscriber connection being released twice and eventually causing a segfault. Remove the msc_release_connection invocation from the IMSI Detach code as the connection will be taken down by the BSC API. This has been tested using the FakeBTS and an IMSI Detach message. The channel is released immediately and the nitb does not crash.
2012-12-16mgcp: Allow to freely control the a=fmtp line for experimentsHolger Hans Peter Freyther4-2/+48
In case of AMR one can specify the available codecs out-of-band. Allow to configure this line statically in the configuration file.
2012-12-16mgcp: Fix the vary large jump detection in the codeHolger Hans Peter Freyther1-1/+1
GCC 3.x on PowerPC correctly highlights that the code is fishy. Re-reading the RFC 3550 shows that we should subtract it and then we are in the 16bit range. The probation and re-sync code is still missing. GCC: mgcp/mgcp_network.c:200: warning: comparison is always true due to limited range of data type
2012-12-10Merge branch 'zecke/mgcp-transactions'Holger Hans Peter Freyther5-202/+294
2012-12-10mgcp: Test and implement re-transmission handlingHolger Hans Peter Freyther5-167/+230
MGCP is used over UDP and a response might be lost. The MGCP RFC asks for keeping a list of responses and then using the previous response to answer a duplicate request. I tried to conserve memory and just wanted to remember the last transaction identifier and result-code and re-generate the result from that. This made the code look bad and this is why the entire response will now be stored. It sadly increases the memory usage but can not be avoided at this time. Remove the msg->l3h pointer for the RQNT callback as strtok has modified the content of it.
2012-12-10mgcp: Change the flow of the code when handling a MGCP responseHolger Hans Peter Freyther1-11/+14
Attempt to detect a response and return only then. Remove one level of tabls in preparation for the re-transmission handling.
2012-12-10mgcp: Methods generating a response now include the endpoint pointerHolger Hans Peter Freyther2-38/+35
This is required for remembering the last result in a central place and is required to properly implement detection of re-transmissions.
2012-12-10mgcp: Add testdata for MDCX handlingHolger Hans Peter Freyther2-0/+21
2012-12-10mgcp: Test the second CRCX as a CRCX and not as a re-transmissionHolger Hans Peter Freyther2-2/+14
The second CRCX would be mostly ignored and be handled by the retransmission layer of MGCP.
2012-12-10mgcp: Fix a typo.. it is msg and not mgsHolger Hans Peter Freyther1-1/+1
2012-12-10mgcp: We do not need to check for talloc_freeHolger Hans Peter Freyther1-8/+4
Simplify the code and remove null check for the two strings.
2012-12-10bsc: Fix compiler warning and return from the method with a value.Holger Hans Peter Freyther1-2/+3