[PFCP] Fix wrong endianess enc of some URR values (#1433)

* [PFCP] Fix trailing whitespace

* [PFCP] Fix wrong endianess enc of some URR values

u32 tlvs are already converted to big endian automatically. Manually
doing so ends up in double conversion and hence in wrong endianness
being sent over the wire.
Similar issue was also fixed recently in the PFCP decoding path.
Related: https://github.com/open5gs/open5gs/issues/1349
This commit is contained in:
Pau Espin 2022-03-15 05:34:22 +01:00 committed by GitHub
parent 5b81802be9
commit dd5abb79b4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 19 additions and 19 deletions

View File

@ -573,7 +573,7 @@ void ogs_pfcp_build_create_urr(
| (urr->rep_triggers.reptri_7);
if (urr->meas_period) {
message->measurement_period.presence = 1;
message->measurement_period.u32 = htobe32(urr->meas_period);
message->measurement_period.u32 = urr->meas_period;
}
if (urr->vol_threshold.flags) {
@ -592,27 +592,27 @@ void ogs_pfcp_build_create_urr(
if (urr->event_threshold) {
message->event_threshold.presence = 1;
message->event_threshold.u32 = htobe32(urr->event_threshold);
message->event_threshold.u32 = urr->event_threshold;
}
if (urr->event_quota) {
message->event_quota.presence = 1;
message->event_quota.u32 = htobe32(urr->event_quota);
message->event_quota.u32 = urr->event_quota;
}
if (urr->time_threshold) {
message->time_threshold.presence = 1;
message->time_threshold.u32 = htobe32(urr->time_threshold);
message->time_threshold.u32 = urr->time_threshold;
}
if (urr->time_quota) {
message->time_quota.presence = 1;
message->time_quota.u32 = htobe32(urr->time_quota);
message->time_quota.u32 = urr->time_quota;
}
if (urr->quota_holding_time) {
message->quota_holding_time.presence = 1;
message->quota_holding_time.u32 = htobe32(urr->quota_holding_time);
message->quota_holding_time.u32 = urr->quota_holding_time;
}
if (urr->dropped_dl_traffic_threshold.flags) {
@ -626,7 +626,7 @@ void ogs_pfcp_build_create_urr(
if (urr->quota_validity_time) {
message->quota_validity_time.presence = 1;
message->quota_validity_time.u32 = htobe32(urr->quota_validity_time);
message->quota_validity_time.u32 = urr->quota_validity_time;
}
}
@ -779,7 +779,7 @@ ogs_pkbuf_t *ogs_pfcp_build_session_report_request(
(report->usage_report.rep_triggers.reptri_5 << 16)
| (report->usage_report.rep_triggers.reptri_6 << 8)
| (report->usage_report.rep_triggers.reptri_7);
if (report->usage_report.start_time) {
req->usage_report.start_time.presence = 1;
req->usage_report.start_time.u32 = report->usage_report.start_time;
@ -804,7 +804,7 @@ ogs_pkbuf_t *ogs_pfcp_build_session_report_request(
req->usage_report.duration_measurement.u32 =
report->usage_report.dur_measurement;
}
if (report->usage_report.time_of_first_packet) {
req->usage_report.time_of_first_packet.presence = 1;
req->usage_report.time_of_first_packet.u32 =

View File

@ -87,8 +87,8 @@ typedef struct ogs_pfcp_node_s {
ogs_sock_t *sock; /* Socket Instance */
ogs_sockaddr_t addr; /* Remote Address */
ogs_list_t local_list;
ogs_list_t remote_list;
ogs_list_t local_list;
ogs_list_t remote_list;
ogs_fsm_t sm; /* A state machine */
ogs_timer_t *t_association; /* timer to retry to associate peer node */

View File

@ -20,7 +20,7 @@
#include "ogs-pfcp.h"
bool ogs_pfcp_handle_heartbeat_request(
ogs_pfcp_node_t *node, ogs_pfcp_xact_t *xact,
ogs_pfcp_node_t *node, ogs_pfcp_xact_t *xact,
ogs_pfcp_heartbeat_request_t *req)
{
int rv;
@ -33,7 +33,7 @@ bool ogs_pfcp_handle_heartbeat_request(
}
bool ogs_pfcp_handle_heartbeat_response(
ogs_pfcp_node_t *node, ogs_pfcp_xact_t *xact,
ogs_pfcp_node_t *node, ogs_pfcp_xact_t *xact,
ogs_pfcp_heartbeat_response_t *rsp)
{
ogs_assert(xact);
@ -46,7 +46,7 @@ bool ogs_pfcp_handle_heartbeat_response(
}
bool ogs_pfcp_cp_handle_association_setup_request(
ogs_pfcp_node_t *node, ogs_pfcp_xact_t *xact,
ogs_pfcp_node_t *node, ogs_pfcp_xact_t *xact,
ogs_pfcp_association_setup_request_t *req)
{
int i;
@ -93,7 +93,7 @@ bool ogs_pfcp_cp_handle_association_setup_request(
}
bool ogs_pfcp_cp_handle_association_setup_response(
ogs_pfcp_node_t *node, ogs_pfcp_xact_t *xact,
ogs_pfcp_node_t *node, ogs_pfcp_xact_t *xact,
ogs_pfcp_association_setup_response_t *rsp)
{
int i;
@ -1087,7 +1087,7 @@ ogs_pfcp_urr_t *ogs_pfcp_handle_create_urr(ogs_pfcp_sess_t *sess,
uint8_t *cause_value, uint8_t *offending_ie_value)
{
ogs_pfcp_urr_t *urr = NULL;
ogs_assert(message);
ogs_assert(sess);
@ -1184,7 +1184,7 @@ ogs_pfcp_urr_t *ogs_pfcp_handle_update_urr(ogs_pfcp_sess_t *sess,
uint8_t *cause_value, uint8_t *offending_ie_value)
{
ogs_pfcp_urr_t *urr = NULL;
ogs_assert(message);
ogs_assert(sess);