Age | Commit message (Collapse) | Author | Files | Lines |
|
Do the same as we do in 2G: release the connection as soon as nothing else
is pending for a given subscriber.
Before, osmo-msc would wait for the UE "to get bored" and send an Iu
release. But the CN should stay lean on connections. Also, 25.413[1] in section
7, 6th point states:
"While the Iu release is managed from the CN, the RNC has the capability to
request the release of all Iu connection resources from the corresponding Iu
connection."
So far we did not manage Iu release from osmo-msc at all.
Use the same mechanism we use in 2G: from msc_release_connection(), just before
freeing the gsm_subscriber_conn, invoke a CN initiated Iu Release command to
the UE.
This works around OS#1816 ("USSD only works when IuCS is released", on nano3G),
because the Iu conn is now released right after every signalling, so that
typically no two requests will use the same conn.
In iu.h/iu.c, add iu_tx_release(), absorbing almost all of the code from
ranap_handle_co_iu_rel_req().
Add stub to db_test.c, necessary to build it without linking libiu.
[1] 3GPP TS 25.413 v12.4.0 Release 12 / ETSI TS 125 413 V12.4.0 (2015-04)
Related: OS#1816
Change-Id: Ic12bd6f3666f6fd42bd6d9fdae1c93abee3b6786
|
|
Change-Id: I7fda4304631fc24bbd1bebe911b8403a942fcf53
|
|
Change-Id: Ie259e30bc532fe9817c96562022ac33443d5747a
|
|
Send IuCS RAB Activation upon MNCC_CALL_PROC_REQ.
Implement function msc_call_assignment(): decide between sending A-iface BSSMAP
Assignment Request or IuCS RAB Assignment Request.
Implement iu_rab_act_cs() to send the IuCS RAB Assignment Request. The IP
address and port of the MGCPGW sent in the RAB Assignment are still hardcoded.
The A-interface extension is not implemented yet.
Declare ranap_new_msg_rab_assign_voice() to avoid including
ranap_msg_factory.h, which would require adding ASN1 CFLAGS to Makefile.am.
The mgcpgw_client as well as some more osmo-iuh functions are now linked from
libmsc, hence add some dummy stubs to libiudummy and db_test.c.
Change-Id: Iaae51d1fbbfc28fad1c0b85e161d53d80a420a19
|
|
Store the mgcpgw client data in struct gsm_network.
Initialize VTY and bind the client.
Change-Id: Ifc4efb1ca44fa34c29bf23b35addb54155296d68
|
|
Add an API to send MGCP messages to an MGCP GW, from the perspective of
an MSC instructing the GW to setup RTP streams.
Rationale: the mgcp_protocol.h is mostly for the MGCP GW itself, other
implementations forward incoming MGCP messages. So a simpler approach for an
MGCP GW client is useful.
Add general VTY commands that can be used to configure mgcpgw_client.
osmo-msc is going to use this to route RTP streams (for 3G at first).
Change-Id: I6fe365c4c89207f2172943cc456b508a207b1135
|
|
Add file mgcp_common.c to implement the value strings for the
mgcp_connection_mode.
Add in a separate file because of the upcoming mgcpgw_client.c implementation,
introducing a file that contains implementations commonly used in MGCP GW as
well as its clients.
Change-Id: I6fe365c4c89207f2172943cc456b508a207b1135
|
|
mgcp_connection_mode will be used by the upcoming mgcpgw_client.h API.
Change-Id: I7a3f8905723320d968f1a53c1036904107b4fb2d
|
|
Rename gsm48_cc_tx_call_proc() to gsm48_cc_tx_call_proc_and_assign() to mark
the place where the A-interface will send a BSSAP Assignment Request / where
the IuCS-interface will send a RAB Assignment Request.
Add function msc_call_assignment() to decide between A-iface and IuCS
assignment, to be implemented in subsequent commit.
Change-Id: I0695e233d57d13658793b0e63bb7c3ff224909a0
|
|
Add libiu function to send a CommonID message down a UE connection,
iu_tx_common_id(); add also a corresponding stub to libiudummy for linking with
tests.
Add libmsc function msc_tx_common_id() to call the above. Add this mostly to
clearly indicate in msc_ifaces.h that libmsc is calling out of the MSC; also
to do conn->via_iface checking.
Call msc_tx_common_id() after ciphering is established, in
_gsm48_rx_mm_serv_req_sec_cb()'s GSM_SECURITY_SUCCEEDED case.
Change-Id: I576ddd5bbabfc989149debd2f8a9743db6d26043
|
|
From a human admin viewpoint it doesn't make sense to count the messages sent:
When we use TMSIs, we first send a LU Accept with a new TMSI, and then expect
the MS to respond with a TMSI Realloc Complete message. When that fails to come
through, the LU actually ends in failure, even though a LU Accept was sent.
In 3G, if a UE sends an Iu Release during LU (e.g. user enables flight mode),
we cancel the LU without sending any reply at all, so nothing would be counted.
Instead, count Location Updating results, i.e. completion and failures.
|
|
|
|
Change-Id: I4ea799c5fa61f81c404e6ef1b9ac86a8faa1fb49
|
|
Change-Id: I63d4835dc7aabdf176e0ca634a6a4ca527612693
|
|
Remove one layer of callback indirection in paging. When a paging response
arrives, we always want to first secure the connection, thus a fixed
subscr_rx_paging_response() function is more appropriate and avoids having
to store a cbfn. The actual actions to be taken upon successful paging are
of course still in callback functions stored with each subscriber.
Remove paging_request_stop() call from subscr_paging_dispatch(), which stops
paging on all BTSs, which is not the responsibility of libmsc.
Change-Id: Ic2c785c9cc48b2c2c6557cbe1060d25afa89e38d
|
|
Change-Id: Ife8e10b240693a8d369139881774f1892044aa65
|
|
Change-Id: Idbbd39b0e068da17aafa97e315143509c69c50ea
|
|
Change-Id: Id5797cd1f1bfa2cca2d3fbabc1981aa75546421b
|
|
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 relatd to msc_gsm0808_tx_cipher_mode() in two places.
Change-Id: I5b276853d3af71f5e3f0a031fd17b4fff0580020
|
|
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
Change-Id: If24007445899e9c75553a0dbf843ada3566b3380
|
|
Change-Id: I8f8980d6cfbf26f1b0e0197939833e55dbe521fb
|
|
Change-Id: I88e981f4c31393a98ae8d61176c65c9251a6f28b
|
|
Change-Id: Id347a3024fa495a1ab680db7320648d933a4018b
|
|
The idea is to not have a direct pointer to a bts struct (into BSC land), but a
LAC to resolve the BSC or RNC depending on the appropriate A or IuCS interface.
subscr_update(): remove bts arg, add lac arg.
Pass conn->lac to gsm48_generate_lai() instead of bts->location_area_code.
Change-Id: I9f2b298a785bf4b2a1b3fcdd91b8256106b2d9de
|
|
Set the T3212 default value in struct gsm_network and take that value when
creating a BTS.
Adjust VTY accordingly.
Change-Id: Ifb730f9d0106fe195adc30459a39290a07313b50
|
|
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]").
Change-Id: Idf8020a30562426e8f939706bf5c2188d5a09798
|
|
It makes sense semantically, and prepares for an upcoming commit that uses
the internal global config pointer in sgsn_vty_init(), which would not
be defined yet without this.
Change-Id: Ie4cf1c0a1c9e6330a134ff4b7b2e6d5699c12bd7
|
|
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.
Change-Id: I3f8d6dd47c7013920e2a4bde006ed77afd974e80
|
|
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.
Change-Id: I1acf9debb6ba9164e6edcfd5bc5e48e8c98f2b01
|
|
Change-Id: Ic073f3a069a7f5e7e421e0e56140f069ee9b10b8
|
|
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 development collapsed in one patch. The original
history may still be available as branch neels/vlr_orig.
TODO: This commit may be split in several smaller changes before merging to
master.
Related: OS#1592
Change-Id: I702ba504ce2de93507312c28eca8d11f09f4ee8b
|
|
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 development collapsed in one patch. The original
history may still be available as branch neels/vlr_orig.
Related: OS#1592
Change-Id: I3f75de5f0cc2ff77f276fd39832dd3621309c4b9
|
|
This introduces a reference count for gsm_subscriber_connection. Every
user of the connection needs to hold a reference until done. Once the
reference count dorps to zero, the connection is cleared towards the
BSC (which subsequently will clear any logical channels associated with
it).
Related: OS#1592
Change-Id: I8c05e6c81f246ff8b5bf91312f80410b1a85f15e
|
|
When using a BSC located PCU the BSC must understand PDCH requests.
Change-Id: Ie7f4ed000cf1b40d269873cf0ddf5ff9f5bbc18a
|
|
In a future commit, gsm_subscriber will be replaced by vlr_subscr, and it will
not make sense to use vlr_subscr in libbsc. Thus we need a dedicated BSC
subscriber: struct bsc_subscr.
Add rf_policy arg to bsc_grace_paging_request() because the bsc_subscr will no
longer have a backpointer to gsm_network (used to be via subscr->group).
Create a separate logging filter for the new BSC subscriber. The implementation
of adjusting the filter context is added in libbsc to not introduce
bsc_subscr_get/_put() dependencies to libcommon.
During Paging Response, fetch a bsc_subscr from the mobile identity, like we do
for the gsm_subscriber. It looks like a duplication now, but will make sense
for the VLR as well as for future MSC split patches.
Naming: it was requested to not name the new struct bsc_sub, because 'sub' is
too ambiguous. At the same time it would be fine to have 'bsc_sub_' as function
prefix. Instead of struct bsc_subscriber and bsc_sub_ prefix, I decided to
match both up as struct bsc_subscr and bsc_subscr_ function prefix. It's fast
to type, relatively short, unambiguous, and the naming is consistent.
Add bsc_subscr unit test.
Related: OS#1592, OS#1594
Change-Id: Ia61cc00e8bb186b976939a4fc8f7cf9ce6aa3d8e
|
|
Add MS TIMING OFFSET (3GPP TS 48.058 § 8.4.8) and P offset (3GPP TS
45.010 § 1.2) which can be used to compute MS TO from known TA.
This will be used by osmo-bts (see
I4dfe5c48834a083e757d5de3236a02e15a238b28) to provide MS TO as part of
RSL MEASUREMENT RESULT.
Change-Id: I8bda57c8d6c15bbb803eca708931556dae118a00
Related: OS#1574
|
|
Add via_ran to gsm_subscriber_connection to indicate whether a conn is coming
in via 2G/GERAN/A-Interface or 3G/UTRAN/Iu-Interface. Prepares for Iu, but
also for libvlr to decide between GSM or UMTS Auth.
Until actual Iu support is merged to master, this indicator will aid VLR unit
testing.
At some point we may also add RAN_GERAN_IU; it's not on the agenda yet, but to
clearly distinguish the names if we want to add it, explicitly name the ones we
have RAN_GERAN_A and RAN_UTRAN_IU.
Change-Id: I93b870522f725170e4265a5543f6b680383d7465
|
|
Remove the fuzzer interface that was partially implemented in
gsm_04_08.c and silent_call.c is causing problems when an
SMS is sent during an active silent call. The reason for this
is that gsm0408_dispatch() in gsm_04_08.c would decide to
rout all uplink traffic to silent_call_rx() in silent_call.c.
silent_call_rx() is a stub function that discards the data.
This patch removes the fuzzer interface code by placing ifdefs
around it, so that it can be re-activated by experimentators.
Change-Id: Id500197d58663b3f4b1756136343670388b0a4bc
|
|
The general infrastructure for UMTS AKA is already in place:
* GSUP with capability to send us auth_vectors that contain
either triplets or quintuples
* mm_context that holds such auth_vectors
Add:
* capability to send UMTS AUTN in GMM AUTH REQ
* parse extended UMTS RES
* on auth response, validate expected AKA with vector and received res/sres
* add Auth Failure message to receive resync AUTS token and
* send to HLR
* clear out-of-sync auth tuple
* enter new state for when we're waiting for HLR to resync and send new
tuples so that the next Auth Request will be handled
Original first half of this patch by: Harald Welte <laforge@gnumonks.org>
Full UMTS AKA procedure including AUTS resync tested to work against OsmoHLR
with R99 USIM and Milenage algorithm.
The sgsn_test.c needs adjustment because we're checking the vector's auth_types
now.
Depends: libosmocore change-ids
I277fb3d407396dffa5c07a9c5454d87a415d393f
If943731a78089f0aac3d55245de80596d01314a4
Related: OS#1956
Change-Id: Ie6a0cefba5e4e7f02cc2eaf6ec006ac07d5c1816
|
|
Prepare for replacing gsm_subscriber with vlr_subscriber. vlr_subscriber will
not make sense to be used in gprs, so have a dedicated GPRS subscriber struct.
(Could change if the gprs code were to use libvlr; is currently independent).
Related: OS#1592
Change-Id: Ia8b391ee009c8545763cba04505be3947835120e
|
|
With the OsmoMSC program coming up, the name osmo_msc_data becomes even
more confusing than it already is. Clearly indicate it as libbsc's data of
a remote MSC by prefixing with bsc_.
Also, the Osmocom community has in the meantime agreed to have the osmo_
prefix only in libosmocore, to avoid naming conflicts in case things are
moved there. So while renaming anyway, also drop the osmo_ prefix.
Change-Id: I0dfbcb7d1a579211180f71319982820d8700afab
|
|
With the OsmoMSC program coming up, the name osmo_msc_data becomes even
more confusing than it already is. Clearly indicate it as libbsc's data of
a remote MSC by prefixing with bsc_.
Also, the Osmocom community has in the meantime agreed to have the osmo_
prefix only in libosmocore, to avoid naming conflicts in case things are
moved there. So while renaming anyway, also drop the osmo_ prefix.
Change-Id: I13554563ce9289de126ba0d4cf329bafcda35607
|
|
Change-Id: I74dd2b3f935d39b8caa718e2c8a51cc81bddf1b9
|
|
We're discarding the name OsmoCSCN for the benefit of OsmoMSC. But "CSCN" has
already crept into the master branch in two places; apply the rename.
See OS#1958
Change-Id: Ib4274eb3c172ada1fe7f05746740b456370bc93d
|
|
Doesn't make sense to switch this to struct vlr_subscr when it isn't used at
all. So let's remove it.
Change-Id: Ifa5901f8bf1aed3981841d24d4ec8d659f3de7a9
|
|
Change-Id: I9601d478763569933bcc46bf4eaaff70a9843be9
|
|
The LCHAN and BTS filter contexts are actually never used, so drop them until
someone adds them properly.
For now use only LOGGING_{FILTER,CTX}_VLR_SUBSCR. Some of these will change to
_BSC_SUBSCR once struct bsc_subscriber is introduced, and later on, struct
gsm_subscriber will be replaced by vlr_subscriber so that the names will match.
Depends: libosmocore change-id I5c343630020f4b108099696fd96c2111614c8067
Change-Id: Ifa82f6a461ad4c0eeddb8a38fb3833460432d16b
|
|
Since ce9fec3e896571835ac5bfd2980d6836f2b29f0d libosmocore ignores
parameters to log_vty_command_* functions. Hence parameter of
logging_vty_add_cmds() is ignored too. As we depend on much later
libosmocore version anyway, we can simplify code somewhat by removing
parameters which will be ignored anyway.
Change-Id: I62f752fd88f1d8fefa563648f9864c7c31f87991
|
|
Postfix the ran type to clarify the purpose.
Because of the new support of the Iu ran type, there are 2 functions to allocate a mm ctx.
For Iu it's sgsn_mm_ctx_alloc_iu(). For gb it should be named in the same way.
Change-Id: Ic49009e8c20c12308855e1409c09004698c79b95
|
|
GMM is the right term. MM state is already occupied.
Change-Id: I9cfdcf921e4ebd14a5e7ce7489ec4ce5d1f5515f
|