Projects
osmocom:nightly
open5gs
Sign Up
Log In
Username
Password
We truncated the diff of some files because they were too big. If you want to see the full diff for every file,
click here
.
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
Expand all
Collapse all
Changes of Revision 60
View file
open5gs_2.4.9.32.def9.202208250002.dsc
Deleted
@@ -1,37 +0,0 @@ -Format: 3.0 (native) -Source: open5gs -Binary: open5gs-common, open5gs-mme, open5gs-sgwc, open5gs-smf, open5gs-amf, open5gs-sgwu, open5gs-upf, open5gs-hss, open5gs-pcrf, open5gs-nrf, open5gs-ausf, open5gs-udm, open5gs-pcf, open5gs-nssf, open5gs-bsf, open5gs-udr, open5gs, open5gs-dbg -Architecture: any -Version: 2.4.9.32.def9.202208250002 -Maintainer: Harald Welte <laforge@gnumonks.org> -Uploaders: Sukchan Lee <acetcom@gmail.com> -Homepage: https://open5gs.org -Standards-Version: 4.3.0 -Vcs-Browser: https://github.com/open5gs/open5gs -Vcs-Git: git://github.com/open5gs/open5gs -Build-Depends: debhelper (>= 11), git, pkg-config, meson (>= 0.43.0), flex, bison, libgnutls28-dev, libgcrypt-dev, libssl-dev, libidn11-dev, libmongoc-dev, libbson-dev, libsctp-dev, libyaml-dev, libmicrohttpd-dev, libcurl4-gnutls-dev, libnghttp2-dev, libtins-dev, libtalloc-dev -Package-List: - open5gs deb net optional arch=any - open5gs-amf deb net optional arch=any - open5gs-ausf deb net optional arch=any - open5gs-bsf deb net optional arch=any - open5gs-common deb net optional arch=any - open5gs-dbg deb net optional arch=any - open5gs-hss deb net optional arch=any - open5gs-mme deb net optional arch=any - open5gs-nrf deb net optional arch=any - open5gs-nssf deb net optional arch=any - open5gs-pcf deb net optional arch=any - open5gs-pcrf deb net optional arch=any - open5gs-sgwc deb net optional arch=any - open5gs-sgwu deb net optional arch=any - open5gs-smf deb net optional arch=any - open5gs-udm deb net optional arch=any - open5gs-udr deb net optional arch=any - open5gs-upf deb net optional arch=any -Checksums-Sha1: - f892abc9bba513e58b094333f777f4086b30607c 11454128 open5gs_2.4.9.32.def9.202208250002.tar.xz -Checksums-Sha256: - 36dfce773594f92decd67f849333890e750a7a69ae6cce8381277a1266f536b4 11454128 open5gs_2.4.9.32.def9.202208250002.tar.xz -Files: - bde7c2828a3c3a700c57cd6814a18303 11454128 open5gs_2.4.9.32.def9.202208250002.tar.xz
View file
open5gs_2.4.9.34.83a20.202208260002.dsc
Added
@@ -0,0 +1,37 @@ +Format: 3.0 (native) +Source: open5gs +Binary: open5gs-common, open5gs-mme, open5gs-sgwc, open5gs-smf, open5gs-amf, open5gs-sgwu, open5gs-upf, open5gs-hss, open5gs-pcrf, open5gs-nrf, open5gs-ausf, open5gs-udm, open5gs-pcf, open5gs-nssf, open5gs-bsf, open5gs-udr, open5gs, open5gs-dbg +Architecture: any +Version: 2.4.9.34.83a20.202208260002 +Maintainer: Harald Welte <laforge@gnumonks.org> +Uploaders: Sukchan Lee <acetcom@gmail.com> +Homepage: https://open5gs.org +Standards-Version: 4.3.0 +Vcs-Browser: https://github.com/open5gs/open5gs +Vcs-Git: git://github.com/open5gs/open5gs +Build-Depends: debhelper (>= 11), git, pkg-config, meson (>= 0.43.0), flex, bison, libgnutls28-dev, libgcrypt-dev, libssl-dev, libidn11-dev, libmongoc-dev, libbson-dev, libsctp-dev, libyaml-dev, libmicrohttpd-dev, libcurl4-gnutls-dev, libnghttp2-dev, libtins-dev, libtalloc-dev +Package-List: + open5gs deb net optional arch=any + open5gs-amf deb net optional arch=any + open5gs-ausf deb net optional arch=any + open5gs-bsf deb net optional arch=any + open5gs-common deb net optional arch=any + open5gs-dbg deb net optional arch=any + open5gs-hss deb net optional arch=any + open5gs-mme deb net optional arch=any + open5gs-nrf deb net optional arch=any + open5gs-nssf deb net optional arch=any + open5gs-pcf deb net optional arch=any + open5gs-pcrf deb net optional arch=any + open5gs-sgwc deb net optional arch=any + open5gs-sgwu deb net optional arch=any + open5gs-smf deb net optional arch=any + open5gs-udm deb net optional arch=any + open5gs-udr deb net optional arch=any + open5gs-upf deb net optional arch=any +Checksums-Sha1: + b6ba03179163f7f170c5b595d96123fc2d948ebc 11455464 open5gs_2.4.9.34.83a20.202208260002.tar.xz +Checksums-Sha256: + 309d8e5d583205698a3d4de9188a4184b8c4b4131032e902042261b7ce15274a 11455464 open5gs_2.4.9.34.83a20.202208260002.tar.xz +Files: + 58b6a54ad80f2daad503a01e1a7a8c79 11455464 open5gs_2.4.9.34.83a20.202208260002.tar.xz
View file
open5gs_2.4.9.32.def9.202208250002.tar.xz/.tarball-version -> open5gs_2.4.9.34.83a20.202208260002.tar.xz/.tarball-version
Changed
@@ -1 +1 @@ -2.4.9.32-def9.202208250002 +2.4.9.34-83a20.202208260002
View file
open5gs_2.4.9.32.def9.202208250002.tar.xz/debian/changelog -> open5gs_2.4.9.34.83a20.202208260002.tar.xz/debian/changelog
Changed
@@ -1,8 +1,8 @@ -open5gs (2.4.9.32.def9.202208250002) unstable; urgency=medium +open5gs (2.4.9.34.83a20.202208260002) unstable; urgency=medium * Automatically generated changelog entry for building the Osmocom nightly feed - -- Osmocom OBS scripts <info@osmocom.org> Thu, 25 Aug 2022 00:04:30 +0000 + -- Osmocom OBS scripts <info@osmocom.org> Fri, 26 Aug 2022 00:04:38 +0000 open5gs (2.4.9) unstable; urgency=medium
View file
open5gs_2.4.9.32.def9.202208250002.tar.xz/lib/core/ogs-conv.c -> open5gs_2.4.9.34.83a20.202208260002.tar.xz/lib/core/ogs-conv.c
Changed
@@ -54,15 +54,16 @@ void *ogs_hex_to_ascii(void *in, int in_len, void *out, int out_len) { - char *p; + char *p, *last; int i = 0, l, off = 0; p = out; + last = p + out_len; p0 = 0; l = (in_len - off) > out_len ? out_len : in_len - off; for (i = 0; i < l; i++) { - p += sprintf(p, "%02x", ((char*)in)off+i & 0xff); + p = ogs_slprintf(p, last, "%02x", ((char*)in)off+i & 0xff); } return out;
View file
open5gs_2.4.9.32.def9.202208250002.tar.xz/lib/core/ogs-uuid.c -> open5gs_2.4.9.34.83a20.202208260002.tar.xz/lib/core/ogs-uuid.c
Changed
@@ -162,7 +162,8 @@ { const unsigned char *d = uuid->data; - sprintf(buffer, "%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-" + ogs_snprintf(buffer, OGS_UUID_FORMATTED_LENGTH + 1, + "%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-" "%02x%02x%02x%02x%02x%02x", d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11, d12, d13, d14, d15);
View file
open5gs_2.4.9.32.def9.202208250002.tar.xz/lib/diameter/s6a/dict.c -> open5gs_2.4.9.34.83a20.202208260002.tar.xz/lib/diameter/s6a/dict.c
Changed
@@ -583,6 +583,71 @@ PARSE_loc_rules( rules, cmd ); } + /* Insert-Subscriber-Data-Request (IDR) Command - 3GPP TS 29.272 #7.2.9 */ + { + struct dict_object * cmd; + struct dict_cmd_data data = { + 319, /* Code */ + "Insert-Subscriber-Data-Request", /* Name */ + CMD_FLAG_REQUEST | CMD_FLAG_PROXIABLE | CMD_FLAG_ERROR, /* Fixed flags */ + CMD_FLAG_REQUEST | CMD_FLAG_PROXIABLE /* Fixed flag values */ + }; + struct local_rules_definition rules = + { + { { .avp_name = "Session-Id" }, RULE_FIXED_HEAD, -1, 1 }, + { { .avp_name = "Vendor-Specific-Application-Id" }, RULE_OPTIONAL, -1, 1 }, + { { .avp_name = "Auth-Session-State" }, RULE_REQUIRED, -1, 1 }, + { { .avp_name = "Origin-Host" }, RULE_REQUIRED, -1, 1 }, + { { .avp_name = "Origin-Realm" }, RULE_REQUIRED, -1, 1 }, + { { .avp_name = "Destination-Host" }, RULE_OPTIONAL, -1, 1 }, + { { .avp_name = "Destination-Realm" }, RULE_REQUIRED, -1, 1 }, + { { .avp_name = "User-Name" }, RULE_REQUIRED, -1, 1 }, + { { .avp_vendor = 10415, .avp_name = "Supported-Features" }, RULE_OPTIONAL, -1, -1 }, + { { .avp_vendor = 10415, .avp_name = "Subscription-Data" }, RULE_REQUIRED, -1, 1 }, + { { .avp_vendor = 10415, .avp_name = "IDR-Flags" }, RULE_OPTIONAL, -1, 1 }, + { { .avp_name = "Proxy-Info" }, RULE_OPTIONAL, -1, -1 }, + { { .avp_name = "Route-Record" }, RULE_OPTIONAL, -1, -1 }, + }; + + CHECK_dict_new( DICT_COMMAND, &data, s6a, &cmd); + PARSE_loc_rules( rules, cmd ); + } + + /* Insert-Subscriber-Data-Answer (IDA) Command - 3GPP TS 29.272 #7.2.10 */ + { + struct dict_object * cmd; + struct dict_cmd_data data = { + 319, /* Code */ + "Insert-Subscriber-Data-Answer", /* Name */ + CMD_FLAG_REQUEST | CMD_FLAG_PROXIABLE | CMD_FLAG_ERROR, /* Fixed flags */ + CMD_FLAG_PROXIABLE /* Fixed flag values */ + }; + struct local_rules_definition rules = + { + { { .avp_name = "Session-Id" }, RULE_FIXED_HEAD, -1, 1 }, + { { .avp_name = "Vendor-Specific-Application-Id" }, RULE_OPTIONAL, -1, 1 }, + { { .avp_name = "Result-Code" }, RULE_OPTIONAL, -1, 1 }, + { { .avp_name = "Experimental-Result" }, RULE_OPTIONAL, -1, 1 }, + { { .avp_name = "Auth-Session-State" }, RULE_REQUIRED, -1, 1 }, + { { .avp_name = "Origin-Host" }, RULE_REQUIRED, -1, 1 }, + { { .avp_name = "Origin-Realm" }, RULE_REQUIRED, -1, 1 }, + { { .avp_vendor = 10415, .avp_name = "IMS-Voice-Over-PS-Sessions-Supported" }, RULE_OPTIONAL, -1, 1 }, + { { .avp_vendor = 10415, .avp_name = "Last-UE-Activity-Time" }, RULE_OPTIONAL, -1, 1 }, + { { .avp_vendor = 10415, .avp_name = "RAT-Type" }, RULE_OPTIONAL, -1, 1 }, + { { .avp_vendor = 10415, .avp_name = "IDA-Flags" }, RULE_OPTIONAL, -1, 1 }, + { { .avp_vendor = 10415, .avp_name = "EPS-User-State" }, RULE_OPTIONAL, -1, 1 }, + { { .avp_vendor = 10415, .avp_name = "EPS-Location-Information" }, RULE_OPTIONAL, -1, 1 }, + { { .avp_vendor = 10415, .avp_name = "Local-Time-Zone" }, RULE_OPTIONAL, -1, 1 }, + { { .avp_vendor = 10415, .avp_name = "Supported-Services" }, RULE_OPTIONAL, -1, 1 }, + { { .avp_name = "Failed-AVP" }, RULE_OPTIONAL, -1, -1 }, + { { .avp_name = "Proxy-Info" }, RULE_OPTIONAL, -1, -1 }, + { { .avp_name = "Route-Record" }, RULE_OPTIONAL, -1, -1 }, + }; + + CHECK_dict_new( DICT_COMMAND, &data, s6a, &cmd); + PARSE_loc_rules( rules, cmd ); + } + } LOG_D( "Extension 'Dictionary definitions for DCCA 3GPP S6A' initialized");
View file
open5gs_2.4.9.32.def9.202208250002.tar.xz/lib/diameter/s6a/message.c -> open5gs_2.4.9.34.83a20.202208260002.tar.xz/lib/diameter/s6a/message.c
Changed
@@ -32,10 +32,13 @@ struct dict_object *ogs_diam_s6a_cmd_pua = NULL; struct dict_object *ogs_diam_s6a_cmd_clr = NULL; struct dict_object *ogs_diam_s6a_cmd_cla = NULL; +struct dict_object *ogs_diam_s6a_cmd_idr = NULL; +struct dict_object *ogs_diam_s6a_cmd_ida = NULL; struct dict_object *ogs_diam_s6a_ulr_flags = NULL; struct dict_object *ogs_diam_s6a_ula_flags = NULL; struct dict_object *ogs_diam_s6a_clr_flags = NULL; +struct dict_object *ogs_diam_s6a_idr_flags = NULL; struct dict_object *ogs_diam_s6a_cancellation_type = NULL; struct dict_object *ogs_diam_s6a_subscription_data = NULL; struct dict_object *ogs_diam_s6a_req_eutran_auth_info = NULL; @@ -71,6 +74,11 @@ struct dict_object *ogs_diam_s6a_pre_emption_vulnerability = NULL; struct dict_object *ogs_diam_s6a_pdn_gw_allocation_type = NULL; struct dict_object *ogs_diam_s6a_vplmn_dynamic_address_allowed = NULL; +struct dict_object *ogs_diam_s6a_eps_location_information = NULL; +struct dict_object *ogs_diam_s6a_mme_location_information = NULL; +struct dict_object *ogs_diam_s6a_e_utran_cell_global_identity = NULL; +struct dict_object *ogs_diam_s6a_tracking_area_identity = NULL; +struct dict_object *ogs_diam_s6a_age_of_location_information = NULL; struct dict_object *ogs_diam_s6a_terminal_information = NULL; struct dict_object *ogs_diam_s6a_imei = NULL; @@ -96,11 +104,14 @@ CHECK_dict_search(DICT_COMMAND, CMD_BY_NAME, "Purge-UE-Request", &ogs_diam_s6a_cmd_pur); CHECK_dict_search(DICT_COMMAND, CMD_BY_NAME, "Purge-UE-Answer", &ogs_diam_s6a_cmd_pua); CHECK_dict_search(DICT_COMMAND, CMD_BY_NAME, "Cancel-Location-Request", &ogs_diam_s6a_cmd_clr); - CHECK_dict_search(DICT_COMMAND, CMD_BY_NAME, "Cancel-Location-Answer", &ogs_diam_s6a_cmd_cla); + CHECK_dict_search(DICT_COMMAND, CMD_BY_NAME, "Cancel-Location-Answer", &ogs_diam_s6a_cmd_cla); + CHECK_dict_search(DICT_COMMAND, CMD_BY_NAME, "Insert-Subscriber-Data-Request", &ogs_diam_s6a_cmd_idr); + CHECK_dict_search(DICT_COMMAND, CMD_BY_NAME, "Insert-Subscriber-Data-Answer", &ogs_diam_s6a_cmd_ida); CHECK_dict_search(DICT_AVP, AVP_BY_NAME_ALL_VENDORS, "ULR-Flags", &ogs_diam_s6a_ulr_flags); CHECK_dict_search(DICT_AVP, AVP_BY_NAME_ALL_VENDORS, "ULA-Flags", &ogs_diam_s6a_ula_flags); CHECK_dict_search(DICT_AVP, AVP_BY_NAME_ALL_VENDORS, "CLR-Flags", &ogs_diam_s6a_clr_flags); + CHECK_dict_search(DICT_AVP, AVP_BY_NAME_ALL_VENDORS, "IDR-Flags", &ogs_diam_s6a_idr_flags); CHECK_dict_search(DICT_AVP, AVP_BY_NAME_ALL_VENDORS, "Cancellation-Type", &ogs_diam_s6a_cancellation_type); CHECK_dict_search(DICT_AVP, AVP_BY_NAME_ALL_VENDORS, "UE-SRVCC-Capability", &ogs_diam_s6a_ue_srvcc_capability); @@ -142,6 +153,12 @@ CHECK_dict_search(DICT_AVP, AVP_BY_NAME_ALL_VENDORS, "Access-Restriction-Data", &ogs_diam_s6a_access_restriction_data); CHECK_dict_search(DICT_AVP, AVP_BY_NAME_ALL_VENDORS, "Subscribed-Periodic-RAU-TAU-Timer", &ogs_diam_s6a_subscribed_rau_tau_timer); + CHECK_dict_search(DICT_AVP, AVP_BY_NAME_ALL_VENDORS, "EPS-Location-Information", &ogs_diam_s6a_eps_location_information); + CHECK_dict_search(DICT_AVP, AVP_BY_NAME_ALL_VENDORS, "MME-Location-Information", &ogs_diam_s6a_mme_location_information); + CHECK_dict_search(DICT_AVP, AVP_BY_NAME_ALL_VENDORS, "E-UTRAN-Cell-Global-Identity", &ogs_diam_s6a_e_utran_cell_global_identity); + CHECK_dict_search(DICT_AVP, AVP_BY_NAME_ALL_VENDORS, "Tracking-Area-Identity", &ogs_diam_s6a_tracking_area_identity); + CHECK_dict_search(DICT_AVP, AVP_BY_NAME_ALL_VENDORS, "Age-Of-Location-Information", &ogs_diam_s6a_age_of_location_information); + CHECK_dict_search(DICT_AVP, AVP_BY_NAME_ALL_VENDORS, "Terminal-Information", &ogs_diam_s6a_terminal_information); CHECK_dict_search(DICT_AVP, AVP_BY_NAME_ALL_VENDORS, "IMEI", &ogs_diam_s6a_imei); CHECK_dict_search(DICT_AVP, AVP_BY_NAME_ALL_VENDORS, "Software-Version", &ogs_diam_s6a_software_version);
View file
open5gs_2.4.9.32.def9.202208250002.tar.xz/lib/diameter/s6a/message.h -> open5gs_2.4.9.34.83a20.202208260002.tar.xz/lib/diameter/s6a/message.h
Changed
@@ -78,10 +78,13 @@ extern struct dict_object *ogs_diam_s6a_cmd_pua; extern struct dict_object *ogs_diam_s6a_cmd_clr; extern struct dict_object *ogs_diam_s6a_cmd_cla; +extern struct dict_object *ogs_diam_s6a_cmd_idr; +extern struct dict_object *ogs_diam_s6a_cmd_ida; extern struct dict_object *ogs_diam_s6a_ulr_flags; extern struct dict_object *ogs_diam_s6a_ula_flags; extern struct dict_object *ogs_diam_s6a_clr_flags; +extern struct dict_object *ogs_diam_s6a_idr_flags; extern struct dict_object *ogs_diam_s6a_cancellation_type; extern struct dict_object *ogs_diam_s6a_subscription_data; extern struct dict_object *ogs_diam_s6a_req_eutran_auth_info; @@ -117,6 +120,11 @@ extern struct dict_object *ogs_diam_s6a_pre_emption_vulnerability; extern struct dict_object *ogs_diam_s6a_pdn_gw_allocation_type; extern struct dict_object *ogs_diam_s6a_vplmn_dynamic_address_allowed; +extern struct dict_object *ogs_diam_s6a_eps_location_information; +extern struct dict_object *ogs_diam_s6a_mme_location_information; +extern struct dict_object *ogs_diam_s6a_e_utran_cell_global_identity; +extern struct dict_object *ogs_diam_s6a_tracking_area_identity; +extern struct dict_object *ogs_diam_s6a_age_of_location_information; extern struct dict_object *ogs_diam_s6a_terminal_information; extern struct dict_object *ogs_diam_s6a_imei; @@ -150,10 +158,26 @@ uint32_t clr_flags; } ogs_diam_s6a_clr_message_t; +typedef struct ogs_diam_s6a_idr_message_s { +#define OGS_DIAM_S6A_IDR_FLAGS_UE_REACHABILITY (1) +#define OGS_DIAM_S6A_IDR_FLAGS_TADS_DATA (1 << 1) +#define OGS_DIAM_S6A_IDR_FLAGS_EPS_USER_STATE (1 << 2) +#define OGS_DIAM_S6A_IDR_FLAGS_EPS_LOCATION_INFO (1 << 3) +#define OGS_DIAM_S6A_IDR_FLAGS_CURRENT_LOCATION (1 << 4) +#define OGS_DIAM_S6A_IDR_FLAGS_LOCAL_TZ (1 << 5) +#define OGS_DIAM_S6A_IDR_FLAGS_REMOVE_SMS_REG (1 << 6) +#define OGS_DIAM_S6A_IDR_FLAGS_RAT_TYPE (1 << 7) +#define OGS_DIAM_S6A_IDR_FLAGS_PCSCF_Restoration (1 << 8) + uint32_t idr_flags; + ogs_subscription_data_t subscription_data; +} ogs_diam_s6a_idr_message_t; + typedef struct ogs_diam_s6a_message_s { #define OGS_DIAM_S6A_CMD_CODE_UPDATE_LOCATION 316 #define OGS_DIAM_S6A_CMD_CODE_CANCEL_LOCATION 317 #define OGS_DIAM_S6A_CMD_CODE_AUTHENTICATION_INFORMATION 318 +#define OGS_DIAM_S6A_CMD_CODE_INSERT_SUBSCRIBER_DATA 319 +#define OGS_DIAM_S6A_CMD_CODE_PURGE_UE 321 uint16_t cmd_code; /* Experimental Result Code */ @@ -168,6 +192,7 @@ uint32_t *err; uint32_t *exp_err; + ogs_diam_s6a_idr_message_t idr_message; ogs_diam_s6a_clr_message_t clr_message; ogs_diam_s6a_aia_message_t aia_message; ogs_diam_s6a_ula_message_t ula_message;
View file
open5gs_2.4.9.32.def9.202208250002.tar.xz/src/mme/emm-handler.c -> open5gs_2.4.9.34.83a20.202208260002.tar.xz/src/mme/emm-handler.c
Changed
@@ -121,6 +121,7 @@ mme_ue->enb_ostream_id = enb_ue->enb_ostream_id; memcpy(&mme_ue->tai, &enb_ue->saved.tai, sizeof(ogs_eps_tai_t)); memcpy(&mme_ue->e_cgi, &enb_ue->saved.e_cgi, sizeof(ogs_e_cgi_t)); + mme_ue->ue_location_timestamp = ogs_time_now(); /* Check TAI */ served_tai_index = mme_find_served_tai(&mme_ue->tai); @@ -538,6 +539,7 @@ mme_ue->enb_ostream_id = enb_ue->enb_ostream_id; memcpy(&mme_ue->tai, &enb_ue->saved.tai, sizeof(ogs_eps_tai_t)); memcpy(&mme_ue->e_cgi, &enb_ue->saved.e_cgi, sizeof(ogs_e_cgi_t)); + mme_ue->ue_location_timestamp = ogs_time_now(); /* Check TAI */ served_tai_index = mme_find_served_tai(&mme_ue->tai); @@ -655,6 +657,7 @@ mme_ue->enb_ostream_id = enb_ue->enb_ostream_id; memcpy(&mme_ue->tai, &enb_ue->saved.tai, sizeof(ogs_eps_tai_t)); memcpy(&mme_ue->e_cgi, &enb_ue->saved.e_cgi, sizeof(ogs_e_cgi_t)); + mme_ue->ue_location_timestamp = ogs_time_now(); /* Check TAI */ served_tai_index = mme_find_served_tai(&mme_ue->tai);
View file
open5gs_2.4.9.32.def9.202208250002.tar.xz/src/mme/mme-context.h -> open5gs_2.4.9.34.83a20.202208260002.tar.xz/src/mme/mme-context.h
Changed
@@ -368,6 +368,7 @@ uint16_t enb_ostream_id; ogs_eps_tai_t tai; ogs_e_cgi_t e_cgi; + ogs_time_t ue_location_timestamp; ogs_plmn_id_t last_visited_plmn_id; #define SECURITY_CONTEXT_IS_VALID(__mME) \
View file
open5gs_2.4.9.32.def9.202208250002.tar.xz/src/mme/mme-fd-path.c -> open5gs_2.4.9.34.83a20.202208260002.tar.xz/src/mme/mme-fd-path.c
Changed
@@ -23,6 +23,9 @@ /* handler for Cancel-Location-Request cb */ static struct disp_hdl *hdl_s6a_clr = NULL; +/* handler for Insert-Subscriber-Data-Request cb */ +static struct disp_hdl *hdl_s6a_idr = NULL; + static struct session_handler *mme_s6a_reg = NULL; struct sess_state { @@ -1368,7 +1371,8 @@ ((ts.tv_nsec - sess_data->ts.tv_nsec) / 1000); if (ogs_diam_logger_self()->stats.nb_recv) { /* Ponderate in the avg */ - ogs_diam_logger_self()->stats.avg = (ogs_diam_logger_self()->stats.avg * + ogs_diam_logger_self()->stats.avg = + (ogs_diam_logger_self()->stats.avg * ogs_diam_logger_self()->stats.nb_recv + dur) / (ogs_diam_logger_self()->stats.nb_recv + 1); /* Min, max */ @@ -1541,6 +1545,237 @@ return 0; } +/* Callback for incoming Insert-Subscriber-Data-Request messages + * 29.272 5.2.2.1.2 */ +static int mme_ogs_diam_s6a_idr_cb( struct msg **msg, struct avp *avp, + struct session *session, void *opaque, enum disp_action *act) +{ + int ret; + + mme_ue_t *mme_ue = NULL; + + struct msg *ans, *qry; + ogs_diam_s6a_idr_message_t *idr_message = NULL; + + struct avp_hdr *hdr; + union avp_value val; + + char imsi_bcdOGS_MAX_IMSI_BCD_LEN+1; + + uint32_t result_code = 0; + + ogs_assert(msg); + + ogs_diam_s6a_message_t *s6a_message = NULL; + + ogs_debug("Insert-Subscriber-Data-Request"); + + s6a_message = ogs_calloc(1, sizeof(ogs_diam_s6a_message_t)); + ogs_assert(s6a_message); + s6a_message->cmd_code = OGS_DIAM_S6A_CMD_CODE_INSERT_SUBSCRIBER_DATA; + idr_message = &s6a_message->idr_message; + ogs_assert(idr_message); + + /* Create answer header */ + qry = *msg; + ret = fd_msg_new_answer_from_req(fd_g_config->cnf_dict, msg, 0); + ogs_assert(ret == 0); + ans = *msg; + + ret = fd_msg_search_avp(qry, ogs_diam_user_name, &avp); + ogs_assert(ret == 0); + ret = fd_msg_avp_hdr(avp, &hdr); + ogs_assert(ret == 0); + + ogs_cpystrn(imsi_bcd, (char*)hdr->avp_value->os.data, + ogs_min(hdr->avp_value->os.len, OGS_MAX_IMSI_BCD_LEN)+1); + + mme_ue = mme_ue_find_by_imsi_bcd(imsi_bcd); + + if (!mme_ue) { + ogs_error("Insert Subscriber Data for Unknown IMSI%s", imsi_bcd); + result_code = OGS_DIAM_S6A_ERROR_USER_UNKNOWN; + goto out; + } + + /* AVP: 'Subscription-Data'(1400) + * The Subscription-Data AVP contains the information related to the user + * profile relevant for EPS and GERAN/UTRAN. + * Reference: 3GPP TS 29.272-f70 + */ + ret = fd_msg_search_avp(*msg, ogs_diam_s6a_subscription_data, &avp); + ogs_assert(ret == 0); + if (avp) { + ret = fd_msg_avp_hdr(avp, &hdr); + ogs_assert(ret == 0); + if (hdr->avp_value->os.len) { + ogs_debug("WIP: Process New Subscription Data"); + } else { + ogs_debug("No Sub Data, ok to check IDR Flags"); + } + } + + ret = fd_msg_search_avp(qry, ogs_diam_s6a_idr_flags, &avp); + ogs_assert(ret == 0); + if (avp) { + ret = fd_msg_avp_hdr(avp, &hdr); + ogs_assert(ret == 0); + idr_message->idr_flags = hdr->avp_value->i32; + } else { + ogs_error("Insert Subscriber Data does not contain any IDR Flags " + "for IMSI%s", imsi_bcd); + /* Set the Origin-Host, Origin-Realm, and Result-Code AVPs */ + ret = fd_msg_rescode_set(ans, + (char*)"DIAMETER_UNABLE_TO_COMPLY", NULL, NULL, 1); + ogs_assert(ret == 0); + goto outnoexp; + } + + if (idr_message->idr_flags & OGS_DIAM_S6A_IDR_FLAGS_EPS_LOCATION_INFO) { + char buf8; + + uint8_t ida_ecgi7; + uint8_t ida_tai5; + ogs_time_t ida_age; + + ogs_nas_plmn_id_t ida_plmn_buf; + char ida_cell_id_hex9; + char ida_tac_hex5; + + uint32_t ida_cell_id = mme_ue->e_cgi.cell_id; + uint16_t ida_tac = mme_ue->tai.tac; + + struct avp *avp_mme_location_information; + struct avp *avp_e_utran_cell_global_identity; + struct avp *avp_tracking_area_identity; + struct avp *avp_age_of_location_information; + + ogs_snprintf(ida_cell_id_hex, sizeof(ida_cell_id_hex), + "%08x", ida_cell_id); + memcpy(ida_ecgi, + ogs_nas_from_plmn_id(&ida_plmn_buf, &mme_ue->e_cgi.plmn_id), 3); + memcpy(ida_ecgi + 3, + OGS_HEX(ida_cell_id_hex, sizeof(ida_cell_id_hex), buf), 5); + + ogs_snprintf(ida_tac_hex, sizeof(ida_tac_hex), "%04x", ida_tac); + memcpy(ida_tai, + ogs_nas_from_plmn_id(&ida_plmn_buf, &mme_ue->tai.plmn_id), 3); + memcpy(ida_tai + 3, OGS_HEX(ida_tac_hex, sizeof(ida_tac_hex), buf), 2); + + ida_age = + (ogs_time_now() - mme_ue->ue_location_timestamp) / 1000000 / 60; + + /* Set the EPS-Location-Information AVP */ + ret = fd_msg_avp_new(ogs_diam_s6a_eps_location_information, 0, &avp); + ogs_assert(ret == 0); + ret = fd_msg_avp_new(ogs_diam_s6a_mme_location_information, + 0, &avp_mme_location_information); + ogs_assert(ret == 0); + + ret = fd_msg_avp_new(ogs_diam_s6a_e_utran_cell_global_identity, + 0, &avp_e_utran_cell_global_identity); + ogs_assert(ret == 0); + val.os.data = ida_ecgi; + val.os.len = 7; + ret = fd_msg_avp_setvalue(avp_e_utran_cell_global_identity, &val); + ogs_assert(ret == 0); + ret = fd_msg_avp_add(avp_mme_location_information, + MSG_BRW_LAST_CHILD, avp_e_utran_cell_global_identity); + ogs_assert(ret == 0); + + ret = fd_msg_avp_new(ogs_diam_s6a_tracking_area_identity, + 0, &avp_tracking_area_identity); + ogs_assert(ret == 0); + val.os.data = ida_tai; + val.os.len = 5; + ret = fd_msg_avp_setvalue(avp_tracking_area_identity, &val); + ogs_assert(ret == 0); + ret = fd_msg_avp_add(avp_mme_location_information, + MSG_BRW_LAST_CHILD, avp_tracking_area_identity); + ogs_assert(ret == 0); + + ret = fd_msg_avp_new(ogs_diam_s6a_age_of_location_information, + 0, &avp_age_of_location_information); + ogs_assert(ret == 0); + val.i32 = ida_age; + ret = fd_msg_avp_setvalue(avp_age_of_location_information, &val); + ogs_assert(ret == 0); + ret = fd_msg_avp_add(avp_mme_location_information, + MSG_BRW_LAST_CHILD, avp_age_of_location_information); + ogs_assert(ret == 0); + + ret = fd_msg_avp_add(avp, + MSG_BRW_LAST_CHILD, avp_mme_location_information); + ogs_assert(ret == 0); + + ret = fd_msg_avp_add(ans, MSG_BRW_LAST_CHILD, avp); + ogs_assert(ret == 0); + } else { + ogs_error("Insert Subscriber Data " + "with unsupported IDR Flags for IMSI%s", imsi_bcd); + /* Set the Origin-Host, Origin-Realm, and Result-Code AVPs */ + ret = fd_msg_rescode_set( + ans, (char*)"DIAMETER_UNABLE_TO_COMPLY", NULL, NULL, 1); + ogs_assert(ret == 0); + goto outnoexp; + } + + /* Set the Origin-Host, Origin-Realm, andResult-Code AVPs */
View file
open5gs_2.4.9.32.def9.202208250002.tar.xz/src/mme/mme-sm.c -> open5gs_2.4.9.34.83a20.202208260002.tar.xz/src/mme/mme-sm.c
Changed
@@ -434,6 +434,8 @@ case OGS_DIAM_S6A_CMD_CODE_CANCEL_LOCATION: mme_s6a_handle_clr(mme_ue, &s6a_message->clr_message); break; + case OGS_DIAM_S6A_CMD_CODE_INSERT_SUBSCRIBER_DATA: + break; default: ogs_error("Invalid Type%d", s6a_message->cmd_code); break;
View file
open5gs_2.4.9.32.def9.202208250002.tar.xz/src/mme/s1ap-handler.c -> open5gs_2.4.9.34.83a20.202208260002.tar.xz/src/mme/s1ap-handler.c
Changed
@@ -511,6 +511,7 @@ memcpy(&mme_ue->tai, &enb_ue->saved.tai, sizeof(ogs_eps_tai_t)); memcpy(&mme_ue->e_cgi, &enb_ue->saved.e_cgi, sizeof(ogs_e_cgi_t)); + mme_ue->ue_location_timestamp = ogs_time_now(); } else { ogs_fatal("No UE Context in UplinkNASTransport"); ogs_assert_if_reached(); @@ -1897,6 +1898,7 @@ mme_ue->enb_ostream_id = enb_ue->enb_ostream_id; memcpy(&mme_ue->tai, &enb_ue->saved.tai, sizeof(ogs_eps_tai_t)); memcpy(&mme_ue->e_cgi, &enb_ue->saved.e_cgi, sizeof(ogs_e_cgi_t)); + mme_ue->ue_location_timestamp = ogs_time_now(); ogs_assert(UESecurityCapabilities); encryptionAlgorithms = @@ -2939,6 +2941,7 @@ mme_ue->enb_ostream_id = target_ue->enb_ostream_id; memcpy(&mme_ue->tai, &target_ue->saved.tai, sizeof(ogs_eps_tai_t)); memcpy(&mme_ue->e_cgi, &target_ue->saved.e_cgi, sizeof(ogs_e_cgi_t)); + mme_ue->ue_location_timestamp = ogs_time_now(); ogs_assert(OGS_OK == s1ap_send_ue_context_release_command(source_ue,
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.