Commit Graph

1805 Commits

Author SHA1 Message Date
Pau Espin Pedrol
609c234f0b Document Gy interface spec reference 2024-01-25 07:05:33 +09:00
Pau Espin Pedrol
64598fab2e Document Gx interface spec references 2024-01-25 07:05:33 +09:00
Bostjan Meglic
dcdfc970ce initialize variables before using them 2024-01-22 17:34:59 +09:00
Bostjan Meglic
a3afc4764c memset input/output structure inside the function
Instead of checking if caller memset'ted the structure to zero, memset
it inside the function regardless.
There is no added benefit of a memset() + memcmp() to check if caller
cleared the structure used for outputing data from the database.
2024-01-22 17:34:59 +09:00
Bostjan Meglic
e650b66305 fix mismatch of parameters between prototype and declaration 2024-01-22 17:34:59 +09:00
Sukchan Lee
b94173ab41 [AMF/MME] Fixed M-TMSI pool release (#2307)
M-TMSI pool release was incorrectly modified and has now been corrected.
2024-01-21 11:58:43 +09:00
Sukchan Lee
97e1b1bd30 [PFCP] Fixed incorrect TLV names (#2887)
Fixed standards documentation that described incorrect TLV names.
2024-01-19 23:40:20 +09:00
Pau Espin Pedrol
60691b02d2 [MME] Gn: Introduce initial support for 2G->4G cell reselection
In an Inter-RAT setup a UE could perform a TAU coming from a 2G/3G network.
In that case the UE/MS is unknown to the MME and it should request the
SGSN context (MM, PDP) from the old SGSN. This is done through the following
GTPv1C message exchange on the Gn interface of SGSN and MME:
SGSN <- MME: SGSN Context Request
SGSN -> MME: SGSN Context Response
SGSN <- MME: SGSN Context Acknowledge

Diagram with full set of steps can be found at 3GPP TS 23.401 D.3.6.

This commit doesn't aim to be a complete implementation of the mentioned
procedure, since it's quite a complex one, with lots of fields and logic
required. This so far only implements in general the minimally
successful case by filling as much as possible the required set of
fields.
This will allow for a base onto which do incremental improvements and
fixes while testing against UEs and SGSNs (such as osmo-sgsn, which
doesn't yet support this procedure but will potentially earn it soon).

The reverse direction, aka UE issuing cell reselection 4G->2G was
already implemented (same as here, initial non-complete implementation)
in open5gs-mmed in commit 3d693da73e.

Related: https://osmocom.org/issues/6294
2024-01-17 23:05:19 +09:00
Sukchan Lee
4088cdf17d [MME] Hangs on an invalid S1AP message
Within the PathSwitchRequest packet,
the E-RABToBeSwitchedDLList has two bearers.

If the E-RAB-ID of both bearers is 5, the MME's list memory is destroyed
and the MME crashes. To fix this issue, we modified the code so that
the MME can work correctly with invalid S1AP messages.
2024-01-17 20:17:55 +09:00
Pau Espin Pedrol
078bfc90da [GTPv1] Introduce APIs to decode MM Context and PDP Context IEs
They will be used in a follow-up patch implementing GERAN->EUTRAN idle
mobility.
2024-01-16 06:37:10 +09:00
Pau Espin Pedrol
feaa86fc9c [GTPv1] Fix encoding of MM Context IE if NRSNRA bit not set
The len byte, describing the length of the field coming after it,
is always expected according to the struct definition.
2024-01-16 06:37:10 +09:00
Pau Espin Pedrol
afa2c2c9e0 [CRYPT] Add ogs_kdf_kasme_idle_mobility()
This function is needed by a follow-up patch implementing initial
support for GERAN->EUTRAN idle mobility.
2024-01-16 06:36:44 +09:00
Emanuele Di Pascale
77d94c0301 lib/diameter/s6a: add EPS-User-State
and the MME-related children
2024-01-13 12:00:20 +09:00
Bostjan Meglic
84569ccbdc [SBI] Fix conversion of AMBR bitrates from string to integer
When the input string contains a number and a unit too large to be
represented by a 64-bit variable, AMF/SMF would crash due to conversion
resulting in a negative value and unable to be used in compiling NAS-PDU
container.
Now the value gets clipped at int64_t maximum value.

Failed to encode ASN-PDU [-1] (../lib/asn1c/util/message.c:42)
2024-01-10 22:45:46 +09:00
Bostjan Meglic
21b7cd487a [DBI] Fix code indent 2024-01-09 17:50:37 +09:00
Bostjan Meglic
ad216c0b77 [core] Fix a couple of warnings when using C++ compiler or more strict settings
../lib/core/ogs-list.h:62:24: warning: invalid conversion from 'void*' to 'ogs_list_t*' {aka 'ogs_list_s*'} [-fpermissive]
../lib/core/ogs-rbtree.h:79:32: warning: invalid conversion from 'const void*' to 'const ogs_rbnode_t*' {aka 'const ogs_rbnode_s*'} [-fpermissive]

[SBI] Fix compiler error - possible uninitialized variable

[SCP] Fix compiler error - Error: this condition has identical branches

In case of additional compiler warnings turned on, the compiler warns
about potentially unused variables. Fix those issues.
2024-01-09 17:50:22 +09:00
Pau Espin Pedrol
7d60b13d3a lib/proto/conv: Introduce API ogs_ip_to_paa()
The counterpart API ogs_paa_to_ip() was already present, but this was
missing. It will be required in open5gs-mmed in a follow-up patch.
2024-01-06 07:44:14 +09:00
Pau Espin Pedrol
4ab275ad70 Rename and move ogs_gtp2_paa_to_ip() to lib/proto/conv
Both types are defined under lib/proto/type.h, and the conversion
function is used in several different protocols, so let's better move it
to generic lib/proto/conv.h and remove the "gtp2" prefix.
2024-01-06 07:44:14 +09:00
Pau Espin Pedrol
b3845d5b0b [MME] Constify params in mme-context and depending APIs 2024-01-06 07:42:32 +09:00
Pau Espin Pedrol
2a840297f8 cosmetic: Fix trailing whitespace 2024-01-06 07:42:32 +09:00
Pau Espin Pedrol
27d2f86103 lib/gtp/xact: Fix tx of SGSN Context Acknowledge 2024-01-04 06:57:18 +09:00
Pau Espin Pedrol
389ccaed16 lib/gtp/xact: Fix rx of SGSN Context Response 2024-01-04 06:57:18 +09:00
Pau Espin Pedrol
1f8f20da34 lib/proto/types.{c,h}: Constify several parameters 2024-01-03 07:10:09 +09:00
Pau Espin Pedrol
55844d1eed ogs-conv.{c,h}: Constify several parameters 2024-01-03 07:10:09 +09:00
Pau Espin Pedrol
9b729b2c6f cosmetic: ogs-conv.c: Fix trailing whitespace 2024-01-03 07:10:09 +09:00
Pau Espin Pedrol
3d693da73e [MME] Gn: Introduce initial support for 4G->2G cell reselection
In an Inter-RAT setup a UE could perform a RAU coming from a 4G network.
In that case the UE/MS is unknown to the SGSN and it should request the
SGSN context (MM, PDP) from the MME. This is done through the following
GTPv1C message exchange on the Gn interface of SGSN and MME:
SGSN -> MME: SGSN Context Request
SGSN <- MME: SGSN Context Response
SGSN -> MME: SGSN Context Acknowledge

This commit doesn't aim to be a complete implementation of the mentioned
procedure, since it's quite a complex one, with lots of fields and logic
required. This so far only implements in general the minimally
successful case by filling as much as possible the required set of
fields.
This will allow for a base onto which do incremental improvements and
fixes while testing against UEs and SGSNs (such as osmo-sgsn, which
doesn't yet support this procedure but will potentially earn it soon).

This commit doesn't implement the reverse direction, aka UE issuing cell
reselection 2G->4G. Initial support for this scenario will hopefully be
added soon as a follow-up patch, similar to this one.

Related: https://osmocom.org/issues/6294
2023-12-23 09:56:55 +09:00
Pau Espin Pedrol
ea7708bcfc lib/gtp: Fix xact logic for gtp1 messages with intermediate stage
As per TS 29.060:
The Initial/request message is "SGSN Context Request", sent by peer A.
Peer B sends a response message "SGSN Context Response" with same SeqNr.
Peer A sends a response message "SGSN Context Acknowledge" with same
SeqNr.
If Peer B doesn't see a "SGSN Context Acknowlegde", it should keep
retransmitting "SGSN Context Response" as usual.
2023-12-22 06:04:18 +09:00
Pau Espin Pedrol
6a9c7f16c1 Revert "[MME] Gn: Introduce initial support for 4G->2G cell reselection"
This reverts commit 5a31af36e0.
2023-12-22 06:02:11 +09:00
jmasterfunk84
2390a22504 Add space to inprove readbility of error 2023-12-21 22:14:24 +09:00
Pau Espin Pedrol
75f32e07de xact: Fix debug message printed when not needed 2023-12-21 22:13:45 +09:00
Pau Espin Pedrol
5a31af36e0 [MME] Gn: Introduce initial support for 4G->2G cell reselection
In an Inter-RAT setup a UE could perform a RAU coming from a 4G network.
In that case the UE/MS is unknown to the SGSN and it should request the
SGSN context (MM, PDP) from the MME. This is done through the following
GTPv1C message exchange on the Gn interface of SGSN and MME:
SGSN -> MME: SGSN Context Request
SGSN <- MME: SGSN Context Response
SGSN -> MME: SGSN Context Acknowledge

This commit doesn't aim to be a complete implementation of the mentioned
procedure, since it's quite a complex one, with lots of fields and logic
required. This so far only implements in general the minimally
successful case by filling as much as possible the required set of
fields.
This will allow for a base onto which do incremental improvements and
fixes while testing against UEs and SGSNs (such as osmo-sgsn, which
doesn't yet support this procedure but will potentially earn it soon).

This commit doesn't implement the reverse direction, aka UE issuing cell
reselection 2G->4G. Initial support for this scenario will hopefully be
added soon as a follow-up patch, similar to this one.

Related: https://osmocom.org/issues/6294
2023-12-21 22:11:49 +09:00
Pau Espin Pedrol
7728172a83 [CRYPT] Constify several input parameters
This allows easily spotting input vs output parameters, as well as
make it easier for compiler to find out bugs and optimize code.
2023-12-20 20:04:23 +09:00
Pau Espin Pedrol
9349743295 lib/proto: Constify params of ogs_id_get_{type,value}() 2023-12-20 20:04:23 +09:00
mitmitmitm
cecb87b346 Fix small typo in ogs_pfcp_sendto 2023-12-16 18:44:36 +09:00
Pau Espin Pedrol
8c01f3387d constify src param of ogs_fqdn_{build,parse}() 2023-12-13 23:02:50 +09:00
Pau Espin Pedrol
3b6b8ebf4f lib/proto/types.c: Fix trailing whitespace 2023-12-13 23:02:50 +09:00
Pau Espin Pedrol
b0f381416b gtp/v1: Specify 'P-TMSI Signature' as uint24_t 2023-12-12 08:14:40 +09:00
Pau Espin Pedrol
204ac35a66 gtp/v1: Specify 'MS Validated' IE as uint8
This field is a fixed size 1 byte with all bits set as spare (1) and the
lsb set as 0 ("No") or 1 ("Yes").
2023-12-12 08:14:40 +09:00
Sukchan Lee
d0a1bedd22 [AMF] Increase the number of SLICE 512 to 1024 (#2761)(#2765) 2023-12-04 20:46:58 +09:00
Sukchan Lee
e42048e8a5 Reset the number of TA, SLICE, and PLMN supported by AMF/MME(#2761) (#2765)
* update it

* update it

* update it

* update it

* update it

* udpate it

* uupdate it
2023-12-03 23:52:29 +09:00
Sukchan Lee
4739198c5d [SCTP] Fixed a crash on SIGPIPE (#2734) (#2757) 2023-11-28 16:10:48 +09:00
Oliver Smith
5070ddfa3e [MME] [AMF] Add no_time_zone_information param (#2745)
Allow network operators to omit the time zone in the 4G EMM Information
and 5G Configuration Update. This is useful for better compatibility
with some UEs.

The parameter is optional according to:
* 4G: 3GPP TS 24.301 Table 8.2.13.1
* 5G: 3GPP TS 24.501 Table 8.2.19.1.1
2023-11-27 22:26:12 +09:00
Sukchan Lee
ab1c3493c6 [NRF] Fixed crash due to invalid PATCH body (#2735) 2023-11-25 22:03:28 +09:00
Sukchan Lee
a19dcde05a [SBI] Follow-up on (#2725)(#2557) 2023-11-24 17:39:03 +09:00
Bostjan Meglic
adcdcf6426 [SBI] Change discovery option TAI from array to single item (#2725)
According to 3GPP TS 29.510, the search parameter "tai" should be a
single item, not an array of items.

TS 29.510: Table 6.2.3.2.3.1-1:
URI query parameters supported by the GET method on this resource

Revert "[SBI] Change discovery option TAI from array to single item"

This reverts commit b4beff1ae16c64b3c6d84d8bdb47c36e19b705f2.

wip
2023-11-22 20:37:06 +09:00
Bostjan Meglic
18b1095697 [SBI] Fix minor memleak when creating S-NSSAI discovery option (#2740) 2023-11-21 21:39:04 +09:00
Sukchan Lee
9479f29f3d [ASN.1] Fix buffer overflow (mouse07410/asn1c#134) (#2742) 2023-11-20 21:16:35 +09:00
Sukchan Lee
e92293e0af [SEPP] Initial Update for 5G Roaming (#2739)
[SEPP] Initial Update for 5G Roaming
2023-11-19 19:34:51 +09:00
Sukchan Lee
e12b1be313 [AMF] Fixed crash in ogs_fsm_tran(!tmp) (#2719) (#2722)
This problem can be occurred in the following scenarios.

1. Run NFs(NRF/SCP/SMF/UPF/AUSF/UDM/PCF/BSF/NSSF/UDR) except AMF.
2. Run AMF
3. Run gNB/UE and try to register
4. STOP PCF
5. AMF Crashed

AMF discovered the PCF through SCP during the UE registration process.

At this time, ogs_sbi_nf_fsm_init() is not called,
so AMF does not have state information about PCF.
In other words, AMF state is NULL.

In such a situation, when PCF is terminated at this time,
a crash occurs as AMF attempts to change the PCF state.

So, I've fixed that state information is initialized to solve this problem.
2023-11-04 10:35:33 +09:00
Šimon Lukašík
490a3ecb99 A minor typo fix (#2707)
* minor typo fix

* typo fix: faimly -> family
2023-10-28 22:11:58 +09:00