Projects
osmocom:master
open5gs
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
Expand all
Collapse all
Changes of Revision 532
View file
commit_0e441cf710bae0f11014c8e6945cfdf4567f3100.txt
Deleted
View file
commit_151275d708fc9b9b0c3af60ab40960168f9fd0a1.txt
Added
View file
open5gs_2.7.2.4530.0e44.dsc -> open5gs_2.7.2.4531.1512.dsc
Changed
@@ -2,7 +2,7 @@ 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.2.4530.0e44 +Version: 2.7.2.4531.1512 Maintainer: Harald Welte <laforge@gnumonks.org> Uploaders: Sukchan Lee <acetcom@gmail.com> Homepage: https://open5gs.org @@ -32,8 +32,8 @@ open5gs-udr deb net optional arch=any open5gs-upf deb net optional arch=any Checksums-Sha1: - ba56d0188b67eeea39cbb30b91dda24edae61940 14508800 open5gs_2.7.2.4530.0e44.tar.xz + 80ef6be38d24a2de7428cd58bffe076d3f6ad4b4 14510912 open5gs_2.7.2.4531.1512.tar.xz Checksums-Sha256: - 02ee8c54e88d6938b6b5af61673bf499c75c3b8be40081e536dc4d8a6da76ec6 14508800 open5gs_2.7.2.4530.0e44.tar.xz + c22978228070dc76feb5278c54a28921fad34fd5c762390b2a858fac23b9892a 14510912 open5gs_2.7.2.4531.1512.tar.xz Files: - 8d0b0b772638e1e5d67646005d53233d 14508800 open5gs_2.7.2.4530.0e44.tar.xz + 796ab10328be55f03b990a45beb538ed 14510912 open5gs_2.7.2.4531.1512.tar.xz
View file
open5gs_2.7.2.4530.0e44.tar.xz/.tarball-version -> open5gs_2.7.2.4531.1512.tar.xz/.tarball-version
Changed
@@ -1 +1 @@ -2.7.2.4530-0e44 +2.7.2.4531-1512
View file
open5gs_2.7.2.4530.0e44.tar.xz/debian/changelog -> open5gs_2.7.2.4531.1512.tar.xz/debian/changelog
Changed
@@ -1,8 +1,8 @@ -open5gs (2.7.2.4530.0e44) unstable; urgency=medium +open5gs (2.7.2.4531.1512) unstable; urgency=medium * Automatically generated changelog entry for building the Osmocom master feed - -- Osmocom OBS scripts <info@osmocom.org> Sun, 20 Oct 2024 07:41:29 +0000 + -- Osmocom OBS scripts <info@osmocom.org> Sun, 20 Oct 2024 09:54:44 +0000 open5gs (2.7.2) unstable; urgency=medium
View file
open5gs_2.7.2.4530.0e44.tar.xz/lib/pfcp/build.c -> open5gs_2.7.2.4531.1512.tar.xz/lib/pfcp/build.c
Changed
@@ -476,7 +476,8 @@ } void ogs_pfcp_build_update_pdr( - ogs_pfcp_tlv_update_pdr_t *message, int i, ogs_pfcp_pdr_t *pdr) + ogs_pfcp_tlv_update_pdr_t *message, int i, + ogs_pfcp_pdr_t *pdr, uint64_t modify_flags) { ogs_pfcp_sdf_filter_t pfcp_sdf_filterOGS_MAX_NUM_OF_FLOW_IN_PDR; int j = 0; @@ -485,64 +486,55 @@ ogs_assert(message); ogs_assert(pdr); + ogs_assert(modify_flags & + (OGS_PFCP_MODIFY_TFT_NEW|OGS_PFCP_MODIFY_TFT_ADD| + OGS_PFCP_MODIFY_TFT_REPLACE|OGS_PFCP_MODIFY_TFT_DELETE| + OGS_PFCP_MODIFY_EPC_TFT_UPDATE| + OGS_PFCP_MODIFY_OUTER_HEADER_REMOVAL)); + message->presence = 1; message->pdr_id.presence = 1; message->pdr_id.u16 = pdr->id; - message->pdi.presence = 1; - message->pdi.source_interface.presence = 1; - message->pdi.source_interface.u8 = pdr->src_if; - - if (pdr->dnn) { - message->pdi.network_instance.presence = 1; - message->pdi.network_instance.len = ogs_fqdn_build( - pdrbufi.dnn, pdr->dnn, strlen(pdr->dnn)); - message->pdi.network_instance.data = pdrbufi.dnn; - } - - memset(pfcp_sdf_filter, 0, sizeof(pfcp_sdf_filter)); - for (j = 0; j < pdr->num_of_flow && j < OGS_MAX_NUM_OF_FLOW_IN_PDR; j++) { - ogs_assert(pdr->flowj.fd || pdr->flowj.bid); - - if (pdr->flowj.fd) { - pfcp_sdf_filterj.fd = 1; - pfcp_sdf_filterj.flow_description_len = - strlen(pdr->flowj.description); - pfcp_sdf_filterj.flow_description = pdr->flowj.description; + if (modify_flags & + (OGS_PFCP_MODIFY_TFT_NEW|OGS_PFCP_MODIFY_TFT_ADD| + OGS_PFCP_MODIFY_TFT_REPLACE|OGS_PFCP_MODIFY_TFT_DELETE| + OGS_PFCP_MODIFY_EPC_TFT_UPDATE)) { + message->pdi.presence = 1; + message->pdi.source_interface.presence = 1; + message->pdi.source_interface.u8 = pdr->src_if; + + memset(pfcp_sdf_filter, 0, sizeof(pfcp_sdf_filter)); + for (j = 0; j < pdr->num_of_flow && j < OGS_MAX_NUM_OF_FLOW_IN_PDR; j++) { + ogs_assert(pdr->flowj.fd || pdr->flowj.bid); + + if (pdr->flowj.fd) { + pfcp_sdf_filterj.fd = 1; + pfcp_sdf_filterj.flow_description_len = + strlen(pdr->flowj.description); + pfcp_sdf_filterj.flow_description = pdr->flowj.description; + } + if (pdr->flowj.bid) { + pfcp_sdf_filterj.bid = 1; + pfcp_sdf_filterj.sdf_filter_id = pdr->flowj.sdf_filter_id; + } + + len = sizeof(ogs_pfcp_sdf_filter_t) + + pfcp_sdf_filterj.flow_description_len; + + message->pdi.sdf_filterj.presence = 1; + pdrbufi.sdf_filterj = ogs_calloc(1, len); + ogs_assert(pdrbufi.sdf_filterj); + ogs_pfcp_build_sdf_filter(&message->pdi.sdf_filterj, + &pfcp_sdf_filterj, pdrbufi.sdf_filterj, len); } - if (pdr->flowj.bid) { - pfcp_sdf_filterj.bid = 1; - pfcp_sdf_filterj.sdf_filter_id = pdr->flowj.sdf_filter_id; - } - - len = sizeof(ogs_pfcp_sdf_filter_t) + - pfcp_sdf_filterj.flow_description_len; - - message->pdi.sdf_filterj.presence = 1; - pdrbufi.sdf_filterj = ogs_calloc(1, len); - ogs_assert(pdrbufi.sdf_filterj); - ogs_pfcp_build_sdf_filter(&message->pdi.sdf_filterj, - &pfcp_sdf_filterj, pdrbufi.sdf_filterj, len); } - - if (pdr->ue_ip_addr_len) { - message->pdi.ue_ip_address.presence = 1; - message->pdi.ue_ip_address.data = &pdr->ue_ip_addr; - message->pdi.ue_ip_address.len = pdr->ue_ip_addr_len; - } - - if (pdr->f_teid_len) { - memcpy(&pdrbufi.f_teid, &pdr->f_teid, pdr->f_teid_len); - pdrbufi.f_teid.teid = htobe32(pdr->f_teid.teid); - - message->pdi.local_f_teid.presence = 1; - message->pdi.local_f_teid.data = &pdrbufi.f_teid; - message->pdi.local_f_teid.len = pdr->f_teid_len; - } - - if (pdr->qfi) { - message->pdi.qfi.presence = 1; - message->pdi.qfi.u8 = pdr->qfi; + if (modify_flags & OGS_PFCP_MODIFY_OUTER_HEADER_REMOVAL) { + if (pdr->outer_header_removal_len) { + message->outer_header_removal.presence = 1; + message->outer_header_removal.data = &pdr->outer_header_removal; + message->outer_header_removal.len = pdr->outer_header_removal_len; + } } }
View file
open5gs_2.7.2.4530.0e44.tar.xz/lib/pfcp/build.h -> open5gs_2.7.2.4531.1512.tar.xz/lib/pfcp/build.h
Changed
@@ -43,7 +43,8 @@ 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); + 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);
View file
open5gs_2.7.2.4530.0e44.tar.xz/lib/pfcp/context.h -> open5gs_2.7.2.4531.1512.tar.xz/lib/pfcp/context.h
Changed
@@ -28,10 +28,10 @@ extern "C" { #endif -#define OGS_PFCP_DEFAULT_PDR_PRECEDENCE 255 -#define OGS_PFCP_INDIRECT_PDR_PRECEDENCE 1 -#define OGS_PFCP_UP2CP_PDR_PRECEDENCE 1 -#define OGS_PFCP_CP2UP_PDR_PRECEDENCE 1000 +#define OGS_PFCP_DEFAULT_PDR_PRECEDENCE 65535 +#define OGS_PFCP_INDIRECT_PDR_PRECEDENCE 4096 +#define OGS_PFCP_UP2CP_PDR_PRECEDENCE 255 +#define OGS_PFCP_CP2UP_PDR_PRECEDENCE 255 #define OGS_PFCP_DEFAULT_CHOOSE_ID 5 #define OGS_PFCP_INDIRECT_DATA_FORWARDING_CHOOSE_ID 10
View file
open5gs_2.7.2.4530.0e44.tar.xz/lib/pfcp/xact.h -> open5gs_2.7.2.4531.1512.tar.xz/lib/pfcp/xact.h
Changed
@@ -100,21 +100,23 @@ #define OGS_PFCP_MODIFY_QOS_CREATE ((uint64_t)1<<14) #define OGS_PFCP_MODIFY_QOS_MODIFY ((uint64_t)1<<15) #define OGS_PFCP_MODIFY_QOS_DELETE ((uint64_t)1<<16) -#define OGS_PFCP_MODIFY_ACTIVATE ((uint64_t)1<<17) -#define OGS_PFCP_MODIFY_DEACTIVATE ((uint64_t)1<<18) -#define OGS_PFCP_MODIFY_END_MARKER ((uint64_t)1<<19) -#define OGS_PFCP_MODIFY_ERROR_INDICATION ((uint64_t)1<<20) -#define OGS_PFCP_MODIFY_XN_HANDOVER ((uint64_t)1<<21) -#define OGS_PFCP_MODIFY_N2_HANDOVER ((uint64_t)1<<22) -#define OGS_PFCP_MODIFY_HANDOVER_CANCEL ((uint64_t)1<<23) -#define OGS_PFCP_MODIFY_URR ((uint64_t)1<<24) /* type of trigger */ -#define OGS_PFCP_MODIFY_URR_MEAS_METHOD ((uint64_t)1<<25) -#define OGS_PFCP_MODIFY_URR_REPORT_TRIGGER ((uint64_t)1<<26) -#define OGS_PFCP_MODIFY_URR_QUOTA_VALIDITY_TIME ((uint64_t)1<<27) -#define OGS_PFCP_MODIFY_URR_VOLUME_QUOTA ((uint64_t)1<<28) -#define OGS_PFCP_MODIFY_URR_TIME_QUOTA ((uint64_t)1<<29) -#define OGS_PFCP_MODIFY_URR_VOLUME_THRESH ((uint64_t)1<<30) -#define OGS_PFCP_MODIFY_URR_TIME_THRESH ((uint64_t)1<<31) +#define OGS_PFCP_MODIFY_OUTER_HEADER_REMOVAL ((uint64_t)1<<17) +#define OGS_PFCP_MODIFY_ACTIVATE ((uint64_t)1<<18) +#define OGS_PFCP_MODIFY_DEACTIVATE ((uint64_t)1<<19) +#define OGS_PFCP_MODIFY_END_MARKER ((uint64_t)1<<20) +#define OGS_PFCP_MODIFY_ERROR_INDICATION ((uint64_t)1<<21) +#define OGS_PFCP_MODIFY_XN_HANDOVER ((uint64_t)1<<22) +#define OGS_PFCP_MODIFY_N2_HANDOVER ((uint64_t)1<<23) +#define OGS_PFCP_MODIFY_HANDOVER_CANCEL ((uint64_t)1<<24) +#define OGS_PFCP_MODIFY_HOME_ROUTED_ROAMING ((uint64_t)1<<25) +#define OGS_PFCP_MODIFY_URR ((uint64_t)1<<26) /* type of trigger */ +#define OGS_PFCP_MODIFY_URR_MEAS_METHOD ((uint64_t)1<<27) +#define OGS_PFCP_MODIFY_URR_REPORT_TRIGGER ((uint64_t)1<<28) +#define OGS_PFCP_MODIFY_URR_QUOTA_VALIDITY_TIME ((uint64_t)1<<29) +#define OGS_PFCP_MODIFY_URR_VOLUME_QUOTA ((uint64_t)1<<30) +#define OGS_PFCP_MODIFY_URR_TIME_QUOTA ((uint64_t)1<<31) +#define OGS_PFCP_MODIFY_URR_VOLUME_THRESH ((uint64_t)1<<32) +#define OGS_PFCP_MODIFY_URR_TIME_THRESH ((uint64_t)1<<33) uint64_t modify_flags; #define OGS_PFCP_DELETE_TRIGGER_LOCAL_INITIATED 1
View file
open5gs_2.7.2.4530.0e44.tar.xz/src/sgwc/context.h -> open5gs_2.7.2.4531.1512.tar.xz/src/sgwc/context.h
Changed
@@ -89,6 +89,9 @@ /* APN Configuration */ ogs_session_t session; + /* PDN Address Allocation (PAA) */ + ogs_paa_t paa; + ogs_list_t bearer_list; /* Related Context */
View file
open5gs_2.7.2.4530.0e44.tar.xz/src/sgwc/s11-handler.c -> open5gs_2.7.2.4531.1512.tar.xz/src/sgwc/s11-handler.c
Changed
@@ -428,6 +428,7 @@ sgwc_sess_t *sess = NULL; sgwc_bearer_t *bearer = NULL; sgwc_tunnel_t *dl_tunnel = NULL; + ogs_pfcp_pdr_t *pdr = NULL; ogs_pfcp_far_t *far = NULL; ogs_ip_t remote_ip; ogs_ip_t zero_ip; @@ -515,8 +516,10 @@ ogs_assert(current_xact); current_xact->assoc_xact_id = s11_xact->id; - current_xact->modify_flags = OGS_PFCP_MODIFY_SESSION| - OGS_PFCP_MODIFY_DL_ONLY|OGS_PFCP_MODIFY_ACTIVATE; + current_xact->modify_flags = + OGS_PFCP_MODIFY_SESSION|OGS_PFCP_MODIFY_DL_ONLY| + OGS_PFCP_MODIFY_OUTER_HEADER_REMOVAL| + OGS_PFCP_MODIFY_ACTIVATE; if (gtpbuf) { current_xact->gtpbuf = ogs_pkbuf_copy(gtpbuf); ogs_assert(current_xact->gtpbuf); @@ -553,6 +556,24 @@ memcpy(&dl_tunnel->remote_ip, &remote_ip, sizeof(ogs_ip_t)); + pdr = dl_tunnel->pdr; + ogs_assert(pdr); + + pdr->outer_header_removal_len = 1; + if (sess->session.session_type == OGS_PDU_SESSION_TYPE_IPV4) { + pdr->outer_header_removal.description = + OGS_PFCP_OUTER_HEADER_REMOVAL_GTPU_UDP_IPV4; + } else if (sess->session.session_type == OGS_PDU_SESSION_TYPE_IPV6) { + pdr->outer_header_removal.description = + OGS_PFCP_OUTER_HEADER_REMOVAL_GTPU_UDP_IPV6; + } else if (sess->session.session_type == OGS_PDU_SESSION_TYPE_IPV4V6) { + pdr->outer_header_removal.description = + OGS_PFCP_OUTER_HEADER_REMOVAL_GTPU_UDP_IP; + } else { + ogs_error("Invalid session_type %d", sess->session.session_type); + ogs_assert_if_reached(); + } + far = dl_tunnel->far; ogs_assert(far); @@ -745,6 +766,7 @@ sgwc_bearer_t *bearer = NULL; ogs_pool_id_t bearer_id = OGS_INVALID_POOL_ID; sgwc_tunnel_t *dl_tunnel = NULL, *ul_tunnel = NULL; + ogs_pfcp_pdr_t *pdr = NULL; ogs_pfcp_far_t *far = NULL; ogs_gtp_xact_t *s5c_xact = NULL; @@ -912,6 +934,25 @@ ogs_assert(OGS_OK == ogs_gtp2_f_teid_to_ip(enb_s1u_teid, &dl_tunnel->remote_ip)); + pdr = dl_tunnel->pdr; + ogs_assert(pdr); + + pdr->outer_header_removal_len = 1; + if (sess->session.session_type == OGS_PDU_SESSION_TYPE_IPV4) { + pdr->outer_header_removal.description = + OGS_PFCP_OUTER_HEADER_REMOVAL_GTPU_UDP_IPV4; + } else if (sess->session.session_type == OGS_PDU_SESSION_TYPE_IPV6) { + pdr->outer_header_removal.description = + OGS_PFCP_OUTER_HEADER_REMOVAL_GTPU_UDP_IPV6; + } else if (sess->session.session_type == + OGS_PDU_SESSION_TYPE_IPV4V6) { + pdr->outer_header_removal.description = + OGS_PFCP_OUTER_HEADER_REMOVAL_GTPU_UDP_IP; + } else { + ogs_error("Invalid session_type %d", sess->session.session_type); + ogs_assert_if_reached(); + } + far = dl_tunnel->far; ogs_assert(far); @@ -1341,6 +1382,7 @@ sgwc_sess_t *sess = NULL; sgwc_bearer_t *bearer = NULL; sgwc_tunnel_t *tunnel = NULL; + ogs_pfcp_pdr_t *pdr = NULL; ogs_pfcp_far_t *far = NULL; ogs_gtp2_create_indirect_data_forwarding_tunnel_request_t *req = NULL; @@ -1393,6 +1435,8 @@ bearer = sgwc_bearer_find_by_ue_ebi(sgwc_ue, req->bearer_contextsi.eps_bearer_id.u8); ogs_assert(bearer); + sess = sgwc_sess_find_by_id(bearer->sess_id); + ogs_assert(sess); if (req->bearer_contextsi.s1_u_enodeb_f_teid.presence) { req_teid = req->bearer_contextsi.s1_u_enodeb_f_teid.data; @@ -1413,6 +1457,26 @@ return; } + pdr = tunnel->pdr; + ogs_assert(pdr); + + pdr->outer_header_removal_len = 1; + if (sess->session.session_type == OGS_PDU_SESSION_TYPE_IPV4) { + pdr->outer_header_removal.description = + OGS_PFCP_OUTER_HEADER_REMOVAL_GTPU_UDP_IPV4; + } else if (sess->session.session_type == OGS_PDU_SESSION_TYPE_IPV6) { + pdr->outer_header_removal.description = + OGS_PFCP_OUTER_HEADER_REMOVAL_GTPU_UDP_IPV6; + } else if (sess->session.session_type == + OGS_PDU_SESSION_TYPE_IPV4V6) { + pdr->outer_header_removal.description = + OGS_PFCP_OUTER_HEADER_REMOVAL_GTPU_UDP_IP; + } else { + ogs_error("Invalid session_type %d", + sess->session.session_type); + ogs_assert_if_reached(); + } + far = tunnel->far; ogs_assert(far); @@ -1448,6 +1512,26 @@ return; } + pdr = tunnel->pdr; + ogs_assert(pdr); + + pdr->outer_header_removal_len = 1; + if (sess->session.session_type == OGS_PDU_SESSION_TYPE_IPV4) { + pdr->outer_header_removal.description = + OGS_PFCP_OUTER_HEADER_REMOVAL_GTPU_UDP_IPV4; + } else if (sess->session.session_type == OGS_PDU_SESSION_TYPE_IPV6) { + pdr->outer_header_removal.description = + OGS_PFCP_OUTER_HEADER_REMOVAL_GTPU_UDP_IPV6; + } else if (sess->session.session_type == + OGS_PDU_SESSION_TYPE_IPV4V6) { + pdr->outer_header_removal.description = + OGS_PFCP_OUTER_HEADER_REMOVAL_GTPU_UDP_IP; + } else { + ogs_error("Invalid session_type %d", + sess->session.session_type); + ogs_assert_if_reached(); + } + far = tunnel->far; ogs_assert(far);
View file
open5gs_2.7.2.4530.0e44.tar.xz/src/sgwc/s5c-handler.c -> open5gs_2.7.2.4531.1512.tar.xz/src/sgwc/s5c-handler.c
Changed
@@ -76,6 +76,7 @@ sgwc_ue_t *sgwc_ue = NULL; sgwc_bearer_t *bearer = NULL; sgwc_tunnel_t *ul_tunnel = NULL; + ogs_pfcp_pdr_t *pdr = NULL; ogs_pfcp_far_t *far = NULL; ogs_gtp2_f_teid_t *pgw_s5c_teid = NULL; @@ -145,6 +146,17 @@ if (rsp->pdn_address_allocation.presence == 0) { ogs_error("No PDN Address Allocation Cause:%d", session_cause); cause_value = OGS_GTP2_CAUSE_CONDITIONAL_IE_MISSING; + } else { + memcpy(&sess->paa, rsp->pdn_address_allocation.data, + rsp->pdn_address_allocation.len); + sess->session.session_type = sess->paa.session_type; + if (sess->session.session_type == OGS_PDU_SESSION_TYPE_IPV4) { + } else if (sess->session.session_type == OGS_PDU_SESSION_TYPE_IPV6) { + } else if (sess->session.session_type == OGS_PDU_SESSION_TYPE_IPV4V6) { + } else { + ogs_error("Unknown session-type %d", sess->session.session_type); + cause_value = OGS_GTP2_CAUSE_PREFERRED_PDN_TYPE_NOT_SUPPORTED; + } } if (rsp->cause.presence == 0) { @@ -253,6 +265,24 @@ return; } + pdr = ul_tunnel->pdr; + ogs_assert(pdr); + + pdr->outer_header_removal_len = 1; + if (sess->session.session_type == OGS_PDU_SESSION_TYPE_IPV4) { + pdr->outer_header_removal.description = + OGS_PFCP_OUTER_HEADER_REMOVAL_GTPU_UDP_IPV4; + } else if (sess->session.session_type == OGS_PDU_SESSION_TYPE_IPV6) { + pdr->outer_header_removal.description = + OGS_PFCP_OUTER_HEADER_REMOVAL_GTPU_UDP_IPV6; + } else if (sess->session.session_type == OGS_PDU_SESSION_TYPE_IPV4V6) { + pdr->outer_header_removal.description = + OGS_PFCP_OUTER_HEADER_REMOVAL_GTPU_UDP_IP; + } else { + ogs_error("Invalid session_type %d", sess->session.session_type); + ogs_assert_if_reached(); + } + far = ul_tunnel->far; ogs_assert(far); @@ -286,7 +316,9 @@ ogs_assert(OGS_OK == sgwc_pfcp_send_session_modification_request( sess, s11_xact->id, gtpbuf, - OGS_PFCP_MODIFY_UL_ONLY|OGS_PFCP_MODIFY_ACTIVATE)); + OGS_PFCP_MODIFY_UL_ONLY| + OGS_PFCP_MODIFY_OUTER_HEADER_REMOVAL| + OGS_PFCP_MODIFY_ACTIVATE)); } void sgwc_s5c_handle_modify_bearer_response( @@ -536,6 +568,7 @@ sgwc_ue_t *sgwc_ue = NULL; sgwc_bearer_t *bearer = NULL; sgwc_tunnel_t *ul_tunnel = NULL; + ogs_pfcp_pdr_t *pdr = NULL; ogs_pfcp_far_t *far = NULL; ogs_gtp2_create_bearer_request_t *req = NULL; @@ -630,6 +663,25 @@ return; } + pdr = ul_tunnel->pdr; + ogs_assert(pdr); + + pdr->outer_header_removal_len = 1; + if (sess->session.session_type == OGS_PDU_SESSION_TYPE_IPV4) { + pdr->outer_header_removal.description = + OGS_PFCP_OUTER_HEADER_REMOVAL_GTPU_UDP_IPV4; + } else if (sess->session.session_type == OGS_PDU_SESSION_TYPE_IPV6) { + pdr->outer_header_removal.description = + OGS_PFCP_OUTER_HEADER_REMOVAL_GTPU_UDP_IPV6; + } else if (sess->session.session_type == + OGS_PDU_SESSION_TYPE_IPV4V6) { + pdr->outer_header_removal.description = + OGS_PFCP_OUTER_HEADER_REMOVAL_GTPU_UDP_IP; + } else { + ogs_error("Invalid session_type %d", sess->session.session_type); + ogs_assert_if_reached(); + } + far = ul_tunnel->far; ogs_assert(far);
View file
open5gs_2.7.2.4530.0e44.tar.xz/src/sgwc/sxa-build.c -> open5gs_2.7.2.4531.1512.tar.xz/src/sgwc/sxa-build.c
Changed
@@ -131,6 +131,7 @@ int num_of_remove_far = 0; int num_of_create_pdr = 0; int num_of_create_far = 0; + int num_of_update_pdr = 0; int num_of_update_far = 0; uint64_t modify_flags = 0; @@ -259,10 +260,25 @@ ogs_assert_if_reached(); } + + if (modify_flags & OGS_PFCP_MODIFY_OUTER_HEADER_REMOVAL) { + /* Update PDR */ + pdr = tunnel->pdr; + if (pdr) { + ogs_pfcp_build_update_pdr( + &req->update_pdrnum_of_update_pdr, + num_of_update_pdr, pdr, modify_flags); + num_of_update_pdr++; + } else + ogs_assert_if_reached(); + } } } } + ogs_assert(num_of_remove_pdr + num_of_remove_far + num_of_create_pdr + + num_of_create_far + num_of_update_pdr + num_of_update_far); + pfcp_message->h.type = type; pkbuf = ogs_pfcp_build_msg(pfcp_message); ogs_expect(pkbuf);
View file
open5gs_2.7.2.4530.0e44.tar.xz/src/sgwu/gtp-path.c -> open5gs_2.7.2.4531.1512.tar.xz/src/sgwu/gtp-path.c
Changed
@@ -236,8 +236,7 @@ continue; /* Check if QFI */ - if (header_desc.qos_flow_identifier && - pdr->qfi != header_desc.qos_flow_identifier) + if (pdr->qfi && pdr->qfi != header_desc.qos_flow_identifier) continue; /* Check if Rule List in PDR */
View file
open5gs_2.7.2.4530.0e44.tar.xz/src/smf/context.c -> open5gs_2.7.2.4531.1512.tar.xz/src/smf/context.c
Changed
@@ -1965,7 +1965,7 @@ ul_pdr->src_if = OGS_PFCP_INTERFACE_ACCESS; - ul_pdr->outer_header_removal_len = 2; + ul_pdr->outer_header_removal_len = 1; if (sess->session.session_type == OGS_PDU_SESSION_TYPE_IPV4) { ul_pdr->outer_header_removal.description = OGS_PFCP_OUTER_HEADER_REMOVAL_GTPU_UDP_IPV4; @@ -1975,10 +1975,10 @@ } else if (sess->session.session_type == OGS_PDU_SESSION_TYPE_IPV4V6) { ul_pdr->outer_header_removal.description = OGS_PFCP_OUTER_HEADER_REMOVAL_GTPU_UDP_IP; - } else + } else { + ogs_error("Invalid session_type %d", sess->session.session_type); ogs_assert_if_reached(); - ul_pdr->outer_header_removal.gtpu_extheader_deletion = - OGS_PFCP_PDU_SESSION_CONTAINER_TO_BE_DELETED; + } /* FAR */ dl_far = ogs_pfcp_far_add(&sess->pfcp); @@ -2077,8 +2077,10 @@ } else if (sess->session.session_type == OGS_PDU_SESSION_TYPE_IPV4V6) { pdr->outer_header_removal.description = OGS_PFCP_OUTER_HEADER_REMOVAL_GTPU_UDP_IP; - } else + } else { + ogs_error("Invalid session_type %d", sess->session.session_type); ogs_assert_if_reached(); + } far = ogs_pfcp_far_add(&sess->pfcp); ogs_assert(far); @@ -2245,9 +2247,15 @@ ogs_assert(cp2up_pdr); sess->cp2up_pdr = cp2up_pdr; +#if 0 + /* + * DEPRECATED: + * In PDR, no need to distinguish the Network Instance from CP to UP. + */ ogs_assert(sess->session.name); cp2up_pdr->apn = ogs_strdup(sess->session.name); ogs_assert(cp2up_pdr->apn); +#endif cp2up_pdr->src_if = OGS_PFCP_INTERFACE_CP_FUNCTION; @@ -2261,8 +2269,10 @@ } else if (sess->session.session_type == OGS_PDU_SESSION_TYPE_IPV4V6) { cp2up_pdr->outer_header_removal.description = OGS_PFCP_OUTER_HEADER_REMOVAL_GTPU_UDP_IP; - } else + } else { + ogs_error("Invalid session_type %d", sess->session.session_type); ogs_assert_if_reached(); + } up2cp_pdr = ogs_pfcp_pdr_add(&sess->pfcp); ogs_assert(up2cp_pdr); @@ -2284,8 +2294,10 @@ } else if (sess->session.session_type == OGS_PDU_SESSION_TYPE_IPV4V6) { up2cp_pdr->outer_header_removal.description = OGS_PFCP_OUTER_HEADER_REMOVAL_GTPU_UDP_IP; - } else + } else { + ogs_error("Invalid session_type %d", sess->session.session_type); ogs_assert_if_reached(); + } qos_flow = smf_default_bearer_in_sess(sess); ogs_assert(qos_flow); @@ -2302,14 +2314,27 @@ sess->up2cp_far = up2cp_far; ogs_assert(sess->session.name); +#if 0 + /* + * DEPRECATED: + * In FAR, no need to distinguish the Network Instance from CP to UP. + */ up2cp_far->apn = ogs_strdup(sess->session.name); ogs_assert(up2cp_far->apn); +#endif up2cp_far->dst_if = OGS_PFCP_INTERFACE_CP_FUNCTION; ogs_pfcp_pdr_associate_far(up2cp_pdr, up2cp_far); up2cp_far->apply_action = OGS_PFCP_APPLY_ACTION_FORW; +#if 0 + /* + * MODIFIED the PDI matching for UP2CP + * to not distinguish the QoS Flow Identifier. + * + * When omitted, the UPF was also adjusted to not compare the QFI. + */ if (qos_flow->qer && qos_flow->qfi) { /* To match the PDI of UP2CP_PDR(from ff02::2/128 to assigned) * Router-Solicitation has QFI in the Extended Header */ @@ -2319,6 +2344,7 @@ * it includes QFI in extension header */ ogs_pfcp_pdr_associate_qer(cp2up_pdr, qos_flow->qer); } +#endif } void smf_sess_delete_cp_up_data_forwarding(smf_sess_t *sess) @@ -2415,8 +2441,10 @@ } else if (sess->session.session_type == OGS_PDU_SESSION_TYPE_IPV4V6) { ul_pdr->outer_header_removal.description = OGS_PFCP_OUTER_HEADER_REMOVAL_GTPU_UDP_IP; - } else + } else { + ogs_error("Invalid session_type %d", sess->session.session_type); ogs_assert_if_reached(); + } /* FAR */ dl_far = ogs_pfcp_far_add(&sess->pfcp);
View file
open5gs_2.7.2.4530.0e44.tar.xz/src/smf/n4-build.c -> open5gs_2.7.2.4531.1512.tar.xz/src/smf/n4-build.c
Changed
@@ -489,13 +489,13 @@ if (qos_flow->dl_pdr) { ogs_pfcp_build_update_pdr( &req->update_pdrnum_of_update_pdr, - num_of_update_pdr, qos_flow->dl_pdr); + num_of_update_pdr, qos_flow->dl_pdr, modify_flags); num_of_update_pdr++; } if (qos_flow->ul_pdr) { ogs_pfcp_build_update_pdr( &req->update_pdrnum_of_update_pdr, - num_of_update_pdr, qos_flow->ul_pdr); + num_of_update_pdr, qos_flow->ul_pdr, modify_flags); num_of_update_pdr++; } if (qos_flow->urr) {
View file
open5gs_2.7.2.4530.0e44.tar.xz/src/smf/npcf-handler.c -> open5gs_2.7.2.4531.1512.tar.xz/src/smf/npcf-handler.c
Changed
@@ -521,9 +521,16 @@ &dl_pdr->ue_ip_addr, &dl_pdr->ue_ip_addr_len)); dl_pdr->ue_ip_addr.sd = OGS_PFCP_UE_IP_DST; +#if 0 + /* DEPRECATED: + * + * The UE IP Address is unnecessary in the PDI of the UL PDR + * because the PDR can be found using the TEID. + */ ogs_assert(OGS_OK == ogs_pfcp_paa_to_ue_ip_addr(&sess->paa, &ul_pdr->ue_ip_addr, &ul_pdr->ue_ip_addr_len)); +#endif if (sess->session.ipv4_framed_routes && sess->pfcp_node->up_function_features.frrt) {
View file
open5gs_2.7.2.4530.0e44.tar.xz/src/upf/gtp-path.c -> open5gs_2.7.2.4531.1512.tar.xz/src/upf/gtp-path.c
Changed
@@ -450,8 +450,7 @@ continue; /* Check if QFI */ - if (header_desc.qos_flow_identifier && - pdr->qfi != header_desc.qos_flow_identifier) + if (pdr->qfi && pdr->qfi != header_desc.qos_flow_identifier) continue; /* Check if Rule List in PDR */
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
.