Commit Graph

489 Commits

Author SHA1 Message Date
Harald Welte 654c9df3c8 [OML] don't hexdump bcch info 2009-11-13 14:42:52 +01:00
Harald Welte aff237d739 [OML] fix bugs in BCCH info parser for ip.access 2009-11-13 14:41:52 +01:00
Harald Welte 999549d9ae [OML] more verbose error reporting in case object instance unknown 2009-11-13 12:10:18 +01:00
Harald Welte b40a38ff46 [ip.access] Parse cell global ID as part of BCCH info 2009-11-13 11:56:05 +01:00
Harald Welte 5bde51b91e make ipaccess-config compile again (remove duplicate testres_name definition) 2009-11-13 11:23:16 +01:00
Harald Welte 0f255857d4 ip.access: Introduce parser function for BCCH Info test result 2009-11-12 14:48:42 +01:00
Harald Welte ccda96517c move 'struct value_string' and 'get_value_string()' to gsm_data 2009-11-12 22:28:18 +09:00
Steffen Neubauer 5727cf4ea7 [SMS] implement GSM340_TP_VPF_ABSOLUTE
- Added function "gsm340_scts" to decode the service center time stamp
  into a UTC/GMT timestamp
- in function gsm340_validity_period: can now decode validity period
  format absolute.
2009-11-11 23:02:07 +09:00
Harald Welte d409be7fae change some identifiers from u_int64_t to unsigned long long
makes printf much easier on 64bit platforms...
2009-11-07 00:06:19 +09:00
Holger Hans Peter Freyther ccf53c60c5 [mncc] Fix possible transaction/subscriber and real life subscriber leak
In the case a transaction has been already scheduled return 0 was
called but the subscriber and transaction would leak. Fix it by
calling subscr_put and trans_free.

After claiming the channel also remove the reference on the subscr.
2009-11-06 23:38:34 +09:00
Holger Hans Peter Freyther e33966cec2 vty: Do not leak the gsm_subscriber 2009-11-06 23:33:59 +09:00
Harald Welte 9aa6fd90ca Merge remote branch 'origin/master' 2009-10-30 09:18:31 +01:00
Sylvain Munaut d7d1c99a53 ip.access: Header has a 16bit length in network byte order
This is confirmed by looking at the source of their dissector.
The length can go up to 273 bytes apparently (again, according
to the source of their dissector).
2009-10-29 16:33:59 +01:00
Holger Hans Peter Freyther 5ba6f48092 [lchan] Keep track which SAPIs has been established with the BTS
Keep track of which SAPIs have been established either by the
BTS (from the MS) or by us. This can be used by the on-waves
BSC code to figure out if a new request should be made.
2009-10-29 04:20:21 +01:00
Holger Hans Peter Freyther 5ea731338d [misc] Use talloc_zero instead of talloc and later memset 2009-10-29 02:29:45 +01:00
Holger Hans Peter Freyther ba92587cd5 misc: Use NULL instead of integer value for a NULL pointer 2009-10-27 10:42:53 +01:00
Holger Hans Peter Freyther 251aa918da misc: Make bitfields unsigned int...
There is no use to have a signed bit in bitfields..
2009-10-27 10:42:28 +01:00
Holger Hans Peter Freyther 100fe56930 misc: Fix make distcheck and welcome the two new header files to OpenBSC 2009-10-27 10:14:04 +01:00
Holger Hans Peter Freyther 67b596199d input/ipaccess.c: clang says ret might be uninitialized
and it appears to be right that for the "default" case ret
will not be assigned and we return ret.
2009-10-27 10:08:38 +01:00
Holger Hans Peter Freyther 423bfe915c abis_nm.c: Remove duplicate entry from the table 2009-10-27 10:08:20 +01:00
Holger Hans Peter Freyther f520e6439a [gsm48] Handle the RR CHAN MODIFY ACK in the gsm04_08_utils
Move the handling code to the gsm_04_08_utils.c and add a
note that the method value needs to be checked.
2009-10-27 04:52:30 +01:00
Holger Hans Peter Freyther ff3f260e4f [gsm48] Move RR CHANNEL MODIFY to gsm_04_08_utils.c
Be able to send RR CHANNEL MODIFY from the BSC/MSC code
as well. Move the method that knows about the IPAccess RTP
and issues the "bind" to the utils tool
2009-10-27 04:52:29 +01:00
Holger Hans Peter Freyther e81a6109f9 [gsm48] Add generation of ASSIGNMENT COMMAND to the 0408 utils
Add code to generate an assignment command for a given lchan. It
is expected that the lchan is modified already and the mode will
be picked up from their. Currently only the mandantory items
are supported.
2009-10-27 04:52:29 +01:00
Holger Hans Peter Freyther 55aac6e868 ipaccess-config: Introduce stream-id/oml_tei to make it work again
ipaccess-config stopped working after the introduction of
multi-TRX/RSL stream id support in commit 8175e95222.

Set the oml_tei to 0xff by default and add an option to set
a different stream id.
2009-10-27 03:41:09 +01:00
Holger Hans Peter Freyther 1f59ac4728 configure.in: Use kernel style silent rules starting with automake 1.11
Use the silent rules when they are available. Using make V=1 or a
special configure option the silent rules can be disabled.
2009-10-27 03:34:49 +01:00
Harald Welte 8c8f791dbe [USSD] more whitespace fixes 2009-10-26 20:42:55 +01:00
Harald Welte 17e5f97958 [USSD] whitespace fixes
This is a purely cosmetic patch
2009-10-26 20:42:07 +01:00
Mike Haben 2449b37dfe [USSD] various USSD improvements
- Improved handling of extension-number string (as per review)
- Guard against a buffer-overflow if mobile sends a too-long USSD
- declare some function-parameters const
- fix gsm_ts_name function to display the right BTS number (bts->nr rather than bts->bts_nr)
2009-10-26 20:39:26 +01:00
Mike Haben dc329a6cdb [USSD] eliminate static global variables
This patch removes the need of static global variables and introduces a new,
caller-allocated 'struct ussd_request' that needs to be passed to the various
functions.
2009-10-26 20:39:26 +01:00
Harald Welte 6307b85700 whitespace fixes for the USSD code
This patch is not changing any actual code, just coding style fixes.
2009-10-26 20:39:26 +01:00
Harald Welte 6eafe9137c Add USDD code from Mike Haben
This is the initial checkin of the USSD code from Mike Haben.  I didn't
put it in the main branch as I think it still needs some cleanup.
2009-10-26 20:39:25 +01:00
Harald Welte 143f1f56d9 add some random thoughts on hopping and the oml interface 2009-10-26 20:38:37 +01:00
Sylvain Munaut eb429b7b44 [TLV] Split the parser into 'parse loop' and 'parse single value'
This is needed when you need to manually parse TLV blocks
that don't follow the logic supported by tlv_parse but you
still want to rely on working code and not fiddle with details.
2009-10-26 20:19:59 +01:00
Sylvain Munaut 288a0cf912 [ip.access] Add an example configuration file 2009-10-26 20:16:27 +01:00
Harald Welte 65bdc914f6 Fix segfault, use trx->bts rather than bts in patch_nm_tables() 2009-10-26 20:14:33 +01:00
Harald Welte 85c00cc3d9 Merge remote branch 'origin/master' 2009-10-26 20:12:07 +01:00
Harald Welte 0f890b02f6 ip.access: Use Channel Combination from config file
bsc_init.c still contained a hard-coded channel configuration,
i.e. CCCH_combined on TS0 of C0, and TCH/F on all other channels.

Now it correctly uses the value as specified in the config file.
2009-10-24 10:31:28 +02:00
Harald Welte 9c880c9a9b [GPRS] Add RSL function for ip.access PDCH activation
If we have a dynamic TCH/F / PDCH channel configuration, then
we can either ACTIVATE CHANNEL it for a TCH/F, or we need to send
this vendor-specific PDCH ACTIVATE command to use it as a PDCH.

As opposed to a fixed configuration, this allows an intelligent
BSC channel allocator to use otherwise idle channels as PDCH
as long as no more TCH's are needed.
2009-10-24 10:29:22 +02:00
Harald Welte a1499d00a5 [GPRS] introudce PDCH and PDCH/TCH physical channels
GPRS needs PDCH (Packet Data Channels), and we need support in
our data model as well as OML and RSL for it
2009-10-24 10:25:50 +02:00
Harald Welte daef521ea5 [OML] Add support for ip.access SET ATTRIBUTE message
Since TS 12.21 implements only SET ATTRIBUTE for some object classes,
ip.access had to extend it to be able to set attributes on arbitrary
objects.  We now introduce a function implementing that message.
2009-10-24 10:20:41 +02:00
Harald Welte 55dd443ac2 [GPRS] add data structures for OML of NSE,CELL,NSVCE
Supporting GPRS means we have a number of additional OML objects to
deal with.  We need to extend our gsm_bts structure to at least
include the nm_state for each of those objects.
2009-10-24 10:19:14 +02:00
Harald Welte 73310c3c83 [TLV] extend TLV parser with support for TvLV
Tag-variableLength-Value is an encoding scheme used in the GPRS NS
and BSSGP protocols, where the length value can be 8 or 16 bits,
depending on actual demand.
2009-10-24 10:04:02 +02:00
Holger Hans Peter Freyther ca0fcbe157 [gsm48] Make method name consistent...
We use rx_rr to indicate that we have received a radio resource
message but one method was using rr_rx. Fix that.
2009-10-23 13:48:54 +02:00
Holger Hans Peter Freyther 0e7b0732f6 Include e1_input.h for the e1inp_line 2009-10-22 15:48:59 +02:00
Holger Hans Peter Freyther 555eba140d Fix spelling of default 2009-10-22 15:46:16 +02:00
Holger Hans Peter Freyther 2c481b27fc Fix compiler warning. 0 does not work on strings 2009-10-22 15:44:30 +02:00
Holger Hans Peter Freyther ddd918f7ec Fix compiler warning and cast const away.
TLVP_VAL returns a const u_int8_t* and we assign it
to a non const, cast const away.
2009-10-22 15:43:55 +02:00
Holger Hans Peter Freyther 8b77a34131 [rrlp] Fix compiler warnings
The apdu is static const u_int8_t. Change the signature to
have a const in there to make the compiler happy, include
chan_alloc.h for lchan methods.
2009-10-22 15:42:19 +02:00
Holger Hans Peter Freyther dc1e1058f3 Fix warnings by removing unused variables 2009-10-22 15:40:33 +02:00
Holger Hans Peter Freyther 65fb0fda9d Forward declare methods to fix compiler warnings
Put the used method in the header files or use extern
in the case of a vty method used by token_auth
2009-10-22 15:39:37 +02:00
Holger Hans Peter Freyther 2657abfe35 [db] Fix compile warnings in db.c
For the compiler classmark1 is a struct and the compiler is
unaware that it fits into an unsigned int. Use memcpy to
copy it to a u_int8_t (the compiler should inline this).

dbi_conn_quote_binary_copy works on unsigned char* change
q_apdu to be unsigned char.
2009-10-22 15:34:37 +02:00
Harald Welte e73501a4f6 [ipaccess] revert commit 9bd7bc1b4c
Commit 9bd7bc1b4c caused the RSL
initialization to happen too early, resulting in the BTS
bootstrapping but missing [some of?] the system information
types.
2009-10-21 21:16:00 +02:00
Harald Welte 17ddc50338 Merge remote branch 'origin/master' 2009-10-21 20:24:09 +02:00
Holger Hans Peter Freyther 02c28a0fa8 [debug] Use gcc attribute to enable printf checking
Inform the compiler that the same rules as printf apply
to the debugp method. This will check if the arguments
match the format string.
2009-10-21 16:38:19 +02:00
Holger Hans Peter Freyther 1565bd3226 [timer] Initialize i with zero
In case no timers were registered the result was not defined.
2009-10-21 16:38:19 +02:00
Holger Hans Peter Freyther cbbd49807f [msgb] Add msgb_reset to reset an existing msgb* to the initial state
The reset is useful if one msgb is supposed to be used over and
over again and is avoiding to use msgb_free,msgb_alloc in the
application code.
2009-10-21 16:38:13 +02:00
Harald Welte d99fb99647 [ipaccess] fix ipaccess-config (we now use TEI as stream ID) 2009-10-20 21:54:06 +02:00
Harald Welte 8406ec2437 [nanoBTS] move nanoBTS initialization completely into state event handler 2009-10-20 17:31:00 +02:00
Harald Welte a8bd6d4a34 [abis_nm] introduce debugp_foh() function for object class printing 2009-10-20 09:56:18 +02:00
Harald Welte 77a838dff7 ip.access: use correct stream identifier when connecting RSL 2009-10-20 00:51:01 +02:00
Harald Welte 9bd7bc1b4c input/ipaccess: remove one more static variable 2009-10-20 00:50:03 +02:00
Harald Welte 8175e95222 ip.access: Support multi-TRX / RSL stream ID
In order to support multi-TRX configurations, we need to be able
to cope with multiple RSL streams (each with their own stream identifier)
inside one ip.access TCP connection.

Since this is very similar to using the TEI on a E1 line, we simply
recycle the logic and data fields that are used for the TEI.
2009-10-20 00:22:00 +02:00
Harald Welte 31a74906a3 [abis_nm] print ip.access TCP port in correct byte order 2009-10-19 22:50:30 +02:00
Harald Welte 35d447b022 [abis_nm] print ip.access stream_id in RSL connect ack 2009-10-19 22:49:33 +02:00
Harald Welte 746d6091d9 [abis_nm] introduce and use abis_nm_ipaccess_rsl_connect() 2009-10-19 22:11:11 +02:00
Harald Welte d004a6462a ip.access / multi-TRX: correctly identify TRX number on SW ACT REP 2009-10-19 21:47:54 +02:00
Harald Welte af7b2faf71 ip.access maximum output power depends on GSM band 2009-10-19 21:47:31 +02:00
Harald Welte a62202be31 [abis_nm]: Print Object Class of ip.access messages 2009-10-19 21:46:54 +02:00
Harald Welte 53f4b10b21 add ipaccess specific attribute set message
Partially apply 9ba65525eaa06a1768aaf35bdee98afcf8026e0a to get
rid of a compile problem. The other part of the mentioned commit
is still in the gprs branch.

Signed-off-by: Holger Hans Peter Freyther <zecke@selfish.org>
2009-10-09 05:26:46 +02:00
Harald Welte 4d0481dbe9 [bsc_init] use new NM_AVSTATE_* enum instead of hard-coded numbers 2009-10-08 20:53:42 +02:00
Harald Welte 2d820ccf67 add availability state abis_nm enum 2009-10-08 20:52:35 +02:00
Harald Welte 4bd0a98a77 [abis_nm] print object class/instance for NACK 2009-10-08 20:49:51 +02:00
Harald Welte 15c44179c3 [abis_nm]: print ip.access SET ATTR [N]ACK 2009-10-08 20:49:44 +02:00
Andreas Eversberg 38ae5cb2c2 use tx delay timer instead of usleep() in ip.access input driver
this fixes the delay of audio caused by stalling of the openbsc process.
the use of 'usleep(100000)' for slowing down transmission to nanoBTS is
replaced by the tx-delay timer. i did this on bs11 code, so i did it the
same way. it actually queues frames for transmission not nanoBTS. on
transmission a timer is started and when this timer expires, the next
frame in the queue is transmitted (timer restarted) until the queue is
empty.
2009-10-08 12:53:16 +02:00
Holger Hans Peter Freyther ca6bc1d10f [gsm0408] Add parameter to gsm48_send_rr_ciph_mode for controling the response
This parameter controls if the response should include the
IMEISV or not. This will be set by the MSC and this is why
this parameter was added.
2009-10-06 04:34:25 +02:00
Holger Hans Peter Freyther ea4088a7ea [gsm0408] Move encryption message creation to gsm_04_08_utils.c
Be able to use the cipher mode command message from the MSC code.
2009-10-06 04:34:25 +02:00
Mike Haben e2d8227499 [ipaccess] Add nanoBTS 1900 support
Add support for 1900 nanoBTS by using unified bts_type
GSM_BTS_TYPE_NANOBTS for 900, 1800 and 1900 versions.

Reduce the nanoBTS enum values to one and derive the
version from the user supplied band. In the future we
might want to do auto band detection.

The configuration file needs to be changed to refer
to nanobts instead of nanobts900/nanobts1800.

Signed-off-by: Mike Haben <michael.haben@btinternet.com>
Signed-off-by: Holger Hans Peter Freyther <zecke@selfish.org>
2009-10-05 12:12:54 +02:00
Mike Haben a03f97775b [ipaccess] Parse Software Activate parameters
Addresses a FIXME in abis_nm.c, parsing the parameters
passed by a Software Activate request.  I've tested this
on three different IpAccess BTSs (including one which
didn't work with the original code), would be good if
someone could check it on a BS11.

Signed-off-by: Mike Haben <michael.haben@btinternet.com>
Tested-by: Holger Hans Peter Freyther <zecke@selfish.org>
2009-10-01 14:58:30 +02:00
Holger Hans Peter Freyther e48b9562a4 [lac] Do not use the reserved LAC 0x0 for two different things
We are using LAC=0 for remembering that a GSM subscriber is
detached. I recently added code to gsm_bts_by_lac that will
return every BTS in case the lac is 0. Harald highlightes
that we would now search for detached subscribers at every
BTS of our network which is clearly not what we want.

Introduce two defines for the two reserved LAC, add a
pointer to the specification, check that our config files
do not contain these reserved values, use the define
and change gsm_bts_by_lac to use the other define.
2009-10-01 04:07:15 +02:00
Sylvain Munaut 86538c7fab input/ipaccess: Fix segv caused by use of uninitialized var
This is a regression coming from the recent split of the
handle_ts1_read method in two.

Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
Signed-off-by: Holger Hans Peter Freyther <zecke@selfish.org>
2009-10-01 03:53:31 +02:00
Holger Hans Peter Freyther f734a14485 [ipaccess] Add SCCP/A descriminator 2009-09-30 06:27:21 +02:00
Holger Hans Peter Freyther d5f052230c [ipaccess] Prepare to reuse parts of the code for the A-link
For the MSC<->BSC connection we are going to use the same header
as used from BTS<->BSC but we are not having an E1-Link, a gsm network
or a gsm_bts available and can not use this part of the code.
2009-09-30 06:27:16 +02:00
Holger Hans Peter Freyther 0b7f4b36be [lac] The lac must be 16 bit. Change it in gsm_bts and vty parsing
The LAC can be 16bit of size. the generation of the LAI, struct
gsm_subsriber and the BSC<->MSC was already using it as a
16bit (short) value.

Change struct gsm_bts to parse 16bit and change the vty configuration
parsing code to deal with a short too.
2009-09-30 05:49:26 +02:00
Holger Hans Peter Freyther 927f056f34 [paging] Use paging_request_stop to stop all paging requests
This loop looks a lot like the one inside the paging code. Call
it instead and change the code in paging_request_stop to cope
with a NULL _bts.
2009-09-28 12:50:49 +02:00
Holger Hans Peter Freyther 45f9b3d3fc [paging] Use one of the two reserved LAC to page every BTS
For the on-waves.com MSC case we want to page every BTS reached
of the network. Our gsm_subscriber entry does not have a LAC
entry set and defaults to zero. Use the reserved 0x0000 to
indicate that we want to use every bts in the network.

This will influence the paging code to start and stop paging.
2009-09-28 12:50:49 +02:00
Holger Hans Peter Freyther 3ee5d3e8af [gsm0408] Move paging handling to gsm_04_08_utils.c
Add one method to extract the MI which will allow to load
the gsm_subscriber depending on the MSC/BSC setup and then
use gsm48_handle_paging_resp to finish the paging response
handling.
2009-09-28 12:50:49 +02:00
Holger Hans Peter Freyther adc1478a47 [gsm0408] Move send_siemens_mrpci to gsm_04_08_utils.c 2009-09-28 12:50:49 +02:00
Holger Hans Peter Freyther 9f16a869a5 [subscr] subscr_paging_cb is called for expire and success
Gracefully handle a case where success and expire could fire... I'm
only hitting this when doing something evil to simulate network code
but it seems appropriate to handle this gracefully.
2009-09-28 12:50:45 +02:00
Holger Hans Peter Freyther 049935b9cc [subscr] When paging fails to start, send an expired event 2009-09-28 06:04:40 +02:00
Holger Hans Peter Freyther c4a49e3e2d [bsc] Store the cell_identity in gsm_bts and set it on the SI3 and SI6
Transfering the cell_identity from BSC to MSC is required for the
on-waves.com support. Allow to set the cell_identity in the cfg
file and patch the system information tables to set it.
2009-09-28 06:04:40 +02:00
Holger Hans Peter Freyther 98dd1c85ab [paging] Kill old defines from paging.c 2009-09-28 06:04:40 +02:00
Holger Hans Peter Freyther b28285d8e7 [paging] Implement paging by IMSI.
Try to page by IMSI when the TMSI is not set. This will be required
to properly support the MSC/BSSMAP.
2009-09-28 05:14:25 +02:00
Holger Hans Peter Freyther 2223025e21 [tmsi] Make the tmsi a 4 octet number
tmsi is four octets long, there is no need to make it a string
and then jump through hoops to convert it to a number. Keep the database
using it as a string to benefit from the NULL handling of the db.

Introduce the reserved tmsi which has all bits set to 1 according
to GSM 03.03 §2.4 and start checking for it and make sure the db
code will never allocate such a tmsi.
2009-09-28 05:14:25 +02:00
Sylvain Munaut 6b0b103bdc [gsm_04_11] Free transaction on RX_RP_ACK for SMS
When only one SMS is sent, the freeing of the lchan will
automatically free all transactions on the lchan.

However, if there are several SMS sent at once, the call
to gsm411_send_sms_lchan will create a new transaction
with the same caracteristics as the previous one. If
the old one is not free'd, the next call to trans_find_by_id
(triggered by the next incoming RP-ACK) will not return the good
transaction and things go haywire.

Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2009-09-27 11:16:22 +02:00
Harald Welte 23b710fa4f Merge branch 'master' into encryption 2009-09-27 11:13:55 +02:00
Sylvain Munaut 82aa6843ba [abis_rsl] Fix rsl_encryption_cmd L3 length computation
msg->l3h doesn't have any coherent value at that point,
can't use that.

Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2009-09-27 11:13:18 +02:00
Sylvain Munaut 1dcfc00192 [gsm_04_08] Fix gsm48_send_rr_ciph_mode algorithm ID
The algorithm ID used in the GSM 04.08 RR message is
(x-1) for A5/x. In RSL it's (x+1) for A5/x so there is
a difference of 2.

Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2009-09-27 11:11:41 +02:00
Sylvain Munaut 849f554c87 [gsm_04_08] Fix gsm48_tx_mm_auth_req implementation
It was mainly missing the key_seq field, causing the
command to just be rejected by the ME.

Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2009-09-27 11:10:17 +02:00
Mike Haben 59d284e8cf non-call related SS (USSD) is not unknown, but unimplemented
also, if we write 0x in front of a number, it should be hex.
2009-09-26 19:00:03 +02:00
Harald Welte 55726d73d7 Use correct capitalization on SQL statements
otherwise, SQLite seems to return the wrong data types ?!?

Signed-off-by: Mike Haben <michael.haben@btinternet.com>
2009-09-26 18:54:59 +02:00