aboutsummaryrefslogtreecommitdiffstats
path: root/src
AgeCommit message (Collapse)AuthorFilesLines
2023-08-10sgsn_rim: do not check the origin of a RIM messagePhilipp Maier1-7/+0
When we forward RIM messages from GTP to BSSGP, we do not have to check the origin of the message since it does not matter from which origin the message came when we are forwarding it. Related: OS#6095 Change-Id: Iea8176dcfe64c25d207bafc0ef61ca9d9ad415be
2023-08-10sgsn_rim: get rid of MME check in sgsn_rim_rx_from_gtp:Philipp Maier2-21/+10
There is no point in checking the MME any further. When the message has reached this code path it is about to be forwarded to BSSGP, so the MME does not play a role in the following code pathes. The check also relys on the source RIM ROUTING INFORMATION IE inside the RAN TRANSPARENT CONTAINER, which we are not supposed to decode. Change-Id: I97c89aeb11537ae54d1fbea48c75619d8a92af61 Related: OS#6095
2023-08-10sgsn_rim: cosmetic: improve commentPhilipp Maier1-1/+2
Let's describe more clear what we do in sgsn_bssgp_fwd_rim_to_geran Related: OS#6095 Change-Id: I54aa82845515bcaa6badc9e0e87fa6248333430e
2023-07-28sgsn_rim: fix typoPhilipp Maier1-1/+1
Related: OS#6095 Change-Id: I86f70ea9a1a3e43523ec327165bfeb1737ad300a
2023-07-18gmm: Add missing GSM48_IE_GMM_RX_NPDU_NUM_LIST IE in gsm48_gmm_att_tlvdefPau Espin Pedrol1-0/+1
Depends: libosmocore.git Change-Id Ifac09653141758af345efe2eb9cef25ebf4dcff9 Change-Id: I5b43384407b1c9c33790cae9c48c2816213578e6
2023-07-14gmm: Update DRX params during rx RAU REQPau Espin Pedrol1-0/+4
The DRX params where already parsed in GMM Attached Req and transmitted to PCU over BSSGP DL UD packets, but it was not being updated if the MS changed it during RAU Req. TS 24.008 9.4.14.3 DRX parameter: "This IE shall be included if the MS changes the access network from GSM to UMTS, or the MS wants to indicate new DRX parameters to the network." Change-Id: I1dd7f8f161280dd017c337eacc3aa2be4ccd65ea
2023-05-18copyright: fix typo: sysmocom s/s.m.f.c./s.f.m.c./ GmbHVadim Yanitskiy5-5/+5
Change-Id: Ie2d864d5171e0da2e8a6c8551d151fd14f89bf05
2023-05-03gprs_sm.c: Fix load of misaligned ptr addressPau Espin Pedrol1-1/+1
Got this Asan runtime error in osmo-sgsn while implementing the MS side of SM: """ DMM gprs_sm.c:427 MM(901700000015254/c655d609) -> ACTIVATE PDP CONTEXT REQ: SAPI=3 NSAPI=6 IETF IPv4 /osmo-sgsn/src/sgsn/gprs_sm.c:453:16: runtime error: load of misaligned address 0x61f000064ba3 for type 'uint32_t', which requires 4 byte alignment 0x61f000064ba3: note: pointer points here 00 06 01 21 00 00 00 00 28 09 27 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ^ """ Change-Id: I8069e3457120b22bb6514fd5d192bff486d7d87f
2023-03-22gmm: Ciphering Key Sequence Number IE has half octet tagPau Espin Pedrol1-1/+1
As per 3GPP TS 24.008: * 10.5.1.2 Ciphering Key Sequence Number * Table 9.4.9/TS 24.00 The IE is so far being encoded manually, hence why it worked fine until now. Change-Id: Ic220113f30377a14cbe3550a04cd04f3caef49cf
2023-02-26Transition to use of 'telnet_init_default'arehbein2-4/+2
Related: OS#5809 Change-Id: Icc57c68337d55c6594c1c36e9bf41624d11dab0a
2023-02-20Run struct_endianness.pyOliver Smith1-3/+3
Ensure there is no diff to prepare to run this in CI. Related: OS#5884 Change-Id: I808afd0e9833e6e99d30a37675cbd200ced027e4
2023-01-11Fix extra whitespace in pdpctx_ctr_descriptionPau Espin Pedrol1-4/+4
Change-Id: I4d9145c681e725b709fde38f6e9b4516d37b4d8c
2023-01-11vty: Introduce encryption cipher-plugin-path commandPau Espin Pedrol2-2/+27
The load of plugins will eventually be moved to libosmo-gprs implementation, and path will be passed as a parameter. Once it's moved inside libosmo-gprs, it will be more strict on load failures, which can cause internally if the path doesn't exist (unless NULL is passed). Hence, add a VTY config to allow configuring the right path, and have it disabled by default. Change-Id: I4f965c7afafa193f4d7486750dd3e43cca22bb65
2023-01-11Move global mmctx list into struct sgsn_instancePau Espin Pedrol4-13/+12
Change-Id: Idf8458902321da03b9b0831dad3ad383a9c7afa1
2023-01-11Split gprs_sgsn.{c,h} -> {auth,mmctx,sgsn}.{c,h}Pau Espin Pedrol21-169/+235
Some level of split already existed, like sgsn_auth.c, but headers were entangled together. Let's clearly separate application centric code (sgsn.c/h), auth related code (auth.c/h) and mmctx related code (mmctx.c/h). Change-Id: I048a082851c1275c959649942904205b02acce2a
2023-01-11gtphub.h: Remove dependency on sgsn/gprs_sgsn.hPau Espin Pedrol4-3/+10
It is only really needed to import define GSM_APN_LENGTH, which is actually also available in libosmogsm. Hence simply use the one from libosmogsm. Change-Id: I4c6110feeeaa1adfb6b1f0147eeb56dfe34636ec
2023-01-11Rename bscconfig.h -> config.hPau Espin Pedrol9-9/+9
Change-Id: I007103be34c1aaab7a9375c44b226d4590fe5b24
2023-01-11Move gtphub header to include/osmocom/gtphub/Pau Espin Pedrol5-5/+5
Change-Id: I82e1f2a3bc8e22b28747a540879bd661f1704cde
2023-01-11Move global pdp_list inside struct sgsn_instancePau Espin Pedrol3-5/+4
This way pdp contexts are managed by the lifcycle of the main global struct sgsn_instance automatically. Change-Id: I725218fd54adcc68dceded5eb43675f25771bb96
2023-01-11Move sgsn_pdp_ctx to its own file pdpctx.{c,h}Pau Espin Pedrol12-119/+171
This further shrinks the mess in gprs_sgsn.h, and allows to easily see layer violations (like pdpctx.c requiring llc.h) Change-Id: Iad4da06efee7d8514ff48423bdaebc0f26413cc1
2023-01-11Drop extern declarations of global sgsn_instance in source filesPau Espin Pedrol3-6/+0
There's an extern declaration already in sgsn.h. Change-Id: I2375e13c8436a069e8fe60136c8e1759a9adc2d1
2023-01-11Move extern declarations of tall_sgsn_ctx to sgsn.hPau Espin Pedrol8-14/+0
Change-Id: Ifbd54b2e92db8d4a0e0cd1c569cfd83dd85165b8
2023-01-11gtp_{ggsn,mme}: Allocate contexts under struct sgsn_instancePau Espin Pedrol6-19/+17
This way apns are managed by the lifcycle of the main global struct sgsn_instance automatically. Change-Id: Ie65d59632a368c6957c33dca64e856ace792b2c6
2023-01-05Move global apn_list inside struct sgsn_instancePau Espin Pedrol3-10/+10
This way apns are managed by the lifcycle of the main global struct sgsn_instance automatically. Change-Id: I8cc8e540cfb64d0f130e9c0aaedf7b0835f8fe16
2023-01-05Move gtp related functions to gtp.hPau Espin Pedrol7-0/+7
The functions are implemented in sgsn_libgtp.c and hence belong to header file gtp.h Change-Id: I7f5cf2895b05e03435769548b61051e6284ccb3c
2023-01-05sndcp: Standarize unitdata function namingPau Espin Pedrol3-7/+7
Use sndcp_<sap>_type>_<op> so that it's easier to distinguish and identify them. Change-Id: Ib8825570a8f61d0a28d631f86f5244e70d3194aa
2023-01-05Move func defintions of funcs implemented in gprs_sndcp.c to gprs_sndcp.hPau Espin Pedrol1-0/+1
Move them to the correct header where they belong, so that the all the related protocol stuff is placed together. Change-Id: I9052f48a0af125bb445194f4ae94ebbe49508fda
2023-01-05Properly split llc->sndcp->gtp unitdata pathi through extra func callPau Espin Pedrol2-8/+17
Beforehand the function handling the LL-UNITDATA primitive from LLC was already submitting the packet to GTP code which had an SNDCP related name, so everything was really confusing and layer separation was not clean. Change-Id: Ia544a9dd4c0c7647b0c1b64ca110351f40820618
2023-01-05Move struct apn_ctx and APN related definitions to its own filePau Espin Pedrol3-98/+127
This allows further shrinking of gprs_sgsn.{c,h} and also being able to use GSM_APN_LENGTH on different headers easily (needed by follow-up patch). Change-Id: Id225ed8b84e1376f4a30f17dd4b153b6b1a6efa8
2023-01-05Move global ggsn_list into struct sgsn_instancePau Espin Pedrol3-5/+5
Change-Id: I9d4c74476b777a866af2796dd376ed50da7b5d01
2023-01-05Keep sgsn subsystems under struct sgsn_instance lifecyclePau Espin Pedrol4-43/+61
Rework initialization and destruction of several sgsn subsystems to be allocated & released together with the struct sgsn_instance. This makes it easier to destroy and recreate the entire context and allows us to start moving global variables scattered around to be under struct sgsn_instance. Change-Id: Idf60519b8e475b94d38bbb69e737132a5afaefab
2023-01-05Remove unneeded extern declaration from libosmocotrlPau Espin Pedrol1-2/+0
Change-Id: I464df2d03538c71f6666046c67170746690e723d
2023-01-05Fix -Werror=old-style-definitionPau Espin Pedrol2-6/+7
Change-Id: I119d4ba58d9c68df12b433b0cee924468a1473d8
2023-01-05Introduce new header file sgsn/gtp.hPau Espin Pedrol1-0/+1
It will be used to store all stuff relatd to libgtp use and GTP protocol, similar to what we already do for other protocols. Change-Id: I4aae35cd0ea401856cd822cb507d668350d07a89
2023-01-05Move gprs_sndcp_vty_init() declaration to gprs_sndcp.hPau Espin Pedrol1-0/+1
Change-Id: Iea9692e7ef9bd017d89ef654d2f2ae5b30cc4550
2023-01-05gprs_subscriber: Move API declarations to correct headerPau Espin Pedrol1-0/+1
Change-Id: Iaa1032c38fa54ad57c472d9120cfbb34b2ae90e9
2023-01-05Move struct sgsn_ggsn_ctx to its own file gtp_ggsn.{c,h}Pau Espin Pedrol8-140/+185
Similar to what we already have for struct sgsn_mme_ctx in gtp_mme.{c,h}. This is just the nth step of properly splitting different protocol layers, data model, etc. Change-Id: Iad1895f09e43e299df7bb126bf52fdb98268392e
2023-01-04Replace gprs_str_to_apn() with libosmocore API osmo_apn_from_str()Pau Espin Pedrol1-34/+0
The exact same function exists in libosmocore with a different naming. Change-Id: Ibef55a648f2d58f4fdd24fa553efde530982af2d
2023-01-04Remove unused function gprs_parse_mi_tmsi()Pau Espin Pedrol1-13/+0
Change-Id: I6fb7688bf54c7ae3ca3e06bf3a1b729fa62d82f9
2023-01-04Standarize lle and llme state enum & value_stringPau Espin Pedrol2-12/+12
Change-Id: Iaf102ce5ca60854fe7eb1af17c73a80e7c76181b
2023-01-04vty: Fix wrong value_string used to print llme statePau Espin Pedrol1-1/+1
Change-Id: Id3eec91b47029964092087858e4ae3a824929ce3
2023-01-04cosmetic: gprs_llc_vty.c: Fix trailing whitespacePau Espin Pedrol1-1/+1
Change-Id: I543fd784f7e1a0f7c82bd7c79e073104becc88da
2023-01-02Move gprs_tmr_to_secs() to tests/gprs/gprs_test.cPau Espin Pedrol1-16/+0
That function is only used in the test. Let's hence move the function to the same test file in order to simplify osmo-sgsn code. Change-Id: I69d80810362d75eb93974af34f61639514f99f8a
2022-12-28Rename gprs_gb.[c,h] -> gprs_ns.[c,h]Pau Espin Pedrol6-5/+5
All remaining code in that file is NS protocol related, hence let's rename it so that we end up with one file per protocol in the Gb stack. Change-Id: I8312c8a70d60cab48764950c5b57ca02964e9db2
2022-12-28Move some functions gprs_gb.[c,h] -> gprs_gmm.[c,h]Pau Espin Pedrol3-50/+50
This leaves only NS protocol related code in gprs_gb.[c,h], which will be renamed to gprs_ns.[c,h] in a follow up patch. Change-Id: I3dcbe1d0f75cb91ec8b700e239e2ba16fff030a2
2022-12-28Create new specific file for BSSGP codePau Espin Pedrol6-63/+104
Right now there's no much code there since the related code is totally entangled with the LLC one. This will eventually change in the future when we switch to use libosmo-gprs. Hence, this commit is a preparation to have already some place to put new BSSGP specific code in the future. Change-Id: I816396ab5ccb86032bbc21b41a959934a7768780
2022-12-22Move gprs_gb_parse.[c,h] to tests/sgsn/Pau Espin Pedrol2-687/+0
That big file is really only used by tests/sgsn/sgsn_test nowadays, so let's keep it out of osmo-sgsn app code base. Change-Id: Ia5a639832f52b2f015a2800bd0d94a28d7bc689b
2022-12-17ctrl: take both address and port from vty configMax1-2/+1
Change-Id: Ie1330b152a2e5cdcdb80a1c958e7c1d784b78eab
2022-12-06sndcp: Put decompress handling code into helper functionPau Espin Pedrol1-79/+64
This further simplifies code and avoids duplicating it. Change-Id: Id83f9e4a87139de2b2f64c8523460c186d5b5649
2022-11-17sgsn_libgtp: cb_data_ind: remove mm_idle assertOliver Smith1-4/+13
Log an error message and drop the packet instead of asserting if mm state fsm is in ST_MM_IDLE while the gmm fsm is in ST_GMM_REGISTERED_NORMAL. Fixes: OS#5725 Change-Id: I9dab98917c622b36dae22399bb359d747a598208