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 655
View file
open5gs_2.7.0.128.30648.202404052026.dsc
Deleted
@@ -1,39 +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-scp, open5gs-sepp, open5gs-ausf, open5gs-udm, open5gs-pcf, open5gs-nssf, open5gs-bsf, open5gs-udr, open5gs, open5gs-dbg -Architecture: any -Version: 2.7.0.128.30648.202404052026 -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), cmake, 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-scp deb net optional arch=any - open5gs-sepp 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: - e2eef4ee2269878a50d13707d30bf4f6f669ae13 14488320 open5gs_2.7.0.128.30648.202404052026.tar.xz -Checksums-Sha256: - 11d6afe2e86d483f5ec478401e2a561373c3fed46480610352bd3db19a1e7874 14488320 open5gs_2.7.0.128.30648.202404052026.tar.xz -Files: - 7cd88d66dcad2d41d93706b0c0058ca6 14488320 open5gs_2.7.0.128.30648.202404052026.tar.xz
View file
open5gs_2.7.0.128.8484a.202404062026.dsc
Added
@@ -0,0 +1,39 @@ +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-scp, open5gs-sepp, open5gs-ausf, open5gs-udm, open5gs-pcf, open5gs-nssf, open5gs-bsf, open5gs-udr, open5gs, open5gs-dbg +Architecture: any +Version: 2.7.0.128.8484a.202404062026 +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), cmake, 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-scp deb net optional arch=any + open5gs-sepp 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: + add8c1fc8139553dee3417ae0ab8776550829459 14488252 open5gs_2.7.0.128.8484a.202404062026.tar.xz +Checksums-Sha256: + 40c621a695d204f877a24886e96d81adc04d80c8d1d320f7251b9f4509208672 14488252 open5gs_2.7.0.128.8484a.202404062026.tar.xz +Files: + 4b8e3f9900cedee9fd327e6df236d553 14488252 open5gs_2.7.0.128.8484a.202404062026.tar.xz
View file
open5gs_2.7.0.128.30648.202404052026.tar.xz/.tarball-version -> open5gs_2.7.0.128.8484a.202404062026.tar.xz/.tarball-version
Changed
@@ -1 +1 @@ -2.7.0.128-30648.202404052026 +2.7.0.128-8484a.202404062026
View file
open5gs_2.7.0.128.30648.202404052026.tar.xz/debian/changelog -> open5gs_2.7.0.128.8484a.202404062026.tar.xz/debian/changelog
Changed
@@ -1,8 +1,8 @@ -open5gs (2.7.0.128.30648.202404052026) unstable; urgency=medium +open5gs (2.7.0.128.8484a.202404062026) unstable; urgency=medium * Automatically generated changelog entry for building the Osmocom nightly feed - -- Osmocom OBS scripts <info@osmocom.org> Fri, 05 Apr 2024 20:27:38 +0000 + -- Osmocom OBS scripts <info@osmocom.org> Sat, 06 Apr 2024 20:27:41 +0000 open5gs (2.7.0) unstable; urgency=medium
View file
open5gs_2.7.0.128.30648.202404052026.tar.xz/lib/gtp/util.c -> open5gs_2.7.0.128.8484a.202404062026.tar.xz/lib/gtp/util.c
Changed
@@ -180,3 +180,68 @@ return answer; } + +void ogs_gtp2_sender_f_teid( + ogs_gtp2_sender_f_teid_t *sender_f_teid, ogs_gtp2_message_t *message) +{ + ogs_gtp2_tlv_f_teid_t *tlv_f_teid = NULL; + ogs_gtp2_f_teid_t *f_teid = NULL; + + ogs_assert(sender_f_teid); + ogs_assert(message); + + memset(sender_f_teid, 0, sizeof(*sender_f_teid)); + + switch (message->h.type) { + case OGS_GTP2_CREATE_SESSION_REQUEST_TYPE: + tlv_f_teid = &message->create_session_request. + sender_f_teid_for_control_plane; + break; + case OGS_GTP2_CREATE_SESSION_RESPONSE_TYPE: + tlv_f_teid = &message->create_session_response. + sender_f_teid_for_control_plane; + break; + case OGS_GTP2_MODIFY_BEARER_REQUEST_TYPE: + tlv_f_teid = &message->modify_bearer_request. + sender_f_teid_for_control_plane; + break; + case OGS_GTP2_DELETE_SESSION_REQUEST_TYPE: + tlv_f_teid = &message->delete_session_request. + sender_f_teid_for_control_plane; + break; + case OGS_GTP2_MODIFY_BEARER_COMMAND_TYPE: + tlv_f_teid = &message->modify_bearer_command. + sender_f_teid_for_control_plane; + break; + case OGS_GTP2_DELETE_BEARER_COMMAND_TYPE: + tlv_f_teid = &message->delete_bearer_command. + sender_f_teid_for_control_plane; + break; + case OGS_GTP2_BEARER_RESOURCE_COMMAND_TYPE: + tlv_f_teid = &message->bearer_resource_command. + sender_f_teid_for_control_plane; + break; + case OGS_GTP2_CREATE_INDIRECT_DATA_FORWARDING_TUNNEL_REQUEST_TYPE: + tlv_f_teid = &message->create_indirect_data_forwarding_tunnel_request. + sender_f_teid_for_control_plane; + break; + case OGS_GTP2_CREATE_INDIRECT_DATA_FORWARDING_TUNNEL_RESPONSE_TYPE: + tlv_f_teid = &message->create_indirect_data_forwarding_tunnel_response. + sender_f_teid_for_control_plane; + break; + case OGS_GTP2_DOWNLINK_DATA_NOTIFICATION_TYPE: + tlv_f_teid = &message->downlink_data_notification. + sender_f_teid_for_control_plane; + break; + case OGS_GTP2_MODIFY_ACCESS_BEARERS_REQUEST_TYPE: + tlv_f_teid = &message->modify_access_bearers_request. + sender_f_teid_for_control_plane; + default: + break; + } + + if (tlv_f_teid && tlv_f_teid->presence && (f_teid = tlv_f_teid->data)) { + sender_f_teid->teid_presence = true; + sender_f_teid->teid = be32toh(f_teid->teid); + } +}
View file
open5gs_2.7.0.128.30648.202404052026.tar.xz/lib/gtp/util.h -> open5gs_2.7.0.128.8484a.202404062026.tar.xz/lib/gtp/util.h
Changed
@@ -32,6 +32,14 @@ ogs_gtp2_header_desc_t *header_desc, ogs_pkbuf_t *pkbuf); uint16_t ogs_in_cksum(uint16_t *addr, int len); +typedef struct ogs_gtp2_sender_f_teid_s { + bool teid_presence; + uint32_t teid; +} ogs_gtp2_sender_f_teid_t; + +void ogs_gtp2_sender_f_teid( + ogs_gtp2_sender_f_teid_t *sender_f_teid, ogs_gtp2_message_t *message); + #ifdef __cplusplus } #endif
View file
open5gs_2.7.0.128.30648.202404052026.tar.xz/src/mme/mme-s11-handler.c -> open5gs_2.7.0.128.8484a.202404062026.tar.xz/src/mme/mme-s11-handler.c
Changed
@@ -60,13 +60,9 @@ } void mme_s11_handle_echo_request( - ogs_gtp_xact_t *xact, ogs_gtp2_message_t *gtp2_message) + ogs_gtp_xact_t *xact, ogs_gtp2_echo_request_t *req) { - ogs_gtp2_echo_request_t *req = NULL; - ogs_assert(xact); - ogs_assert(gtp2_message); - req = >p2_message->echo_request; ogs_assert(req); ogs_debug("Receiving Echo Request"); @@ -76,14 +72,14 @@ } void mme_s11_handle_echo_response( - ogs_gtp_xact_t *xact, ogs_gtp2_message_t *gtp2_message) + ogs_gtp_xact_t *xact, ogs_gtp2_echo_response_t *rsp) { /* Not Implemented */ } void mme_s11_handle_create_session_response( ogs_gtp_xact_t *xact, mme_ue_t *mme_ue_from_teid, - ogs_gtp2_message_t *gtp2_message) + ogs_gtp2_create_session_response_t *rsp) { int i, r, rv; uint8_t cause_value = OGS_GTP2_CAUSE_UNDEFINED_VALUE; @@ -104,10 +100,6 @@ uint16_t decoded = 0; int create_action = 0; - ogs_gtp2_create_session_response_t *rsp = NULL; - - ogs_assert(gtp2_message); - rsp = >p2_message->create_session_response; ogs_assert(rsp); ogs_debug("Create Session Response"); @@ -480,7 +472,7 @@ void mme_s11_handle_modify_bearer_response( ogs_gtp_xact_t *xact, mme_ue_t *mme_ue_from_teid, - ogs_gtp2_message_t *gtp2_message) + ogs_gtp2_modify_bearer_response_t *rsp) { int r, rv; uint8_t cause_value = OGS_GTP2_CAUSE_UNDEFINED_VALUE; @@ -490,10 +482,6 @@ mme_ue_t *mme_ue = NULL; sgw_ue_t *sgw_ue = NULL; - ogs_gtp2_modify_bearer_response_t *rsp = NULL; - - ogs_assert(gtp2_message); - rsp = >p2_message->modify_bearer_response; ogs_assert(rsp); ogs_debug("Modify Bearer Response"); @@ -598,7 +586,7 @@ void mme_s11_handle_delete_session_response( ogs_gtp_xact_t *xact, mme_ue_t *mme_ue_from_teid, - ogs_gtp2_message_t *gtp2_message) + ogs_gtp2_delete_session_response_t *rsp) { int r, rv; uint8_t cause_value = OGS_GTP2_CAUSE_UNDEFINED_VALUE; @@ -607,10 +595,6 @@ mme_sess_t *sess = NULL; mme_ue_t *mme_ue = NULL; - ogs_gtp2_delete_session_response_t *rsp = NULL; - - ogs_assert(gtp2_message); - rsp = >p2_message->delete_session_response; ogs_assert(rsp); ogs_debug("Delete Session Response"); @@ -794,7 +778,7 @@ void mme_s11_handle_create_bearer_request( ogs_gtp_xact_t *xact, mme_ue_t *mme_ue, - ogs_gtp2_message_t *gtp2_message) + ogs_gtp2_create_bearer_request_t *req) { int r; uint8_t cause_value = OGS_GTP2_CAUSE_UNDEFINED_VALUE; @@ -806,11 +790,7 @@ ogs_gtp2_f_teid_t *pgw_s5u_teid = NULL; ogs_gtp2_bearer_qos_t bearer_qos; - ogs_gtp2_create_bearer_request_t *req = NULL; - ogs_assert(xact); - ogs_assert(gtp2_message); - req = >p2_message->create_bearer_request; ogs_assert(req); ogs_debug("Create Bearer Request"); @@ -843,8 +823,7 @@ } if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) { - ogs_gtp2_send_error_message(xact, - sgw_ue ? sgw_ue->sgw_s11_teid : gtp2_message->h.teid, + ogs_gtp2_send_error_message(xact, sgw_ue ? sgw_ue->sgw_s11_teid : 0, OGS_GTP2_CREATE_BEARER_RESPONSE_TYPE, cause_value); return; } @@ -880,8 +859,7 @@ } if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) { - ogs_gtp2_send_error_message(xact, - sgw_ue ? sgw_ue->sgw_s11_teid : gtp2_message->h.teid, + ogs_gtp2_send_error_message(xact, sgw_ue ? sgw_ue->sgw_s11_teid : 0, OGS_GTP2_CREATE_BEARER_RESPONSE_TYPE, cause_value); return; } @@ -1004,7 +982,7 @@ void mme_s11_handle_update_bearer_request( ogs_gtp_xact_t *xact, mme_ue_t *mme_ue, - ogs_gtp2_message_t *gtp2_message) + ogs_gtp2_update_bearer_request_t *req) { int r; uint8_t cause_value = OGS_GTP2_CAUSE_UNDEFINED_VALUE; @@ -1013,11 +991,7 @@ sgw_ue_t *sgw_ue = NULL; ogs_gtp2_bearer_qos_t bearer_qos; - ogs_gtp2_update_bearer_request_t *req = NULL; - ogs_assert(xact); - ogs_assert(gtp2_message); - req = >p2_message->update_bearer_request; ogs_assert(req); ogs_debug("Update Bearer Request"); @@ -1054,8 +1028,7 @@ } if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) { - ogs_gtp2_send_error_message(xact, - sgw_ue ? sgw_ue->sgw_s11_teid : gtp2_message->h.teid, + ogs_gtp2_send_error_message(xact, sgw_ue ? sgw_ue->sgw_s11_teid : 0, OGS_GTP2_UPDATE_BEARER_RESPONSE_TYPE, cause_value); return; } @@ -1156,7 +1129,7 @@ void mme_s11_handle_delete_bearer_request( ogs_gtp_xact_t *xact, mme_ue_t *mme_ue, - ogs_gtp2_message_t *gtp2_message) + ogs_gtp2_delete_bearer_request_t *req) { int r; uint8_t cause_value = OGS_GTP2_CAUSE_UNDEFINED_VALUE; @@ -1165,11 +1138,7 @@ mme_sess_t *sess = NULL; sgw_ue_t *sgw_ue = NULL; - ogs_gtp2_delete_bearer_request_t *req = NULL; - ogs_assert(xact); - ogs_assert(gtp2_message); - req = >p2_message->delete_bearer_request; ogs_assert(req); ogs_debug("Delete Bearer Request"); @@ -1230,8 +1199,7 @@ } if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) { - ogs_gtp2_send_error_message(xact, - sgw_ue ? sgw_ue->sgw_s11_teid : gtp2_message->h.teid, + ogs_gtp2_send_error_message(xact, sgw_ue ? sgw_ue->sgw_s11_teid : 0, OGS_GTP2_DELETE_BEARER_RESPONSE_TYPE, OGS_GTP2_CAUSE_CONTEXT_NOT_FOUND); return; @@ -1282,7 +1250,7 @@ void mme_s11_handle_release_access_bearers_response( ogs_gtp_xact_t *xact, mme_ue_t *mme_ue_from_teid, - ogs_gtp2_message_t *gtp2_message) + ogs_gtp2_release_access_bearers_response_t *rsp) { int r, rv; uint8_t cause_value = OGS_GTP2_CAUSE_UNDEFINED_VALUE; @@ -1294,10 +1262,6 @@ mme_sess_t *sess = NULL; mme_bearer_t *bearer = NULL; - ogs_gtp2_release_access_bearers_response_t *rsp = NULL;
View file
open5gs_2.7.0.128.30648.202404052026.tar.xz/src/mme/mme-s11-handler.h -> open5gs_2.7.0.128.8484a.202404062026.tar.xz/src/mme/mme-s11-handler.h
Changed
@@ -27,44 +27,44 @@ #endif void mme_s11_handle_echo_request( - ogs_gtp_xact_t *xact, ogs_gtp2_message_t *gtp2_message); + ogs_gtp_xact_t *xact, ogs_gtp2_echo_request_t *req); void mme_s11_handle_echo_response( - ogs_gtp_xact_t *xact, ogs_gtp2_message_t *gtp2_message); + ogs_gtp_xact_t *xact, ogs_gtp2_echo_response_t *rsp); void mme_s11_handle_create_session_response( ogs_gtp_xact_t *xact, mme_ue_t *mme_ue, - ogs_gtp2_message_t *gtp2_message); + ogs_gtp2_create_session_response_t *rsp); void mme_s11_handle_modify_bearer_response( ogs_gtp_xact_t *xact, mme_ue_t *mme_ue, - ogs_gtp2_message_t *gtp2_message); + ogs_gtp2_modify_bearer_response_t *rsp); void mme_s11_handle_delete_session_response( ogs_gtp_xact_t *xact, mme_ue_t *mme_ue, - ogs_gtp2_message_t *gtp2_message); + ogs_gtp2_delete_session_response_t *rsp); void mme_s11_handle_create_bearer_request( ogs_gtp_xact_t *xact, mme_ue_t *mme_ue, - ogs_gtp2_message_t *gtp2_message); + ogs_gtp2_create_bearer_request_t *req); void mme_s11_handle_update_bearer_request( ogs_gtp_xact_t *xact, mme_ue_t *mme_ue, - ogs_gtp2_message_t *gtp2_message); + ogs_gtp2_update_bearer_request_t *req); void mme_s11_handle_delete_bearer_request( ogs_gtp_xact_t *xact, mme_ue_t *mme_ue, - ogs_gtp2_message_t *gtp2_message); + ogs_gtp2_delete_bearer_request_t *req); void mme_s11_handle_release_access_bearers_response( ogs_gtp_xact_t *xact, mme_ue_t *mme_ue, - ogs_gtp2_message_t *gtp2_message); + ogs_gtp2_release_access_bearers_response_t *rsp); void mme_s11_handle_downlink_data_notification( ogs_gtp_xact_t *xact, mme_ue_t *mme_ue, - ogs_gtp2_message_t *gtp2_message); + ogs_gtp2_downlink_data_notification_t *noti); void mme_s11_handle_create_indirect_data_forwarding_tunnel_response( ogs_gtp_xact_t *xact, mme_ue_t *mme_ue, - ogs_gtp2_message_t *gtp2_message); + ogs_gtp2_create_indirect_data_forwarding_tunnel_response_t *rsp); void mme_s11_handle_delete_indirect_data_forwarding_tunnel_response( ogs_gtp_xact_t *xact, mme_ue_t *mme_ue, - ogs_gtp2_message_t *gtp2_message); + ogs_gtp2_delete_indirect_data_forwarding_tunnel_response_t *rsp); void mme_s11_handle_bearer_resource_failure_indication( ogs_gtp_xact_t *xact, mme_ue_t *mme_ue, - ogs_gtp2_message_t *gtp2_message); + ogs_gtp2_bearer_resource_failure_indication_t *ind); #ifdef __cplusplus }
View file
open5gs_2.7.0.128.30648.202404052026.tar.xz/src/mme/mme-sm.c -> open5gs_2.7.0.128.8484a.202404062026.tar.xz/src/mme/mme-sm.c
Changed
@@ -79,7 +79,7 @@ ogs_gtp_node_t *gnode = NULL; ogs_gtp_xact_t *xact = NULL; - ogs_gtp2_message_t gtp2_message; + ogs_gtp2_message_t gtp_message; ogs_gtp1_message_t gtp1_message; mme_vlr_t *vlr = NULL; @@ -650,7 +650,7 @@ pkbuf = e->pkbuf; ogs_assert(pkbuf); - if (ogs_gtp2_parse_msg(>p2_message, pkbuf) != OGS_OK) { + if (ogs_gtp2_parse_msg(>p_message, pkbuf) != OGS_OK) { ogs_error("ogs_gtp2_parse_msg() failed"); ogs_pkbuf_free(pkbuf); break; @@ -659,7 +659,7 @@ gnode = e->gnode; ogs_assert(gnode); - rv = ogs_gtp_xact_receive(gnode, >p2_message.h, &xact); + rv = ogs_gtp_xact_receive(gnode, >p_message.h, &xact); if (rv != OGS_OK) { ogs_pkbuf_free(pkbuf); break; @@ -694,9 +694,9 @@ * However in this case, the cause code shall not be set to * "Context not found". */ - if (gtp2_message.h.teid_presence && gtp2_message.h.teid != 0) { + if (gtp_message.h.teid_presence && gtp_message.h.teid != 0) { /* Cause is not "Context not found" */ - mme_ue = mme_ue_find_by_s11_local_teid(gtp2_message.h.teid); + mme_ue = mme_ue_find_by_s11_local_teid(gtp_message.h.teid); } else if (xact->local_teid) { /* rx no TEID or TEID=0 */ /* 3GPP TS 29.274 5.5.2: we receive TEID=0 under some * conditions, such as cause "Session context not found". In those @@ -706,60 +706,69 @@ mme_ue = mme_ue_find_by_s11_local_teid(xact->local_teid); } - switch (gtp2_message.h.type) { + switch (gtp_message.h.type) { case OGS_GTP2_ECHO_REQUEST_TYPE: - mme_s11_handle_echo_request(xact, >p2_message); + mme_s11_handle_echo_request(xact, >p_message.echo_request); break; case OGS_GTP2_ECHO_RESPONSE_TYPE: - mme_s11_handle_echo_response(xact, >p2_message); + mme_s11_handle_echo_response(xact, >p_message.echo_response); break; case OGS_GTP2_CREATE_SESSION_RESPONSE_TYPE: - if (!gtp2_message.h.teid_presence) ogs_error("No TEID"); - mme_s11_handle_create_session_response(xact, mme_ue, >p2_message); + if (!gtp_message.h.teid_presence) ogs_error("No TEID"); + mme_s11_handle_create_session_response( + xact, mme_ue, >p_message.create_session_response); break; case OGS_GTP2_MODIFY_BEARER_RESPONSE_TYPE: - if (!gtp2_message.h.teid_presence) ogs_error("No TEID"); - mme_s11_handle_modify_bearer_response(xact, mme_ue, >p2_message); + if (!gtp_message.h.teid_presence) ogs_error("No TEID"); + mme_s11_handle_modify_bearer_response( + xact, mme_ue, >p_message.modify_bearer_response); break; case OGS_GTP2_DELETE_SESSION_RESPONSE_TYPE: - if (!gtp2_message.h.teid_presence) ogs_error("No TEID"); - mme_s11_handle_delete_session_response(xact, mme_ue, >p2_message); + if (!gtp_message.h.teid_presence) ogs_error("No TEID"); + mme_s11_handle_delete_session_response( + xact, mme_ue, >p_message.delete_session_response); break; case OGS_GTP2_CREATE_BEARER_REQUEST_TYPE: - mme_s11_handle_create_bearer_request(xact, mme_ue, >p2_message); + mme_s11_handle_create_bearer_request( + xact, mme_ue, >p_message.create_bearer_request); break; case OGS_GTP2_UPDATE_BEARER_REQUEST_TYPE: - mme_s11_handle_update_bearer_request(xact, mme_ue, >p2_message); + mme_s11_handle_update_bearer_request( + xact, mme_ue, >p_message.update_bearer_request); break; case OGS_GTP2_DELETE_BEARER_REQUEST_TYPE: - mme_s11_handle_delete_bearer_request(xact, mme_ue, >p2_message); + mme_s11_handle_delete_bearer_request( + xact, mme_ue, >p_message.delete_bearer_request); break; case OGS_GTP2_RELEASE_ACCESS_BEARERS_RESPONSE_TYPE: - if (!gtp2_message.h.teid_presence) ogs_error("No TEID"); + if (!gtp_message.h.teid_presence) ogs_error("No TEID"); mme_s11_handle_release_access_bearers_response( - xact, mme_ue, >p2_message); + xact, mme_ue, >p_message.release_access_bearers_response); break; case OGS_GTP2_DOWNLINK_DATA_NOTIFICATION_TYPE: mme_s11_handle_downlink_data_notification( - xact, mme_ue, >p2_message); + xact, mme_ue, >p_message.downlink_data_notification); break; case OGS_GTP2_CREATE_INDIRECT_DATA_FORWARDING_TUNNEL_RESPONSE_TYPE: - if (!gtp2_message.h.teid_presence) ogs_error("No TEID"); + if (!gtp_message.h.teid_presence) ogs_error("No TEID"); mme_s11_handle_create_indirect_data_forwarding_tunnel_response( - xact, mme_ue, >p2_message); + xact, mme_ue, + >p_message.create_indirect_data_forwarding_tunnel_response); break; case OGS_GTP2_DELETE_INDIRECT_DATA_FORWARDING_TUNNEL_RESPONSE_TYPE: - if (!gtp2_message.h.teid_presence) ogs_error("No TEID"); + if (!gtp_message.h.teid_presence) ogs_error("No TEID"); mme_s11_handle_delete_indirect_data_forwarding_tunnel_response( - xact, mme_ue, >p2_message); + xact, mme_ue, + >p_message.delete_indirect_data_forwarding_tunnel_response); break; case OGS_GTP2_BEARER_RESOURCE_FAILURE_INDICATION_TYPE: - if (!gtp2_message.h.teid_presence) ogs_error("No TEID"); + if (!gtp_message.h.teid_presence) ogs_error("No TEID"); mme_s11_handle_bearer_resource_failure_indication( - xact, mme_ue, >p2_message); + xact, mme_ue, + >p_message.bearer_resource_failure_indication); break; default: - ogs_warn("Not implemented(type:%d)", gtp2_message.h.type); + ogs_warn("Not implemented(type:%d)", gtp_message.h.type); break; } ogs_pkbuf_free(pkbuf);
View file
open5gs_2.7.0.128.30648.202404052026.tar.xz/src/sgwc/pfcp-sm.c -> open5gs_2.7.0.128.8484a.202404062026.tar.xz/src/sgwc/pfcp-sm.c
Changed
@@ -305,7 +305,8 @@ sess->sgwu_sxa_seid = be64toh(up_f_seid->seid); } else { sgwc_sxa_handle_session_establishment_response( - sess, xact, e->gtp_message, message); + sess, xact, e->gtp_message, + &message->pfcp_session_establishment_response); } break; @@ -313,20 +314,23 @@ if (!message->h.seid_presence) ogs_error("No SEID"); sgwc_sxa_handle_session_modification_response( - sess, xact, e->gtp_message, message); + sess, xact, e->gtp_message, + &message->pfcp_session_modification_response); break; case OGS_PFCP_SESSION_DELETION_RESPONSE_TYPE: if (!message->h.seid_presence) ogs_error("No SEID"); sgwc_sxa_handle_session_deletion_response( - sess, xact, e->gtp_message, message); + sess, xact, e->gtp_message, + &message->pfcp_session_deletion_response); break; case OGS_PFCP_SESSION_REPORT_REQUEST_TYPE: if (!message->h.seid_presence) ogs_error("No SEID"); - sgwc_sxa_handle_session_report_request(sess, xact, message); + sgwc_sxa_handle_session_report_request( + sess, xact, &message->pfcp_session_report_request); break; default:
View file
open5gs_2.7.0.128.30648.202404052026.tar.xz/src/sgwc/s11-handler.c -> open5gs_2.7.0.128.8484a.202404062026.tar.xz/src/sgwc/s11-handler.c
Changed
@@ -174,7 +174,7 @@ if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) { ogs_gtp_send_error_message( - s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : message->h.teid, + s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0, OGS_GTP2_CREATE_SESSION_RESPONSE_TYPE, cause_value); return; } @@ -215,7 +215,7 @@ if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) { ogs_gtp_send_error_message( - s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : message->h.teid, + s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0, OGS_GTP2_CREATE_SESSION_RESPONSE_TYPE, cause_value); return; } @@ -263,7 +263,7 @@ ogs_assert(sess->pfcp_node); if (!OGS_FSM_CHECK(&sess->pfcp_node->sm, sgwc_pfcp_state_associated)) { ogs_gtp_send_error_message( - s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : message->h.teid, + s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0, OGS_GTP2_CREATE_SESSION_RESPONSE_TYPE, OGS_GTP2_CAUSE_REMOTE_PEER_NOT_RESPONDING); return; @@ -424,7 +424,7 @@ if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) { ogs_gtp_send_error_message( - s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : message->h.teid, + s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0, OGS_GTP2_MODIFY_BEARER_RESPONSE_TYPE, cause_value); return; } @@ -532,7 +532,7 @@ if (i == 0) { ogs_error("No Bearer"); ogs_gtp_send_error_message( - s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : message->h.teid, + s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0, OGS_GTP2_MODIFY_BEARER_RESPONSE_TYPE, cause_value); return; } @@ -610,7 +610,7 @@ if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) { ogs_gtp_send_error_message( - s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : message->h.teid, + s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0, OGS_GTP2_DELETE_SESSION_RESPONSE_TYPE, cause_value); return; } @@ -630,7 +630,7 @@ indication->scope_indication == 1) { ogs_error("Invalid Indication"); ogs_gtp_send_error_message( - s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : message->h.teid, + s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0, OGS_GTP2_DELETE_SESSION_RESPONSE_TYPE, OGS_GTP2_CAUSE_INVALID_MESSAGE_FORMAT); return; @@ -1129,7 +1129,7 @@ if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) { ogs_gtp_send_error_message( - s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : message->h.teid, + s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0, OGS_GTP2_RELEASE_ACCESS_BEARERS_RESPONSE_TYPE, cause_value); return; } @@ -1236,7 +1236,7 @@ if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) { ogs_gtp_send_error_message( - s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : message->h.teid, + s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0, OGS_GTP2_CREATE_INDIRECT_DATA_FORWARDING_TUNNEL_RESPONSE_TYPE, cause_value); return; @@ -1254,7 +1254,7 @@ if (req->bearer_contextsi.eps_bearer_id.presence == 0) { ogs_error("No EBI"); ogs_gtp_send_error_message( - s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : message->h.teid, + s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0, OGS_GTP2_CREATE_INDIRECT_DATA_FORWARDING_TUNNEL_RESPONSE_TYPE, OGS_GTP2_CAUSE_MANDATORY_IE_MISSING); return; @@ -1277,7 +1277,7 @@ rv = ogs_gtp2_f_teid_to_ip(req_teid, &tunnel->remote_ip); if (rv != OGS_OK) { ogs_gtp_send_error_message(s11_xact, - sgwc_ue ? sgwc_ue->mme_s11_teid : message->h.teid, + sgwc_ue ? sgwc_ue->mme_s11_teid : 0, OGS_GTP2_CREATE_INDIRECT_DATA_FORWARDING_TUNNEL_RESPONSE_TYPE, OGS_GTP2_CAUSE_MANDATORY_IE_MISSING); return; @@ -1312,7 +1312,7 @@ rv = ogs_gtp2_f_teid_to_ip(req_teid, &tunnel->remote_ip); if (rv != OGS_OK) { ogs_gtp_send_error_message(s11_xact, - sgwc_ue ? sgwc_ue->mme_s11_teid : message->h.teid, + sgwc_ue ? sgwc_ue->mme_s11_teid : 0, OGS_GTP2_CREATE_INDIRECT_DATA_FORWARDING_TUNNEL_RESPONSE_TYPE, OGS_GTP2_CAUSE_MANDATORY_IE_MISSING); return; @@ -1346,13 +1346,12 @@ void sgwc_s11_handle_delete_indirect_data_forwarding_tunnel_request( sgwc_ue_t *sgwc_ue, ogs_gtp_xact_t *s11_xact, - ogs_pkbuf_t *gtpbuf, ogs_gtp2_message_t *message) + ogs_pkbuf_t *gtpbuf, ogs_gtp2_message_t *recv_message) { sgwc_sess_t *sess = NULL; uint8_t cause_value = 0; ogs_assert(s11_xact); - ogs_assert(message); ogs_debug("Delete Indirect Data Forwarding Tunnel Request"); @@ -1368,8 +1367,7 @@ if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) { ogs_gtp_send_error_message( - s11_xact, - sgwc_ue ? sgwc_ue->mme_s11_teid : message->h.teid, + s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0, OGS_GTP2_DELETE_INDIRECT_DATA_FORWARDING_TUNNEL_RESPONSE_TYPE, cause_value); return; @@ -1444,7 +1442,7 @@ if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) { ogs_gtp_send_error_message( - s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : message->h.teid, + s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0, OGS_GTP2_BEARER_RESOURCE_FAILURE_INDICATION_TYPE, cause_value); return; } @@ -1465,7 +1463,7 @@ if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) { ogs_gtp_send_error_message( - s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : message->h.teid, + s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0, OGS_GTP2_BEARER_RESOURCE_FAILURE_INDICATION_TYPE, cause_value); return; }
View file
open5gs_2.7.0.128.30648.202404052026.tar.xz/src/sgwc/s5c-handler.c -> open5gs_2.7.0.128.8484a.202404062026.tar.xz/src/sgwc/s5c-handler.c
Changed
@@ -573,8 +573,7 @@ } if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) { - ogs_gtp_send_error_message(s5c_xact, - sess ? sess->pgw_s5c_teid : message->h.teid, + ogs_gtp_send_error_message(s5c_xact, sess ? sess->pgw_s5c_teid : 0, OGS_GTP2_CREATE_BEARER_RESPONSE_TYPE, cause_value); return; } @@ -602,8 +601,7 @@ } if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) { - ogs_gtp_send_error_message(s5c_xact, - sess ? sess->pgw_s5c_teid : message->h.teid, + ogs_gtp_send_error_message(s5c_xact, sess ? sess->pgw_s5c_teid : 0, OGS_GTP2_CREATE_BEARER_RESPONSE_TYPE, cause_value); return; } @@ -633,8 +631,7 @@ rv = ogs_gtp2_f_teid_to_ip(pgw_s5u_teid, &ul_tunnel->remote_ip); if (rv != OGS_OK) { - ogs_gtp_send_error_message(s5c_xact, - sess ? sess->pgw_s5c_teid : message->h.teid, + ogs_gtp_send_error_message(s5c_xact, sess ? sess->pgw_s5c_teid : 0, OGS_GTP2_CREATE_BEARER_RESPONSE_TYPE, OGS_GTP2_CAUSE_MANDATORY_IE_MISSING); return; @@ -712,8 +709,7 @@ } if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) { - ogs_gtp_send_error_message(s5c_xact, - sess ? sess->pgw_s5c_teid : message->h.teid, + ogs_gtp_send_error_message(s5c_xact, sess ? sess->pgw_s5c_teid : 0, OGS_GTP2_UPDATE_BEARER_RESPONSE_TYPE, cause_value); return; } @@ -854,8 +850,7 @@ } if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) { - ogs_gtp_send_error_message(s5c_xact, - sess ? sess->pgw_s5c_teid : message->h.teid, + ogs_gtp_send_error_message(s5c_xact, sess ? sess->pgw_s5c_teid : 0, OGS_GTP2_DELETE_BEARER_RESPONSE_TYPE, cause_value); return; }
View file
open5gs_2.7.0.128.30648.202404052026.tar.xz/src/sgwc/sxa-handler.c -> open5gs_2.7.0.128.8484a.202404062026.tar.xz/src/sgwc/sxa-handler.c
Changed
@@ -127,7 +127,7 @@ void sgwc_sxa_handle_session_establishment_response( sgwc_sess_t *sess, ogs_pfcp_xact_t *pfcp_xact, ogs_gtp2_message_t *recv_message, - ogs_pfcp_message_t *pfcp_message) + ogs_pfcp_session_establishment_response_t *pfcp_rsp) { int rv; uint8_t cause_value = 0; @@ -155,13 +155,11 @@ ogs_gtp2_indication_t *indication = NULL; - ogs_pfcp_session_establishment_response_t *pfcp_rsp = NULL; - ogs_debug("Session Establishment Response"); ogs_assert(pfcp_xact); + ogs_assert(pfcp_rsp); ogs_assert(recv_message); - ogs_assert(pfcp_message); create_session_request = &recv_message->create_session_request; ogs_assert(create_session_request); @@ -169,9 +167,6 @@ s11_xact = pfcp_xact->assoc_xact; ogs_assert(s11_xact); - pfcp_rsp = &pfcp_message->pfcp_session_establishment_response; - ogs_assert(pfcp_rsp); - ogs_pfcp_xact_commit(pfcp_xact); cause_value = OGS_GTP2_CAUSE_REQUEST_ACCEPTED; @@ -251,8 +246,7 @@ if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) { if (sess) sgwc_ue = sess->sgwc_ue; ogs_gtp_send_error_message( - s11_xact, - sgwc_ue ? sgwc_ue->mme_s11_teid : recv_message->h.teid, + s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0, OGS_GTP2_CREATE_SESSION_RESPONSE_TYPE, cause_value); return; } @@ -276,8 +270,7 @@ if (dl_tunnel->local_addr == NULL && dl_tunnel->local_addr6 == NULL) { ogs_error("No UP F-TEID"); ogs_gtp_send_error_message( - s11_xact, - sgwc_ue ? sgwc_ue->mme_s11_teid : recv_message->h.teid, + s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0, OGS_GTP2_CREATE_SESSION_RESPONSE_TYPE, OGS_GTP2_CAUSE_GRE_KEY_NOT_FOUND); return; @@ -451,7 +444,7 @@ void sgwc_sxa_handle_session_modification_response( sgwc_sess_t *sess, ogs_pfcp_xact_t *pfcp_xact, ogs_gtp2_message_t *recv_message, - ogs_pfcp_message_t *pfcp_message) + ogs_pfcp_session_modification_response_t *pfcp_rsp) { int i, rv, len = 0; uint8_t cause_value = 0; @@ -470,19 +463,14 @@ ogs_gtp2_cause_t cause; - ogs_pfcp_session_modification_response_t *pfcp_rsp = NULL; - ogs_debug("Session Modification Response"); ogs_assert(pfcp_xact); - ogs_assert(pfcp_message); + ogs_assert(pfcp_rsp); flags = pfcp_xact->modify_flags; ogs_assert(flags); - pfcp_rsp = &pfcp_message->pfcp_session_modification_response; - ogs_assert(pfcp_rsp); - cause_value = OGS_GTP2_CAUSE_REQUEST_ACCEPTED; if (flags & OGS_PFCP_MODIFY_SESSION) { @@ -609,15 +597,12 @@ } else if (flags & OGS_PFCP_MODIFY_ACTIVATE) { - ogs_assert(recv_message); - if (flags & OGS_PFCP_MODIFY_UL_ONLY) { s11_xact = pfcp_xact->assoc_xact; ogs_assert(s11_xact); ogs_gtp_send_error_message( - s11_xact, - sgwc_ue ? sgwc_ue->mme_s11_teid : recv_message->h.teid, + s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0, OGS_GTP2_CREATE_SESSION_RESPONSE_TYPE, cause_value); } else if (flags & OGS_PFCP_MODIFY_DL_ONLY) { @@ -625,26 +610,19 @@ ogs_assert(s11_xact); ogs_gtp_send_error_message( - s11_xact, - sgwc_ue ? sgwc_ue->mme_s11_teid : recv_message->h.teid, + s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0, OGS_GTP2_MODIFY_BEARER_RESPONSE_TYPE, cause_value); } else { ogs_fatal("Invalid modify_flags0x%llx", (long long)flags); ogs_assert_if_reached(); } } else if (flags & OGS_PFCP_MODIFY_DEACTIVATE) { - if (flags & OGS_PFCP_MODIFY_ERROR_INDICATION) { - } else { - ogs_assert(recv_message); - - s11_xact = pfcp_xact->assoc_xact; - ogs_assert(s11_xact); + s11_xact = pfcp_xact->assoc_xact; + ogs_assert(s11_xact); - ogs_gtp_send_error_message( - s11_xact, - sgwc_ue ? sgwc_ue->mme_s11_teid : recv_message->h.teid, - OGS_GTP2_RELEASE_ACCESS_BEARERS_RESPONSE_TYPE, cause_value); - } + ogs_gtp_send_error_message( + s11_xact, sgwc_ue ? sgwc_ue->mme_s11_teid : 0, + OGS_GTP2_RELEASE_ACCESS_BEARERS_RESPONSE_TYPE, cause_value); } ogs_pfcp_xact_commit(pfcp_xact); @@ -1011,7 +989,6 @@ s11_xact = pfcp_xact->assoc_xact; ogs_assert(s11_xact); - ogs_assert(recv_message); ogs_list_copy(&bearer_to_modify_list, &pfcp_xact->bearer_to_modify_list); @@ -1025,6 +1002,7 @@ ogs_gtp2_f_teid_t sgw_s1u_teidOGS_BEARER_PER_UE; int sgw_s1u_lenOGS_BEARER_PER_UE; + ogs_assert(recv_message); gtp_rsp = &recv_message->create_session_response; ogs_assert(gtp_rsp); @@ -1093,6 +1071,7 @@ ogs_gtp2_indication_t *indication = NULL; + ogs_assert(recv_message); gtp_req = &recv_message->modify_bearer_request; ogs_assert(gtp_req); @@ -1231,7 +1210,6 @@ } else { s11_xact = pfcp_xact->assoc_xact; ogs_assert(s11_xact); - ogs_assert(recv_message); ogs_pfcp_xact_commit(pfcp_xact); @@ -1282,7 +1260,7 @@ void sgwc_sxa_handle_session_deletion_response( sgwc_sess_t *sess, ogs_pfcp_xact_t *pfcp_xact, ogs_gtp2_message_t *gtp_message, - ogs_pfcp_message_t *pfcp_message) + ogs_pfcp_session_deletion_response_t *pfcp_rsp) { int rv; uint8_t cause_value = 0; @@ -1293,14 +1271,9 @@ ogs_gtp_xact_t *gtp_xact = NULL; ogs_pkbuf_t *pkbuf = NULL; - ogs_pfcp_session_deletion_response_t *pfcp_rsp = NULL; - ogs_debug("Session Deletion Response"); ogs_assert(pfcp_xact); - ogs_assert(pfcp_message); - - pfcp_rsp = &pfcp_message->pfcp_session_deletion_response; ogs_assert(pfcp_rsp); cause_value = OGS_GTP2_CAUSE_REQUEST_ACCEPTED; @@ -1342,7 +1315,7 @@ * 2. SMF sends Delete Session Response to SGW/MME. */ if (sess) sgwc_ue = sess->sgwc_ue; - teid = sgwc_ue ? sgwc_ue->mme_s11_teid : gtp_message->h.teid; + teid = sgwc_ue ? sgwc_ue->mme_s11_teid : 0; break; case OGS_GTP2_DELETE_BEARER_RESPONSE_TYPE: /* @@ -1412,7 +1385,7 @@
View file
open5gs_2.7.0.128.30648.202404052026.tar.xz/src/sgwc/sxa-handler.h -> open5gs_2.7.0.128.8484a.202404062026.tar.xz/src/sgwc/sxa-handler.h
Changed
@@ -29,18 +29,18 @@ void sgwc_sxa_handle_session_establishment_response( sgwc_sess_t *sess, ogs_pfcp_xact_t *pfcp_xact, ogs_gtp2_message_t *recv_message, - ogs_pfcp_message_t *pfcp_message); + ogs_pfcp_session_establishment_response_t *pfcp_rsp); void sgwc_sxa_handle_session_modification_response( sgwc_sess_t *sess, ogs_pfcp_xact_t *pfcp_xact, ogs_gtp2_message_t *recv_message, - ogs_pfcp_message_t *pfcp_message); + ogs_pfcp_session_modification_response_t *pfcp_rsp); void sgwc_sxa_handle_session_deletion_response( sgwc_sess_t *sess, ogs_pfcp_xact_t *pfcp_xact, ogs_gtp2_message_t *gtp_message, - ogs_pfcp_message_t *pfcp_message); + ogs_pfcp_session_deletion_response_t *pfcp_rsp); void sgwc_sxa_handle_session_report_request( sgwc_sess_t *sess, ogs_pfcp_xact_t *pfcp_xact, - ogs_pfcp_message_t *pfcp_message); + ogs_pfcp_session_report_request_t *pfcp_req); #ifdef __cplusplus }
View file
open5gs_2.7.0.128.30648.202404052026.tar.xz/src/sgwu/pfcp-sm.c -> open5gs_2.7.0.128.8484a.202404062026.tar.xz/src/sgwu/pfcp-sm.c
Changed
@@ -280,16 +280,20 @@ sess = sgwu_sess_add_by_message(message); if (sess) OGS_SETUP_PFCP_NODE(sess, node); - sgwu_sxa_handle_session_establishment_request(sess, xact, message); + sgwu_sxa_handle_session_establishment_request( + sess, xact, &message->pfcp_session_establishment_request); break; case OGS_PFCP_SESSION_MODIFICATION_REQUEST_TYPE: - sgwu_sxa_handle_session_modification_request(sess, xact, message); + sgwu_sxa_handle_session_modification_request( + sess, xact, &message->pfcp_session_modification_request); break; case OGS_PFCP_SESSION_DELETION_REQUEST_TYPE: - sgwu_sxa_handle_session_deletion_request(sess, xact, message); + sgwu_sxa_handle_session_deletion_request( + sess, xact, &message->pfcp_session_deletion_request); break; case OGS_PFCP_SESSION_REPORT_RESPONSE_TYPE: - sgwu_sxa_handle_session_report_response(sess, xact, message); + sgwu_sxa_handle_session_report_response( + sess, xact, &message->pfcp_session_report_response); break; default: ogs_error("Not implemented PFCP message type%d",
View file
open5gs_2.7.0.128.30648.202404052026.tar.xz/src/sgwu/sxa-handler.c -> open5gs_2.7.0.128.8484a.202404062026.tar.xz/src/sgwu/sxa-handler.c
Changed
@@ -22,7 +22,8 @@ #include "sxa-handler.h" void sgwu_sxa_handle_session_establishment_request( - sgwu_sess_t *sess, ogs_pfcp_xact_t *xact, ogs_pfcp_message_t *message) + sgwu_sess_t *sess, ogs_pfcp_xact_t *xact, + ogs_pfcp_session_establishment_request_t *req) { ogs_pfcp_pdr_t *pdr = NULL; ogs_pfcp_far_t *far = NULL; @@ -35,11 +36,7 @@ ogs_pfcp_sereq_flags_t sereq_flags; bool restoration_indication = false; - ogs_pfcp_session_establishment_request_t *req = NULL; - ogs_assert(xact); - ogs_assert(message); - req = &message->pfcp_session_establishment_request; ogs_assert(req); ogs_debug("Session Establishment Request"); @@ -48,8 +45,7 @@ if (!sess) { ogs_error("No Context"); - ogs_pfcp_send_error_message( - xact, sess ? sess->sgwc_sxa_f_seid.seid : message->h.seid, + ogs_pfcp_send_error_message(xact, 0, OGS_PFCP_SESSION_ESTABLISHMENT_RESPONSE_TYPE, OGS_PFCP_CAUSE_MANDATORY_IE_MISSING, 0); return; @@ -146,14 +142,14 @@ cleanup: ogs_pfcp_sess_clear(&sess->pfcp); - ogs_pfcp_send_error_message( - xact, sess ? sess->sgwc_sxa_f_seid.seid : message->h.seid, + ogs_pfcp_send_error_message(xact, sess ? sess->sgwu_sxa_seid : 0, OGS_PFCP_SESSION_ESTABLISHMENT_RESPONSE_TYPE, cause_value, offending_ie_value); } void sgwu_sxa_handle_session_modification_request( - sgwu_sess_t *sess, ogs_pfcp_xact_t *xact, ogs_pfcp_message_t *message) + sgwu_sess_t *sess, ogs_pfcp_xact_t *xact, + ogs_pfcp_session_modification_request_t *req) { ogs_pfcp_pdr_t *pdr = NULL; ogs_pfcp_far_t *far = NULL; @@ -163,11 +159,7 @@ uint8_t offending_ie_value = 0; int i; - ogs_pfcp_session_modification_request_t *req = NULL; - ogs_assert(xact); - ogs_assert(message); - req = &message->pfcp_session_modification_request; ogs_assert(req); ogs_debug("Session Modification Request"); @@ -176,8 +168,7 @@ if (!sess) { ogs_error("No Context"); - ogs_pfcp_send_error_message( - xact, sess ? sess->sgwc_sxa_f_seid.seid : message->h.seid, + ogs_pfcp_send_error_message(xact, 0, OGS_PFCP_SESSION_MODIFICATION_RESPONSE_TYPE, OGS_PFCP_CAUSE_SESSION_CONTEXT_NOT_FOUND, 0); return; @@ -318,28 +309,23 @@ cleanup: ogs_pfcp_sess_clear(&sess->pfcp); - ogs_pfcp_send_error_message( - xact, sess ? sess->sgwc_sxa_f_seid.seid : message->h.seid, + ogs_pfcp_send_error_message(xact, sess ? sess->sgwu_sxa_seid : 0, OGS_PFCP_SESSION_MODIFICATION_RESPONSE_TYPE, cause_value, offending_ie_value); } void sgwu_sxa_handle_session_deletion_request( - sgwu_sess_t *sess, ogs_pfcp_xact_t *xact, ogs_pfcp_message_t *message) + sgwu_sess_t *sess, ogs_pfcp_xact_t *xact, + ogs_pfcp_session_deletion_request_t *req) { - ogs_pfcp_session_deletion_request_t *req = NULL; - ogs_assert(xact); - ogs_assert(message); - req = &message->pfcp_session_deletion_request; ogs_assert(req); ogs_debug("Session Deletion Request"); if (!sess) { ogs_error("No Context"); - ogs_pfcp_send_error_message( - xact, sess ? sess->sgwc_sxa_f_seid.seid : message->h.seid, + ogs_pfcp_send_error_message(xact, 0, OGS_PFCP_SESSION_DELETION_RESPONSE_TYPE, OGS_PFCP_CAUSE_SESSION_CONTEXT_NOT_FOUND, 0); return; @@ -353,15 +339,12 @@ } void sgwu_sxa_handle_session_report_response( - sgwu_sess_t *sess, ogs_pfcp_xact_t *xact, ogs_pfcp_message_t *message) + sgwu_sess_t *sess, ogs_pfcp_xact_t *xact, + ogs_pfcp_session_report_response_t *rsp) { uint8_t cause_value = 0; - ogs_pfcp_session_report_response_t *rsp = NULL; - ogs_assert(xact); - ogs_assert(message); - rsp = &message->pfcp_session_report_response; ogs_assert(rsp); ogs_pfcp_xact_commit(xact);
View file
open5gs_2.7.0.128.30648.202404052026.tar.xz/src/sgwu/sxa-handler.h -> open5gs_2.7.0.128.8484a.202404062026.tar.xz/src/sgwu/sxa-handler.h
Changed
@@ -27,14 +27,18 @@ #endif void sgwu_sxa_handle_session_establishment_request( - sgwu_sess_t *sess, ogs_pfcp_xact_t *xact, ogs_pfcp_message_t *message); + sgwu_sess_t *sess, ogs_pfcp_xact_t *xact, + ogs_pfcp_session_establishment_request_t *req); void sgwu_sxa_handle_session_modification_request( - sgwu_sess_t *sess, ogs_pfcp_xact_t *xact, ogs_pfcp_message_t *message); + sgwu_sess_t *sess, ogs_pfcp_xact_t *xact, + ogs_pfcp_session_modification_request_t *req); void sgwu_sxa_handle_session_deletion_request( - sgwu_sess_t *sess, ogs_pfcp_xact_t *xact, ogs_pfcp_message_t *message); + sgwu_sess_t *sess, ogs_pfcp_xact_t *xact, + ogs_pfcp_session_deletion_request_t *req); void sgwu_sxa_handle_session_report_response( - sgwu_sess_t *sess, ogs_pfcp_xact_t *xact, ogs_pfcp_message_t *message); + sgwu_sess_t *sess, ogs_pfcp_xact_t *xact, + ogs_pfcp_session_report_response_t *rsp); #ifdef __cplusplus }
View file
open5gs_2.7.0.128.30648.202404052026.tar.xz/src/smf/gsm-sm.c -> open5gs_2.7.0.128.8484a.202404062026.tar.xz/src/smf/gsm-sm.c
Changed
@@ -218,7 +218,8 @@ switch(gtp2_message->h.type) { case OGS_GTP2_CREATE_SESSION_REQUEST_TYPE: gtp2_cause = smf_s5c_handle_create_session_request(sess, - e->gtp_xact, gtp2_message); + e->gtp_xact, + &e->gtp2_message->create_session_request); if (gtp2_cause != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) { send_gtp_create_err_msg(sess, e->gtp_xact, gtp2_cause); return; @@ -620,7 +621,8 @@ ogs_assert(gtp_xact); pfcp_cause = smf_epc_n4_handle_session_establishment_response( - sess, pfcp_xact, pfcp_message); + sess, pfcp_xact, + &pfcp_message->pfcp_session_establishment_response); if (pfcp_cause != OGS_PFCP_CAUSE_REQUEST_ACCEPTED) { /* FIXME: tear down Gy and Gx */ gtp_cause = gtp_cause_from_pfcp( @@ -669,7 +671,8 @@ smf_bearer_binding(sess); } else { pfcp_cause = smf_5gc_n4_handle_session_establishment_response( - sess, pfcp_xact, pfcp_message); + sess, pfcp_xact, + &pfcp_message->pfcp_session_establishment_response); if (pfcp_cause != OGS_PFCP_CAUSE_REQUEST_ACCEPTED) { OGS_FSM_TRAN(s, smf_gsm_state_5gc_n1_n2_reject); return; @@ -781,7 +784,8 @@ switch(gtp2_message->h.type) { case OGS_GTP2_DELETE_SESSION_REQUEST_TYPE: gtp2_cause = smf_s5c_handle_delete_session_request( - sess, e->gtp_xact, gtp2_message); + sess, e->gtp_xact, + >p2_message->delete_session_request); if (gtp2_cause != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) { ogs_gtp2_send_error_message(e->gtp_xact, sess->sgw_s5c_teid, OGS_GTP2_DELETE_SESSION_RESPONSE_TYPE, gtp2_cause); @@ -791,7 +795,7 @@ break; case OGS_GTP2_DELETE_BEARER_RESPONSE_TYPE: release = smf_s5c_handle_delete_bearer_response( - sess, e->gtp_xact, gtp2_message); + sess, e->gtp_xact, &e->gtp2_message->delete_bearer_response); if (release) { e->gtp_xact = NULL; OGS_FSM_TRAN(s, smf_gsm_state_wait_pfcp_deletion); @@ -1306,7 +1310,8 @@ gtp_xact = pfcp_xact->assoc_xact; pfcp_cause = smf_epc_n4_handle_session_deletion_response( - sess, pfcp_xact, pfcp_message); + sess, pfcp_xact, + &pfcp_message->pfcp_session_deletion_response); if (pfcp_cause != OGS_PFCP_CAUSE_REQUEST_ACCEPTED) { /* FIXME: tear down Gy and Gx */ ogs_assert(gtp_xact); @@ -1329,7 +1334,8 @@ ogs_pfcp_xact_commit(pfcp_xact); status = smf_5gc_n4_handle_session_deletion_response( - sess, stream, trigger, pfcp_message); + sess, stream, trigger, + &pfcp_message->pfcp_session_deletion_response); if (status != OGS_SBI_HTTP_STATUS_OK) { ogs_error( "%d smf_5gc_n4_handle_session_deletion_response() "
View file
open5gs_2.7.0.128.30648.202404052026.tar.xz/src/smf/n4-handler.c -> open5gs_2.7.0.128.8484a.202404062026.tar.xz/src/smf/n4-handler.c
Changed
@@ -144,7 +144,7 @@ * other cause value on failure */ uint8_t smf_5gc_n4_handle_session_establishment_response( smf_sess_t *sess, ogs_pfcp_xact_t *xact, - ogs_pfcp_message_t *pfcp_message) + ogs_pfcp_session_establishment_response_t *rsp) { int i; @@ -156,12 +156,8 @@ ogs_pfcp_pdr_t *pdr = NULL; ogs_pfcp_far_t *far = NULL; - ogs_pfcp_session_establishment_response_t *rsp = NULL; - ogs_assert(sess); ogs_assert(xact); - ogs_assert(pfcp_message); - rsp = &pfcp_message->pfcp_session_establishment_response; ogs_assert(rsp); ogs_debug("Session Establishment Response 5gc"); @@ -244,22 +240,18 @@ void smf_5gc_n4_handle_session_modification_response( smf_sess_t *sess, ogs_pfcp_xact_t *xact, - ogs_pfcp_message_t *pfcp_message) + ogs_pfcp_session_modification_response_t *rsp) { int status = 0; uint64_t flags = 0; ogs_sbi_stream_t *stream = NULL; smf_bearer_t *qos_flow = NULL; - ogs_pfcp_session_modification_response_t *rsp = NULL; - OGS_LIST(pdr_to_create_list); ogs_debug("Session Modification Response 5gc"); ogs_assert(xact); - ogs_assert(pfcp_message); - rsp = &pfcp_message->pfcp_session_modification_response; ogs_assert(rsp); flags = xact->modify_flags; @@ -673,16 +665,12 @@ int smf_5gc_n4_handle_session_deletion_response( smf_sess_t *sess, ogs_sbi_stream_t *stream, int trigger, - ogs_pfcp_message_t *pfcp_message) + ogs_pfcp_session_deletion_response_t *rsp) { int status = 0; - ogs_pfcp_session_deletion_response_t *rsp = NULL; - ogs_debug("Session Deletion Response 5gc"); - ogs_assert(pfcp_message); - rsp = &pfcp_message->pfcp_session_deletion_response; ogs_assert(rsp); ogs_assert(trigger); @@ -737,7 +725,7 @@ * other cause value on failure */ uint8_t smf_epc_n4_handle_session_establishment_response( smf_sess_t *sess, ogs_pfcp_xact_t *xact, - ogs_pfcp_message_t *pfcp_message) + ogs_pfcp_session_establishment_response_t *rsp) { uint8_t cause_value = OGS_PFCP_CAUSE_REQUEST_ACCEPTED; @@ -745,12 +733,8 @@ ogs_pfcp_f_seid_t *up_f_seid = NULL; - ogs_pfcp_session_establishment_response_t *rsp = NULL; - ogs_assert(sess); ogs_assert(xact); - ogs_assert(pfcp_message); - rsp = &pfcp_message->pfcp_session_establishment_response; ogs_assert(rsp); ogs_debug("Session Establishment Response epc"); @@ -844,7 +828,7 @@ void smf_epc_n4_handle_session_modification_response( smf_sess_t *sess, ogs_pfcp_xact_t *xact, ogs_gtp2_message_t *recv_message, - ogs_pfcp_message_t *pfcp_message) + ogs_pfcp_session_modification_response_t *rsp) { int i; @@ -860,13 +844,9 @@ ogs_pfcp_pdr_t *pdr = NULL; ogs_pfcp_far_t *far = NULL; - ogs_pfcp_session_modification_response_t *rsp = NULL; - OGS_LIST(pdr_to_create_list); ogs_assert(xact); - ogs_assert(pfcp_message); - rsp = &pfcp_message->pfcp_session_modification_response; ogs_assert(rsp); ogs_debug("Session Modification Response epc"); @@ -1113,17 +1093,13 @@ uint8_t smf_epc_n4_handle_session_deletion_response( smf_sess_t *sess, ogs_pfcp_xact_t *xact, - ogs_pfcp_message_t *pfcp_message) + ogs_pfcp_session_deletion_response_t *rsp) { smf_bearer_t *bearer = NULL; unsigned int i; - ogs_pfcp_session_deletion_response_t *rsp = NULL; - ogs_assert(sess); ogs_assert(xact); - ogs_assert(pfcp_message); - rsp = &pfcp_message->pfcp_session_deletion_response; ogs_assert(rsp); ogs_debug("Session Deletion Response epc"); @@ -1173,7 +1149,7 @@ void smf_n4_handle_session_report_request( smf_sess_t *sess, ogs_pfcp_xact_t *pfcp_xact, - ogs_pfcp_message_t *pfcp_message) + ogs_pfcp_session_report_request_t *pfcp_req) { smf_ue_t *smf_ue = NULL; smf_bearer_t *qos_flow = NULL; @@ -1186,13 +1162,9 @@ uint16_t pdr_id = 0; unsigned int i; - ogs_pfcp_session_report_request_t *pfcp_req = NULL; - smf_metrics_inst_global_inc(SMF_METR_GLOB_CTR_SM_N4SESSIONREPORT); ogs_assert(pfcp_xact); - ogs_assert(pfcp_message); - pfcp_req = &pfcp_message->pfcp_session_report_request; ogs_assert(pfcp_req); ogs_debug("Session Report Request"); @@ -1210,8 +1182,7 @@ } if (cause_value != OGS_PFCP_CAUSE_REQUEST_ACCEPTED) { - ogs_pfcp_send_error_message(pfcp_xact, - sess ? sess->upf_n4_seid : pfcp_message->h.seid, + ogs_pfcp_send_error_message(pfcp_xact, 0, OGS_PFCP_SESSION_REPORT_RESPONSE_TYPE, cause_value, 0); return; @@ -1251,8 +1222,7 @@ if (paging_policy_indication_value) { ogs_warn("Not implement - " "Paging Policy Indication Value"); - ogs_pfcp_send_error_message(pfcp_xact, - sess ? sess->upf_n4_seid : pfcp_message->h.seid, + ogs_pfcp_send_error_message(pfcp_xact, 0, OGS_PFCP_SESSION_REPORT_RESPONSE_TYPE, OGS_PFCP_CAUSE_SERVICE_NOT_SUPPORTED, 0); return; @@ -1262,8 +1232,7 @@ qos_flow = smf_qos_flow_find_by_qfi(sess, qfi); if (!qos_flow) { ogs_error("Cannot find the QoS Flow%d", qfi); - ogs_pfcp_send_error_message(pfcp_xact, - sess ? sess->upf_n4_seid : pfcp_message->h.seid, + ogs_pfcp_send_error_message(pfcp_xact, 0, OGS_PFCP_SESSION_REPORT_RESPONSE_TYPE, OGS_PFCP_CAUSE_SESSION_CONTEXT_NOT_FOUND, 0); return; @@ -1288,8 +1257,7 @@ if (!pdr) { ogs_error("No Context"); - ogs_pfcp_send_error_message(pfcp_xact, - sess ? sess->upf_n4_seid : pfcp_message->h.seid, + ogs_pfcp_send_error_message(pfcp_xact, 0, OGS_PFCP_SESSION_REPORT_RESPONSE_TYPE, OGS_PFCP_CAUSE_SESSION_CONTEXT_NOT_FOUND, 0); return;
View file
open5gs_2.7.0.128.30648.202404052026.tar.xz/src/smf/n4-handler.h -> open5gs_2.7.0.128.8484a.202404062026.tar.xz/src/smf/n4-handler.h
Changed
@@ -28,28 +28,28 @@ uint8_t smf_5gc_n4_handle_session_establishment_response( smf_sess_t *sess, ogs_pfcp_xact_t *xact, - ogs_pfcp_message_t *pfcp_message); + ogs_pfcp_session_establishment_response_t *rsp); void smf_5gc_n4_handle_session_modification_response( smf_sess_t *sess, ogs_pfcp_xact_t *xact, - ogs_pfcp_message_t *pfcp_message); + ogs_pfcp_session_modification_response_t *rsp); int smf_5gc_n4_handle_session_deletion_response( smf_sess_t *sess, ogs_sbi_stream_t *stream, int trigger, - ogs_pfcp_message_t *pfcp_message); + ogs_pfcp_session_deletion_response_t *rsp); uint8_t smf_epc_n4_handle_session_establishment_response( smf_sess_t *sess, ogs_pfcp_xact_t *xact, - ogs_pfcp_message_t *pfcp_message); + ogs_pfcp_session_establishment_response_t *rsp); void smf_epc_n4_handle_session_modification_response( smf_sess_t *sess, ogs_pfcp_xact_t *xact, ogs_gtp2_message_t *recv_message, - ogs_pfcp_message_t *pfcp_message); + ogs_pfcp_session_modification_response_t *rsp); uint8_t smf_epc_n4_handle_session_deletion_response( smf_sess_t *sess, ogs_pfcp_xact_t *xact, - ogs_pfcp_message_t *pfcp_message); + ogs_pfcp_session_deletion_response_t *rsp); void smf_n4_handle_session_report_request( smf_sess_t *sess, ogs_pfcp_xact_t *pfcp_xact, - ogs_pfcp_message_t *pfcp_message); + ogs_pfcp_session_report_request_t *pfcp_req); uint8_t gtp_cause_from_pfcp(uint8_t pfcp_cause, uint8_t gtp_version);
View file
open5gs_2.7.0.128.30648.202404052026.tar.xz/src/smf/pfcp-sm.c -> open5gs_2.7.0.128.8484a.202404062026.tar.xz/src/smf/pfcp-sm.c
Changed
@@ -337,10 +337,11 @@ if (xact->epc) smf_epc_n4_handle_session_modification_response( - sess, xact, e->gtp2_message, message); + sess, xact, e->gtp2_message, + &message->pfcp_session_modification_response); else smf_5gc_n4_handle_session_modification_response( - sess, xact, message); + sess, xact, &message->pfcp_session_modification_response); break; case OGS_PFCP_SESSION_DELETION_RESPONSE_TYPE: @@ -370,7 +371,7 @@ if (!message->h.seid_presence) ogs_error("No SEID"); smf_n4_handle_session_report_request( - sess, xact, message); + sess, xact, &message->pfcp_session_report_request); break; default:
View file
open5gs_2.7.0.128.30648.202404052026.tar.xz/src/smf/s5c-handler.c -> open5gs_2.7.0.128.8484a.202404062026.tar.xz/src/smf/s5c-handler.c
Changed
@@ -70,7 +70,7 @@ uint8_t smf_s5c_handle_create_session_request( smf_sess_t *sess, ogs_gtp_xact_t *xact, - ogs_gtp2_message_t *gtp2_message) + ogs_gtp2_create_session_request_t *req) { char buf1OGS_ADDRSTRLEN; char buf2OGS_ADDRSTRLEN; @@ -89,11 +89,8 @@ ogs_gtp2_ambr_t *ambr = NULL; uint16_t decoded = 0; - ogs_gtp2_create_session_request_t *req = NULL; - ogs_assert(sess); ogs_assert(xact); - req = >p2_message->create_session_request; ogs_assert(req); ogs_debug("Create Session Request"); @@ -107,18 +104,7 @@ if (req->sender_f_teid_for_control_plane.presence == 0) { ogs_error("No TEID"); cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING; - } else { - /* Control Plane(DL) : SGW-S5C */ - sgw_s5c_teid = req->sender_f_teid_for_control_plane.data; - ogs_assert(sgw_s5c_teid); - sess->sgw_s5c_teid = be32toh(sgw_s5c_teid->teid); - rv = ogs_gtp2_f_teid_to_ip(sgw_s5c_teid, &sess->sgw_s5c_ip); - ogs_assert(rv == OGS_OK); - - ogs_debug(" SGW_S5C_TEID0x%x SMF_N4_TEID0x%x", - sess->sgw_s5c_teid, sess->smf_n4_teid); } - if (req->bearer_contexts_to_be_created0.presence == 0) { ogs_error("No Bearer"); cause_value = OGS_GTP2_CAUSE_MANDATORY_IE_MISSING; @@ -292,6 +278,17 @@ sess->ipv4 ? OGS_INET_NTOP(&sess->ipv4->addr, buf1) : "", sess->ipv6 ? OGS_INET6_NTOP(&sess->ipv6->addr, buf2) : ""); + /* Control Plane(DL) : SGW-S5C */ + sgw_s5c_teid = req->sender_f_teid_for_control_plane.data; + ogs_assert(sgw_s5c_teid); + /* sess->sgw_s5c_teid has already been updated in SMF-SM */ + ogs_assert(sess->sgw_s5c_teid == be32toh(sgw_s5c_teid->teid)); + rv = ogs_gtp2_f_teid_to_ip(sgw_s5c_teid, &sess->sgw_s5c_ip); + ogs_assert(rv == OGS_OK); + + ogs_debug(" SGW_S5C_TEID0x%x SMF_N4_TEID0x%x", + sess->sgw_s5c_teid, sess->smf_n4_teid); + /* Remove all previous bearer */ smf_bearer_remove_all(sess); @@ -426,14 +423,11 @@ uint8_t smf_s5c_handle_delete_session_request( smf_sess_t *sess, ogs_gtp_xact_t *xact, - ogs_gtp2_message_t *gtp2_message) + ogs_gtp2_delete_session_request_t *req) { - ogs_gtp2_delete_session_request_t *req = NULL; - ogs_debug("Delete Session Request"); ogs_assert(xact); - req = >p2_message->delete_session_request; ogs_assert(req); if (!ogs_diam_app_connected(OGS_DIAM_GX_APPLICATION_ID)) { @@ -486,7 +480,8 @@ void smf_s5c_handle_modify_bearer_request( smf_sess_t *sess, ogs_gtp_xact_t *gtp_xact, - ogs_pkbuf_t *gtpbuf, ogs_gtp2_message_t *gtp2_message) + ogs_pkbuf_t *gtpbuf, ogs_gtp2_modify_bearer_request_t *req, + ogs_gtp2_sender_f_teid_t *sender_f_teid) { int rv, i; uint8_t cause_value = 0; @@ -495,14 +490,11 @@ smf_ue_t *smf_ue = NULL; smf_bearer_t *bearer = NULL; - ogs_gtp2_modify_bearer_request_t *req = NULL; - ogs_debug("Modify Bearer Request"); ogs_assert(gtp_xact); - ogs_assert(gtp2_message); - req = >p2_message->modify_bearer_request; ogs_assert(req); + ogs_assert(sender_f_teid); /************************ * Check Session Context @@ -516,7 +508,9 @@ if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) { ogs_gtp2_send_error_message(gtp_xact, - sess ? sess->sgw_s5c_teid : gtp2_message->h.teid, + sess ? sess->sgw_s5c_teid : + sender_f_teid->teid_presence == true ? + sender_f_teid->teid : 0, OGS_GTP2_MODIFY_BEARER_RESPONSE_TYPE, cause_value); return; } @@ -660,7 +654,7 @@ void smf_s5c_handle_create_bearer_response( smf_sess_t *sess, ogs_gtp_xact_t *xact, - ogs_gtp2_message_t *gtp2_message) + ogs_gtp2_create_bearer_response_t *rsp) { int rv; uint8_t cause_value; @@ -669,10 +663,7 @@ smf_bearer_t *bearer = NULL; ogs_pfcp_far_t *dl_far = NULL; - ogs_gtp2_create_bearer_response_t *rsp = NULL; - ogs_assert(sess); - rsp = >p2_message->create_bearer_response; ogs_assert(rsp); ogs_debug("Create Bearer Response"); @@ -837,7 +828,7 @@ void smf_s5c_handle_update_bearer_response( smf_sess_t *sess, ogs_gtp_xact_t *xact, - ogs_gtp2_message_t *gtp2_message) + ogs_gtp2_update_bearer_response_t *rsp) { int rv; uint8_t cause_value; @@ -846,10 +837,7 @@ uint64_t pfcp_flags = 0; smf_bearer_t *bearer = NULL; - ogs_gtp2_update_bearer_response_t *rsp = NULL; - ogs_assert(sess); - rsp = >p2_message->update_bearer_response; ogs_assert(rsp); ogs_debug("Update Bearer Response"); @@ -947,16 +935,13 @@ /* return true if entire session must be released */ bool smf_s5c_handle_delete_bearer_response( smf_sess_t *sess, ogs_gtp_xact_t *xact, - ogs_gtp2_message_t *gtp2_message) + ogs_gtp2_delete_bearer_response_t *rsp) { int rv; uint8_t cause_value; smf_bearer_t *bearer = NULL; - ogs_gtp2_delete_bearer_response_t *rsp = NULL; - ogs_assert(sess); - rsp = >p2_message->delete_bearer_response; ogs_assert(rsp); ogs_debug("Delete Bearer Response"); @@ -1153,7 +1138,8 @@ void smf_s5c_handle_bearer_resource_command( smf_sess_t *sess, ogs_gtp_xact_t *xact, - ogs_gtp2_message_t *gtp2_message) + ogs_gtp2_bearer_resource_command_t *cmd, + ogs_gtp2_sender_f_teid_t *sender_f_teid) { int rv; uint8_t cause_value = 0; @@ -1172,12 +1158,9 @@ int qos_update = 0; int tft_delete = 0; - ogs_gtp2_bearer_resource_command_t *cmd = NULL; - ogs_assert(xact); - ogs_assert(gtp2_message); - cmd = >p2_message->bearer_resource_command; ogs_assert(cmd); + ogs_assert(sender_f_teid); ogs_debug("Bearer Resource Command"); @@ -1212,7 +1195,9 @@ if (cause_value != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) { ogs_gtp2_send_error_message(xact, - sess ? sess->sgw_s5c_teid : gtp2_message->h.teid, + sess ? sess->sgw_s5c_teid : + sender_f_teid->teid_presence == true ?
View file
open5gs_2.7.0.128.30648.202404052026.tar.xz/src/smf/s5c-handler.h -> open5gs_2.7.0.128.8484a.202404062026.tar.xz/src/smf/s5c-handler.h
Changed
@@ -33,25 +33,27 @@ uint8_t smf_s5c_handle_create_session_request( smf_sess_t *sess, ogs_gtp_xact_t *xact, - ogs_gtp2_message_t *gtp2_message); + ogs_gtp2_create_session_request_t *req); uint8_t smf_s5c_handle_delete_session_request( smf_sess_t *sess, ogs_gtp_xact_t *xact, - ogs_gtp2_message_t *gtp2_message); + ogs_gtp2_delete_session_request_t *req); void smf_s5c_handle_modify_bearer_request( smf_sess_t *sess, ogs_gtp_xact_t *xact, - ogs_pkbuf_t *gtpbuf, ogs_gtp2_message_t *gtp2_message); + ogs_pkbuf_t *gtpbuf, ogs_gtp2_modify_bearer_request_t *req, + ogs_gtp2_sender_f_teid_t *sender_f_teid); void smf_s5c_handle_create_bearer_response( smf_sess_t *sess, ogs_gtp_xact_t *xact, - ogs_gtp2_message_t *gtp2_message); + ogs_gtp2_create_bearer_response_t *rsp); void smf_s5c_handle_update_bearer_response( smf_sess_t *sess, ogs_gtp_xact_t *xact, - ogs_gtp2_message_t *gtp2_message); + ogs_gtp2_update_bearer_response_t *rsp); bool smf_s5c_handle_delete_bearer_response( smf_sess_t *sess, ogs_gtp_xact_t *xact, - ogs_gtp2_message_t *gtp2_message); + ogs_gtp2_delete_bearer_response_t *rsp); void smf_s5c_handle_bearer_resource_command( smf_sess_t *sess, ogs_gtp_xact_t *xact, - ogs_gtp2_message_t *gtp2_message); + ogs_gtp2_bearer_resource_command_t *cmd, + ogs_gtp2_sender_f_teid_t *sender_f_teid); #ifdef __cplusplus }
View file
open5gs_2.7.0.128.30648.202404052026.tar.xz/src/smf/smf-sm.c -> open5gs_2.7.0.128.8484a.202404062026.tar.xz/src/smf/smf-sm.c
Changed
@@ -58,6 +58,7 @@ ogs_gtp_xact_t *gtp_xact = NULL; ogs_gtp2_message_t gtp2_message; + ogs_gtp2_sender_f_teid_t gtp2_sender_f_teid; ogs_gtp1_message_t gtp1_message; ogs_diam_gx_message_t *gx_message = NULL; @@ -108,6 +109,8 @@ } e->gtp2_message = >p2_message; + ogs_gtp2_sender_f_teid(>p2_sender_f_teid, >p2_message); + rv = ogs_gtp_xact_receive(smf_gnode->gnode, >p2_message.h, >p_xact); if (rv != OGS_OK) { ogs_pkbuf_free(recvbuf); @@ -144,11 +147,21 @@ } if (!sess) { ogs_error("No Session"); - ogs_gtp2_send_error_message(gtp_xact, gtp2_message.h.teid, + ogs_gtp2_send_error_message(gtp_xact, + gtp2_sender_f_teid.teid_presence == true ? + gtp2_sender_f_teid.teid : 0, OGS_GTP2_CREATE_SESSION_RESPONSE_TYPE, OGS_GTP2_CAUSE_CONTEXT_NOT_FOUND); break; } + + if (gtp2_sender_f_teid.teid_presence == true) + sess->sgw_s5c_teid = gtp2_sender_f_teid.teid; + + ogs_debug(" SGW_S5C_TEID0x%x, Sender F-TEID(%d)0x%x", + sess->sgw_s5c_teid, + gtp2_sender_f_teid.teid_presence, gtp2_sender_f_teid.teid); + e->sess = sess; ogs_fsm_dispatch(&sess->sm, e); break; @@ -158,28 +171,43 @@ smf_metrics_inst_gtp_node_inc(smf_gnode->metrics, SMF_METR_GTP_NODE_CTR_S5C_RX_DELETESESSIONREQ); if (!sess) { ogs_error("No Session"); - ogs_gtp2_send_error_message(gtp_xact, gtp2_message.h.teid, + ogs_gtp2_send_error_message(gtp_xact, + gtp2_sender_f_teid.teid_presence == true ? + gtp2_sender_f_teid.teid : 0, OGS_GTP2_DELETE_SESSION_RESPONSE_TYPE, OGS_GTP2_CAUSE_CONTEXT_NOT_FOUND); break; } + if (gtp2_sender_f_teid.teid_presence == true) { + if (sess->sgw_s5c_teid != gtp2_sender_f_teid.teid) { + ogs_error("Invalid Sender F-TEID 0x%x != 0x%x", + sess->sgw_s5c_teid, gtp2_sender_f_teid.teid); + ogs_gtp2_send_error_message(gtp_xact, + gtp2_sender_f_teid.teid_presence == true ? + gtp2_sender_f_teid.teid : 0, + OGS_GTP2_DELETE_SESSION_RESPONSE_TYPE, + OGS_GTP2_CAUSE_INVALID_MESSAGE_FORMAT); + break; + } + } e->sess = sess; ogs_fsm_dispatch(&sess->sm, e); break; case OGS_GTP2_MODIFY_BEARER_REQUEST_TYPE: if (!gtp2_message.h.teid_presence) ogs_error("No TEID"); smf_s5c_handle_modify_bearer_request( - sess, gtp_xact, recvbuf, >p2_message); + sess, gtp_xact, recvbuf, + >p2_message.modify_bearer_request, >p2_sender_f_teid); break; case OGS_GTP2_CREATE_BEARER_RESPONSE_TYPE: if (!gtp2_message.h.teid_presence) ogs_error("No TEID"); smf_s5c_handle_create_bearer_response( - sess, gtp_xact, >p2_message); + sess, gtp_xact, >p2_message.create_bearer_response); break; case OGS_GTP2_UPDATE_BEARER_RESPONSE_TYPE: if (!gtp2_message.h.teid_presence) ogs_error("No TEID"); smf_s5c_handle_update_bearer_response( - sess, gtp_xact, >p2_message); + sess, gtp_xact, >p2_message.update_bearer_response); break; case OGS_GTP2_DELETE_BEARER_RESPONSE_TYPE: if (!gtp2_message.h.teid_presence) ogs_error("No TEID"); @@ -194,7 +222,8 @@ case OGS_GTP2_BEARER_RESOURCE_COMMAND_TYPE: if (!gtp2_message.h.teid_presence) ogs_error("No TEID"); smf_s5c_handle_bearer_resource_command( - sess, gtp_xact, >p2_message); + sess, gtp_xact, + >p2_message.bearer_resource_command, >p2_sender_f_teid); break; default: ogs_warn("Not implemented(type:%d)", gtp2_message.h.type);
View file
open5gs_2.7.0.128.30648.202404052026.tar.xz/src/upf/n4-handler.c -> open5gs_2.7.0.128.8484a.202404062026.tar.xz/src/upf/n4-handler.c
Changed
@@ -44,7 +44,8 @@ } void upf_n4_handle_session_establishment_request( - upf_sess_t *sess, ogs_pfcp_xact_t *xact, ogs_pfcp_message_t *message) + upf_sess_t *sess, ogs_pfcp_xact_t *xact, + ogs_pfcp_session_establishment_request_t *req) { ogs_pfcp_pdr_t *pdr = NULL; ogs_pfcp_far_t *far = NULL; @@ -57,13 +58,9 @@ ogs_pfcp_sereq_flags_t sereq_flags; bool restoration_indication = false; - ogs_pfcp_session_establishment_request_t *req = NULL; - upf_metrics_inst_global_inc(UPF_METR_GLOB_CTR_SM_N4SESSIONESTABREQ); ogs_assert(xact); - ogs_assert(message); - req = &message->pfcp_session_establishment_request; ogs_assert(req); ogs_debug("Session Establishment Request"); @@ -72,8 +69,7 @@ if (!sess) { ogs_error("No Context"); - ogs_pfcp_send_error_message( - xact, sess ? sess->smf_n4_f_seid.seid : message->h.seid, + ogs_pfcp_send_error_message(xact, 0, OGS_PFCP_SESSION_ESTABLISHMENT_RESPONSE_TYPE, OGS_PFCP_CAUSE_MANDATORY_IE_MISSING, 0); upf_metrics_inst_by_cause_add(OGS_PFCP_CAUSE_MANDATORY_IE_MISSING, @@ -218,14 +214,14 @@ upf_metrics_inst_by_cause_add(cause_value, UPF_METR_CTR_SM_N4SESSIONESTABFAIL, 1); ogs_pfcp_sess_clear(&sess->pfcp); - ogs_pfcp_send_error_message( - xact, sess ? sess->smf_n4_f_seid.seid : message->h.seid, + ogs_pfcp_send_error_message(xact, sess ? sess->smf_n4_f_seid.seid : 0, OGS_PFCP_SESSION_ESTABLISHMENT_RESPONSE_TYPE, cause_value, offending_ie_value); } void upf_n4_handle_session_modification_request( - upf_sess_t *sess, ogs_pfcp_xact_t *xact, ogs_pfcp_message_t *message) + upf_sess_t *sess, ogs_pfcp_xact_t *xact, + ogs_pfcp_session_modification_request_t *req) { ogs_pfcp_pdr_t *pdr = NULL; ogs_pfcp_far_t *far = NULL; @@ -235,11 +231,7 @@ uint8_t offending_ie_value = 0; int i; - ogs_pfcp_session_modification_request_t *req = NULL; - ogs_assert(xact); - ogs_assert(message); - req = &message->pfcp_session_modification_request; ogs_assert(req); ogs_debug("Session Modification Request"); @@ -248,8 +240,7 @@ if (!sess) { ogs_error("No Context"); - ogs_pfcp_send_error_message( - xact, sess ? sess->smf_n4_f_seid.seid : message->h.seid, + ogs_pfcp_send_error_message(xact, 0, OGS_PFCP_SESSION_MODIFICATION_RESPONSE_TYPE, OGS_PFCP_CAUSE_SESSION_CONTEXT_NOT_FOUND, 0); return; @@ -422,30 +413,25 @@ cleanup: ogs_pfcp_sess_clear(&sess->pfcp); - ogs_pfcp_send_error_message( - xact, sess ? sess->smf_n4_f_seid.seid : message->h.seid, + ogs_pfcp_send_error_message(xact, sess ? sess->smf_n4_f_seid.seid : 0, OGS_PFCP_SESSION_MODIFICATION_RESPONSE_TYPE, cause_value, offending_ie_value); } void upf_n4_handle_session_deletion_request( - upf_sess_t *sess, ogs_pfcp_xact_t *xact, ogs_pfcp_message_t *message) + upf_sess_t *sess, ogs_pfcp_xact_t *xact, + ogs_pfcp_session_deletion_request_t *req) { ogs_pfcp_qer_t *qer = NULL; - ogs_pfcp_session_deletion_request_t *req = NULL; - ogs_assert(xact); - ogs_assert(message); - req = &message->pfcp_session_deletion_request; ogs_assert(req); ogs_debug("Session Deletion Request"); if (!sess) { ogs_error("No Context"); - ogs_pfcp_send_error_message(xact, - sess ? sess->smf_n4_f_seid.seid : message->h.seid, + ogs_pfcp_send_error_message(xact, 0, OGS_PFCP_SESSION_DELETION_RESPONSE_TYPE, OGS_PFCP_CAUSE_SESSION_CONTEXT_NOT_FOUND, 0); return; @@ -460,15 +446,12 @@ } void upf_n4_handle_session_report_response( - upf_sess_t *sess, ogs_pfcp_xact_t *xact, ogs_pfcp_message_t *message) + upf_sess_t *sess, ogs_pfcp_xact_t *xact, + ogs_pfcp_session_report_response_t *rsp) { uint8_t cause_value = 0; - ogs_pfcp_session_report_response_t *rsp = NULL; - ogs_assert(xact); - ogs_assert(message); - rsp = &message->pfcp_session_report_response; ogs_assert(rsp); ogs_pfcp_xact_commit(xact);
View file
open5gs_2.7.0.128.30648.202404052026.tar.xz/src/upf/n4-handler.h -> open5gs_2.7.0.128.8484a.202404062026.tar.xz/src/upf/n4-handler.h
Changed
@@ -27,14 +27,18 @@ #endif void upf_n4_handle_session_establishment_request( - upf_sess_t *sess, ogs_pfcp_xact_t *xact, ogs_pfcp_message_t *message); + upf_sess_t *sess, ogs_pfcp_xact_t *xact, + ogs_pfcp_session_establishment_request_t *req); void upf_n4_handle_session_modification_request( - upf_sess_t *sess, ogs_pfcp_xact_t *xact, ogs_pfcp_message_t *message); + upf_sess_t *sess, ogs_pfcp_xact_t *xact, + ogs_pfcp_session_modification_request_t *req); void upf_n4_handle_session_deletion_request( - upf_sess_t *sess, ogs_pfcp_xact_t *xact, ogs_pfcp_message_t *message); + upf_sess_t *sess, ogs_pfcp_xact_t *xact, + ogs_pfcp_session_deletion_request_t *req); void upf_n4_handle_session_report_response( - upf_sess_t *sess, ogs_pfcp_xact_t *xact, ogs_pfcp_message_t *message); + upf_sess_t *sess, ogs_pfcp_xact_t *xact, + ogs_pfcp_session_report_response_t *rsp); #ifdef __cplusplus }
View file
open5gs_2.7.0.128.30648.202404052026.tar.xz/src/upf/pfcp-sm.c -> open5gs_2.7.0.128.8484a.202404062026.tar.xz/src/upf/pfcp-sm.c
Changed
@@ -284,16 +284,20 @@ sess = upf_sess_add_by_message(message); if (sess) OGS_SETUP_PFCP_NODE(sess, node); - upf_n4_handle_session_establishment_request(sess, xact, message); + upf_n4_handle_session_establishment_request( + sess, xact, &message->pfcp_session_establishment_request); break; case OGS_PFCP_SESSION_MODIFICATION_REQUEST_TYPE: - upf_n4_handle_session_modification_request(sess, xact, message); + upf_n4_handle_session_modification_request( + sess, xact, &message->pfcp_session_modification_request); break; case OGS_PFCP_SESSION_DELETION_REQUEST_TYPE: - upf_n4_handle_session_deletion_request(sess, xact, message); + upf_n4_handle_session_deletion_request( + sess, xact, &message->pfcp_session_deletion_request); break; case OGS_PFCP_SESSION_REPORT_RESPONSE_TYPE: - upf_n4_handle_session_report_response(sess, xact, message); + upf_n4_handle_session_report_response( + sess, xact, &message->pfcp_session_report_response); break; default: ogs_error("Not implemented PFCP message type%d",
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
.