Changes of Revision 31

commit_78359374ab9285863b8e23801b858997f86de403.txt Added
commit_f1c0b6d2398b6b980036024359cfd4f7ccfb1e9b.txt Deleted
open5gs_2.5.0.3.f1c0.tar.xz/docs/_posts/2022-10-25-release-v2.5.0.md Deleted
x
 
1
@@ -1,93 +0,0 @@
2
----
3
-title: "v2.5.0 - SCP for Indirect Communication"
4
-date: 2022-10-25 22:54:00 +0900
5
-categories:
6
-  - Release
7
-tags:
8
-  - News
9
-  - Release
10
-head_inline: "<style> ul { padding-bottom: 1em; } .blue { color: blue; }</style>"
11
----
12
-
13
-#### New Feature
14
-
15
-SCP(Service Communication Proxy) is added to support Indirect Communication based on TS29.500. The default Open5GS configuration is provided as an indirect communication using SCP.
16
-
17
-- amf.yaml If NFs are configured to use Delegated Discovery through the SCP, you do not need to set up NRF.
18
-
19
-```
20
-amf:
21
-    sbi:
22
-      - addr: 127.0.0.5
23
-        port: 7777
24
-
25
-scp:
26
-    sbi:
27
-      - addr: 127.0.1.10
28
-        port: 7777
29
-
30
-#nrf:
31
-#    sbi:
32
-#      - addr:
33
-#          - 127.0.0.10
34
-#          - ::1
35
-#        port: 7777
36
-```
37
-
38
-- scp.yaml NRF is needed for Delegated Discovery in SCP configuration.
39
-
40
-```
41
-scp:
42
-    sbi:
43
-      - addr: 127.0.1.10
44
-        port: 7777
45
-
46
-#
47
-# next_scp:
48
-#    sbi:
49
-#      addr: 127.0.1.11
50
-#      port: 7777
51
-#
52
-
53
-nrf:
54
-    sbi:
55
-      - addr:
56
-          - 127.0.0.10
57
-          - ::1
58
-        port: 7777
59
-```
60
-
61
-- nrf.yaml If there is an SCP in the NRF configuration, a notification(nnrf-nfm/nf-status-notify) is sent through an indirect communication.
62
-
63
-```
64
-nrf:
65
-    sbi:
66
-      addr:
67
-        - 127.0.0.10
68
-        - ::1
69
-      port: 7777
70
-
71
-scp:
72
-    sbi:
73
-      - addr: 127.0.1.10
74
-        port: 7777
75
-```
76
-
77
-
78
-#### Enhancements
79
-- WebUI/DB Fixed the WebUI to Support MongoDB 6.0( (#1824(https://github.com/open5gs/open5gs/issues/1824)) -- bmeglicit(https://github.com/bmeglicit)
80
-- DBI Disable Changes Streams with mongo Version (#1833(https://github.com/open5gs/open5gs/pull/1833)) -- jmasterfunk84(https://github.com/jmasterfunk84)
81
-- SBI Added 3gpp-Sbi-Sender-Timestamp and 3gpp-Sbi-Max-Rsp-Time -- 7c8722d(https://github.com/open5gs/open5gs/commit/7c8722d9d4d2db13d889be1e5e37bc062f069396)
82
-- MME Cancel Location while Idle (#1797(https://github.com/open5gs/open5gs/pull/1797)) -- jmasterfunk84(https://github.com/jmasterfunk84)
83
-- MME Support for Insert Subscriber Data (#1794(https://github.com/open5gs/open5gs/pull/1794)) -- jmasterfunk84(https://github.com/jmasterfunk84)
84
-
85
-#### Bug Fixes
86
-- SGW-C Fixed the bug of SGW-C session deletion (#1825(https://github.com/open5gs/open5gs/pull/1825)) -- dai9000(https://github.com/dai9000), cmmacneill53(https://github.com/cmmacneill53)
87
-- AMF Reject registration requests when pool for UE context is empty (#1828(https://github.com/open5gs/open5gs/pull/1828)) -- bmeglicit(https://github.com/bmeglicit)
88
-- AMF Increase size of TMSI pool (#1827(https://github.com/open5gs/open5gs/pull/1827)) -- bmeglicit(https://github.com/bmeglicit)
89
-- AMF/UDM Added support to subscribe to SDM changes (#1820(https://github.com/open5gs/open5gs/pull/1820)) -- bmeglicit(https://github.com/bmeglicit)
90
-- PFCP Do not check qos_flow in PFCP Report message (#1819(https://github.com/open5gs/open5gs/pull/1819)) -- ssafaorhan(https://github.com/ssafaorhan)
91
-- PFCP Fixed invalid message of Dropped DL Traffic threshold (#1817(https://github.com/open5gs/open5gs/pull/1817)) -- ssafaorhan(https://github.com/ssafaorhan)
92
-
93
-Download -- v2.5.0.tar.gz(https://github.com/open5gs/open5gs/archive/v2.5.0.tar.gz)
94
-{: .notice--info}
95
open5gs_2.5.0.3.f1c0.dsc -> open5gs_2.5.1.1.78359.dsc Changed
22
 
1
@@ -2,7 +2,7 @@
2
 Source: open5gs
3
 Binary: open5gs-common, open5gs-mme, open5gs-sgwc, open5gs-smf, open5gs-amf, open5gs-sgwu, open5gs-upf, open5gs-hss, open5gs-pcrf, open5gs-nrf, open5gs-scp, open5gs-ausf, open5gs-udm, open5gs-pcf, open5gs-nssf, open5gs-bsf, open5gs-udr, open5gs, open5gs-dbg
4
 Architecture: any
5
-Version: 2.5.0.3.f1c0
6
+Version: 2.5.1.1.78359
7
 Maintainer: Harald Welte <laforge@gnumonks.org>
8
 Uploaders: Sukchan Lee <acetcom@gmail.com>
9
 Homepage: https://open5gs.org
10
@@ -31,8 +31,8 @@
11
  open5gs-udr deb net optional arch=any
12
  open5gs-upf deb net optional arch=any
13
 Checksums-Sha1:
14
- 651383eaf0e96093cfea4d3fd10eeb922327493a 11487876 open5gs_2.5.0.3.f1c0.tar.xz
15
+ 3333a0a840ff40bb7f529627e91b584010b886ea 11488768 open5gs_2.5.1.1.78359.tar.xz
16
 Checksums-Sha256:
17
- d6c69c14b4a60371ce1af4cc554b11ced99fbb967a6d0f5ae8dc4f166ccc5365 11487876 open5gs_2.5.0.3.f1c0.tar.xz
18
+ 232e840a66bb5a6aa5feeffa9557817b3ace05b04c9263776a9c293b6f788a48 11488768 open5gs_2.5.1.1.78359.tar.xz
19
 Files:
20
- 0c8c58b76bf5e1a0b4c5c00ccb505d8c 11487876 open5gs_2.5.0.3.f1c0.tar.xz
21
+ 6672b5a81d956147eba953f15b697518 11488768 open5gs_2.5.1.1.78359.tar.xz
22
open5gs_2.5.0.3.f1c0.tar.xz/.tarball-version -> open5gs_2.5.1.1.78359.tar.xz/.tarball-version Changed
4
 
1
@@ -1 +1 @@
2
-2.5.0.3-f1c0
3
+2.5.1.1-78359
4
open5gs_2.5.0.3.f1c0.tar.xz/configs/open5gs/smf.yaml.in -> open5gs_2.5.1.1.78359.tar.xz/configs/open5gs/smf.yaml.in Changed
23
 
1
@@ -440,7 +440,20 @@
2
 #              mnc: 70
3
 #            tac: 99
4
 #
5
-
6
+#  <Security Indication - 5G Core only>
7
+#
8
+#   According to 3GPP TS38.413 Section 9.3.1.27,
9
+#   Security Indication IE may be instructed to 5G gNB.
10
+#
11
+#   If you set the security_indication in smf.yaml,
12
+#   this information is delivered using PDU Session Resource Request Transfer IE
13
+#
14
+#    security_indication:
15
+#      integrity_protection_indication: required|preferred|not-needed
16
+#      confidentiality_protection_indication: required|preferred|not-needed
17
+#      maximum_integrity_protected_data_rate_uplink: bitrate64kbs|maximum-UE-rate
18
+#      maximum_integrity_protected_data_rate_downlink: bitrate64kbs|maximum-UE-rate
19
+#
20
 smf:
21
     sbi:
22
       - addr: 127.0.0.4
23
open5gs_2.5.0.3.f1c0.tar.xz/debian/changelog -> open5gs_2.5.1.1.78359.tar.xz/debian/changelog Changed
42
 
1
@@ -1,8 +1,38 @@
2
-open5gs (2.5.0.3.f1c0) unstable; urgency=medium
3
+open5gs (2.5.1.1.78359) unstable; urgency=medium
4
 
5
   * Automatically generated changelog entry for building the Osmocom master feed
6
 
7
- -- Osmocom OBS scripts <info@osmocom.org>  Fri, 28 Oct 2022 06:12:56 +0000
8
+ -- Osmocom OBS scripts <info@osmocom.org>  Sat, 29 Oct 2022 04:10:29 +0000
9
+
10
+open5gs (2.5.1) unstable; urgency=medium
11
+
12
+  * New NF - SCP(Service Communication Proxy)
13
+
14
+ -- Sukchan Lee <acetcom@gmail.com>  Sat, 29 Oct 2022 12:37:52 +0900
15
+
16
+open5gs (2.5.1~kinetic) kinetic; urgency=medium
17
+
18
+  * New NF - SCP(Service Communication Proxy)
19
+
20
+ -- Sukchan Lee <acetcom@gmail.com>  Sat, 29 Oct 2022 12:36:17 +0900
21
+
22
+open5gs (2.5.1~jammy) jammy; urgency=medium
23
+
24
+  * New NF - SCP(Service Communication Proxy)
25
+
26
+ -- Sukchan Lee <acetcom@gmail.com>  Sat, 29 Oct 2022 12:34:51 +0900
27
+
28
+open5gs (2.5.1~focal) focal; urgency=medium
29
+
30
+  * New NF - SCP(Service Communication Proxy)
31
+
32
+ -- Sukchan Lee <acetcom@gmail.com>  Sat, 29 Oct 2022 12:32:53 +0900
33
+
34
+open5gs (2.5.1~bionic) bionic; urgency=medium
35
+
36
+  * New NF - SCP(Service Communication Proxy)
37
+
38
+ -- Sukchan Lee <acetcom@gmail.com>  Sat, 29 Oct 2022 12:31:01 +0900
39
 
40
 open5gs (2.5.0) unstable; urgency=medium
41
 
42
open5gs_2.5.1.1.78359.tar.xz/docs/_posts/2022-10-29-release-v2.5.1.md Added
97
 
1
@@ -0,0 +1,95 @@
2
+---
3
+title: "v2.5.1 - SCP for Indirect Communication"
4
+date: 2022-10-29 12:42:00 +0900
5
+categories:
6
+  - Release
7
+tags:
8
+  - News
9
+  - Release
10
+head_inline: "<style> ul { padding-bottom: 1em; } .blue { color: blue; }</style>"
11
+---
12
+
13
+#### New Feature
14
+
15
+SCP(Service Communication Proxy) is added to support Indirect Communication based on TS29.500. The default Open5GS configuration is provided as an indirect communication using SCP.
16
+
17
+- amf.yaml If NFs are configured to use Delegated Discovery through the SCP, you do not need to set up NRF.
18
+
19
+```
20
+amf:
21
+    sbi:
22
+      - addr: 127.0.0.5
23
+        port: 7777
24
+
25
+scp:
26
+    sbi:
27
+      - addr: 127.0.1.10
28
+        port: 7777
29
+
30
+#nrf:
31
+#    sbi:
32
+#      - addr:
33
+#          - 127.0.0.10
34
+#          - ::1
35
+#        port: 7777
36
+```
37
+
38
+- scp.yaml NRF is needed for Delegated Discovery in SCP configuration.
39
+
40
+```
41
+scp:
42
+    sbi:
43
+      - addr: 127.0.1.10
44
+        port: 7777
45
+
46
+#
47
+# next_scp:
48
+#    sbi:
49
+#      addr: 127.0.1.11
50
+#      port: 7777
51
+#
52
+
53
+nrf:
54
+    sbi:
55
+      - addr:
56
+          - 127.0.0.10
57
+          - ::1
58
+        port: 7777
59
+```
60
+
61
+- nrf.yaml If there is an SCP in the NRF configuration, a notification(nnrf-nfm/nf-status-notify) is sent through an indirect communication.
62
+
63
+```
64
+nrf:
65
+    sbi:
66
+      addr:
67
+        - 127.0.0.10
68
+        - ::1
69
+      port: 7777
70
+
71
+scp:
72
+    sbi:
73
+      - addr: 127.0.1.10
74
+        port: 7777
75
+```
76
+
77
+
78
+#### Enhancements
79
+- WebUI/DB Fixed the WebUI to Support MongoDB 6.0 (#1824(https://github.com/open5gs/open5gs/issues/1824)) -- bmeglicit(https://github.com/bmeglicit)
80
+- AMF Support REREGISTRATION_REQUIRED in dereg notify (#1858(https://github.com/open5gs/open5gs/pull/1858)) -- mitmitmitm(https://github.com/mitmitmitm)
81
+- SMF Support Security Indication IE for 5G-SA UP integrity and confidentiality(#1851(https://github.com/open5gs/open5gs/discussions/1851)) -- irazairspan(https://github.com/irazairspan)
82
+- DBI Disable Changes Streams with mongo Version (#1833(https://github.com/open5gs/open5gs/pull/1833)) -- jmasterfunk84(https://github.com/jmasterfunk84)
83
+- SBI Added 3gpp-Sbi-Sender-Timestamp and 3gpp-Sbi-Max-Rsp-Time -- 7c8722d(https://github.com/open5gs/open5gs/commit/7c8722d9d4d2db13d889be1e5e37bc062f069396)
84
+- MME Cancel Location while Idle (#1797(https://github.com/open5gs/open5gs/pull/1797)) -- jmasterfunk84(https://github.com/jmasterfunk84)
85
+- MME Support for Insert Subscriber Data (#1794(https://github.com/open5gs/open5gs/pull/1794)) -- jmasterfunk84(https://github.com/jmasterfunk84)
86
+
87
+#### Bug Fixes
88
+- SGW-C Fixed the bug of SGW-C session deletion (#1825(https://github.com/open5gs/open5gs/pull/1825)) -- dai9000(https://github.com/dai9000), cmmacneill53(https://github.com/cmmacneill53)
89
+- AMF Reject registration requests when pool for UE context is empty (#1828(https://github.com/open5gs/open5gs/pull/1828)) -- bmeglicit(https://github.com/bmeglicit)
90
+- AMF Increase size of TMSI pool (#1827(https://github.com/open5gs/open5gs/pull/1827)) -- bmeglicit(https://github.com/bmeglicit)
91
+- AMF/UDM Added support to subscribe to SDM changes (#1820(https://github.com/open5gs/open5gs/pull/1820)) -- bmeglicit(https://github.com/bmeglicit)
92
+- PFCP Do not check qos_flow in PFCP Report message (#1819(https://github.com/open5gs/open5gs/pull/1819)) -- ssafaorhan(https://github.com/ssafaorhan)
93
+- PFCP Fixed invalid message of Dropped DL Traffic threshold (#1817(https://github.com/open5gs/open5gs/pull/1817)) -- ssafaorhan(https://github.com/ssafaorhan)
94
+
95
+Download -- v2.5.1.tar.gz(https://github.com/open5gs/open5gs/archive/v2.5.1.tar.gz)
96
+{: .notice--info}
97
open5gs_2.5.0.3.f1c0.tar.xz/meson.build -> open5gs_2.5.1.1.78359.tar.xz/meson.build Changed
19
 
1
@@ -16,7 +16,7 @@
2
 # along with this program.  If not, see <https://www.gnu.org/licenses/>.
3
 
4
 project('open5gs', 'c', 'cpp',
5
-    version : '2.5.0',
6
+    version : '2.5.1',
7
     license : 'AGPL-3.0-or-later',
8
     meson_version : '>= 0.43.0',
9
     default_options : 
10
@@ -24,7 +24,7 @@
11
     ,
12
 )
13
 
14
-libogslib_version = '2.5.0'
15
+libogslib_version = '2.5.1'
16
 
17
 prefix = get_option('prefix')
18
 bindir = join_paths(prefix, get_option('bindir'))
19
open5gs_2.5.0.3.f1c0.tar.xz/src/smf/context.c -> open5gs_2.5.1.1.78359.tar.xz/src/smf/context.c Changed
169
 
1
@@ -202,6 +202,83 @@
2
         }
3
     }
4
 
5
+    if (self.security_indication.integrity_protection_indication ||
6
+        self.security_indication.confidentiality_protection_indication) {
7
+        if (!self.security_indication.integrity_protection_indication ||
8
+            !self.security_indication.confidentiality_protection_indication) {
9
+            ogs_error("Invalid security_indication %s,%s",
10
+                self.security_indication.integrity_protection_indication ?
11
+                self.security_indication.integrity_protection_indication :
12
+                "No integrity_protection_indication",
13
+                self.security_indication.confidentiality_protection_indication ?
14
+                self.security_indication.confidentiality_protection_indication :
15
+                "No confidentiality_protection_indication");
16
+            return OGS_ERROR;
17
+        }
18
+        if (smf_integrity_protection_indication_value2enum(
19
+            self.security_indication.integrity_protection_indication) < 0) {
20
+            ogs_error("Invalid integrity_protection_indication %s",
21
+                self.security_indication.integrity_protection_indication);
22
+            return OGS_ERROR;
23
+        }
24
+        if (smf_confidentiality_protection_indication_value2enum(
25
+            self.security_indication.
26
+            confidentiality_protection_indication) < 0) {
27
+            ogs_error("Invalid confidentiality_protection_indication %s",
28
+                self.security_indication.confidentiality_protection_indication);
29
+            return OGS_ERROR;
30
+        }
31
+    }
32
+
33
+    if (self.security_indication.maximum_integrity_protected_data_rate_uplink) {
34
+        NGAP_IntegrityProtectionIndication_t integrityProtectionIndication;
35
+        if (smf_maximum_integrity_protected_data_rate_uplink_value2enum(
36
+                self.security_indication.
37
+                    maximum_integrity_protected_data_rate_uplink) < 0) {
38
+            ogs_error("Invalid "
39
+                "maximum_integrity_protected_data_rate_uplink %s",
40
+                self.security_indication.
41
+                    maximum_integrity_protected_data_rate_uplink);
42
+            return OGS_ERROR;
43
+        }
44
+        integrityProtectionIndication =
45
+            smf_integrity_protection_indication_value2enum(
46
+                self.security_indication.integrity_protection_indication);
47
+        if (integrityProtectionIndication ==
48
+                NGAP_IntegrityProtectionIndication_required ||
49
+            integrityProtectionIndication ==
50
+                NGAP_IntegrityProtectionIndication_preferred) {
51
+        } else {
52
+            ogs_error("Invalid security_indication %s:UL-%s",
53
+                self.security_indication.integrity_protection_indication ?
54
+                self.security_indication.integrity_protection_indication :
55
+                "No integrity_protection_indication",
56
+                self.security_indication.
57
+                    maximum_integrity_protected_data_rate_uplink ?
58
+                self.security_indication.
59
+                    maximum_integrity_protected_data_rate_uplink :
60
+                "No integrity_protection_indication");
61
+            return OGS_ERROR;
62
+        }
63
+    }
64
+
65
+    if (self.security_indication.maximum_integrity_protected_data_rate_downlink) {
66
+        if (smf_maximum_integrity_protected_data_rate_downlink_value2enum(
67
+                self.security_indication.
68
+                    maximum_integrity_protected_data_rate_downlink) < 0) {
69
+            ogs_error("Invalid "
70
+                "maximum_integrity_protected_data_rate_downlink %s",
71
+                self.security_indication.
72
+                    maximum_integrity_protected_data_rate_downlink);
73
+            return OGS_ERROR;
74
+        }
75
+        if (!self.security_indication.
76
+                maximum_integrity_protected_data_rate_uplink) {
77
+            ogs_error("No maximum_integrity_protected_data_rate_uplink");
78
+            return OGS_ERROR;
79
+        }
80
+    }
81
+
82
     return OGS_OK;
83
 }
84
 
85
@@ -825,6 +902,40 @@
86
                     } while (ogs_yaml_iter_type(&info_array) ==
87
                             YAML_SEQUENCE_NODE);
88
 
89
+                } else if (!strcmp(smf_key, "security_indication")) {
90
+                    ogs_yaml_iter_t security_indication_iter;
91
+                    ogs_yaml_iter_recurse(
92
+                            &smf_iter, &security_indication_iter);
93
+                    while (ogs_yaml_iter_next(&security_indication_iter)) {
94
+                        const char *security_indication_key =
95
+                            ogs_yaml_iter_key(&security_indication_iter);
96
+                        ogs_assert(security_indication_key);
97
+                        if (!strcmp(security_indication_key,
98
+                            "integrity_protection_indication")) {
99
+                            self.security_indication.
100
+                                integrity_protection_indication =
101
+                                    ogs_yaml_iter_value(
102
+                                        &security_indication_iter);
103
+                        } else if (!strcmp(security_indication_key,
104
+                            "confidentiality_protection_indication")) {
105
+                            self.security_indication.
106
+                                confidentiality_protection_indication =
107
+                                    ogs_yaml_iter_value(
108
+                                            &security_indication_iter);
109
+                        } else if (!strcmp(security_indication_key,
110
+                            "maximum_integrity_protected_data_rate_uplink")) {
111
+                            self.security_indication.
112
+                                maximum_integrity_protected_data_rate_uplink =
113
+                                    ogs_yaml_iter_value(
114
+                                            &security_indication_iter);
115
+                        } else if (!strcmp(security_indication_key,
116
+                            "maximum_integrity_protected_data_rate_downlink")) {
117
+                            self.security_indication.
118
+                                maximum_integrity_protected_data_rate_downlink =
119
+                                    ogs_yaml_iter_value(
120
+                                            &security_indication_iter);
121
+                        }
122
+                    }
123
                 } else if (!strcmp(smf_key, "pfcp")) {
124
                     /* handle config in pfcp library */
125
                 } else if (!strcmp(smf_key, "subnet")) {
126
@@ -2981,3 +3092,42 @@
127
     num_of_smf_sess = num_of_smf_sess - 1;
128
     ogs_info("Removed Number of SMF-Sessions is now %d", num_of_smf_sess);
129
 }
130
+
131
+int smf_integrity_protection_indication_value2enum(const char *value)
132
+{
133
+    ogs_assert(value);
134
+    if (!strcmp(value, "required"))
135
+        return NGAP_IntegrityProtectionIndication_required;
136
+    else if (!strcmp(value, "preferred"))
137
+        return NGAP_IntegrityProtectionIndication_preferred;
138
+    else if (!strcmp(value, "not-needed"))
139
+        return NGAP_IntegrityProtectionIndication_not_needed;
140
+    else {
141
+        ogs_error("Invalid value%s", value);
142
+        return -1;
143
+    }
144
+}
145
+int smf_confidentiality_protection_indication_value2enum(const char *value)
146
+{
147
+    ogs_assert(value);
148
+    return smf_integrity_protection_indication_value2enum(value);
149
+}
150
+int smf_maximum_integrity_protected_data_rate_uplink_value2enum(
151
+        const char *value)
152
+{
153
+    ogs_assert(value);
154
+    if (!strcmp(value, "bitrate64kbs"))
155
+        return NGAP_MaximumIntegrityProtectedDataRate_bitrate64kbs;
156
+    else if (!strcmp(value, "maximum-UE-rate"))
157
+        return NGAP_MaximumIntegrityProtectedDataRate_maximum_UE_rate;
158
+    else {
159
+        ogs_error("Invalid value%s", value);
160
+        return -1;
161
+    }
162
+}
163
+int smf_maximum_integrity_protected_data_rate_downlink_value2enum(
164
+        const char *value)
165
+{
166
+    ogs_assert(value);
167
+    return smf_maximum_integrity_protected_data_rate_uplink_value2enum(value);
168
+}
169
open5gs_2.5.0.3.f1c0.tar.xz/src/smf/context.h -> open5gs_2.5.1.1.78359.tar.xz/src/smf/context.h Changed
29
 
1
@@ -92,6 +92,13 @@
2
 
3
     uint16_t        mtu;            /* MTU to advertise in PCO */
4
 
5
+    struct  {
6
+        const char *integrity_protection_indication;
7
+        const char *confidentiality_protection_indication;
8
+        const char *maximum_integrity_protected_data_rate_uplink;
9
+        const char *maximum_integrity_protected_data_rate_downlink;
10
+    } security_indication;
11
+
12
 #define SMF_UE_IS_LAST_SESSION(__sMF) \
13
      ((__sMF) && (ogs_list_count(&(__sMF)->sess_list)) == 1)
14
     ogs_list_t      smf_ue_list;
15
@@ -512,6 +519,13 @@
16
 void smf_pf_precedence_pool_init(smf_sess_t *sess);
17
 void smf_pf_precedence_pool_final(smf_sess_t *sess);
18
 
19
+int smf_integrity_protection_indication_value2enum(const char *value);
20
+int smf_confidentiality_protection_indication_value2enum(const char *value);
21
+int smf_maximum_integrity_protected_data_rate_uplink_value2enum(
22
+        const char *value);
23
+int smf_maximum_integrity_protected_data_rate_downlink_value2enum(
24
+        const char *value);
25
+
26
 #ifdef __cplusplus
27
 }
28
 #endif
29
open5gs_2.5.0.3.f1c0.tar.xz/src/smf/ngap-build.c -> open5gs_2.5.1.1.78359.tar.xz/src/smf/ngap-build.c Changed
99
 
1
@@ -33,6 +33,7 @@
2
     NGAP_GTPTunnel_t *gTPTunnel = NULL;
3
     NGAP_DataForwardingNotPossible_t *DataForwardingNotPossible = NULL;
4
     NGAP_PDUSessionType_t *PDUSessionType = NULL;
5
+    NGAP_SecurityIndication_t *SecurityIndication = NULL;
6
     NGAP_QosFlowSetupRequestList_t *QosFlowSetupRequestList = NULL;
7
     NGAP_QosFlowSetupRequestItem_t *QosFlowSetupRequestItem = NULL;
8
     NGAP_QosFlowIdentifier_t *qosFlowIdentifier = NULL;
9
@@ -129,6 +130,89 @@
10
         ogs_assert_if_reached();
11
     }
12
 
13
+    if (smf_self()->security_indication.integrity_protection_indication &&
14
+        smf_self()->security_indication.confidentiality_protection_indication) {
15
+
16
+        ie = CALLOC(1,
17
+                sizeof(NGAP_PDUSessionResourceSetupRequestTransferIEs_t));
18
+        ogs_assert(ie);
19
+        ASN_SEQUENCE_ADD(&message.protocolIEs, ie);
20
+
21
+        ie->id = NGAP_ProtocolIE_ID_id_SecurityIndication;
22
+        ie->criticality = NGAP_Criticality_reject;
23
+        ie->value.present = NGAP_PDUSessionResourceSetupRequestTransferIEs__value_PR_SecurityIndication;
24
+
25
+        SecurityIndication = &ie->value.choice.SecurityIndication;
26
+
27
+        SecurityIndication->integrityProtectionIndication =
28
+                smf_integrity_protection_indication_value2enum(
29
+                    smf_self()->security_indication.
30
+                        integrity_protection_indication);
31
+        ogs_assert(SecurityIndication->integrityProtectionIndication >= 0);
32
+
33
+        SecurityIndication->confidentialityProtectionIndication =
34
+                smf_confidentiality_protection_indication_value2enum(
35
+                    smf_self()->security_indication.
36
+                        confidentiality_protection_indication);
37
+        ogs_assert(SecurityIndication->
38
+                confidentialityProtectionIndication >= 0);
39
+
40
+        if (smf_self()->security_indication.
41
+                maximum_integrity_protected_data_rate_uplink) {
42
+
43
+            ogs_assert(
44
+                SecurityIndication->integrityProtectionIndication ==
45
+                    NGAP_IntegrityProtectionIndication_required ||
46
+                SecurityIndication->integrityProtectionIndication ==
47
+                    NGAP_IntegrityProtectionIndication_preferred);
48
+
49
+            SecurityIndication->maximumIntegrityProtectedDataRate_UL =
50
+                CALLOC(1, sizeof(NGAP_MaximumIntegrityProtectedDataRate_t));
51
+            ogs_assert(SecurityIndication->
52
+                    maximumIntegrityProtectedDataRate_UL);
53
+            *(SecurityIndication->maximumIntegrityProtectedDataRate_UL) =
54
+                smf_maximum_integrity_protected_data_rate_uplink_value2enum(
55
+                    smf_self()->security_indication.
56
+                        maximum_integrity_protected_data_rate_uplink);
57
+            ogs_assert(
58
+                *(SecurityIndication->
59
+                    maximumIntegrityProtectedDataRate_UL) >= 0);
60
+
61
+            if (smf_self()->security_indication.
62
+                    maximum_integrity_protected_data_rate_downlink) {
63
+                NGAP_ProtocolExtensionContainer_9625P229_t *extContainer = NULL;
64
+                NGAP_SecurityIndication_ExtIEs_t *extIe = NULL;
65
+                NGAP_MaximumIntegrityProtectedDataRate_t
66
+                    *MaximumIntegrityProtectedDataRate = NULL;
67
+
68
+                extContainer = CALLOC(1,
69
+                        sizeof(NGAP_ProtocolExtensionContainer_9625P229_t));
70
+                ogs_assert(extContainer);
71
+                SecurityIndication->iE_Extensions =
72
+                    (struct NGAP_ProtocolExtensionContainer *)extContainer;
73
+
74
+                extIe = CALLOC(1, sizeof(NGAP_SecurityIndication_ExtIEs_t));
75
+                ogs_assert(extIe);
76
+                ASN_SEQUENCE_ADD(&extContainer->list, extIe);
77
+
78
+                extIe->id =
79
+                    NGAP_ProtocolIE_ID_id_MaximumIntegrityProtectedDataRate_DL;
80
+                extIe->criticality = NGAP_Criticality_ignore;
81
+                extIe->extensionValue.present = NGAP_SecurityIndication_ExtIEs__extensionValue_PR_MaximumIntegrityProtectedDataRate;
82
+
83
+                MaximumIntegrityProtectedDataRate =
84
+                    &extIe->extensionValue.choice.
85
+                        MaximumIntegrityProtectedDataRate;
86
+
87
+                *MaximumIntegrityProtectedDataRate =
88
+                smf_maximum_integrity_protected_data_rate_downlink_value2enum(
89
+                        smf_self()->security_indication.
90
+                            maximum_integrity_protected_data_rate_downlink);
91
+                ogs_assert(*MaximumIntegrityProtectedDataRate >= 0);
92
+            }
93
+        }
94
+    }
95
+
96
     ie = CALLOC(1, sizeof(NGAP_PDUSessionResourceSetupRequestTransferIEs_t));
97
     ogs_assert(ie);
98
     ASN_SEQUENCE_ADD(&message.protocolIEs, ie);
99