mirror of
https://github.com/open5gs/open5gs.git
synced 2025-11-13 02:17:00 +00:00
1. Fix SGW-U/UPF bug by comparing QFI only when PDI's QFI is present Resolved an issue where the QoS Flow Identifier in the GTP-U Extension Header was incorrectly compared regardless of the presence of PDI's QFI. Updated the implementation to perform the comparison only when PDI's QFI is present. 2. Add Outer Header Removal settings to SGW's PDR where necessary Addressed the absence of Outer Header Removal in the SGW's PDR by adding it to all required locations, ensuring proper header handling. 3. Remove unnecessary GTP-U Extension Header Removals Eliminated all instances of GTP-U Extension Header Removal since they should only be used during handover from 5GS to EPS. This cleanup prevents improper header removals in other scenarios. 4. Delete unnecessary usage of Network Interface and UE IP Address Removed all redundant references to Network Interface and UE IP Address, streamlining the codebase and reducing potential confusion. 5. Change precedence so that Control has higher priority than Data Adjusted the precedence settings to ensure that Control messages are given higher priority over Data, enhancing the system's efficiency and responsiveness.
85 lines
2.9 KiB
C
85 lines
2.9 KiB
C
/*
|
|
* Copyright (C) 2019 by Sukchan Lee <acetcom@gmail.com>
|
|
*
|
|
* This file is part of Open5GS.
|
|
*
|
|
* This program is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU Affero General Public License as published by
|
|
* the Free Software Foundation, either version 3 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#ifndef OGS_PFCP_BUILD_H
|
|
#define OGS_PFCP_BUILD_H
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
ogs_pkbuf_t *ogs_pfcp_build_heartbeat_request(uint8_t type);
|
|
ogs_pkbuf_t *ogs_pfcp_build_heartbeat_response(uint8_t type);
|
|
|
|
ogs_pkbuf_t *ogs_pfcp_cp_build_association_setup_request(uint8_t type);
|
|
ogs_pkbuf_t *ogs_pfcp_cp_build_association_setup_response(uint8_t type,
|
|
uint8_t cause);
|
|
|
|
ogs_pkbuf_t *ogs_pfcp_up_build_association_setup_request(uint8_t type);
|
|
ogs_pkbuf_t *ogs_pfcp_up_build_association_setup_response(uint8_t type,
|
|
uint8_t cause);
|
|
|
|
void ogs_pfcp_pdrbuf_init(void);
|
|
void ogs_pfcp_pdrbuf_clear(void);
|
|
|
|
void ogs_pfcp_build_create_pdr(
|
|
ogs_pfcp_tlv_create_pdr_t *message, int i, ogs_pfcp_pdr_t *pdr);
|
|
bool ogs_pfcp_build_created_pdr(
|
|
ogs_pfcp_tlv_created_pdr_t *message, int i, ogs_pfcp_pdr_t *pdr);
|
|
void ogs_pfcp_build_update_pdr(
|
|
ogs_pfcp_tlv_update_pdr_t *message, int i,
|
|
ogs_pfcp_pdr_t *pdr, uint64_t modify_flags);
|
|
|
|
void ogs_pfcp_build_create_far(
|
|
ogs_pfcp_tlv_create_far_t *message, int i, ogs_pfcp_far_t *far);
|
|
void ogs_pfcp_build_update_far_deactivate(
|
|
ogs_pfcp_tlv_update_far_t *message, int i, ogs_pfcp_far_t *far);
|
|
void ogs_pfcp_build_update_far_activate(
|
|
ogs_pfcp_tlv_update_far_t *message, int i, ogs_pfcp_far_t *far);
|
|
|
|
void ogs_pfcp_build_create_qer(
|
|
ogs_pfcp_tlv_create_qer_t *message, int i, ogs_pfcp_qer_t *qer);
|
|
void ogs_pfcp_build_update_qer(
|
|
ogs_pfcp_tlv_update_qer_t *message, int i,
|
|
ogs_pfcp_qer_t *qer, uint64_t modify_flags);
|
|
|
|
void ogs_pfcp_build_create_urr(
|
|
ogs_pfcp_tlv_create_urr_t *message, int i, ogs_pfcp_urr_t *urr);
|
|
void ogs_pfcp_build_update_urr(
|
|
ogs_pfcp_tlv_update_urr_t *message, int i,
|
|
ogs_pfcp_urr_t *urr, uint64_t modify_flags);
|
|
|
|
void ogs_pfcp_build_create_bar(
|
|
ogs_pfcp_tlv_create_bar_t *message, ogs_pfcp_bar_t *bar);
|
|
|
|
ogs_pkbuf_t *ogs_pfcp_build_session_report_request(
|
|
uint8_t type, ogs_pfcp_user_plane_report_t *report);
|
|
ogs_pkbuf_t *ogs_pfcp_build_session_report_response(
|
|
uint8_t type, uint8_t cause);
|
|
|
|
ogs_pkbuf_t *ogs_pfcp_build_session_deletion_response( uint8_t type, uint8_t cause,
|
|
ogs_pfcp_user_plane_report_t *report);
|
|
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* OGS_PFCP_BUILD_H */
|