Skip to content

replace_packet_filters via async Gx CCR-U MODIFICATION (#22 Increment 5) - #55

Closed
next-nf wants to merge 1 commit into
async-ue-bearer-22-inc4from
async-ue-bearer-22-inc5
Closed

replace_packet_filters via async Gx CCR-U MODIFICATION (#22 Increment 5)#55
next-nf wants to merge 1 commit into
async-ue-bearer-22-inc4from
async-ue-bearer-22-inc5

Conversation

@next-nf

@next-nf next-nf commented Jul 22, 2026

Copy link
Copy Markdown
Owner

Stacked on #54 (base async-ue-bearer-22-inc4). Fifth increment of #22.

Handles a UE replace_packet_filters Bearer Resource Command: report each replaced filter to the PCRF as a Gx CCR-Update MODIFICATION (naming the existing filter's SDF handle + carrying its new content), await the rule change, and emit a PTI-echoing Update Bearer Request with the changed TFT — replacing the true -> reject replace_packet_filters hit before.

A delete/add hybrid — almost all reuse

MODIFICATION is the correct (and only single-message) encoding: a CCR-U's Packet-Filter-Operation is message-level, so delete+add can't coexist in one message; the grouped AVP carries Packet-Filter-Identifier (WHICH filter) + Packet-Filter-Content (the NEW value) together.

  • New (tiny): smf_tft:flow_info_to_pf_modify_group/2 = the Inc4 ADD content group plus a Packet-Filter-Identifier (the SDF handle, from inverting sdf_to_pf). With a diameter_Gx_SUITE wire round-trip confirming id + content coexist on the wire.
  • ue_replace_filters_proc/4 — delete's reverse-lookup (pf_ids_to_sdf + zip), add's content, MODIFICATION op, remove+install fold, and the shared ue_delete_outcome branch (empty → Delete edge / non-empty → Update). Reuses emit_ue_update_bearer/await_pfcp_modify/detect_modified_bearers/ue_update_outcome/br_ok/br_err/ccr_result/fold_cca verbatim.

Tests

  • pgw_SUITE 132/132 (131 prior + 1 new: one-filter bearer → replace with new content → one Update Bearer Request echoing the PTI carrying the changed, still-one-filter TFT; the delete/add regression stays green). smf_tft_SUITE (modify-group unit), diameter_Gx_SUITE 9/9 (MODIFICATION round-trip). Default compile green.
  • The one design risk — whether a same-Charging-Rule-Name reinstall with changed Flow-Information surfaces a TFT delta through gx_events_to_pcc_ctx(install) so detect_modified_bearers fires — is empirically confirmed by the passing e2e (the Update Bearer only fires if the fold saw the change).

Note

Executed inline (authored directly, comprehensive tests, no separate implementer/reviewer subagent — unlike Inc2–4).

Out of scope

Requested-QoS/GBR change (Increment 6). A replace whose PCRF response binds a new {QCI,ARP} — out of scope; the branch acks gracefully.

@next-nf

next-nf commented Jul 25, 2026

Copy link
Copy Markdown
Owner Author

Superseded by the async-invoke restack. This increment was re-authored onto invoke(pipeline_async) and collapsed into #56 (delete/add/replace together) on the redone #48 foundation. Closing in favor of #56.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant