Commit Graph

527 Commits

Author SHA1 Message Date
Harald Welte 59b0468c5b move openbsc into its own subdirectory 2009-06-10 05:40:52 +08:00
Harald Welte 349342864d * add support for storing classmark1/2/3 per subscriber
* add support for parsing measurement results (both BTS and MS side)
2009-06-09 20:24:21 +00:00
Harald Welte 9995b4d6f6 don't prefix every line with timestamp, this saves some screen real estate 2009-06-09 20:21:57 +00:00
Harald Welte 3c78422e71 fix typo CHANNL->CHANNEL 2009-06-09 20:17:12 +00:00
Harald Welte a3e570f157 some more comments 2009-06-09 20:04:44 +00:00
Holger Freyther ff64cfe1db db.c: tmsi may be empty so put it into '' to make that obvoius (Andreas Eversberg)
during attachment, the "tmsi" field of the subscriber may be an empty
string, so the string must be quoted in the sql request, or the sql
request fails due to incorrect syntax.

also i added "extension" field to debug output.
2009-06-09 08:52:41 +00:00
Holger Freyther d45e2fee0c gsm_04_08.c: Kill duplication pointed out by Andreas Eversberg
Introduce the internal gsm0408_authorize that will determine
if we allow the user into our network. If allowed a new tmsi
will be allocated, the subscr_update will be called, the loc_operation
released, and the accept sent. Otherwise just return 0.

The code was copied from mm_rx_id_resp.
2009-06-09 08:27:07 +00:00
Holger Freyther 86d174823b gsm_04_08.c: Call subscr_update everytime we let someone in (Andreas Eversberg)
If location update is requested, but subscriber is not yet authorised
within mm_rx_loc_upd_req() function, the subscr_update() is not called,
because subscriber information is not complete.
During mm_rx_id_resp() the subscriber informations is may be complete,
so authorize subscriber succeeds and database must be updated.
2009-06-09 08:26:58 +00:00
Holger Freyther ad3ae1e655 bsc_hack.c: Fix the -l db option (Andreas Eversberg)
Add ':' to indicate an argument will follow -l.
2009-06-09 08:26:48 +00:00
Holger Freyther 628c744a57 Add the isdnsync program which enable layer1 and layer2 on a card
this small tool is used to enable layer 1 and 2 on a given isdn card.
the card can be used to retrieve clock signal from a network. layer 2
(PTP) is required to keep layer 1 without interruption. this tool works
on e1 and s0 cards. to use the clock signal with other cards,
interconnection with a clock-slave-card is required.

(Andreas Eversberg)
2009-06-08 10:33:06 +00:00
Holger Freyther 64026e9f41 openbscdefines.h: Add header file to control visibility of symbols
Add the hooks/configure detection to compile everything with
-fvisibility=hidden and then make certain symbols visible. This
will be used to make parts of the API public.
There are no users yet but we should have some soon.
2009-06-08 10:32:54 +00:00
Holger Freyther b27d84564a pkg-config: Create and install a pkg-config file
Let automake create the openbsc.pc and then install it
into the pkg-config directory of ${libdir}. This is done
in preparation for the public API that will be added soon.

The advertised include directory will be ${incluedir}/openbsc-1.0
to follow userspace practive from glib/gtk/cairo/freetype2 and
many more.
2009-06-08 10:32:39 +00:00
Holger Freyther 559bb71376 crypt detection: Make autoheader happy
Use AC_DEFINE([WHAT], [],[Description]) to make autoheader happy
again and autoreconf --install --force succeed.
2009-06-08 10:32:28 +00:00
Holger Freyther 2e285e09b7 gsm_04_08.c: Some spoofing protection against two location updating requests
Do not allow two location updating requests on the same lchan. Such
an event is certainly spoofed and can confuse the internal logic of
the application. Prevent that.
2009-06-06 13:54:44 +00:00
Holger Freyther 5e9990a856 lchan: Handle the abnormal case of channel getting closed
The abnormal case is that lchan_free ist getting called due
a RSL_MT_CHAN_REL_ACK in the RSL but the refcount of this
channel is not zero. This means that some "logical operation"
is still going on that needs to be cancelled.
Instead of always queuing up all operations in the
struct gsm_lchan use the signal framework to inform higher
layers about this abnormal case.

In gsm_04_08.c a signal handler is installed and in the
abnormal case the location updating request operation is
freed.
2009-06-06 13:54:35 +00:00
Holger Freyther 761fdec21e Revert "[db] Keep track of the current gsm_network"
This was a stupid decision. We will have to assign the
network at some other place. The problem will be a problem
when we have two gsm_networks in one process and the same
subscriber is traveling in both networks.
2009-06-06 13:54:20 +00:00
Holger Freyther 0573a739d0 [tests] Do no free objects that are allocated on the stack
gcc4.4 warns about these kind of objects. Fix that.
2009-06-06 13:54:02 +00:00
Harald Welte e185bd752a fix CONN FAIL and IPAC_DISCONNECT_IND log printing 2009-06-05 20:28:48 +00:00
Harald Welte 882c0d5dcd print reject cause of MM STATUS message 2009-06-05 20:08:20 +00:00
Harald Welte 46a7ad7a47 missing newline in log message about measurement result 2009-06-05 20:07:43 +00:00
Harald Welte 01ed6716eb fix printing of measurement results 2009-06-05 19:57:24 +00:00
Harald Welte 89e6001016 BS11: add nm_state for EnveBTES, PA and BBSIG physical objects 2009-06-05 19:18:45 +00:00
Holger Freyther 35b468bc19 [subscr] Remove the struct gsm_bts pointer from subscriber
The pointer was initially added to support to open a lchan
by using the gsm_subscriber structure. We would have restored
the struct gsm_bts from the db when loading the subscriber.

Instead we will dynamically resolve the gsm_bts and might end
up paging multiple bts in the same (stored/old) location area
until it answers.
2009-06-04 14:27:39 +00:00
Holger Freyther 90f9ec4df5 gsm_subscriber.h: Remove trailing whitespace...
Cosmetic changed
2009-06-04 14:15:33 +00:00
Holger Freyther bb7f18b2a8 [debug] Move subscr_get_by_tmsi below the debug statement (Andreas Eversberg)
subscr_get_by_tmsi might log as well and then the order of
debugging it not as clear as it could be.
2009-06-04 13:58:42 +00:00
Holger Freyther 8f23c13779 [misc] Search for the crypt symbol to conditionally enable crypt in VTY
It will define -DVTY_CRYPT_PW= if crypt is found. If -lcrypt is
needed, $(LIB_CRYPT) will be -lcrypt.

Compiles on OS X and Linux and reenables crypt.

Patch by: Lars Immisch
2009-06-02 04:04:36 +00:00
Holger Freyther 119c506abd [l2] Do not always release the layer2 when closing the socket (Andreas Eversberg)
Tells mISDN not to release layer 2 on closing socket, when not
requested. If mISDN was told to release layer 2 once, it will continue
to release layer 2 on every shutdown of OpenBSC.
2009-06-02 03:25:24 +00:00
Holger Freyther 01f7ce668d [e1] Correctly initialize the e1link (Andreas Eversberg)
During bootstrap of BS11, the e1links are initialized. This must also be
done when BS11 is already bootstrapped (when restarting OpenBSC). It is
required to correctly multiplex the audio traffic between channels.
Without it, all time slots refer to card 0, slot 0, subslot 0, which
causes crashes when handling TRAU frames..
2009-06-02 03:25:14 +00:00
Holger Freyther 3e682ce439 [debug] Change DEBUGPC statements to contain \n (Andreas Eversberg)
Some debug outputs now correctly use end-of-line characters.
2009-06-02 03:25:04 +00:00
Holger Freyther 055c6a041a [subscriber] Change id to long long unsigned int (Andreas Eversberg)
Changes the subscriber id type defintion from "long unsigned int" to "long
long unsigned int". Without, printf with '%llu' caused a crash.
2009-06-02 03:24:54 +00:00
Holger Freyther 90f57e9dbc [rsl] Change logging of handling reason 0x18 in rsl_rx_conn_fail (Andreas Eversberg)
Release the channel when it is not used, otherwise claim it
is still in use...
2009-06-02 02:55:17 +00:00
Holger Freyther 99c4566455 [lchan] Log increase/decrease of channel use count (Andreas Eversberg)
This is part of patch 22 and will log changes in the usecount
of the lchan.
2009-06-02 02:55:07 +00:00
Holger Freyther c738fd3c61 [subcriber] Fix the subscriber use counting in gsm_04_08.c (Andreas Eversberg)
This patch will fix subscriber usage countinig.
It may happen, that the subscriber count will not be 0 after releasing
of a call. (This problem is solved with the application patch (27),
which will replace static call transaction by a dynamic transaction
list, and use subscriber for each transaction created.)
2009-06-02 02:54:57 +00:00
Holger Freyther c6054968ee [subscriber] Log changes in the usage of a subscriber (Andreas Eversberg)
Log changes of the use count of a gsm_subscriber.
2009-06-02 02:54:48 +00:00
Holger Freyther c05a1b2220 [subscriber] Update the lac entry in subscr_update (by Andreas Eversberg)
This is coming from patch 16 and is one of the two changes. When
invoking subscr_update update the lac entry as well.
2009-06-02 02:54:38 +00:00
Holger Freyther 640e106e36 debug: Fix the definition on DMM (Andreas Eversberg)
Now MM can be specified on the command line with the debug option.
2009-06-02 02:35:12 +00:00
Harald Welte fcac383830 * give Siemens ObjClass reasonable names rather than A3/A5/A6
* add nm_state objects for RACK and CCLK
* add obj_class human-readable printing for all vendor obj_classes
* add human-readable printing of administrative state
* add enum for cell_alloc numbers
2009-05-28 11:39:21 +00:00
Harald Welte 37cde7cd84 some more comments on the abis attributes 2009-05-23 18:14:31 +00:00
Harald Welte f03eec117c make sure even our predefined structures use HARDCODED_BSIC as initial value 2009-05-23 17:50:53 +00:00
Harald Welte 9a70cce1da show and edit subscribers from the vty interface 2009-05-23 17:31:39 +00:00
Harald Welte 81d3da073d mark two functions as static, fix typo in vty message 2009-05-23 16:59:33 +00:00
Harald Welte 9503feb48a Add user-configurable BSIC setting 2009-05-23 16:56:52 +00:00
Harald Welte b9c47baee5 * replace some more hex bytes in init msgs by #defines
* when using patch_tables(), use the ARFCN of the BTS, not the cmdline argument
2009-05-23 16:27:05 +00:00
Harald Welte 0cc6c224c0 With this patch, the TRAU muxing code supports not just bridging only.
A new function trau_recv_lchan() is used to link a channel to a call reference
of a transaction. (Transactions are used in later patches.) TRAU frames will
then be forwarded to the application with the given call reference (in later
patches). Also the application can send TRAU frames by using trau_send_lchan().

A new list is introduced in trau_mux.c. (upqueue_entry) All subslots
that must be sent to application are listed here.

Received TRAU frames are written in the upqueue of application
interface, if a call reference is found in the upqueue-list. If an entry
is found the ss_entry list, the TRAU frames are bridged as before. The
frames have a message type (msg_type), a call reference (callref) and a
trau frame (data). The length of trau frame is defined by the content of
the c-bits inside the frame.

There is no support for ip.access yet, as they don't use the traditional
TRAU frame format. Harald must add this in order to use application interface
with ip-access. The bridging with ip-access works as before.
(Andreas Eversberg)
2009-05-23 15:51:12 +00:00
Harald Welte d43382d04a add new function gsm_bts_by_lac() to search for BTS based on location area 2009-05-23 13:56:40 +00:00
Harald Welte 4ba635d16d RSL should not be called RSSL in the debug definition (Andreas Eversberg) 2009-05-23 06:43:35 +00:00
Harald Welte 2f631a4155 A new debug flag is introduced: "DMNCC". MNCC is the Mobile Network Call
Control. This is required for later patches, that extract the call
control from gsm_04_08.c. (Andreas Eversberg)
2009-05-23 06:42:38 +00:00
Harald Welte 94f49c36b0 Some messages have one or two length-value information elements. The is
no IE type included in the message. These information elements are
mandatory, so their actual IE type is known. The improved parse_tlv()
function allows to parse zero, one, or two length-value elements.
(Andreas Eversberg)
2009-05-23 06:39:58 +00:00
Harald Welte da7a5b91f4 add FIXME comment about the fact that we're paging in the wrong BTS 2009-05-23 06:34:37 +00:00
Harald Welte daa26bab2e To slow down transmission of many ABIS frames at a time, a delay timer
is used for the E1's time slot. This timer replaces the "usleep()"
function, so the process will not block the execution of libbsc. The
timer is started after a frame is transmitted. If another frame is in
the transmit queue, the frame will only be queued until the timer times
out. If the timer is not running or times out, the frame is transmitted
and the timer is restarted.

The problem with partly provisioned TRX (locks show on LMT) is solved.
The adjustment for the inter frame delay of 50 miliseconds is for
further study.
(Andreas Eversberg)
2009-05-23 06:20:41 +00:00