Commit Graph

2090 Commits

Author SHA1 Message Date
Holger Hans Peter Freyther e731e1d6dd gsm_04_80: Allow to specify the alert pattern for the notification
Allow to specify the level (not the category) of the notification
this provides an easy way to test it on the phones.
2010-07-27 18:27:46 +08:00
Holger Hans Peter Freyther 44d0f19787 gsm_04_80: Embed a ss_Code inside the NotifySS-ARG...
Indicate that this is about the Call Name Presentation (cnap)
but the a1200 still ignores the call completelty...
2010-07-27 04:05:29 +08:00
Holger Hans Peter Freyther 68d26796ca gsm_04_80: Send a Release Complete otherwise the USSD unit stays BUSY
We need to release the USSD unit, otherwise it is staying blocked
and will stop to function (even across LUs on my a1200). This code
should encode the transaction and the direction depending on the
network state but this is omitted right now.
2010-07-27 03:31:50 +08:00
Holger Hans Peter Freyther e6373b7f63 gsm_04_80: Fix the size calculation of the 04.80 message..
Subtract the two bytes we were adding to the length of the message.
2010-07-27 01:25:59 +08:00
Holger Hans Peter Freyther daf753477e gsm_04_80: Add untested code for USSD notification...
One should be able to send a USSD Notification to a given
subscriber if we has an active link...
2010-07-26 20:01:07 +08:00
Holger Hans Peter Freyther 742fc70011 vty_interface_layer3: Fix a subscriber memory leak.. 2010-07-26 19:43:54 +08:00
Holger Hans Peter Freyther ac30cc833c gsm_04_80: Use msgb_push to get the verification code of msgb
msgb started to verify that we do have enough tail/headroom
and this code was not using this check.
2010-07-26 19:08:59 +08:00
Holger Hans Peter Freyther b02c89e292 gsm_04_80: Add code to wrap a facility IE around. 2010-07-26 19:05:56 +08:00
Holger Hans Peter Freyther 15ef17e70e gsm_04_80: Create a unstructuredSS-Notify message
Create a unstructuredSS-Notify for a given type.
2010-07-26 18:34:27 +08:00
Holger Hans Peter Freyther 80dfa75df2 gsm_04_80: Fix the style and move the '*' to the function 2010-07-26 17:59:28 +08:00
Holger Hans Peter Freyther ba81ab329c gsm_04_80: Use the return value of gsm_7bit_encode as length
Use the idiom msgb_put(msg, 0) to get the data pointer, then
encode the string into the msgb and then adjust the size.
2010-07-26 17:56:55 +08:00
Holger Hans Peter Freyther 6a4b362ceb gsm0480: Implement a generic "invoke" wrapping for messages.
Implement a GSM 04.80 invoke wrapper for a component and an
invoke id.
2010-07-26 03:55:57 +08:00
Holger Hans Peter Freyther 680833e2ba gsm0480: Attempt to encode a NotifySS-Arg with a username.. 2010-07-26 03:55:57 +08:00
Holger Hans Peter Freyther fa530cd6d8 gsm_subscriber: Increase the name to 160 charachters
160 charachters is the limit of the subscriber name inside
the notifySS nameIndicator/callingName.
2010-07-26 03:55:56 +08:00
Harald Welte d30e087521 [gprs] BSSGP: Fix null pointer dereference
Zecke has found this using "make CC="clang --analyze"
2010-07-23 22:00:45 +02:00
Holger Hans Peter Freyther 6e95c5ffa1 meas_rep.c: clang reports a possible division by zero
Check the input and exit early if we have no measurement reports
to avoid a possible division by zero.
2010-07-23 19:46:04 +08:00
Holger Hans Peter Freyther 8d7b10ef58 nat: Clang reported two places with garbage data
Initialize the variables to NULL to fix it.
2010-07-23 19:43:12 +08:00
Holger Hans Peter Freyther 4f140649cb clang: rc is not initialized in this USSD method. 2010-07-23 19:35:54 +08:00
Holger Hans Peter Freyther a97152b242 clang: Initialize rc with zero.
In the error case we are assigning errno values
but for the success case we have not assigned
anything to the rc variable.
2010-07-23 19:34:34 +08:00
Holger Hans Peter Freyther 960e81e5bd clang: Clang warns we have this value twice...
The type is TLV_TYPE_FIXED, 2 according to the
ipaccess wireshark dissector.
2010-07-23 19:33:16 +08:00
Holger Hans Peter Freyther 306e2bc724 nat: u_int32_t -> uint32_t 2010-07-23 19:09:51 +08:00
Holger Hans Peter Freyther e2c1520a71 nat: u_int16_t -> uint16_t 2010-07-23 19:09:21 +08:00
Holger Hans Peter Freyther dbd16fe59a nat: u_int8_t -> uint8_t 2010-07-23 19:08:55 +08:00
Holger Hans Peter Freyther 7dece86a08 mgcp: u_int8_t -> uint8_t 2010-07-23 18:56:26 +08:00
Holger Hans Peter Freyther d340cd3b2f mgcp: u_int16_t -> uint16_t 2010-07-23 18:56:01 +08:00
Holger Hans Peter Freyther d9b18f8c21 mgcp: u_int32_t -> uint32_t 2010-07-23 18:55:38 +08:00
Holger Hans Peter Freyther ca157ed3c3 Merge branch 'on-waves/sccp' 2010-07-23 18:42:27 +08:00
Holger Hans Peter Freyther ccc91f3088 sccp: u_int32_t -> uint32_t 2010-07-23 18:40:10 +08:00
Holger Hans Peter Freyther f957095385 sccp: u_int16_t -> uint16_t 2010-07-23 18:39:39 +08:00
Holger Hans Peter Freyther c2c4621a5d sccp: u_int8_t -> uint8_t 2010-07-23 18:39:17 +08:00
Holger Hans Peter Freyther 8cb4a0f35d rsl: Add method to send a SMSCB inside a SMS BROADCAST COMMAND
* Untested code for sending the SMS BROADCAST COMMAND.
2010-07-23 17:16:48 +08:00
Holger Hans Peter Freyther c702b7528f bsc_api: Add cipher mod reject api callback 2010-07-23 17:15:15 +08:00
Holger Hans Peter Freyther dbc62db8db bsc_api: Add stub for the cipher mode command. 2010-07-23 17:15:15 +08:00
Holger Hans Peter Freyther c354de8f94 bsc_api: Create dummy stub for the assignment command. 2010-07-23 17:15:15 +08:00
Harald Welte 5eed0a2e01 network_listen: hexdump the SI2/SI2bis/SI2ter messages once we get them 2010-07-22 21:54:20 +02:00
Harald Welte c95cf10d08 [ipaccess-config] fix bugs in generating the PHYSICAL CONFIG attribute
... while asking the BTS to perform tests for us.  The length of the
ARFCN whitelist is the actual length in bytes, not the number of 16bit
ARFCN numbers.

Also, implement a limit, either by rxlevel or by number of ARFCN
that should end up in the whitelist.
2010-07-22 21:54:19 +02:00
Harald Welte e39a5912f1 [ipaccess-config] make sure the ARFCN Whitelist EIE is built correctly 2010-07-22 21:54:19 +02:00
Harald Welte af109b9fa9 [abis_nm] fix 2 bugs in parsing IPA Test response messages 2010-07-22 21:54:19 +02:00
Harald Welte a0b0f36ff0 ipaccess-config/network-listen update
* transition through cycles of NWL tests
2010-07-22 21:54:19 +02:00
Harald Welte 887deabe38 ipaccess-config / network listen: ordered list of RxLevels
Use libosmocore 'rxlev_stat' module to generate an ordered list
of ARFCN's, sorted by RxLev while performing test nr. 64
2010-07-22 21:54:19 +02:00
Harald Welte 549faada21 move ip.access netowrk listen (NWL) to network_listen.c
Also, we now re-start the network listen test after it has finished,
so if you run a test from ipaccess-find, the test will get re-started
and re-started all the time.
2010-07-22 21:54:19 +02:00
Holger Hans Peter Freyther f21e453dc9 nat: Provide an easy view to see if something is connected to the NAT. 2010-07-22 20:37:35 +08:00
Holger Hans Peter Freyther e8723dcb86 nat: Fix nat crash on start due forgetting the ->data pointer.. 2010-07-22 20:30:40 +08:00
Holger Hans Peter Freyther c95cfda58d nat: Introduce a show statistics-by-lac LAC
Currently show show statistics only work by given the internal
configuration number, add a version that is working by LAC of
the BSC.
2010-07-22 20:26:10 +08:00
Harald Welte a60923821f make 'neci 1' the default in the example config files 2010-07-14 13:56:36 +02:00
Holger Hans Peter Freyther 6d2b66e89a abis_nm: Create a signal data structure for the NACK message
Provide the message type and the msgb of the NACK message.
2010-07-14 02:08:35 +08:00
Holger Hans Peter Freyther 4f448c97eb bsc: Add header file for the true BSC API. 2010-07-05 16:04:36 +08:00
Holger Hans Peter Freyther 02d39b2c4d msc: Create a dummy operation to keep the channel open for five seconds
* We should create the transaction for SMS, CC on the CM Service Request
  but for now we will use a band aid and create a dummy operarion to wait
  five seconds for the transaction to be opened.
2010-07-05 15:36:08 +08:00
Holger Hans Peter Freyther d1d45b3b89 nat: Remove the first_contact variable. 2010-07-05 14:47:15 +08:00
Holger Hans Peter Freyther 20ee312d5c nat: Create a method to determine if any MSC is connected.
In the future we will have multiple MSC connections so we will
need to figure if any of them is active.
2010-07-05 14:39:44 +08:00
Holger Hans Peter Freyther bec411b9db nat: Store the msc_con in the data of the bsc_fd
* Stop using nat->msc_con in the read_cb but use the data.
2010-07-05 14:30:21 +08:00
Holger Hans Peter Freyther db65bbd515 nat: Make queue_for_msc use the msc_con parameter, pass in the right msc_con
* Return msg'es to the right MSC Con. Right now it is nat->msc_con.
* When forwarding from BSC to MSC, use the msc_con inside the
  sccp_connections. This means we will only forward data with a
  connection to the BSC.
2010-07-05 14:30:14 +08:00
Holger Hans Peter Freyther 3a77e61033 nat: Keep track of the MSC handling the connection.
In the future we might have multiple MSCs connected
and need to dispatch it to the right one.
2010-07-05 13:33:18 +08:00
Holger Hans Peter Freyther f0945408f5 nat: Fix the testcase and init the logging infrastructure 2010-07-05 13:29:42 +08:00
Holger Hans Peter Freyther 49ab278b6f bsc_api: Only forward L3 messages when the channel is active
Avoid forwarding messages from a channel that is already being
closed. Harald has forwarded a crash report where this was failing.
2010-07-05 11:38:37 +08:00
Holger Hans Peter Freyther 952db280bd configure.in: Require 0.1.13 of libosmocore... 2010-07-05 10:55:28 +08:00
Sylvain Munaut 6f3850fcac gprs/llc: Don't check FCS in gprs_llc_hdr_dump
The FCS isn't computed yet (because of ciphering).

It _will_ be tested and reported as wrong later in the code
so we can just display it here and let the latter code report the
error if any.

Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2010-07-03 22:24:13 +02:00
Sylvain Munaut 7a7d364725 db.c: Fix some SQL queries for ambiguous column names
Thanks to Luca Bertoncello for pointing this out

Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2010-07-03 22:24:13 +02:00
Sylvain Munaut adea4f1bf8 db: Use proper %llu for subscriber ID in format string.
This was causing weird crashes when running in 32 bit linux.

Thanks to horiz0n for taking the time to debug this with me on IRC.

Written-by: horiz0n <cscan@gmx.net>
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2010-07-03 22:24:13 +02:00
Harald Welte c48ac4750d [SGSN] Some IEs in ATTACH REQUEST can be longer in 24.008
The original length checks were based on 04.08, but 24.008 allows
longer IEs.
2010-07-03 21:20:06 +02:00
Harald Welte 4b6ac1edb9 [SGSN] Initial work on GMM authentication and ciphering 2010-07-03 11:09:06 +02:00
Harald Welte 3e2e159707 [SGSN] LLC: only copy Kc if algorithm != GPRS_ALGO_GEA0
The caller currently has set the Kc pointer to NULL, this fix avoids
crashing at the callee.
2010-07-02 22:56:55 +02:00
Harald Welte d6f582b352 [SGSN] use GPRS_ALGO_GEA0 instead of '0' 2010-07-02 22:56:55 +02:00
Harald Welte 1b8827ae5b [SGSN] LLC: Make sure we calculate FCS after decryption 2010-07-02 22:55:39 +02:00
Harald Welte d07b4f99ce [SGSN] Use libosmocore GPRS encryption plugins from LLC layer
This adds the bits that call into libosmocore (and its plugins)
to implement GPRS (LLC) encryption.
2010-07-02 22:55:39 +02:00
Harald Welte 496aee463f [SGSN] Call libosmocore helper to load cipher plugins 2010-07-02 22:54:55 +02:00
Harald Welte 6ed4950d5b [SGSN] remove bogus debug statement 2010-07-02 22:52:33 +02:00
Harald Welte 23c13760ca [SGSN] SM: Properly parse APN and PCO Optional IE in PDP CTX ACT REQ 2010-07-02 22:52:04 +02:00
Harald Welte c5d4a0ced1 [SGSN] Print AP name and PDP address of each PDP context 2010-07-02 22:51:16 +02:00
Harald Welte 6add7c2009 [SGSN] Correctly pass IMSI of MM ctx to GTP/GGSN 2010-07-02 22:47:39 +02:00
Harald Welte 3d6815abd1 [SGSN] SNDCP: Subtract SNDCP header from fragment length
We don't want to store too many bytes as we would otherwise create
too large re-assembled packets..
2010-07-02 17:16:07 +02:00
Harald Welte 36f1217f32 [SGSN] SNDCP: SN-PDUs need a 16bit length field
The BSSGP LLC-PDU IE can have up ot 16bit length, so subtracting
the LLC header the SN-PDU can still have almost a length field
close to 0xffff
2010-07-02 16:44:24 +02:00
Harald Welte 8b705f2533 [SGSN] SNDCP: re-set total number of fragment length 2010-07-02 16:18:59 +02:00
Harald Welte 18d1452a92 [SGSN] Send poper SM and GMM STATUS in case we have no MM CTX 2010-07-02 16:18:18 +02:00
Harald Welte ab4094ca6b [SNDCP] some more defragmentation debug statements 2010-07-02 16:01:47 +02:00
Harald Welte 60da7d4f88 [SGSN] SNDCP defrag: use correct length, don't include LLC FCS
The LLC layer tells us the PDU length, and we have to use it
in SNDCP rather than to re-calculate it if we want to avoid copying
the CRC24 into the defrag elements.
2010-07-02 15:45:12 +02:00
Harald Welte 8f0c0a3a3c [SGSN] SNDCP: Actually copy the payload data in the defrag queue entry
Prior to this patch our defragmented messages always consisted of 00-bytes
2010-07-02 10:29:06 +02:00
Harald Welte 11ff3e8ec2 [SGSN] Remove old dead code 2010-07-02 10:17:24 +02:00
Harald Welte 19f9e30eb9 [SGSN] Only increment PDP CTX ACT count after check for retransmission 2010-07-02 10:15:49 +02:00
Harald Welte b37515e86b [SGSN] Account for re-transmitted PDP CTX ACT REQ
In case our PDP CTX ACT ACK gets lost on the Gb or Um link,
the MS re-transmits the PDP CTX ACT REQ.  We have to ACK it
again instead of REJecting it..
2010-07-02 10:12:58 +02:00
Harald Welte 993697c8d2 [SGSN] SNDCP: Fix off-by-one error missing last segment in defrag
When we defragment the segments from the defrage queue, we have
to iterate all the way up to (and including) the last segment number
that we have received.
2010-07-02 10:11:42 +02:00
Harald Welte b87bc86006 [SGSN] SNDCP: more verbose defragmentation debugging 2010-07-01 20:29:20 +02:00
Harald Welte 8911cef81d [SGSN] Fix segfault when passing re-assembled SN-PDU to GMM
sgsn_rx_sndcp_ud_ind() can no longer make the assumption that msgb_bcid() is
valid, as this is only true for an un-fragmented SN-PDU.  So instead,
we now store the RAID in the SNDCP Entity and pass it as an explicit
argument to sgsn_rx_sndcp_ud_ind().
2010-07-01 19:56:19 +02:00
Harald Welte 951a12cf4e [SGSN] SNDCP: fix off-by-one error during defragmentation 2010-07-01 15:09:45 +02:00
Harald Welte 362aea0f4d [SGSN] SNDCP: Initialize defrag list header 2010-07-01 12:31:10 +02:00
Harald Welte fd29a1f6cc [SGSN] GMM: Complete value_string for GMM cause values 2010-07-01 12:26:59 +02:00
Harald Welte 65d96783df [SGSN] SNDCP: use llist_for_each_entry_safe() when cleaning frag queue 2010-07-01 12:19:02 +02:00
Harald Welte 875840c603 [SGSN] Fix TLLI (re)assignments
Once The TLLI (or P-TMSI of which it is derived) change has been
confirmed by the MS, we need to unassign the old TLLI but keep
the new TLLI  _without_ re-setting the LLC entity structure such
as VUsend /VUrecv counters.
2010-07-01 11:54:31 +02:00
Harald Welte 937a9ecfcd [SGSN] Fix segfault when doing PS PAGING
The 'bssgp_paging_info' contains a pointer to the P-TMSI, and not
the P-TMSI itself.  The reason is that it is an optional BSSGP IE.
2010-07-01 11:53:25 +02:00
Harald Welte f78a3b2a22 [SGSN] Add VTY interface for SNDCP 2010-07-01 10:57:44 +02:00
Holger Hans Peter Freyther cacbc73d5e osmo_bsc: Add option parsing, vty dummy
Add dummy files and option parsing for the Osmo BSC code.
2010-06-30 15:11:30 +08:00
Holger Hans Peter Freyther ab5135e36a bsc: Move meas_rep.c into the libbsc.c as it is used from bsc_vty.c 2010-06-30 15:11:30 +08:00
Holger Hans Peter Freyther 5ccab1020c osmo_bsc: Add empty osmo_bsc_main.c and hook it into the build 2010-06-30 15:11:29 +08:00
Holger Hans Peter Freyther ec4bfdc435 bsc_api: Move the API init into the main function.
The BSC API will not be used until the first iteration through
the event loop so it is safe to call it after the bootstrap.
2010-06-30 15:11:29 +08:00
Holger Hans Peter Freyther 2f4dbebb20 osmo-bsc: Start adding code for the osmo_bsc..
This adds the unix domain socket rf control protocol into
the new subdirectory.
2010-06-30 15:11:29 +08:00
Nico Golde 5950236b5e * Fix null ptr dereference and sms memleak in case the recipient of an sms sent via vty is not attached. Store the sms in the database in this case for later delivery.
The problem is that sms_from_text returns NULL in case the
subscriber is not attached which a) leaks memory of the
previously allocated sms and b) runs into a null ptr
dereference in _send_sms_str().

There may be a better solution than this but this is the
easiest way of noticing and taking action I could find
without changing return values of sms_from_text.
2010-06-30 09:10:04 +02:00
Harald Welte bd17b39fd2 [BSC] VTY: Fix parsing of uppercase hex digits 2010-06-30 09:01:35 +02:00
Harald Welte 43ef6483db [SGSN] BSSGP: Print TLLI as hex value like everwhere else 2010-06-30 09:01:35 +02:00
Holger Hans Peter Freyther d9c9f07c2c handover: lchan_free will only free the local resources.
lchan_free only free's the local resource of the BSC but
does not release the channel at the BTS. Use lchan_release
to properly release the channel. This code assumes that the
timeout happens after a CHAN ACT ACK/NACK otherwise we have
some problems. The comment indicates that this is the case.
2010-06-30 13:04:13 +08:00
Holger Hans Peter Freyther f2553a6c3a handover: Call bsc_handover_clear from gsm0808_clear
The bsc_handover_clear will release an in-progress handover
and free the lchana and the data associated with this handover
2010-06-30 13:02:08 +08:00
Holger Hans Peter Freyther 0610947f4c misc: Move handover_logic.c into the libbsc.a
We are implementing the intra BSC handover so we should have the
code in the BSC as well.
2010-06-30 12:59:20 +08:00
Holger Hans Peter Freyther 88519eaaef msc: Add includes to silence a compiler warning. 2010-06-30 12:59:20 +08:00
Holger Hans Peter Freyther e071ab70e9 handover: Attempt to use the same gsm_subscriber_conn for new/old channel
The transaction should not know on which lchan we are operating
as this can change due handover. Add untested code to share the
subscriber connection of the new and old lchan and move the pointer
in case of success/failure. Also on a clear command we will free
any resources allocated...

This code is not tested and needs to be debugged, but it should
have the right structure. I am going to fix a potential memleak
in the next commit.
2010-06-30 12:59:20 +08:00
Holger Hans Peter Freyther d06516557a bsc_api: Avoid use after free kind of error on the lchan. 2010-06-30 12:17:35 +08:00
Holger Hans Peter Freyther 2486663844 ussd: Release the MSC connection as fast as possible.. 2010-06-30 12:15:19 +08:00
Holger Hans Peter Freyther 0379c6d386 abis_rsl: Add full MA again until we are confident to remove it
The spec seems to say we do not need to include the full MA,
even for Phase1 phones but that is not so clear...
2010-06-30 12:06:20 +08:00
Holger Hans Peter Freyther e38bd6caa3 abis_rsl: Change code to generate Channel Identification
1.) memset the gsm48_chan_desc to avoid sending dummy data
2.) According to the GSM08.58 9.3.5 the Mobile Allocation
    shall be included but the empty (by setting the length
    to zero).
3.) use msgb_tlv_put and calculate the length via the l3h
    msgb_l3len and assign it.
2010-06-30 12:01:22 +08:00
Holger Hans Peter Freyther 06abe9f383 ussd.c: Make sure text is memset to zero..
Make the strstr fail fast, make sure the text is null terminated...
2010-06-30 11:59:30 +08:00
Holger Hans Peter Freyther 66efcbce65 gsm_subscriber_base: Take a ref on the subscriber to avoid use after free
On expired paging we might access a GSM Subscriber that has already
been deleted. To avoid this we will add a subscr_get/subscr_put for
the subscriber to the allocation and release path of the request.

Reported-by: Richard Zahoransky
2010-06-30 11:59:29 +08:00
Harald Welte 93d50e69d3 [BSC] RSL: CHAN ACT: Only include MA if TS is hopping 2010-06-29 17:53:45 +02:00
Harald Welte 8fc60f0eb5 [SGSN] Deactivate SNDCP entity on PDP CTX DEACT CONFIRM
Otherwise we will end up leaking memory in the SNDCP layer...
2010-06-28 22:21:57 +02:00
Harald Welte bd5c91276b [SGSN] MM: Properly communicate TLLI changes / unassignment to LLC 2010-06-28 22:18:53 +02:00
Harald Welte f7fef48e1b [SGSN] LLC: properly free LLC entities at TLLI unassignment 2010-06-28 22:18:26 +02:00
Harald Welte c0d59504b4 [SGSN] Deactivate all PDP contexts on GPRS DETACH 2010-06-28 19:11:41 +02:00
Harald Welte 376d5e521e [SGSN] Fix segfault ar PDP CTX DEACT time
We need to call rate_ctr_group_free() on the per-PDPctx-counters
2010-06-28 18:57:21 +02:00
Harald Welte a1d39a2a11 [BSC] fix off-by-one error in computing l2 pseudo-length in IMM ASS
@fingerprint:
This caused Motorole EZX phones (Neptune LTE chipset) to discard
all immediate assigns and thus be unable to perform location updating.
2010-06-28 18:41:27 +02:00
Harald Welte 0f43dbcfc6 [ipaccess-config] Better way to set/unset NVRAM attributes
there are now human-readable names so you can do something like

ipaccess-config -U dhcp-enabled -S static-ip -S static-gw 192.168.100.120

to unset DHCP and to set static IP and gateway attributes.
2010-06-28 15:52:56 +02:00
Harald Welte 0aef73efc4 [ipaccess-config] Enable setting of static IP address / netmask / gateway
However, the 'static IP address' NVRAM flags are not yet set correctly
2010-06-28 15:18:17 +02:00
Harald Welte 8c21c07a65 [ipaccess-config] use msgb to make use of various tlv put functions
This looks so much better than the *cur++ type code.

Also, we now terminate ipaccess-config once the NV flags or Unit ID have
been set, not just for the OML IP address.
2010-06-28 14:41:09 +02:00
Holger Hans Peter Freyther ed83286950 gsm_data.c: Reorder includes to put osmocore up 2010-06-28 18:20:22 +08:00
Holger Hans Peter Freyther 4049455d74 bsc_msc: Remove use_count from the subscriber connection
A channel will be released in case of
    * Errors via the clear_request callback...
    * no more transactions and operations are going on.

This means that if we do something without a transaction
the channel might be closed down right away. The bug fix
will be to create a transaction/operation.
2010-06-28 18:01:47 +08:00
Holger Hans Peter Freyther 2412a07965 bsc_api: Allocate the subscriber_connection dynamically
This is a big change to the way we use the subscriber
connection. From now on it is is dynamically allocated
and we will slowly move from a 1:1 lchan to conn to
having more than one lchan per connection.

This is the first commit, the subscr_con* methods will
move to gsm_data once the use_count is removed from the
connection, the freeing of the connection will also change.
2010-06-28 16:12:39 +08:00
Holger Hans Peter Freyther 94d625bfa0 Revert "bsc_api: Move debug context for subscriber into the bsc_api.c"
This is breaking the filtering for the Measurement Report case, revert
the patch for now.

This reverts commit 69e8f8285b.
2010-06-28 13:38:19 +08:00
Harald Welte 9d4cca7a0e [BSC] Enable the use of whitespaces in the subscriber name
This patch (originally by Luca Bertoncello) adds support for spaces
in the subscriber name when specified from the VTY.
2010-06-24 08:06:38 +02:00
Holger Hans Peter Freyther 2788b96bf4 gprs: Fix LOGP misuse and specify LOGL_NOTICE as region. 2010-06-23 09:48:25 +08:00
Holger Hans Peter Freyther f7a1c23e1d lchan: Document why lchan_reset is there... at least try to. 2010-06-22 12:26:35 +08:00
Holger Hans Peter Freyther 5ba05f4d26 abis_rsl: Send the IMMEDIATE Assignment after the Channel Ack.
The Channel Activate might be sent to a different TRX than the
Immediate Assignment. So we need to make sure that the channel
is activated before we send the immediate assignment for the RACH.

Another reason for that is according to GSM 08.58 we should take
the frame number from the activate and use it for the starting
time inside the immediate assignment message. We obviously do not
do this yet.

The code assumes that the BTS will either respond with a CHAN ACK
or a CHAN NACK if not the lchan will remain in the request state.
2010-06-22 12:26:35 +08:00
Nico Golde 4df2ad9ac6 [SMS] avoid mktime on NULL
gmtime(NULL) returns NULL at least in glibc and *can not* be used as
time(NULL). Since we compare two time_t values when checking the validity
period this can be replaced by time(NULL)
2010-06-21 13:51:28 +02:00
Holger Hans Peter Freyther c8bf3c178f misc: make the compiler happy...
The compiler treats uint8_t*[] and uint8_t* differently,
use the address of the first element and assign that.
2010-06-21 18:21:16 +08:00
laforge cfa4a01c8f [RSL] hopping: Set correct L2 pseudo-length during IMMediate ASSign
Thanks to Sylvain for the hint that lead to this fix.
2010-06-21 12:09:41 +02:00
Holger Hans Peter Freyther a69d923fd7 bsc_api: Use conn->bts directly... 2010-06-21 16:40:09 +08:00
Holger Hans Peter Freyther 69e8f8285b bsc_api: Move debug context for subscriber into the bsc_api.c 2010-06-21 16:40:09 +08:00
Holger Hans Peter Freyther db4ef0d369 bsc_api: Remove the lchan usage from the Paging Response handling. 2010-06-21 16:40:09 +08:00
Holger Hans Peter Freyther 758f4dfa17 silent_call: Use the gsm_subscriber_connection instead of lchan->conn 2010-06-21 16:40:09 +08:00
Holger Hans Peter Freyther 1afbd76155 abis_nm.c: Reading the in_addr can lead to unaligned memory access
The value of the in_addr might not be 32 bit aligned and reading
it can generate an alignment error on ARM. Fix it by using memcpy
to copy the data into a local variable.

There are many more potential alignment issues that we will fix
when we hit them.
2010-06-21 16:40:09 +08:00
Holger Hans Peter Freyther 34949ae924 bsc_init: Avoid unaligned access to nanobts_attr_nsvc0
nanobts_attr_nsvc0 + 10 is unlikely to be 32 bit aligned
and will trigger an alignment error on ARM..
2010-06-21 16:40:09 +08:00
Holger Hans Peter Freyther ad98128e65 configure.in: Require a newer libosmocore. 2010-06-21 16:40:09 +08:00
laforge 694a5cfe06 [BSC] RSL: Fix Channel Identification IE in RSL CHAN ACT
We now not only include the 04.08 channel description but also
the 04.08 Mobile Allocation nested IEs
2010-06-20 21:55:23 +02:00
Harald Welte 9575fd0732 [BSC] add example hopping config file for BS-11 in 2TRX config 2010-06-20 16:08:36 +02:00
laforge abeb951426 [BSC] Fix off-by-one error in computing mobile allocation 2010-06-20 15:56:50 +02:00
laforge f87ebe69d5 [BSC] NM: Correct treatment of ARFCN_LIST for BS-11
For Siemens BS-11, the 'length' value of the ARFCN_LIST IE is interpreted in
violation of the spec.  The spec says it is a length in octets, while Siemens
treats it as 'count of 16bit ARFCN values'.
2010-06-20 15:20:02 +02:00
laforge 09108bff95 [BSC] RSL: properly include MA in IMM ASS CMD
When we build an IMMediate ASSign CoManD for a hopping channel,
we need to include the length of the MA in the total length of
the 04.08 message
2010-06-20 15:18:46 +02:00
Harald Welte c8794b5977 [BSC] SI: make sure we initialize the data field, not the bitvec structure 2010-06-20 10:44:54 +02:00
Harald Welte 9da921b8b0 add more executables to .gitignore 2010-06-20 10:44:54 +02:00
Harald Welte 29aca17ed0 [BSC] Hopping: Add MA IE to ASS CMD, IMM ASS CMD and HO CMD
Also, make sure the bit ordering in the pre-computed MA is correct,
as well as the cell channel description of the target cell being
present in the HO CMD.
2010-06-20 10:44:53 +02:00
Harald Welte 7401ae6a79 [BSC] Keep a SYSTEM INFORMATION cache for each BTS
This will later be useful for handover where we need to copy the cell
channel allocation into a normal 04.08 message
2010-06-20 10:44:53 +02:00
Harald Welte fd3708976a [BSC] Generate MA for each timeslot that has hopping enabled
The MA is used in 04.08 channel assignment related messages
2010-06-20 10:44:53 +02:00
Harald Welte c2fb3d0c3d [BSC] Make sure we only enable hopping on BTS that support it 2010-06-20 10:44:53 +02:00
Harald Welte f3d8e92731 [BSC] introduce the concept of 'BTS features'
We can then check if a bts supports a certain feature or not.
2010-06-20 10:44:53 +02:00
Harald Welte a39b0f2bb7 [BSC] Implement per-timeslot ARFCN lists for frequency hopping
We now compute the Cell Channel Description for SI 1 by bit-wise
OR of the ARFCN bitmask of each timeslot on all the TRX of the BTS.

Also, support generating a GSM 04.08 Channel Description IE for
the hopping case (with HSN/MAIO instead of ARFCN).

What's still missing now: Sending the 04.08 Mobile Allocation IE
2010-06-20 10:44:53 +02:00
Harald Welte 6e0cd04725 unfinished support for hopping channels 2010-06-20 10:44:52 +02:00
Harald Welte b37e5f8a60 [BSC] mISDN: Avoid sending RSL messages to wrong channel number
In some cases, we get a DL_INFORMATION_IND with a wrong channel
number, and only in the DL_ESTABLISH_IND we will see the real
channel number that is to be used for this (TEI, SAPI) tuple.
2010-06-20 10:44:15 +02:00
Andreas.Eversberg 2db4d46680 AW: Problem compiling OpenBSC on Kubuntu Hardy 2010-06-17 17:40:07 +02:00
Holger Hans Peter Freyther 71d36b3d04 nat: Add spaces to the desc to align it properly on the vty output 2010-06-17 18:31:18 +08:00
Holger Hans Peter Freyther 8330c1c386 nat: Count the number of dropped SCCP and MGCP calls as well.
Count the number of dropped calls and lost SCCP connections
due the loss of a connection to the BSC...
2010-06-17 18:29:42 +08:00
Holger Hans Peter Freyther b2c38ebb1f nat: Switch per BSC counters to the rate ctr.
This is switching the simple statistics to the rate counter
and is updating all users...
2010-06-17 18:18:12 +08:00
Holger Hans Peter Freyther f6d0e06940 bsc_api: Set the l3h header from within the dtap method
This is fixing USSD which broke when the code was
switched to use the BSC API.
2010-06-17 17:48:13 +08:00
Holger Hans Peter Freyther d42c3f25a6 bsc_api: Remove the lchan from the USSD code... 2010-06-17 17:35:57 +08:00
Holger Hans Peter Freyther 3f122bed1e bsc_api: Kill &lchan->conn usage, stop msg->lchan too.. 2010-06-17 17:14:35 +08:00
Holger Hans Peter Freyther dad5724eb3 bsc_api: Remove lchan->conn from the RLL code... it was all dead anyway 2010-06-17 16:58:38 +08:00
Holger Hans Peter Freyther c6bb3c4e33 bsc_api: Fix compile warning in paging code.. 2010-06-17 16:43:24 +08:00
Holger Hans Peter Freyther 9764331062 bsc_api: Move gsm48_rcvmsg into the BSC API and dispatch.
The next step in the way to the BSC API. We have a clear a
new connection was opened signal now... and the MSC could
use it...
2010-06-17 16:41:25 +08:00
Holger Hans Peter Freyther 86481c29d4 bsc_api: Make paging/silent call work with the subscriber_connection
Do not use the lchan for the paging but operate on the
subscriber_connection, change the signals too to not carry
the lchan but the subscriber connection... the silent call
and vty code still assume there is a lchan inside the
subscriber connection.
2010-06-17 15:05:57 +08:00
Holger Hans Peter Freyther 7b4a53d537 nat: Rename BSC_NODE to NAT_BSC_NODE to avoid future issues. 2010-06-17 14:42:20 +08:00
Holger Hans Peter Freyther 9c78697fa2 nat: Add the exit/end command to the NAT config nodes. 2010-06-17 14:39:15 +08:00
Holger Hans Peter Freyther 8cc2a6d62d Merge branch 'on-waves/mgcp' 2010-06-17 14:37:10 +08:00
Holger Hans Peter Freyther 75492e6e54 [mgcp] Set the IP_TOS/DSCP on RTP/RTCP IP packets. 2010-06-17 14:34:30 +08:00
Holger Hans Peter Freyther a19bdabf22 [mgcp] Only patch RTP packets when they arrived on the RTP port
Do not attempt to patch RTCP packets...
2010-06-17 14:34:17 +08:00
Holger Hans Peter Freyther 57c4decd1d bsc_api: Pass the subscriber connection to the SMS... 2010-06-16 15:43:01 +08:00
Holger Hans Peter Freyther 0fbb3eca14 bsc_api: Remove the _lchan and make the method static.. 2010-06-16 15:42:59 +08:00
Holger Hans Peter Freyther 4f8340939e bsc_api: Remove some more occurences of the lchan. 2010-06-16 15:42:40 +08:00
Holger Hans Peter Freyther 77008464be bsc_api: Move BSC API between MSC and RSL code...
The lowlevel BSC paging API is a simple wrapper around
the RSL command. The BTS will automatically repeat these
messages but if we end up with two MSC inputs we will
need to count these messages somewhere...
2010-06-16 15:42:40 +08:00
Holger Hans Peter Freyther bddd152049 bsc_api: Operate on the subscriber connection for subscriber management 2010-06-16 15:42:40 +08:00
Holger Hans Peter Freyther 9ce1b27fbf bsc_api: Use gsm_subscriber_connection in rrlp.c 2010-06-16 15:42:40 +08:00
Holger Hans Peter Freyther b2be195b50 bsc_api: Rename lchan_for_subscr to connection_for_subscr and update code
With handover and late/early assignment there might be two channels
for one subscriber and only the BSC knows which one to use, so use
the gsm_subscriber_connection everywhere...
2010-06-16 15:42:38 +08:00
Holger Hans Peter Freyther ea01ca764f chan_alloc: Make the lchan_find(bts,subscr) private/internal.. 2010-06-16 15:42:22 +08:00
Holger Hans Peter Freyther 0128843591 gsm48: Release the "operation" after sending out data...
* With an immediate release we would release the lchan
  before sending the data... change it.
2010-06-16 15:42:21 +08:00
Holger Hans Peter Freyther 228c1059fd bsc_api: Remove the lchan from the secure channel code...
The code still needs to stop touching the lchan directly
and put stuff into it.
2010-06-16 15:42:21 +08:00
Holger Hans Peter Freyther e9ed340425 bsc_api: Cut back on direct lchan usage. 2010-06-16 15:42:21 +08:00
Holger Hans Peter Freyther 667cdd60ca gsm_subscriber_base: Pass the subscriber as param to avoid crash.
The function we call will take the item from the list and do
the right thing.
2010-06-16 15:42:21 +08:00
Holger Hans Peter Freyther 280c768f91 gsm_04_11: Fix a crash... in case there is a already a connection
If there is a connection, return before paging... otherwise
we will delete the SMS twice.
2010-06-16 15:42:18 +08:00
Holger Hans Peter Freyther 1c6f394234 si13: Use the correct pseudo length for the SI13 message
The GSM04.08 Section 10.5.2.19 specifies the L2 Pseudo Length
and the length does not include rest octets, so we will need
to use a zero for the length.

The patch is coming from Dieter Spaar.
2010-06-16 12:11:43 +08:00
Holger Hans Peter Freyther 28e2988ce2 nat: Add the OSMO NAT to the build process. 2010-06-15 20:31:43 +08:00
Holger Hans Peter Freyther 434a1fd84e nat: Make the test compile, no bssap.c, use log_target 2010-06-15 20:31:43 +08:00
Holger Hans Peter Freyther 1398f13a64 nat: Attempt to update the VTY usage to the latest version
* Install the show commands to be available in the enable mode as well
* Provide a copyright header..
2010-06-15 20:31:35 +08:00
Holger Hans Peter Freyther 69d801e23a nat: Do not use the bssap.h include as it does not exist in this branch. 2010-06-15 20:24:21 +08:00
Holger Hans Peter Freyther 9b0550ce4c [mgcp] Build a libmgcp.a and link to it. 2010-06-15 20:24:21 +08:00
Holger Hans Peter Freyther ab52c84889 nat: Add NAT_NODE and BSC_NODE for the nat
Implement the go to parent and exit functions for the nat.
2010-06-15 20:24:21 +08:00
Holger Hans Peter Freyther 3d73e0d235 nat: Register a debug region for the nat. 2010-06-15 20:24:21 +08:00
Holger Hans Peter Freyther 27d36de3b9 nat: Fix the access-list-name command...
We have added two commands with the same name to the tree..
the second one should have been the BSC...
2010-06-15 20:24:21 +08:00
Holger Hans Peter Freyther 26c3a358d6 nat: Add both entries to the tail to keep the order they are inserted 2010-06-15 20:24:21 +08:00
Holger Hans Peter Freyther d77c8171aa nat: Allow to specify multiple entries in the access-list...
Inside the access-list we have a list of entries that have
either one allow or one deny rule... we do not allow to remove
a single rule but one has to remove the whole list, in that case
talloc will handle cleaning all entries.

Right now the matching is O(n*m) as we traverse the list
(multiple times) and run the regexp multiple times. One
way to make it faster would be to concat all regexps into
one.
2010-06-15 20:24:21 +08:00
Holger Hans Peter Freyther 29c67039fe nat: Shorten the access-list struct and method names (still way too long) 2010-06-15 20:24:21 +08:00
Holger Hans Peter Freyther e4900a074a [nat] Implement the removal of an access-list. 2010-06-15 20:24:21 +08:00
Holger Hans Peter Freyther f0c3e912e3 [nat] Fix the parsing of the access-list regexp...
We need to start at argv[1] for the regexp of
this access-list, also subtract one from number
of items..
2010-06-15 20:24:21 +08:00
Holger Hans Peter Freyther 86c4dc3a0e [nat] Fix VTY bug with access-lists...
vty->index does not hold a BSC Config at this point as we are
on the nat level... use the global _nat pointer for now...
2010-06-15 20:24:21 +08:00
Holger Hans Peter Freyther 8affef5059 [nat] Introduce the concept of access-list
One can set one access-list to one BSC and one
access-list to one NAT. The matching of IMSIs
remains the same for now, also applying the
white/blacklist. Access lists can not be deleted
for now and no perf opt is done (e.g. one could
cache the result of the last lookup in the bsc
struct).
2010-06-15 20:24:21 +08:00
Holger Hans Peter Freyther 078321aaae [nat] Add ip-tos option to the nat.
This is applied to all incoming BSC connections.
2010-06-15 20:24:21 +08:00
Holger Hans Peter Freyther ca999a989d msc: Add msc ip-tos NR option for the BSC
Allow to set the TOS field via the VTY interface. The
SO_PRIORITY was not used as it has no effect on the
packets being sent (in contrast to the documentation).
2010-06-15 20:24:20 +08:00
Holger Hans Peter Freyther b71c23bb0a [nat] Make the refusal more complicated to support more MSCs
We will need to confirm the connection, then we can send the
GSM48 message, then we need to close the connection... the
embedding in the refusal method was way too easy..
2010-06-15 20:24:20 +08:00
Holger Hans Peter Freyther fa20c94456 [nat] Make create_sccp_src_ref return the SCCP Connection.
Right now it was not possible to just find a connection, by returning
the connection that is created we will have direct access to it. It
will be used by the local connection handling.
2010-06-15 20:24:20 +08:00
Holger Hans Peter Freyther e1fb5670cd [nat] Remove parameter that is never accessed directly
The msgb needs to be around when we access the parsed structure
but that needs to be guranteed by the caller handing out the parsed
structure.
2010-06-15 20:24:20 +08:00
Holger Hans Peter Freyther c58da4b374 [nat] Add the notion of a "local" connection.
A local connection is only between the MUX and the real BSC. We will
not forward anything to the MSC. This will be needed for the IMSI
filtering as sending a CREF is not liked by every BSC...
2010-06-15 20:24:20 +08:00
Holger Hans Peter Freyther 605f62a16a [nat] Do not access the con after the removal
In case of a RLC message we will destroy the SCCP connection. This means
that accessing the con and con->bsc will access old memory. Keep the status
local and move the con into an inner scope.
2010-06-15 20:24:20 +08:00
Holger Hans Peter Freyther ed775e4c1d [nat] Send a GSM48 message within the reject message 2010-06-15 20:24:20 +08:00
Holger Hans Peter Freyther 91246d724f [nat] Move the SCCP CREF handling into a new method.
We will need to generate messages with a proper reason
and it is easier to do that from a dedicated method.
2010-06-15 20:24:20 +08:00
Holger Hans Peter Freyther 234d31218f [nat] Use and print the connection type of a SCCP connection. 2010-06-15 20:24:20 +08:00
Holger Hans Peter Freyther 19c0a84fb8 [nat] Set the connection type/reason as out parameter
We are analyzing each CR message and it is nice to know the
reason these connections were created. Change the nat method.
2010-06-15 20:24:20 +08:00
Holger Hans Peter Freyther 66e1ef73c8 [nat] Use the new gsm48 method to parse the MI followed by a classmark. 2010-06-15 20:24:20 +08:00
Holger Hans Peter Freyther 1f38747cf1 [nat] Let IMSI DETACH and other messages pass by. 2010-06-15 20:24:20 +08:00
Holger Hans Peter Freyther 48945b18cd [nat] Print on which BSC config this happend. 2010-06-15 20:24:20 +08:00
Holger Hans Peter Freyther f192498885 [nat] Parse the PAGING RESPONSE inside a CR message as well.
Now we are parsing a CM Service Request, Location Updating Request
and the Paging Response. For all other messages we claim to not
support it and force a refuse.
2010-06-15 20:24:20 +08:00
Holger Hans Peter Freyther 87ef2f27e4 [nat] Check proto descriptor and the message type 2010-06-15 20:24:19 +08:00
Holger Hans Peter Freyther bcb32a4ad9 [nat] Add code to filter the CM Service Request by IMSI.
The code should be shared among the GSM0408 implementation
and this one, and like the LU we are not handling a TMSI
properly as we have no idea where it is coming from.
2010-06-15 20:24:19 +08:00
Holger Hans Peter Freyther 5f10c6d6f4 [nat] Mention where the MSG is coming from. 2010-06-15 20:24:19 +08:00
Holger Hans Peter Freyther e6dfb18a79 [sccp/nat] Make it optional to send data on a SCCP Connection Refuse
This can be used to send a Location Updating Reject down to the
BSC when it is clear that a subscriber is not allowed.
2010-06-15 20:24:19 +08:00
Holger Hans Peter Freyther f1012a432c [nat] Remove the imsi allow option on the nat level.
For now we have:
1.) bsc imsi deny to deny at the BSC level
2.) bsc imsi allow to allow a SIM at the BSC level
3.) nat imsi deny to deny at the global level
2010-06-15 20:24:19 +08:00
Holger Hans Peter Freyther 1498d2e182 [nat] Separate exit2/exit3 as this can not be shared...
We have tried to send a refuse for arbitary things and ended
up with a segfault... separate the exi2 and exit3 label to have
separate exits and cleanups.
2010-06-15 20:24:19 +08:00
Holger Hans Peter Freyther e635dab52f [nat] Add a token to the nat config and handle ID GET
This allows to chain a nat with a nat by answering to the
id get code and sending the token.
2010-06-15 20:24:19 +08:00
Holger Hans Peter Freyther f76e7ef5e1 [bsc_msc] Move the id get response into the bsc_msc.c
Create the message in a common place and then it can be used
by tools having an a link or such.
2010-06-15 20:24:19 +08:00
Holger Hans Peter Freyther 52c4ba0309 [nat] Add a regexp test command to the VTY.
This allows to test the regexp to be used for allo/deny of
the imsi filter.
2010-06-15 20:24:19 +08:00
Holger Hans Peter Freyther a0aeaa799e [nat] Fix the regexp of the test and the command line. 2010-06-15 20:24:19 +08:00
Holger Hans Peter Freyther 3df0233e5d [nat] Fix the imsi deny config write. 2010-06-15 20:24:19 +08:00
Holger Hans Peter Freyther 9cc1b83c54 [nat] We do not want to see the actual matches. 2010-06-15 20:24:19 +08:00
Holger Hans Peter Freyther b606101011 [nat] Allow to set the description for the bsc.
This will allow to add description to each BSC.
2010-06-15 20:24:19 +08:00
Holger Hans Peter Freyther 34a96aeb32 [nat] Implement IMSI filtering... 2010-06-15 20:24:18 +08:00
Holger Hans Peter Freyther f830322846 [nat] Fix the size check of the LU Request. 2010-06-15 20:24:18 +08:00
Holger Hans Peter Freyther 12dc89ad37 [nat] Make the string -> regexp parsing public
This way it can be used from within a test case to test
the regexps..
2010-06-15 20:24:18 +08:00
Holger Hans Peter Freyther 290ed9a98c nat: Add code to parse the SCCP optional data.
First we have the Complete Layer3 Information, then we have
the IE for the Layer3 information, then the GSM48 hdr, then
the actual content with data. Right now we are parsing the
LU but we are not filtering anything yet.
2010-06-15 20:24:18 +08:00
Holger Hans Peter Freyther 0c08db17bf nat: Start to add a test case.. with one CR message. 2010-06-15 20:24:18 +08:00
Holger Hans Peter Freyther b4af5c9b57 nat: Introduce a nat filter that is working on the CR message.
Currently there is no implementation but the refusal code is
in place and will send a refusal back to the BSC.
2010-06-15 20:24:18 +08:00
Holger Hans Peter Freyther d8b82066fa [nat] Use A.B.C.D for the IP address
The VTY code will then be able to validate the IP Address.
2010-06-15 20:24:18 +08:00
Holger Hans Peter Freyther c89c030b10 [nat] Remove range checks inside the VTY command.
The ranges are enforced by the VTY code.
2010-06-15 20:24:18 +08:00
Holger Hans Peter Freyther 2f2d3428d9 abis: Pass the abis_om_obj_inst in the nm_state_event.. 2010-06-15 20:24:18 +08:00
Holger Hans Peter Freyther 6b6ecba1a7 nat: Have a recycle timer that removes unconfirmed SCCP connections.
The MSC does not respond to a SCCP CR with Paging Response as GSM
payload, when the response comes in 'too late'. Prevent the MUX having
stale connections and start removing old connections every 20 minutes.
2010-06-15 20:24:18 +08:00
Holger Hans Peter Freyther 886d382fea nat: When we fail to reallocate... also close down the MGCP part
Give the BSC a chanche to close down MGCP ports as well.
2010-06-15 20:24:18 +08:00
Holger Hans Peter Freyther c14e09bb2d nat: Store the creation time of a sccp connection.
Generate it when creating the connection but also when
reusing an existing connection.
2010-06-15 20:24:18 +08:00
Holger Hans Peter Freyther aad82ce7ea nat: Print the MSC status with a new vty command. 2010-06-15 20:24:18 +08:00
Holger Hans Peter Freyther e47a91b86a bsc_msc: Add a connection timeout for the MSC.
When no one is listening our connection would get stuck
in the SYN_SENT state and we would be there forever.
2010-06-15 20:24:18 +08:00
Holger Hans Peter Freyther 569ee123a2 nat: Using the right fd can be a good idea as well 2010-06-15 20:24:17 +08:00
Holger Hans Peter Freyther 872d7683d3 nat: Fix bad bug, make sure the fd is not overwritten..
The adding of the innocent looking code was actually overwrote
the fd and then stupid things happened. Rename variables to avoid
that. rc,ret should be scratch variables...
2010-06-15 20:24:17 +08:00
Holger Hans Peter Freyther 9e938c680f nat: Use TCP_NODELAY for the connection to the BSC.
We do not want to use NAGLE for the BSC connection.
2010-06-15 20:24:17 +08:00
Holger Hans Peter Freyther 74cfab7b5d nat: Improve log messages. Refer to ip and fd. 2010-06-15 20:24:17 +08:00
Holger Hans Peter Freyther da35a8da7f nat: Make ping/pong timeout configurable. 2010-06-15 20:24:17 +08:00
Holger Hans Peter Freyther 5078871611 nat/bsc: Send PONG on PING, send PING from the BSC too
We do want to send PING/PONG in both ways to have a heartbeat
on the TCP connection. When switching over to SCTP we can rely
on the builtin heartbeat functionality.
2010-06-15 20:24:17 +08:00
Holger Hans Peter Freyther 906c15ec53 nat: Send a IPA PING down the stream and wait for the pong.
We will send a ping every 20 seconds and if we have no pong
within 5 seconds we will close down the BSC connection and
wait for a reconnect. We will start this after having
authenticated the BSC and we stop the timer when destructing
the BSC connection.
2010-06-15 20:24:17 +08:00
Holger Hans Peter Freyther 314191d75a nat: Allow to only show statistics for a given BSC Cfg. 2010-06-15 20:24:17 +08:00
Holger Hans Peter Freyther 5cdcfa6224 nat: Do not allow a BSC to send auth messages twice. 2010-06-15 20:24:17 +08:00
Holger Hans Peter Freyther 3b8798184b nat: Fix vty output for connected BSCs 2010-06-15 20:24:17 +08:00
Holger Hans Peter Freyther 19c3544f0a nat: Improve log message and refer to the BSC that was lost. 2010-06-15 20:24:17 +08:00
Holger Hans Peter Freyther 3a347f0ace nat: Fix memory leak... in MGCP forwarding
The code needs to be refactored but this is fixing the leak for
now. We used to forward everything to the BSC but now we handle
the DLCX locally and this means we need to clear the patched
message. We should refactor it to not generate the patched msg
until a lot later.
2010-06-15 20:24:17 +08:00
Holger Hans Peter Freyther 0b0b31c708 nat: Report some more contexts 2010-06-15 20:24:17 +08:00
Holger Hans Peter Freyther b9af2fae51 nat: Do not use \n in the vty code.
When we really need a newline we need to use VTY_NEWLINE.
2010-06-15 20:24:17 +08:00
Holger Hans Peter Freyther 2f9dcf0670 nat: Add a command to close a given BSC Connection
This can be used to clear stale connections for a given BSC
or to force a reconnect of the BSC.
2010-06-15 20:24:17 +08:00
Holger Hans Peter Freyther 4bd2294492 nat: Print the remote reference as well. 2010-06-15 20:24:16 +08:00
Holger Hans Peter Freyther fef76122a7 nat: Release the transaction id earlier, always reset the BSC
In case we can not find the SCCP connection we still want to
free any pending transaction ids and reset the BSC inside the
endpoint. In most cases this should be already done when the
SCCP connection or the whole BSC is gone.
2010-06-15 20:24:16 +08:00
Holger Hans Peter Freyther 3d194d9986 nat: Attempt to clarify the text inside the log message. 2010-06-15 20:24:16 +08:00
Holger Hans Peter Freyther a1597f1b29 nat: Allocate a named context to make dumping allocations possible
This is fixing the SIGUSR1 to really report the allocated
memory on stderr.
2010-06-15 20:24:16 +08:00
Holger Hans Peter Freyther 4c683d1215 nat: Only close connections that were fully connected
Remember that we have seen a CC and have a valid destination
local reference now and only send a fake RLC to the MSC when
we had connections in this state.
2010-06-15 20:24:16 +08:00
Holger Hans Peter Freyther 9db7843c06 nat: When having a proper close down, or a short read close the connection
For now close the connection when having a short read. This might
be due a network issue (loss of segment) or similiar. As we are not
handling these issues well, let us close the connection.
2010-06-15 20:24:16 +08:00
Holger Hans Peter Freyther 959bbcf0e7 nat: Only send DLCX when we have send a CRCX to the BSC on this endpoint 2010-06-15 20:24:16 +08:00
Holger Hans Peter Freyther 9d56d0c45b nat: Handle all queueing to the MSC through the same function. 2010-06-15 20:24:16 +08:00
Holger Hans Peter Freyther ab7539cc89 nat: Use show bsc config for showing the configuration. 2010-06-15 20:24:16 +08:00
Holger Hans Peter Freyther f42f45bf6a nat: Use hex for the endpoint names 2010-06-15 20:24:16 +08:00
Holger Hans Peter Freyther 7b7eef62c1 nat: Change MGCP DLCX handling and send dummy MDCX to the BTS.
When setting a new MSC timeslot to a SCCP connection check if
any of the existing connections have this timeslot, if so we will
send a DLCX down the stream to make sure it is closed there, when
we will CRCX this new timeslot we will happily reallocate it.

When the SCCP connection goes away, or we get a DLCX from the
network, or the BSC is gone we will send a DLCX message down the
stream as well.

When we receive a CRCX from the network we will forward the CRCX
as usual and send a dummy MDCX after it.

For the DLCX and the dummy MDCX we send a custom MGCP message
that will not provoke an answer. Even if the downstream MGCP GW
will answer we will ignore it due the dummy transaction id that
is not used anywhere else.

This change should make sure that we close the dowstream endpoint
all the time, even when the DLCX arrives after the SCCP connection
is torndown.
2010-06-15 20:24:16 +08:00
Holger Hans Peter Freyther 8151973c73 nat: Move the write queue init to the allocation function
This is required for unit tests that want to queue messages
and see if we can provoke a memleak.
2010-06-15 20:24:16 +08:00
Holger Hans Peter Freyther e464ed4e7c nat: Clear the queued messages at the end
It is possible that the calls from the loop would queue
more messages for the BSC and then we would have a nice
memory leak... Move it to the bottom.
2010-06-15 20:24:16 +08:00
Holger Hans Peter Freyther a34585e296 [nat] Degrade the message to a plain debug output. 2010-06-15 20:24:16 +08:00
Holger Hans Peter Freyther 834f1df21e [nat] Fix the vty option... use the right argument. 2010-06-15 20:24:15 +08:00
Holger Hans Peter Freyther 62e5843a61 [nat] Add option to forbid the paging to the BSC.
This can be done for testing purposes and to allow making
a BTS crash that can not handle paging requests properly.
2010-06-15 20:24:15 +08:00
Holger Hans Peter Freyther b5513caaf8 [nat] Lookup by BSC Connection otherwise the point of reassigning the is defeated
When sending a MSG to the MSC try to find the to be used "src" reference
by comparing the reference on the BSC and the BSC connection. Only this
tuple needs to be unique.
Actually only when looking at the SRC REF we need to compare the BSC as the
dest reference should be unique but we are just making the check a bit stronger
to make it look symmetric.
2010-06-15 20:24:15 +08:00
Holger Hans Peter Freyther ca0c2f9d1e [nat] Slightly improve logging..
If we find the connection of a different BSC at least log the
BSCs that had duplicated references. We should also dump the
src ref and such but i am not doing this right now.
2010-06-15 20:24:15 +08:00
Holger Hans Peter Freyther a4376adb54 [nat] Ignore paging that is to page by BSS...
We do not want to handle this identity. If we can not page by
lac there is no need to page anything else.
2010-06-15 20:24:15 +08:00
Holger Hans Peter Freyther 5e63f921f0 [nat] Add unit test to forward Proto Error messages back both ways. 2010-06-15 20:24:15 +08:00
Holger Hans Peter Freyther 842c0c020f [nat] Reword warning when we had a pending transaction and forget about it. 2010-06-15 20:24:15 +08:00
Holger Hans Peter Freyther d885b98a05 [nat] Cope with a bad BSC reassigning in use SRC REF
Some closed source BSC like to assign the SRC REF from a
small static pool and might reuses one we have not yet given
up on.
2010-06-15 20:24:15 +08:00
Holger Hans Peter Freyther 01a0b1b2e0 nat: Make sccp/bsc show connections more Cisco like...
Second attempt to use a syntax more comparable to 'Cisco',
I have never used such a system... let us see how this is
going.
2010-06-15 20:24:15 +08:00
Holger Hans Peter Freyther 7fc9a27bf1 nat: Do not use 0/0 for mux/timeslot by default
0 is a valid timeslot and we should not use it... use
a negative value to be save.
2010-06-15 20:24:15 +08:00
Holger Hans Peter Freyther 317ae72c47 nat: Clear the connection on a DLCX
We can forget about the timeslot/multiplex when getting
the DLCX. This way we make room for the next connection
that might need to reuse this address.
2010-06-15 20:24:15 +08:00
Holger Hans Peter Freyther 7a773696dc nat: Always initialize the out pointer...
Always initialize the pointer to a invalid value in case
we encounter a parsing error or such.
2010-06-15 20:24:14 +08:00
Holger Hans Peter Freyther c87c8b748e nat: Fix the test case by allocating a config.
For the statistics we do need to have an allocated config,
otherwise we will nicely crash.
2010-06-15 20:24:14 +08:00
Holger Hans Peter Freyther 08a1b16674 nat: Return the SCCP Connection again...
We will reset the multiplex in a DLCX message and then
we can reset the multiplex as well...even if the MGCP
connection is staying open. or at least this is a theory.

The MSC likes to leave a connection open during CallControl
when hanging up early enough in the process.
2010-06-15 20:24:14 +08:00
Holger Hans Peter Freyther eb52e89c3a nat: Return the newest SCCP connection...
In case we have a stale SCCP connection with an Endpoint that
we want to reassign...use the newest (last) occurence of that
as it is most likely the one we want to handle.
2010-06-15 20:24:14 +08:00
Holger Hans Peter Freyther 3d0049f4a0 nat: Increase the right counter on calls. 2010-06-15 20:24:14 +08:00
Holger Hans Peter Freyther 8b5100698b nat: Add new connections to the end of the list
By adding them to the end the VTY interface will only append
connections and not change the order on each invocation.
2010-06-15 20:24:14 +08:00
Holger Freyther d6b616a388 nat: Remove the SHOW_STR from none show commands. 2010-06-15 20:24:14 +08:00
Holger Hans Peter Freyther 979a309c94 nat: Print the LAC that was searched for and not found. 2010-06-15 20:24:14 +08:00
Holger Hans Peter Freyther c615c260ea nat: Mention when we do not find a BSC for a given token.
This might help to identify what is wrong with the config
of the BSC. Also using the result of TLVP_VAL as a char
pointer looks suspicious...
2010-06-15 20:24:14 +08:00
Holger Hans Peter Freyther 6d5a60041a nat: Print the IP address of the BSC that does not respond to the query. 2010-06-15 20:24:14 +08:00
Holger Hans Peter Freyther 8139553962 nat: Make the MSC configurable. 2010-06-15 20:24:14 +08:00
Holger Hans Peter Freyther a88742cf5e nat: Move MSC ip address into the config..
The address can still be specified on the cli and it will
overwrite the config in the config file.
2010-06-15 20:24:14 +08:00
Holger Hans Peter Freyther 1395948e18 Use osmocore tlv definition for GSM0808. 2010-06-15 20:24:14 +08:00
Holger Hans Peter Freyther d1278c1fc9 nat: Two fixes for the write memory case...
Add new BSCs to the tail so we keep the sort order when writing
them out to the vty, fix the LAC command.
2010-06-15 20:24:13 +08:00
Holger Hans Peter Freyther 8bdcf55b22 bsc_msc_ip.c: Create the GSM network earlier, send the reset on each connection
Create the GSM network at the end of the init, send the
GSM reset on each reconnection and close a small window
when we would send a SCCP msg before being authenticated.

For that we have introduced an authenticated into the bsc_msc
struct and will manage it inside the bsc_msc_ip.c
2010-06-15 20:24:13 +08:00
Holger Hans Peter Freyther c16cf27bd5 nat: Add config option to filter/handle certain imsi'es. 2010-06-15 20:24:13 +08:00
Holger Hans Peter Freyther a4ed81c8d9 [statistics] Count the times we lost the connection to the MSC. 2010-06-15 20:24:13 +08:00
Holger Hans Peter Freyther bcfebb2c1d [nat] Add show statistics to the nat 2010-06-15 20:24:13 +08:00
Holger Hans Peter Freyther d4702862d3 [statistics] Provide basic statistics for the NAT
Count number of SCCP connections, number of BSC reconnects,
number of calls. For most of them we have a per BSC and a
global count.

Right now all structs using the counters survive until the
end of the application so we do not need to free them.
2010-06-15 20:24:13 +08:00
Holger Hans Peter Freyther 57f874ad8d [nat] Change the command strings
Put the Target/Object first... Apparently this is more what people
that know IOS expect to do.
2010-06-15 20:24:13 +08:00
Holger Hans Peter Freyther 290d84e15f nat: Set a dummy bts_ip to avoid misdetection of the bts...
It was possible that the nat detected the core network
gateway as the bts just due being the first to send data
to the port. Fix it by setting a dummy bts_ip to force
the mgcp_network code to compare the in_addr.
2010-06-15 20:24:13 +08:00