Age | Commit message (Collapse) | Author | Files | Lines |
|
|
|
This is needed for the ip.access nano3G femto cell.
|
|
There are different Iu dialects in terms of encoding the
transport layer address inside RAB Assignment req + resp.
Let's be liberal in what we accept, and simply use the length
as an indicator of the format. Wireshark uses similar heuristics.
|
|
When the RNC confirms the RAB Assignment, it can each time indicate a
new TEID for the GTP-U endpoint on the RNC side. We need to update our
information about the PDP context and include that in the UPDATE PDP
CONTEXT that we're sending towards the GGSN. This is similar to
updating the RNC-side IP address of the GTP endpoint.
|
|
When we send the RAB Assignment Request to the RNC, we need
to tell it the GGSN-side TEI for data, not "our" (SGSN side)
TEID.
In the RAB-Assignment.req we inform the RNC of the TEID on the GGSN
side, and in the RAB-Assignment.resp the RNC informs us of the TEID
on the RNC side.
|
|
When receiving an RAB-Assignment response from the RNC,
we should use the RAB ID (=NSAPI) to resolve the PDP context.
We cannot use the TEID, as the TEID chosen by the RNC for this RAB has
no relationship to the TEID we were using for the RAB-Assignment
request. TEIDs are local to each of the peer, like UDP port numbers.
|
|
|
|
As Dieter has pointed out, the RANAP spec requires the RAB ID to be
equal to the NSAPI of the PDP context for which it is established.
|
|
When starting with empty config file, saving it by 'write file',
and then re-starting osmo-cscn, it would complain:
Error occurred during reading below line:
long name Osmocom Circuit-Switched Core Network
The problem is that the vty parser is configured to expect a single
token and not a list of tokens here, but we initialize the default value
with multiple words (which are treated as separate token).
|
|
|
|
|
|
Add use_x213_nsap parameter to iu_rab_act_ps(), pass the new parameter
from two callers as 1 such that there is no functional change.
|
|
|
|
In handle_paging_response(), don't check conn against NULL after using it all
the time anyway.
To ensure beyond doubt that it is actually never NULL, assert conn further up
in the call stack, i.e. in gsm0408_dispatch(), the main entry point for
receiving data from the BSC/RNC level. Also assert msg while at it.
Fixes: CID#93769
|
|
In gsm_04_08.c, add a static handle_paging_resp() to take over from the libbsc
function gsm48_handle_paging_resp(). Use the subscr->requests listing to handle
a Paging Response and call the pending cbfn.
In NITB, this used to be done via BTS, and I haven't entirely resolved yet how
exactly to rewire this in standalone libmsc. So far, this "works for me", but
is worth another visit.
Still missing: enable Integrity Protection.
|
|
|
|
|
|
|
|
|
|
Factor out hardcoded-Ki and auth tuple creation into a static function.
Add generation of fresh random bytes and generate a valid auth tuple so that
the authentication token is different for every MM Auth.
|
|
|
|
This involves removing the openbsc_vty_print_statistics() from
vty_interface_layer3.c, as this would link across the MSC/BSC border.
|
|
|
|
|
|
|
|
|
|
Add iu_page_cs() and iu_page_ps() API, also add to libiudummy for linking in
tests.
Implement msc_paging_request() by calling iu_page_cs().
|
|
Introduce struct gsm_rnc, stored in a global list, static to iu.c.
(This list is not part of gsm_network so that the code can be
used from both MSC and GPRS code, i.e. both for CS and PS.)
Parse RANAP Global RNC Id, add GSM flags to build for gsm48_mcc_mnc_from_bcd()
to decode the PLMN Id.
Upon every Initial UE message, record/verify RNC Id and LAC for that
connection. In case of mismatch, so far just log an error.
|
|
Introduce talloc_iu_ctx, setup during iu_init() as child of the talloc_ctx
passed in by the caller.
Allocate ue_conn_ctx from talloc_iu_ctx, used to be from NULL.
Allocate osmo_sua_user and talloc_asn1_ctx from talloc_iu_ctx, used to be from
the ctx passed in by iu_init() caller.
|
|
|
|
|
|
See in-code comment...
|
|
|
|
|
|
|
|
|
|
Add lac argument to gsm0408_rcvmsg_iucs(), to record the LAC in newly
allocated gsm_subscriber_connections.
In effect, fix the LAC sent to UE during Location Updating Accept message.
Before, 0 was stored as LAC and sent to the UE, regardless of the actual
LAC in use.
|
|
It is only used statically in iu.c
|
|
Include a cscn section with subscriber-create-on-demand even though that is
the default.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Conflicts:
openbsc/src/libmsc/auth.c
openbsc/src/libmsc/gsm_04_08.c
openbsc/src/osmo-bsc/osmo_bsc_vty.c
openbsc/tests/Makefile.am
|
|
Make sure a new auth tuple is initialized after
db_get_lastauthtuple_for_subscr() returns an error, i.e. if no tuple is present
for the subscriber yet.
Before this patch, the first key_seq depended on the typically uninitialized
value that was present in auth tuple's key_seq upon calling
auth_get_tuple_for_subscr().
The very first key_seq used for a new subscriber will now always be 0. Before,
it used to be mostly 1 ("(0 + 1) % 7"), but depended on whether the key_seq was
indeed initialized with 0, actually by random.
|