Age | Commit message (Collapse) | Author | Files | Lines |
|
Change-Id: Icf025e5ea8d180613b3114282951c9afa67af9a7
|
|
|
|
Change-Id: I121b95ad6d5ecb7603815eece2b43008de487a8a
|
|
Remove libiu here, use the functions from libosmo-ranap instead, by applying
the ranap_ / RANAP_ prefix.
Corresponding change-id in osmo-iuh.git is I6a3f7ad15be03fb94689b4af6ccfa828c25f45c0
Change-Id: Ib8c4fcdb4766c5e575618b95ce16dce51063206b
|
|
The sccp/ss7 configuration is now fixed. The cs7 instance id is
implicitly detected from the bsc_addr or the msc_addr. Depending
on what is listed last. (I am not sure if that is wise, maybe
we should only use the local/bsc address to do the lookup).
Remove cs7-instance vty command
Modify VTY commands, so that the fixed API is used
Set msc->a.cs7_instance from the VTY to when msc/bsc addr is parsed
Fix the initalization to use osmo_sccp_simple_client_on_ss7_id() and
pass the cs7-instance id we determined from the vty.
The whole thing is not waterproof yet. We are still not at the
point where we allow to leave the local address out. This would
be fine, but when it is left out, the only way to determine the
cs7 instance is to use the msc_addr then.
We also might want to make sure to reach a state where all cs7
related config may be left out (like with the MSC)
|
|
|
|
The external mncc currently does not work properly since the
MNCC_RTP_CREATE commands are removed due to the MSC-Split. It
is possible to operate without these commands, but then it is
not possible to route the RTP streams to an outside leg. Only
internal bridging is currenlty possible. This method is used
when the internal MNCC is enabled.
Add the missing MNCC_RTP_CREATE implementation.
Add logic to keep the old bridging mode working.
|
|
When a subscriber connection is freed on the MSC side (the
conversion is over) the MSC should send a clear command to
the BSC in order to inform the BSC that the connection is
over. Currently this step is missing. Instead we wait for
the BSC to issue a clear request. This is not as it should
be, connections should be actively cleared by the MSC.
Add the missing clear command
|
|
_dt1() is not applicable with the current setup, _dt() is
more accurate
|
|
Change-Id: If964ac5344fa0275c07755b5a43d37ce186d3ca2
|
|
Change-Id: Id75918dfd891d9407a62a0b7cd9590932c858093
|
|
Change-Id: I36404b34b8a85fc98670a3eeb8aaf29a4a6f10ea
|
|
Change-Id: I1b28652662d83f52db21cb78b512c501c7adf4bb
|
|
"calling_address" and "called_address" is not very expressive.
change the respective struct memeber names of bsc_msc_data to
bsc_addr and msc_addr to increase readability of the code.
Change-Id: I63b2e810b97131c690edd5a9cc5c7b3b54ec5e12
|
|
Add VTY commands to configure the sccp-address of the BSC
and the one of the MSC.
Change-Id: I49cedc0ce339defa6fb354f6fb9b1af7820da7cc
|
|
finish the implementation for msc sided reset, automatically
register connecting BSCs.
Ensure that all sccp connections are cleared when the reset
procedure executes.
Change-Id: Iba3f5523795c6972600bbfda2a02b06ba84ea12d
|
|
The call id field in the DLCX message is missing. Use the endpoint
id as call id in all CRCX and DLCX messages.
Change-Id: I8b78b76126c63c4882e982c64c3953dbe1dab179
|
|
When the reset is started, state machines are allocated. The user
must provide a correctly filled structure where the reset start
function adds the state machine into.
This is prone to errors, besides of that, a proper deallocator
function which tears down the osmo fsm is missing.
make a more cofmortable allocator function and add deallocator
function.
Change-Id: I0054fb31589fb9f4c63c45df436e83448c59bd97
|
|
Change-Id: Ib1a84b0733655b2e87c1598ae9df0640cdca833b
|
|
Move osmo_sccp_simple_client() setup out of iu_init() and a_init().
In msc_main.c and sgsn_main.c, initialize the STP connection first and then
pass to iu_init() and a_init().
This allows serving 3G (IuCS) and 2G (A) from one and the same MSC instance.
Since both OsmoHNBGW and OsmoBSC are using PC 23 by default now, move BSC to PC
42 (because OsmoBSC typically has vty port 4242, bla).
Also:
a_iface.c: remove now unused defines
a_init(): remove osmo_ss7_init() call that duplicated msc_main.c
Change-Id: I963a94e1a0bfc455992d22940dcc9c67c44570b9
|
|
The bsc side currently can not receive reset commands from an
MSC. This patch adds required functionality to receive a reset
command and acknowlege it properly. The effects are the same
as with when sending resets (all drop all ongoing calls and
sccp connections)
Change-Id: I44c7e54c845948c54614b36d97d2ba1e760ac46b
|
|
The AoIP standard also describes an MSC->BSC reset procedure. We
currently do not implement it. However, the fsm that is used to
issue the reset request from the bsc side is not generalized. This
patch generalizes the code in order to be able to use the same
code on the MSC side to perform a reset procedure from there.
Change-Id: I65e20bebb126ba35122ca3a545393d18fcadf5ad
|
|
Forgot to remove the counter struct osmo_timer_list msc_reset_timer;
Needs to be fixuped into the reset handling patches
Change-Id: I6d397188732f4593edc12459de6f3b5f47b7f06a
|
|
The function names in a_iface_bssap.c are not very expressive.
The problem not only exists on the API side, but also for static
functions. This patch replaces the function names with more
expressive names.
Change-Id: I1cdf37e4034ed8a9536c253c13910fc436c66f04
|
|
The function names if the API function in a_iface.c are not
very expressive. Besides of that, the prototypes are in the
wrong header file. This commit gives the function more
expressive names and moves the prototypes in the right header
file.
Change-Id: I6af4b7deed9d11ac5fe188eb5625fba50caad7c1
|
|
Currently the rtp base port of the BTS is hardcoded (4000) and not
configurable. This patch adds VTY configuration options to make
it adjustable.
Change-Id: I76e008eb0bd95b2941b67ea2fbdc1a82eef3cc5f
|
|
Clearing all endpoints by sending a DLCX on startup has ben found
to be a bit too offensive. It also will not help against
inconsitancies that may occour during runtime (e.g. an overheard
DLCX during regular call teardown).
This reverts commit b669ea94cb78fd9b56ee8dd9392538151349f8ba.
Change-Id: Ia3bd8bfe9a09e300cf11629f7d7e3012ca8f394d
|
|
When the BSC is vanishing, the subscriber connections will stay
active until the MSC is instructed via tha A interface to clear
the connections. Unfortunately, this will most likely not be
the case because the BSC will most likeley have lost all its
state and does not know about the old connections anymore.
This patch fixes the problem by looping through the list with
the active gsm subscriber connections and clearing them manually
when the reset from the BSC is received. Only connections by the
bsc who actually executes the reset are affected. Connections
from other BSCs will not be touched.
Change-Id: Ic2b43b937d08a6dea4fe70dbc3eb722323338dc1
|
|
Change-Id: I2cfea36a5626605ecb72d0f0927ac1a731aa1609
|
|
If the MSC is crashing and restarting, it may leave some endpoints
open. The endpoints can not be re-used until they are deleted
(DLCX). This patch sends a DLCX to all possible endpoints (usually
this is in a countable range) in order to clear possible open
endpoints from a previous run
Change-Id: I9de2f67ffe08b2d76574ef4470c7a9767ca74702
|
|
struct mgcpgw_client and struct mgcp_inuse_endpoint are not
accessible from outside, making it difficult to look in the
mgcp client properties and status. The commit moves the
structs into the header file.
Change-Id: I20dcdaac013e3bcbd870eaf34a17598eac373f95
|
|
Currently the assignment of endpoint identifiers works by just
incrementing a counter. The mgcpgw only has a limited amount
of endpoint identifiers avaliable, this means we will run out
of endpoints after only a few calls.
This commit adds a mechanism to keep track of used endpoint
identifiers so unused endpoint identifiers can be re-used
Change-Id: I081f9178975b6593a7ab8de5261a29a1d43d36a3
|
|
Currently no DLCX command is sent to the mgcpgw when a call is over,
this leaves the endpoint open. This means that the endpoint can not
never be reused by other calls. This patch adds a DLCX that
terminates the the endpoint when the call is done.
Change-Id: Ifc5a7a62fc07b4b7fee612d52e949fcd6a8e04ed
|
|
The mgcpgw client currently lacks support for DLCX. This patch
adds a generator function to generate a DLCX command as well.
Change-Id: I1ac4635fc1371f2d3a46815f26a1f9ede3eedafa
|
|
Change-Id: I4220bc9a3a6f13fd6b09c3a7edadea5b8823d1c5
|
|
Improve the way the BSC executes its RESET/RESET-ACK sequence.
Currently only a simple bool variable serves as a state holder.
We set this variable to true when we receive the RESET-ACK
message. Unfortunately no further checking is done. This
patch replaces the old mechanism with a more elaborated
implementation which also detects a loss of the connection
and makes sure to reconnect properly afterwards. Also the
all open connections are closed on connection loss
Change-Id: I876319b15103cc395e74597a52ce4d1a934915f4
|
|
obtain the permitted speech and the prefered channel parameters
and signal it to the MSC with the channel type field.
Change-Id: I642480fa408dee7a4f40f7aab95f40383b3e91af
|
|
This patch adds the support for the RTP IP-Address/Port assignment.
The post communicated via the assignment request is now transmitted
via RSL/IPACC to the BTS. The Response containing the RX-Port at
the BTS side is communicated back to the MSC.
Since we plan to add a private MGCPGW to each BSC, this has to
be extended. Currently it only creates a direct connection to
the BTS. This will be introduced with a future patch.
Change-Id: I693e428b6bfdd8534eb5b88fa4d47dac20db88ea
|
|
Change-Id: Iaf7deff397ec95b744fe287e713bbdd6a1ee73cf
|
|
Change-Id: I5ae4e05ee7c57cad341ea5e86af37c1f6b0ffa77
|
|
This changes over to the new libosmo-sigtran API with support for
proper SCCP/M3UA/SCTP stacking, as mandated by 3GPP specifications for
the IuCS and IuPS interfaces.
Only the ASP (client) is used, assuming that both the HNB-GWs and RNCs
as well as the MSCs and SGSNs are all connecting as ASP to some STP/SGW
which offers M3UA server functionality as well as point-code and/or
global title based routing.
Change-Id: I450e22d46e47eec350a152f7832428f226bf17fc
Tweaked-by: nhofmeyr (test expectation)
|
|
The ip.access nano3G needs the first RTP payload's first two bytes to read hex
'e400', or it will reject the RAB assignment. Add flag
patched_first_rtp_payload to mgcp_rtp_state to detect the first RTP payload on
a stream, and overwrite its first bytes with e400. This should probably be
configurable, but seems to not harm other femto cells (as long as we patch only
the first RTP payload in each stream). Only do this when sending to the BTS
side.
Change-Id: I5eff04dcb0936e21690e427ae5e49228cd459bd4
|
|
osmo-nitb becomes osmo-msc
add DIUCS debug log constant
add iucs.[hc]
add msc vty, remove nitb vty
add libiudummy, to avoid linking Iu deps in tests
Use new msc_tx_dtap() instead of gsm0808_submit_dtap()
libmgcp: add mgcpgw client API
bridge calls via mgcpgw
mgcp: hack RAB success from nano3G: patch first RTP payload
The ip.access nano3G needs the first RTP payload's first two bytes to read hex
'e400', or it will reject the RAB assignment. Add flag
patched_first_rtp_payload to mgcp_rtp_state to detect the first RTP payload on
a stream, and overwrite its first bytes with e400. This should probably be
configurable, but seems to not harm other femto cells (as long as we patch only
the first RTP payload in each stream). Only do this when sending to the BTS
side.
Change-Id: I5b5b6a9678b458affa86800afb1ec726e66eed88
|
|
In an upcoming commit, sgsn_vty_init() will require access to the global sgsn
config struct to initialize a generic VTY command with the proper config
destination address, see Change-Id I5b5b6a9678b458affa86800afb1ec726e66eed88.
Change-Id: Ie6b6e5422987586531a898e0c5b867623dbecb0f
|
|
Disable large parts of the code that depend on BSC presence. The code sections
disabled by #if BEFORE_MSCSPLIT shall be modified or dropped in the course of
adding the A-interface.
Don't set msg->lchan nor msg->dst.
Don't use lchan in libmsc.
Decouple lac from bts.
Prepare entry/exit point for MSC -> BSC and MSC -> RNC communication:
Add msc_ifaces.[hc], a_iface.c, with a general msc_tx_dtap() to redirect to
different interfaces depending on the actual subscriber connection.
While iu_tx() is going to be functional fairly soon, the a_tx() is going to be
just a dummy for some time (see comment).
Add Iu specific fields in gsm_subscriber_connection: the UE connection pointer
and an indicator for the Integrity Protection status on Iu (to be fully
implemented in later commits).
Add lac member to gsm_subscriber_connection, to allow decoupling from
bts->location_area_code. The conn->lac will actually be set in iu.c in an
upcoming commit ("add iucs.[hc]").
move to libcommon-cs: gsm48_extract_mi(), gsm48_paging_extract_mi().
libmsc: duplicate gsm0808 / gsm48 functions (towards BSC).
In osmo-nitb, libmsc would directly call the functions on the BSC level, not
always via the bsc_api. When separating libmsc from libbsc, some functions are
missing from the linkage.
Hence duplicate these functions to libmsc, add an msc_ prefix for clarity, also
add a _tx to gsm0808_cipher_mode():
* add msc_gsm0808_tx_cipher_mode() (dummy/stub)
* add msc_gsm48_tx_mm_serv_ack()
* add msc_gsm48_tx_mm_serv_rej()
Call these from libmsc instead of
* gsm0808_cipher_mode()
* gsm48_tx_mm_serv_ack()
* gsm48_tx_mm_serv_rej()
Also add a comment related to msc_gsm0808_tx_cipher_mode() in two places.
Remove internal RTP streaming code; OsmoNITB supported that, but for OsmoMSC,
this will be done with an external MGCP gateway.
Remove LCHAN_MODIFY from internal MNCC state machine.
Temporarily disable all paging to be able to link libmsc without libbsc.
Skip the paging part of channel_test because the paging is now disabled.
Employ fake paging shims in order for msc_vlr_tests to still work.
msc_compl_l3(): publish in .h, tweak return value. Use new libmsc enum values
for return val, to avoid dependency on libbsc headers. Make callable from
other scopes: publish in osmo_msc.h and remove 'static' in osmo_msc.c
add gsm_encr to subscr_conn
move subscr_request to gsm_subscriber.h
subscr_request_channel() -> subscr_request_conn()
move to libmsc: osmo_stats_vty_add_cmds()
gsm_04_08: remove apply_codec_restrictions()
gsm0408_test: use NULL for root ctx
move to libbsc: gsm_bts_neighbor()
move to libbsc: lchan_next_meas_rep()
move vty config for t3212 to network level (periodic lu)
remove unneccessary linking from some tests
remove handle_abisip_signal()
abis_rsl.c: don't use libvlr from libbsc
gsm_subscriber_connection: put the LAC here, so that it is available without
accessing conn->bts. In bsc_api.c, place this lac in conn for the sake of
transition: Iu and A will use this new field to pass the LAC around, but in a
completely separate OsmoBSC this is not actually needed. It can be removed
again from osmo-bsc.git when the time has come.
Siemens MRPCI: completely drop sending the MRPCI messages for now, they shall
be added in osmo-bsc once the A-Interface code has settled. See OS#2389.
Related: OS#1845 OS#2257 OS#2389
Change-Id: Id3705236350d5f69e447046b0a764bbabc3d493c
|
|
Original libvlr code is by Harald Welte <laforge@gnumonks.org>,
polished and tweaked by Neels Hofmeyr <nhofmeyr@sysmocom.de>.
This is a long series of trial-and-error development collapsed in one patch.
This may be split in smaller commits if reviewers prefer that. If we can keep
it as one, we have saved ourselves the additional separation work.
SMS:
The SQL based lookup of SMS for attached subscribers no longer works since the
SQL database no longer has the subscriber data. Replace with a round-robin on
the SMS recipient MSISDNs paired with a VLR subscriber RAM lookup whether the
subscriber is currently attached.
If there are many SMS for not-attached subscribers in the SMS database, this
will become inefficient: a DB hit returns a pending SMS, the RAM lookup will
reveal that the subscriber is not attached, after which the DB is hit for the
next SMS. It would become more efficient e.g. by having an MSISDN based hash
list for the VLR subscribers and by marking non-attached SMS recipients in the
SMS database so that they can be excluded with the SQL query already.
There is a sanity limit to do at most 100 db hits per attempt to find a pending
SMS. So if there are more than 100 stored SMS waiting for their recipients to
actually attach to the MSC, it may take more than one SMS queue trigger to
deliver SMS for subscribers that are actually attached.
This is not very beautiful, but is merely intended to carry us over to a time
when we have a proper separate SMSC entity.
Introduce gsm_subscriber_connection ref-counting in libmsc.
Remove/Disable VTY and CTRL commands to create subscribers, which is now a task
of the OsmoHLR. Adjust the python tests accordingly.
Remove VTY cmd subscriber-keep-in-ram.
Use OSMO_GSUP_PORT = 4222 instead of 2222. See
I4222e21686c823985be8ff1f16b1182be8ad6175.
So far use the LAC from conn->bts, will be replaced by conn->lac in
Id3705236350d5f69e447046b0a764bbabc3d493c.
Related: OS#1592 OS#1974
Change-Id: I639544a6cdda77a3aafc4e3446a55393f60e4050
|
|
Original libvlr code is by Harald Welte <laforge@gnumonks.org>,
polished and tweaked by Neels Hofmeyr <nhofmeyr@sysmocom.de>.
This is a long series of trial-and-error development collapsed in one patch.
This may be split in smaller commits if reviewers prefer that. If we can keep
it as one, we have saved ourselves the additional separation work.
Related: OS#1592
Change-Id: Ie303c98f8c18e40c87c1b68474b35de332033622
|
|
Before, each GSUP client would contact the HLR with an identical unit id, i.e.
"SGSN-00-00-00-00-00-00", with the result that some messages were sucked off by
the wrong client.
Pass explicit unit name from each gsup client user, so that OsmoMSC is "MSC"
and OsmoSGSN is "SGSN". Hence the HLR can properly route the messages.
Todo: also set some values instead of the zeros.
Unrelated cosmetic change while editing the arguments: gsup_client_create()'s
definition's oap client config arg name mismatched the one used in the
declaration. Use oapc_config in both.
Change-Id: I0a60681ab4a4d73e26fe8f0637447db4b6fe6eb2
|
|
This is the first step in creating this repository from the legacy openbsc.git.
Like all other Osmocom repositories, keep the autoconf and automake files in
the repository root. openbsc.git has been the sole exception, which ends now.
Change-Id: I9c6f2a448d9cb1cc088cf1cf6918b69d7e69b4e7
|
|
|