forked from acouzens/open5gs
pfcp: Fix missing fields in ogs_pfcp_build_update_urr()
Flag bitmask check elements are reordered to follow same order as IEs in 3GPP TS 29.244 7.5.4.4 "Update URR".
This commit is contained in:
parent
74fcd9b9c6
commit
3ee4bb7d3c
|
@ -773,21 +773,23 @@ void ogs_pfcp_build_update_urr(
|
||||||
/* No change requested, skip. */
|
/* No change requested, skip. */
|
||||||
if (!(modify_flags & (OGS_PFCP_MODIFY_URR_MEAS_METHOD|
|
if (!(modify_flags & (OGS_PFCP_MODIFY_URR_MEAS_METHOD|
|
||||||
OGS_PFCP_MODIFY_URR_REPORT_TRIGGER|
|
OGS_PFCP_MODIFY_URR_REPORT_TRIGGER|
|
||||||
OGS_PFCP_MODIFY_URR_QUOTA_VALIDITY_TIME|
|
|
||||||
OGS_PFCP_MODIFY_URR_VOLUME_QUOTA|
|
|
||||||
OGS_PFCP_MODIFY_URR_VOLUME_THRESH|
|
OGS_PFCP_MODIFY_URR_VOLUME_THRESH|
|
||||||
|
OGS_PFCP_MODIFY_URR_VOLUME_QUOTA|
|
||||||
|
OGS_PFCP_MODIFY_URR_TIME_THRESH|
|
||||||
OGS_PFCP_MODIFY_URR_TIME_QUOTA|
|
OGS_PFCP_MODIFY_URR_TIME_QUOTA|
|
||||||
OGS_PFCP_MODIFY_URR_TIME_THRESH)))
|
OGS_PFCP_MODIFY_URR_QUOTA_VALIDITY_TIME)))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/* Change request: Send only changed IEs */
|
/* Change request: Send only changed IEs */
|
||||||
message->presence = 1;
|
message->presence = 1;
|
||||||
message->urr_id.presence = 1;
|
message->urr_id.presence = 1;
|
||||||
message->urr_id.u32 = urr->id;
|
message->urr_id.u32 = urr->id;
|
||||||
|
|
||||||
if (modify_flags & OGS_PFCP_MODIFY_URR_MEAS_METHOD) {
|
if (modify_flags & OGS_PFCP_MODIFY_URR_MEAS_METHOD) {
|
||||||
message->measurement_method.presence = 1;
|
message->measurement_method.presence = 1;
|
||||||
message->measurement_method.u8 = urr->meas_method;
|
message->measurement_method.u8 = urr->meas_method;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (modify_flags & OGS_PFCP_MODIFY_URR_REPORT_TRIGGER) {
|
if (modify_flags & OGS_PFCP_MODIFY_URR_REPORT_TRIGGER) {
|
||||||
message->reporting_triggers.presence = 1;
|
message->reporting_triggers.presence = 1;
|
||||||
message->reporting_triggers.u24 = (urr->rep_triggers.reptri_5 << 16)
|
message->reporting_triggers.u24 = (urr->rep_triggers.reptri_5 << 16)
|
||||||
|
@ -804,12 +806,35 @@ void ogs_pfcp_build_update_urr(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (modify_flags & OGS_PFCP_MODIFY_URR_VOLUME_QUOTA) {
|
||||||
|
if (urr->vol_quota.flags) {
|
||||||
|
message->volume_quota.presence = 1;
|
||||||
|
ogs_pfcp_build_volume(
|
||||||
|
&message->volume_quota, &urr->vol_quota,
|
||||||
|
&urrbuf[i].vol_quota, sizeof(urrbuf[i].vol_quota));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (modify_flags & OGS_PFCP_MODIFY_URR_TIME_THRESH) {
|
if (modify_flags & OGS_PFCP_MODIFY_URR_TIME_THRESH) {
|
||||||
if (urr->time_threshold) {
|
if (urr->time_threshold) {
|
||||||
message->time_threshold.presence = 1;
|
message->time_threshold.presence = 1;
|
||||||
message->time_threshold.u32 = urr->time_threshold;
|
message->time_threshold.u32 = urr->time_threshold;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (modify_flags & OGS_PFCP_MODIFY_URR_TIME_QUOTA) {
|
||||||
|
if (urr->time_quota) {
|
||||||
|
message->time_quota.presence = 1;
|
||||||
|
message->time_quota.u32 = urr->time_quota;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (modify_flags & OGS_PFCP_MODIFY_URR_QUOTA_VALIDITY_TIME) {
|
||||||
|
if (urr->quota_validity_time) {
|
||||||
|
message->quota_validity_time.presence = 1;
|
||||||
|
message->quota_validity_time.u32 = urr->quota_validity_time;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct {
|
static struct {
|
||||||
|
|
Loading…
Reference in New Issue