Age | Commit message (Collapse) | Author | Files | Lines |
|
Log just as prominently to mark CM Service Accept.
Change-Id: I7afe9d4f69e5525ede7a7c380a2c48fb2c5054b6
|
|
Change-Id: I378af1fa06d8a45c01a80a381be143572e1dc41f
|
|
Don't end a CM Service Request "lock" too indiscriminately. Trigger only on new
transactions that start.
Change-Id: I4f64b8d91cfb1e61be4563594b2d6b23144af5bc
|
|
Change-Id: Ied7663f856cfce6e7ed1c0314fd558af85091dcc
|
|
Indeed the easiest way of ensuring all code paths can cause conn discarding
while still all code paths can check on whether a conn needs to be discarded.
Change-Id: I641fe36d9fa2077e3caf63cc583aaa380603bff0
|
|
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: If0887b0b7714fc204f2addab2d43d44bb283ba21
|
|
Change-Id: Ib1e285b54cd7aaa0895e9c51a47720f446a07183
|
|
Change-Id: I99ca36857f5e4c9ae113017955611fd92256123c
|
|
Change-Id: I7469da0ed19e1e8b292422aadfd3ae2ebc2afd57
|
|
Change-Id: Ice3c71f048b097f2c2de8bd4f4508a7ca2cb1cf5
|
|
Change-Id: I3564291a6d20da13a8d75c71b0c425da4948d412
|
|
Change-Id: Ie8814d856bbe4c111007a696a4d26576854c134f
|
|
Change-Id: Ibe2ab17b3fa3a506a2e841ba979ea4175e3a21e8
|
|
Change-Id: I5c0493feaec775461b5a017c36b93cc2ad63c896
|
|
To accomodate the ip.access nano3G without having to recompile, make the
RAB Assignment's Transport Layer Address IE's format configurable, in both
osmo-msc and osmo-sgsn.
The long term perspective is to somehow detect which address encoding a given
3G cell prefers, but for the time being just configure it globally and set each
ue_conn_ctx to the global setting upon creation.
Add VTY command to iu_vty.c, with args passed to iu_vty_init() to insert
at an arbitrary VTY node, so that it can be used both for osmo-msc and
osmo-sgsn. Add generic iu_vty_config_write() to write out the config.
Call iu_vty_init() from msc_vty_init(); msc_vty_init() is in libmsc,
hence linking of osmo-msc now needs libiu to come after libmsc, so move
that further down.
Change-Id: I93728314742b327336f3fb6de98e6457f687e1f9
|
|
The future perspective is to remember the preferred RAB Transport Layer Address
encoding for each 3G cell that is connected, so store per UE conn instead of
globally hardcoding.
Add rab_assign_addr_enc member to ue_conn_ctx. Thus the iu_rab_act_cs() and
iu_rab_act_ps() functions no longer need the explicit use_x213_nsap argument.
Add include/openbsc/common.h in order to define the enum nsap_addr_enc, in a
separate file to be able to easily include it in all of libmsc, libiu and
gprs/* without creating include cycles.
Set the rab_assign_addr_enc when an MM ctx is created for iu, and whenever the
ue_conn_ctx for an Iu MM ctx is updated. This looks a bit clumsy so far, the
hope is that there will be a nice way to setup the ue_conn_ctx prior to that.
Change-Id: I49bb5736df7bdfdd55d3e7b74ee559595cfd2f7d
|
|
Before, I confused asn_debug with asn1_xer_print. Have two distinct VTY
commands and fix documentation.
Put the asn_debug and asn1_xer_print implementations in iu.c.
Since they are globally defined, don't pass a pointer to iu_vty_init()
but just use it directly. Might be considered less clean, but is also less
bloat.
Change-Id: Iccbadfe1585ba224f74cdfb5273b5ce29b6d78f0
|
|
So far it was included only in files that also include all needed headers,
but make it so that it can be included on its own.
Change-Id: I08a756031b995bd01a6e15c678b845fd98de960b
|
|
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
|