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.
Changes of Revision 60
open5gs_2.4.9.32.def9.202208250002.dsc
Deleted
x
1
2
-Format: 3.0 (native)
3
-Source: open5gs
4
-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
5
-Architecture: any
6
-Version: 2.4.9.32.def9.202208250002
7
-Maintainer: Harald Welte <laforge@gnumonks.org>
8
-Uploaders: Sukchan Lee <acetcom@gmail.com>
9
-Homepage: https://open5gs.org
10
-Standards-Version: 4.3.0
11
-Vcs-Browser: https://github.com/open5gs/open5gs
12
-Vcs-Git: git://github.com/open5gs/open5gs
13
-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
14
-Package-List:
15
- open5gs deb net optional arch=any
16
- open5gs-amf deb net optional arch=any
17
- open5gs-ausf deb net optional arch=any
18
- open5gs-bsf deb net optional arch=any
19
- open5gs-common deb net optional arch=any
20
- open5gs-dbg deb net optional arch=any
21
- open5gs-hss deb net optional arch=any
22
- open5gs-mme deb net optional arch=any
23
- open5gs-nrf deb net optional arch=any
24
- open5gs-nssf deb net optional arch=any
25
- open5gs-pcf deb net optional arch=any
26
- open5gs-pcrf deb net optional arch=any
27
- open5gs-sgwc deb net optional arch=any
28
- open5gs-sgwu deb net optional arch=any
29
- open5gs-smf deb net optional arch=any
30
- open5gs-udm deb net optional arch=any
31
- open5gs-udr deb net optional arch=any
32
- open5gs-upf deb net optional arch=any
33
-Checksums-Sha1:
34
- f892abc9bba513e58b094333f777f4086b30607c 11454128 open5gs_2.4.9.32.def9.202208250002.tar.xz
35
-Checksums-Sha256:
36
- 36dfce773594f92decd67f849333890e750a7a69ae6cce8381277a1266f536b4 11454128 open5gs_2.4.9.32.def9.202208250002.tar.xz
37
-Files:
38
- bde7c2828a3c3a700c57cd6814a18303 11454128 open5gs_2.4.9.32.def9.202208250002.tar.xz
39
open5gs_2.4.9.34.83a20.202208260002.dsc
Added
39
1
2
+Format: 3.0 (native)
3
+Source: open5gs
4
+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
5
+Architecture: any
6
+Version: 2.4.9.34.83a20.202208260002
7
+Maintainer: Harald Welte <laforge@gnumonks.org>
8
+Uploaders: Sukchan Lee <acetcom@gmail.com>
9
+Homepage: https://open5gs.org
10
+Standards-Version: 4.3.0
11
+Vcs-Browser: https://github.com/open5gs/open5gs
12
+Vcs-Git: git://github.com/open5gs/open5gs
13
+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
14
+Package-List:
15
+ open5gs deb net optional arch=any
16
+ open5gs-amf deb net optional arch=any
17
+ open5gs-ausf deb net optional arch=any
18
+ open5gs-bsf deb net optional arch=any
19
+ open5gs-common deb net optional arch=any
20
+ open5gs-dbg deb net optional arch=any
21
+ open5gs-hss deb net optional arch=any
22
+ open5gs-mme deb net optional arch=any
23
+ open5gs-nrf deb net optional arch=any
24
+ open5gs-nssf deb net optional arch=any
25
+ open5gs-pcf deb net optional arch=any
26
+ open5gs-pcrf deb net optional arch=any
27
+ open5gs-sgwc deb net optional arch=any
28
+ open5gs-sgwu deb net optional arch=any
29
+ open5gs-smf deb net optional arch=any
30
+ open5gs-udm deb net optional arch=any
31
+ open5gs-udr deb net optional arch=any
32
+ open5gs-upf deb net optional arch=any
33
+Checksums-Sha1:
34
+ b6ba03179163f7f170c5b595d96123fc2d948ebc 11455464 open5gs_2.4.9.34.83a20.202208260002.tar.xz
35
+Checksums-Sha256:
36
+ 309d8e5d583205698a3d4de9188a4184b8c4b4131032e902042261b7ce15274a 11455464 open5gs_2.4.9.34.83a20.202208260002.tar.xz
37
+Files:
38
+ 58b6a54ad80f2daad503a01e1a7a8c79 11455464 open5gs_2.4.9.34.83a20.202208260002.tar.xz
39
open5gs_2.4.9.32.def9.202208250002.tar.xz/.tarball-version -> open5gs_2.4.9.34.83a20.202208260002.tar.xz/.tarball-version
Changed
4
1
2
-2.4.9.32-def9.202208250002
3
+2.4.9.34-83a20.202208260002
4
open5gs_2.4.9.32.def9.202208250002.tar.xz/debian/changelog -> open5gs_2.4.9.34.83a20.202208260002.tar.xz/debian/changelog
Changed
12
1
2
-open5gs (2.4.9.32.def9.202208250002) unstable; urgency=medium
3
+open5gs (2.4.9.34.83a20.202208260002) unstable; urgency=medium
4
5
* Automatically generated changelog entry for building the Osmocom nightly feed
6
7
- -- Osmocom OBS scripts <info@osmocom.org> Thu, 25 Aug 2022 00:04:30 +0000
8
+ -- Osmocom OBS scripts <info@osmocom.org> Fri, 26 Aug 2022 00:04:38 +0000
9
10
open5gs (2.4.9) unstable; urgency=medium
11
12
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
20
1
2
3
void *ogs_hex_to_ascii(void *in, int in_len, void *out, int out_len)
4
{
5
- char *p;
6
+ char *p, *last;
7
int i = 0, l, off = 0;
8
9
p = out;
10
+ last = p + out_len;
11
p0 = 0;
12
13
l = (in_len - off) > out_len ? out_len : in_len - off;
14
for (i = 0; i < l; i++) {
15
- p += sprintf(p, "%02x", ((char*)in)off+i & 0xff);
16
+ p = ogs_slprintf(p, last, "%02x", ((char*)in)off+i & 0xff);
17
}
18
19
return out;
20
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
11
1
2
{
3
const unsigned char *d = uuid->data;
4
5
- sprintf(buffer, "%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-"
6
+ ogs_snprintf(buffer, OGS_UUID_FORMATTED_LENGTH + 1,
7
+ "%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-"
8
"%02x%02x%02x%02x%02x%02x",
9
d0, d1, d2, d3, d4, d5, d6, d7,
10
d8, d9, d10, d11, d12, d13, d14, d15);
11
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
73
1
2
PARSE_loc_rules( rules, cmd );
3
}
4
5
+ /* Insert-Subscriber-Data-Request (IDR) Command - 3GPP TS 29.272 #7.2.9 */
6
+ {
7
+ struct dict_object * cmd;
8
+ struct dict_cmd_data data = {
9
+ 319, /* Code */
10
+ "Insert-Subscriber-Data-Request", /* Name */
11
+ CMD_FLAG_REQUEST | CMD_FLAG_PROXIABLE | CMD_FLAG_ERROR, /* Fixed flags */
12
+ CMD_FLAG_REQUEST | CMD_FLAG_PROXIABLE /* Fixed flag values */
13
+ };
14
+ struct local_rules_definition rules =
15
+ {
16
+ { { .avp_name = "Session-Id" }, RULE_FIXED_HEAD, -1, 1 },
17
+ { { .avp_name = "Vendor-Specific-Application-Id" }, RULE_OPTIONAL, -1, 1 },
18
+ { { .avp_name = "Auth-Session-State" }, RULE_REQUIRED, -1, 1 },
19
+ { { .avp_name = "Origin-Host" }, RULE_REQUIRED, -1, 1 },
20
+ { { .avp_name = "Origin-Realm" }, RULE_REQUIRED, -1, 1 },
21
+ { { .avp_name = "Destination-Host" }, RULE_OPTIONAL, -1, 1 },
22
+ { { .avp_name = "Destination-Realm" }, RULE_REQUIRED, -1, 1 },
23
+ { { .avp_name = "User-Name" }, RULE_REQUIRED, -1, 1 },
24
+ { { .avp_vendor = 10415, .avp_name = "Supported-Features" }, RULE_OPTIONAL, -1, -1 },
25
+ { { .avp_vendor = 10415, .avp_name = "Subscription-Data" }, RULE_REQUIRED, -1, 1 },
26
+ { { .avp_vendor = 10415, .avp_name = "IDR-Flags" }, RULE_OPTIONAL, -1, 1 },
27
+ { { .avp_name = "Proxy-Info" }, RULE_OPTIONAL, -1, -1 },
28
+ { { .avp_name = "Route-Record" }, RULE_OPTIONAL, -1, -1 },
29
+ };
30
+
31
+ CHECK_dict_new( DICT_COMMAND, &data, s6a, &cmd);
32
+ PARSE_loc_rules( rules, cmd );
33
+ }
34
+
35
+ /* Insert-Subscriber-Data-Answer (IDA) Command - 3GPP TS 29.272 #7.2.10 */
36
+ {
37
+ struct dict_object * cmd;
38
+ struct dict_cmd_data data = {
39
+ 319, /* Code */
40
+ "Insert-Subscriber-Data-Answer", /* Name */
41
+ CMD_FLAG_REQUEST | CMD_FLAG_PROXIABLE | CMD_FLAG_ERROR, /* Fixed flags */
42
+ CMD_FLAG_PROXIABLE /* Fixed flag values */
43
+ };
44
+ struct local_rules_definition rules =
45
+ {
46
+ { { .avp_name = "Session-Id" }, RULE_FIXED_HEAD, -1, 1 },
47
+ { { .avp_name = "Vendor-Specific-Application-Id" }, RULE_OPTIONAL, -1, 1 },
48
+ { { .avp_name = "Result-Code" }, RULE_OPTIONAL, -1, 1 },
49
+ { { .avp_name = "Experimental-Result" }, RULE_OPTIONAL, -1, 1 },
50
+ { { .avp_name = "Auth-Session-State" }, RULE_REQUIRED, -1, 1 },
51
+ { { .avp_name = "Origin-Host" }, RULE_REQUIRED, -1, 1 },
52
+ { { .avp_name = "Origin-Realm" }, RULE_REQUIRED, -1, 1 },
53
+ { { .avp_vendor = 10415, .avp_name = "IMS-Voice-Over-PS-Sessions-Supported" }, RULE_OPTIONAL, -1, 1 },
54
+ { { .avp_vendor = 10415, .avp_name = "Last-UE-Activity-Time" }, RULE_OPTIONAL, -1, 1 },
55
+ { { .avp_vendor = 10415, .avp_name = "RAT-Type" }, RULE_OPTIONAL, -1, 1 },
56
+ { { .avp_vendor = 10415, .avp_name = "IDA-Flags" }, RULE_OPTIONAL, -1, 1 },
57
+ { { .avp_vendor = 10415, .avp_name = "EPS-User-State" }, RULE_OPTIONAL, -1, 1 },
58
+ { { .avp_vendor = 10415, .avp_name = "EPS-Location-Information" }, RULE_OPTIONAL, -1, 1 },
59
+ { { .avp_vendor = 10415, .avp_name = "Local-Time-Zone" }, RULE_OPTIONAL, -1, 1 },
60
+ { { .avp_vendor = 10415, .avp_name = "Supported-Services" }, RULE_OPTIONAL, -1, 1 },
61
+ { { .avp_name = "Failed-AVP" }, RULE_OPTIONAL, -1, -1 },
62
+ { { .avp_name = "Proxy-Info" }, RULE_OPTIONAL, -1, -1 },
63
+ { { .avp_name = "Route-Record" }, RULE_OPTIONAL, -1, -1 },
64
+ };
65
+
66
+ CHECK_dict_new( DICT_COMMAND, &data, s6a, &cmd);
67
+ PARSE_loc_rules( rules, cmd );
68
+ }
69
+
70
}
71
72
LOG_D( "Extension 'Dictionary definitions for DCCA 3GPP S6A' initialized");
73
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
56
1
2
struct dict_object *ogs_diam_s6a_cmd_pua = NULL;
3
struct dict_object *ogs_diam_s6a_cmd_clr = NULL;
4
struct dict_object *ogs_diam_s6a_cmd_cla = NULL;
5
+struct dict_object *ogs_diam_s6a_cmd_idr = NULL;
6
+struct dict_object *ogs_diam_s6a_cmd_ida = NULL;
7
8
struct dict_object *ogs_diam_s6a_ulr_flags = NULL;
9
struct dict_object *ogs_diam_s6a_ula_flags = NULL;
10
struct dict_object *ogs_diam_s6a_clr_flags = NULL;
11
+struct dict_object *ogs_diam_s6a_idr_flags = NULL;
12
struct dict_object *ogs_diam_s6a_cancellation_type = NULL;
13
struct dict_object *ogs_diam_s6a_subscription_data = NULL;
14
struct dict_object *ogs_diam_s6a_req_eutran_auth_info = NULL;
15
16
struct dict_object *ogs_diam_s6a_pre_emption_vulnerability = NULL;
17
struct dict_object *ogs_diam_s6a_pdn_gw_allocation_type = NULL;
18
struct dict_object *ogs_diam_s6a_vplmn_dynamic_address_allowed = NULL;
19
+struct dict_object *ogs_diam_s6a_eps_location_information = NULL;
20
+struct dict_object *ogs_diam_s6a_mme_location_information = NULL;
21
+struct dict_object *ogs_diam_s6a_e_utran_cell_global_identity = NULL;
22
+struct dict_object *ogs_diam_s6a_tracking_area_identity = NULL;
23
+struct dict_object *ogs_diam_s6a_age_of_location_information = NULL;
24
25
struct dict_object *ogs_diam_s6a_terminal_information = NULL;
26
struct dict_object *ogs_diam_s6a_imei = NULL;
27
28
CHECK_dict_search(DICT_COMMAND, CMD_BY_NAME, "Purge-UE-Request", &ogs_diam_s6a_cmd_pur);
29
CHECK_dict_search(DICT_COMMAND, CMD_BY_NAME, "Purge-UE-Answer", &ogs_diam_s6a_cmd_pua);
30
CHECK_dict_search(DICT_COMMAND, CMD_BY_NAME, "Cancel-Location-Request", &ogs_diam_s6a_cmd_clr);
31
- CHECK_dict_search(DICT_COMMAND, CMD_BY_NAME, "Cancel-Location-Answer", &ogs_diam_s6a_cmd_cla);
32
+ CHECK_dict_search(DICT_COMMAND, CMD_BY_NAME, "Cancel-Location-Answer", &ogs_diam_s6a_cmd_cla);
33
+ CHECK_dict_search(DICT_COMMAND, CMD_BY_NAME, "Insert-Subscriber-Data-Request", &ogs_diam_s6a_cmd_idr);
34
+ CHECK_dict_search(DICT_COMMAND, CMD_BY_NAME, "Insert-Subscriber-Data-Answer", &ogs_diam_s6a_cmd_ida);
35
36
CHECK_dict_search(DICT_AVP, AVP_BY_NAME_ALL_VENDORS, "ULR-Flags", &ogs_diam_s6a_ulr_flags);
37
CHECK_dict_search(DICT_AVP, AVP_BY_NAME_ALL_VENDORS, "ULA-Flags", &ogs_diam_s6a_ula_flags);
38
CHECK_dict_search(DICT_AVP, AVP_BY_NAME_ALL_VENDORS, "CLR-Flags", &ogs_diam_s6a_clr_flags);
39
+ CHECK_dict_search(DICT_AVP, AVP_BY_NAME_ALL_VENDORS, "IDR-Flags", &ogs_diam_s6a_idr_flags);
40
CHECK_dict_search(DICT_AVP, AVP_BY_NAME_ALL_VENDORS, "Cancellation-Type", &ogs_diam_s6a_cancellation_type);
41
CHECK_dict_search(DICT_AVP, AVP_BY_NAME_ALL_VENDORS, "UE-SRVCC-Capability", &ogs_diam_s6a_ue_srvcc_capability);
42
43
44
CHECK_dict_search(DICT_AVP, AVP_BY_NAME_ALL_VENDORS, "Access-Restriction-Data", &ogs_diam_s6a_access_restriction_data);
45
CHECK_dict_search(DICT_AVP, AVP_BY_NAME_ALL_VENDORS, "Subscribed-Periodic-RAU-TAU-Timer", &ogs_diam_s6a_subscribed_rau_tau_timer);
46
47
+ CHECK_dict_search(DICT_AVP, AVP_BY_NAME_ALL_VENDORS, "EPS-Location-Information", &ogs_diam_s6a_eps_location_information);
48
+ CHECK_dict_search(DICT_AVP, AVP_BY_NAME_ALL_VENDORS, "MME-Location-Information", &ogs_diam_s6a_mme_location_information);
49
+ CHECK_dict_search(DICT_AVP, AVP_BY_NAME_ALL_VENDORS, "E-UTRAN-Cell-Global-Identity", &ogs_diam_s6a_e_utran_cell_global_identity);
50
+ CHECK_dict_search(DICT_AVP, AVP_BY_NAME_ALL_VENDORS, "Tracking-Area-Identity", &ogs_diam_s6a_tracking_area_identity);
51
+ CHECK_dict_search(DICT_AVP, AVP_BY_NAME_ALL_VENDORS, "Age-Of-Location-Information", &ogs_diam_s6a_age_of_location_information);
52
+
53
CHECK_dict_search(DICT_AVP, AVP_BY_NAME_ALL_VENDORS, "Terminal-Information", &ogs_diam_s6a_terminal_information);
54
CHECK_dict_search(DICT_AVP, AVP_BY_NAME_ALL_VENDORS, "IMEI", &ogs_diam_s6a_imei);
55
CHECK_dict_search(DICT_AVP, AVP_BY_NAME_ALL_VENDORS, "Software-Version", &ogs_diam_s6a_software_version);
56
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
62
1
2
extern struct dict_object *ogs_diam_s6a_cmd_pua;
3
extern struct dict_object *ogs_diam_s6a_cmd_clr;
4
extern struct dict_object *ogs_diam_s6a_cmd_cla;
5
+extern struct dict_object *ogs_diam_s6a_cmd_idr;
6
+extern struct dict_object *ogs_diam_s6a_cmd_ida;
7
8
extern struct dict_object *ogs_diam_s6a_ulr_flags;
9
extern struct dict_object *ogs_diam_s6a_ula_flags;
10
extern struct dict_object *ogs_diam_s6a_clr_flags;
11
+extern struct dict_object *ogs_diam_s6a_idr_flags;
12
extern struct dict_object *ogs_diam_s6a_cancellation_type;
13
extern struct dict_object *ogs_diam_s6a_subscription_data;
14
extern struct dict_object *ogs_diam_s6a_req_eutran_auth_info;
15
16
extern struct dict_object *ogs_diam_s6a_pre_emption_vulnerability;
17
extern struct dict_object *ogs_diam_s6a_pdn_gw_allocation_type;
18
extern struct dict_object *ogs_diam_s6a_vplmn_dynamic_address_allowed;
19
+extern struct dict_object *ogs_diam_s6a_eps_location_information;
20
+extern struct dict_object *ogs_diam_s6a_mme_location_information;
21
+extern struct dict_object *ogs_diam_s6a_e_utran_cell_global_identity;
22
+extern struct dict_object *ogs_diam_s6a_tracking_area_identity;
23
+extern struct dict_object *ogs_diam_s6a_age_of_location_information;
24
25
extern struct dict_object *ogs_diam_s6a_terminal_information;
26
extern struct dict_object *ogs_diam_s6a_imei;
27
28
uint32_t clr_flags;
29
} ogs_diam_s6a_clr_message_t;
30
31
+typedef struct ogs_diam_s6a_idr_message_s {
32
+#define OGS_DIAM_S6A_IDR_FLAGS_UE_REACHABILITY (1)
33
+#define OGS_DIAM_S6A_IDR_FLAGS_TADS_DATA (1 << 1)
34
+#define OGS_DIAM_S6A_IDR_FLAGS_EPS_USER_STATE (1 << 2)
35
+#define OGS_DIAM_S6A_IDR_FLAGS_EPS_LOCATION_INFO (1 << 3)
36
+#define OGS_DIAM_S6A_IDR_FLAGS_CURRENT_LOCATION (1 << 4)
37
+#define OGS_DIAM_S6A_IDR_FLAGS_LOCAL_TZ (1 << 5)
38
+#define OGS_DIAM_S6A_IDR_FLAGS_REMOVE_SMS_REG (1 << 6)
39
+#define OGS_DIAM_S6A_IDR_FLAGS_RAT_TYPE (1 << 7)
40
+#define OGS_DIAM_S6A_IDR_FLAGS_PCSCF_Restoration (1 << 8)
41
+ uint32_t idr_flags;
42
+ ogs_subscription_data_t subscription_data;
43
+} ogs_diam_s6a_idr_message_t;
44
+
45
typedef struct ogs_diam_s6a_message_s {
46
#define OGS_DIAM_S6A_CMD_CODE_UPDATE_LOCATION 316
47
#define OGS_DIAM_S6A_CMD_CODE_CANCEL_LOCATION 317
48
#define OGS_DIAM_S6A_CMD_CODE_AUTHENTICATION_INFORMATION 318
49
+#define OGS_DIAM_S6A_CMD_CODE_INSERT_SUBSCRIBER_DATA 319
50
+#define OGS_DIAM_S6A_CMD_CODE_PURGE_UE 321
51
uint16_t cmd_code;
52
53
/* Experimental Result Code */
54
55
uint32_t *err;
56
uint32_t *exp_err;
57
58
+ ogs_diam_s6a_idr_message_t idr_message;
59
ogs_diam_s6a_clr_message_t clr_message;
60
ogs_diam_s6a_aia_message_t aia_message;
61
ogs_diam_s6a_ula_message_t ula_message;
62
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
25
1
2
mme_ue->enb_ostream_id = enb_ue->enb_ostream_id;
3
memcpy(&mme_ue->tai, &enb_ue->saved.tai, sizeof(ogs_eps_tai_t));
4
memcpy(&mme_ue->e_cgi, &enb_ue->saved.e_cgi, sizeof(ogs_e_cgi_t));
5
+ mme_ue->ue_location_timestamp = ogs_time_now();
6
7
/* Check TAI */
8
served_tai_index = mme_find_served_tai(&mme_ue->tai);
9
10
mme_ue->enb_ostream_id = enb_ue->enb_ostream_id;
11
memcpy(&mme_ue->tai, &enb_ue->saved.tai, sizeof(ogs_eps_tai_t));
12
memcpy(&mme_ue->e_cgi, &enb_ue->saved.e_cgi, sizeof(ogs_e_cgi_t));
13
+ mme_ue->ue_location_timestamp = ogs_time_now();
14
15
/* Check TAI */
16
served_tai_index = mme_find_served_tai(&mme_ue->tai);
17
18
mme_ue->enb_ostream_id = enb_ue->enb_ostream_id;
19
memcpy(&mme_ue->tai, &enb_ue->saved.tai, sizeof(ogs_eps_tai_t));
20
memcpy(&mme_ue->e_cgi, &enb_ue->saved.e_cgi, sizeof(ogs_e_cgi_t));
21
+ mme_ue->ue_location_timestamp = ogs_time_now();
22
23
/* Check TAI */
24
served_tai_index = mme_find_served_tai(&mme_ue->tai);
25
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
9
1
2
uint16_t enb_ostream_id;
3
ogs_eps_tai_t tai;
4
ogs_e_cgi_t e_cgi;
5
+ ogs_time_t ue_location_timestamp;
6
ogs_plmn_id_t last_visited_plmn_id;
7
8
#define SECURITY_CONTEXT_IS_VALID(__mME) \
9
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
201
1
2
/* handler for Cancel-Location-Request cb */
3
static struct disp_hdl *hdl_s6a_clr = NULL;
4
5
+/* handler for Insert-Subscriber-Data-Request cb */
6
+static struct disp_hdl *hdl_s6a_idr = NULL;
7
+
8
static struct session_handler *mme_s6a_reg = NULL;
9
10
struct sess_state {
11
12
((ts.tv_nsec - sess_data->ts.tv_nsec) / 1000);
13
if (ogs_diam_logger_self()->stats.nb_recv) {
14
/* Ponderate in the avg */
15
- ogs_diam_logger_self()->stats.avg = (ogs_diam_logger_self()->stats.avg *
16
+ ogs_diam_logger_self()->stats.avg =
17
+ (ogs_diam_logger_self()->stats.avg *
18
ogs_diam_logger_self()->stats.nb_recv + dur) /
19
(ogs_diam_logger_self()->stats.nb_recv + 1);
20
/* Min, max */
21
22
return 0;
23
}
24
25
+/* Callback for incoming Insert-Subscriber-Data-Request messages
26
+ * 29.272 5.2.2.1.2 */
27
+static int mme_ogs_diam_s6a_idr_cb( struct msg **msg, struct avp *avp,
28
+ struct session *session, void *opaque, enum disp_action *act)
29
+{
30
+ int ret;
31
+
32
+ mme_ue_t *mme_ue = NULL;
33
+
34
+ struct msg *ans, *qry;
35
+ ogs_diam_s6a_idr_message_t *idr_message = NULL;
36
+
37
+ struct avp_hdr *hdr;
38
+ union avp_value val;
39
+
40
+ char imsi_bcdOGS_MAX_IMSI_BCD_LEN+1;
41
+
42
+ uint32_t result_code = 0;
43
+
44
+ ogs_assert(msg);
45
+
46
+ ogs_diam_s6a_message_t *s6a_message = NULL;
47
+
48
+ ogs_debug("Insert-Subscriber-Data-Request");
49
+
50
+ s6a_message = ogs_calloc(1, sizeof(ogs_diam_s6a_message_t));
51
+ ogs_assert(s6a_message);
52
+ s6a_message->cmd_code = OGS_DIAM_S6A_CMD_CODE_INSERT_SUBSCRIBER_DATA;
53
+ idr_message = &s6a_message->idr_message;
54
+ ogs_assert(idr_message);
55
+
56
+ /* Create answer header */
57
+ qry = *msg;
58
+ ret = fd_msg_new_answer_from_req(fd_g_config->cnf_dict, msg, 0);
59
+ ogs_assert(ret == 0);
60
+ ans = *msg;
61
+
62
+ ret = fd_msg_search_avp(qry, ogs_diam_user_name, &avp);
63
+ ogs_assert(ret == 0);
64
+ ret = fd_msg_avp_hdr(avp, &hdr);
65
+ ogs_assert(ret == 0);
66
+
67
+ ogs_cpystrn(imsi_bcd, (char*)hdr->avp_value->os.data,
68
+ ogs_min(hdr->avp_value->os.len, OGS_MAX_IMSI_BCD_LEN)+1);
69
+
70
+ mme_ue = mme_ue_find_by_imsi_bcd(imsi_bcd);
71
+
72
+ if (!mme_ue) {
73
+ ogs_error("Insert Subscriber Data for Unknown IMSI%s", imsi_bcd);
74
+ result_code = OGS_DIAM_S6A_ERROR_USER_UNKNOWN;
75
+ goto out;
76
+ }
77
+
78
+ /* AVP: 'Subscription-Data'(1400)
79
+ * The Subscription-Data AVP contains the information related to the user
80
+ * profile relevant for EPS and GERAN/UTRAN.
81
+ * Reference: 3GPP TS 29.272-f70
82
+ */
83
+ ret = fd_msg_search_avp(*msg, ogs_diam_s6a_subscription_data, &avp);
84
+ ogs_assert(ret == 0);
85
+ if (avp) {
86
+ ret = fd_msg_avp_hdr(avp, &hdr);
87
+ ogs_assert(ret == 0);
88
+ if (hdr->avp_value->os.len) {
89
+ ogs_debug("WIP: Process New Subscription Data");
90
+ } else {
91
+ ogs_debug("No Sub Data, ok to check IDR Flags");
92
+ }
93
+ }
94
+
95
+ ret = fd_msg_search_avp(qry, ogs_diam_s6a_idr_flags, &avp);
96
+ ogs_assert(ret == 0);
97
+ if (avp) {
98
+ ret = fd_msg_avp_hdr(avp, &hdr);
99
+ ogs_assert(ret == 0);
100
+ idr_message->idr_flags = hdr->avp_value->i32;
101
+ } else {
102
+ ogs_error("Insert Subscriber Data does not contain any IDR Flags "
103
+ "for IMSI%s", imsi_bcd);
104
+ /* Set the Origin-Host, Origin-Realm, and Result-Code AVPs */
105
+ ret = fd_msg_rescode_set(ans,
106
+ (char*)"DIAMETER_UNABLE_TO_COMPLY", NULL, NULL, 1);
107
+ ogs_assert(ret == 0);
108
+ goto outnoexp;
109
+ }
110
+
111
+ if (idr_message->idr_flags & OGS_DIAM_S6A_IDR_FLAGS_EPS_LOCATION_INFO) {
112
+ char buf8;
113
+
114
+ uint8_t ida_ecgi7;
115
+ uint8_t ida_tai5;
116
+ ogs_time_t ida_age;
117
+
118
+ ogs_nas_plmn_id_t ida_plmn_buf;
119
+ char ida_cell_id_hex9;
120
+ char ida_tac_hex5;
121
+
122
+ uint32_t ida_cell_id = mme_ue->e_cgi.cell_id;
123
+ uint16_t ida_tac = mme_ue->tai.tac;
124
+
125
+ struct avp *avp_mme_location_information;
126
+ struct avp *avp_e_utran_cell_global_identity;
127
+ struct avp *avp_tracking_area_identity;
128
+ struct avp *avp_age_of_location_information;
129
+
130
+ ogs_snprintf(ida_cell_id_hex, sizeof(ida_cell_id_hex),
131
+ "%08x", ida_cell_id);
132
+ memcpy(ida_ecgi,
133
+ ogs_nas_from_plmn_id(&ida_plmn_buf, &mme_ue->e_cgi.plmn_id), 3);
134
+ memcpy(ida_ecgi + 3,
135
+ OGS_HEX(ida_cell_id_hex, sizeof(ida_cell_id_hex), buf), 5);
136
+
137
+ ogs_snprintf(ida_tac_hex, sizeof(ida_tac_hex), "%04x", ida_tac);
138
+ memcpy(ida_tai,
139
+ ogs_nas_from_plmn_id(&ida_plmn_buf, &mme_ue->tai.plmn_id), 3);
140
+ memcpy(ida_tai + 3, OGS_HEX(ida_tac_hex, sizeof(ida_tac_hex), buf), 2);
141
+
142
+ ida_age =
143
+ (ogs_time_now() - mme_ue->ue_location_timestamp) / 1000000 / 60;
144
+
145
+ /* Set the EPS-Location-Information AVP */
146
+ ret = fd_msg_avp_new(ogs_diam_s6a_eps_location_information, 0, &avp);
147
+ ogs_assert(ret == 0);
148
+ ret = fd_msg_avp_new(ogs_diam_s6a_mme_location_information,
149
+ 0, &avp_mme_location_information);
150
+ ogs_assert(ret == 0);
151
+
152
+ ret = fd_msg_avp_new(ogs_diam_s6a_e_utran_cell_global_identity,
153
+ 0, &avp_e_utran_cell_global_identity);
154
+ ogs_assert(ret == 0);
155
+ val.os.data = ida_ecgi;
156
+ val.os.len = 7;
157
+ ret = fd_msg_avp_setvalue(avp_e_utran_cell_global_identity, &val);
158
+ ogs_assert(ret == 0);
159
+ ret = fd_msg_avp_add(avp_mme_location_information,
160
+ MSG_BRW_LAST_CHILD, avp_e_utran_cell_global_identity);
161
+ ogs_assert(ret == 0);
162
+
163
+ ret = fd_msg_avp_new(ogs_diam_s6a_tracking_area_identity,
164
+ 0, &avp_tracking_area_identity);
165
+ ogs_assert(ret == 0);
166
+ val.os.data = ida_tai;
167
+ val.os.len = 5;
168
+ ret = fd_msg_avp_setvalue(avp_tracking_area_identity, &val);
169
+ ogs_assert(ret == 0);
170
+ ret = fd_msg_avp_add(avp_mme_location_information,
171
+ MSG_BRW_LAST_CHILD, avp_tracking_area_identity);
172
+ ogs_assert(ret == 0);
173
+
174
+ ret = fd_msg_avp_new(ogs_diam_s6a_age_of_location_information,
175
+ 0, &avp_age_of_location_information);
176
+ ogs_assert(ret == 0);
177
+ val.i32 = ida_age;
178
+ ret = fd_msg_avp_setvalue(avp_age_of_location_information, &val);
179
+ ogs_assert(ret == 0);
180
+ ret = fd_msg_avp_add(avp_mme_location_information,
181
+ MSG_BRW_LAST_CHILD, avp_age_of_location_information);
182
+ ogs_assert(ret == 0);
183
+
184
+ ret = fd_msg_avp_add(avp,
185
+ MSG_BRW_LAST_CHILD, avp_mme_location_information);
186
+ ogs_assert(ret == 0);
187
+
188
+ ret = fd_msg_avp_add(ans, MSG_BRW_LAST_CHILD, avp);
189
+ ogs_assert(ret == 0);
190
+ } else {
191
+ ogs_error("Insert Subscriber Data "
192
+ "with unsupported IDR Flags for IMSI%s", imsi_bcd);
193
+ /* Set the Origin-Host, Origin-Realm, and Result-Code AVPs */
194
+ ret = fd_msg_rescode_set(
195
+ ans, (char*)"DIAMETER_UNABLE_TO_COMPLY", NULL, NULL, 1);
196
+ ogs_assert(ret == 0);
197
+ goto outnoexp;
198
+ }
199
+
200
+ /* Set the Origin-Host, Origin-Realm, andResult-Code AVPs */
201
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
10
1
2
case OGS_DIAM_S6A_CMD_CODE_CANCEL_LOCATION:
3
mme_s6a_handle_clr(mme_ue, &s6a_message->clr_message);
4
break;
5
+ case OGS_DIAM_S6A_CMD_CODE_INSERT_SUBSCRIBER_DATA:
6
+ break;
7
default:
8
ogs_error("Invalid Type%d", s6a_message->cmd_code);
9
break;
10
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
25
1
2
3
memcpy(&mme_ue->tai, &enb_ue->saved.tai, sizeof(ogs_eps_tai_t));
4
memcpy(&mme_ue->e_cgi, &enb_ue->saved.e_cgi, sizeof(ogs_e_cgi_t));
5
+ mme_ue->ue_location_timestamp = ogs_time_now();
6
} else {
7
ogs_fatal("No UE Context in UplinkNASTransport");
8
ogs_assert_if_reached();
9
10
mme_ue->enb_ostream_id = enb_ue->enb_ostream_id;
11
memcpy(&mme_ue->tai, &enb_ue->saved.tai, sizeof(ogs_eps_tai_t));
12
memcpy(&mme_ue->e_cgi, &enb_ue->saved.e_cgi, sizeof(ogs_e_cgi_t));
13
+ mme_ue->ue_location_timestamp = ogs_time_now();
14
15
ogs_assert(UESecurityCapabilities);
16
encryptionAlgorithms =
17
18
mme_ue->enb_ostream_id = target_ue->enb_ostream_id;
19
memcpy(&mme_ue->tai, &target_ue->saved.tai, sizeof(ogs_eps_tai_t));
20
memcpy(&mme_ue->e_cgi, &target_ue->saved.e_cgi, sizeof(ogs_e_cgi_t));
21
+ mme_ue->ue_location_timestamp = ogs_time_now();
22
23
ogs_assert(OGS_OK ==
24
s1ap_send_ue_context_release_command(source_ue,
25