Skip to content

lte_lpp: add information-only analyzer to track LPP lifecycle - #1184

Draft
philgebhardt wants to merge 1 commit into
EFForg:mainfrom
philgebhardt:1072/analyzer
Draft

philgebhardt wants to merge 1 commit into
EFForg:mainfrom
philgebhardt:1072/analyzer

Conversation

@philgebhardt

@philgebhardt philgebhardt commented Oct 24, 2026 •

Copy link
Copy Markdown
Contributor

This is the analyzer component of #1072.

As documented in NasLppAnalyzer, and detailed further in nas_lpp::State:

The NasLppAnalyzer looks across packages of supported types for the presence of LPP_Message buffers. Tracks messages according to their LPP transaction within an LPP session. See State for the state machine rules.

Events (Informational):

  • summary events for ended LPP transactions (including timeouts and errors)
  • rate-limited progress events for ongoing LPP transactions
  • other events for decoding failures, protocol errors, and evicted transactions

Supported Types

  • EMMDL_LTEPositioningProtocolLPPMessageContainer
  • EMMUL_LTEPositioningProtocolLPPMessageContainer

limitations:

  • No support for packets of type LocationServicesMessageContainer, which contain more LPP messages (potentially in batch). Transactions over this communication may be missed, or produce partially captured transactions. Requires ASN.1 and bindings from TS 24.080
"LPP::Transaction[deadbeef/s000]::Progress[RequestLocationInformation -> ProvideLocationInformation x2]"
"LPP::Transaction[deadbeef/s000]::Summary[RequestCapabilities -> ProvideCapabilities -> Abort(TARGET_DEVICE_ABORT)]"
"LPP::Transaction[deadbeef/----]::Error(...)"

See: #1072

Pull Request Checklist

  • The Rayhunter team has recently expressed interest in reviewing a PR for this.
    • If not, this PR may be closed due our limited resources and need to prioritize how we spend them.
  • Added or updated any documentation as needed to support the changes in this PR.
  • Code has been linted and run through cargo fmt.
  • If any new functionality has been added, unit tests were also added.
  • CONTRIBUTING.md has been read.
  • Your pull request is fewer than ~400 lines of code.
    • it is not. I tried to find the right balance of documentation and testing against this line cap
    • I'm more than happy to split this PR, or make other adjustments on request

You must check one of:

  • No generative AI (including LLMs) tools were used to create this PR.
    • I did use LLMs for research assistance, including helping me track down references to 3GPP spec material, and pressure-testing my ideas. However everything present in this commit was directly designed and authored by me with no generative AI. I also read all relevant spec material myself before using them as implementation constraints.
  • Generative AI was used to create this PR. I certify that I have read and understand the code, and that all comments and descriptions were authored by myself and are not the product of generative AI.

This is the analyzer component of EFForg#1072.

As documented in `NasLppAnalyzer`, and detailed further in `nas_lpp::State`:

The `NasLppAnalyzer` looks across packages of supported types for the presence of `LPP_Message` buffers.
Tracks messages according to their LPP transaction within an LPP session.
See State for the state machine rules.

Events (`Informationa`l):
- summary events for ended LPP transactions (including timeouts and errors)
- rate-limited progress events for ongoing LPP transactions
- other events for decoding failures, protocol errors, and evicted transactions

Supported Types
- `EMMDL_LTEPositioningProtocolLPPMessageContainer`
- `EMMUL_LTEPositioningProtocolLPPMessageContainer`

limitations:
- No support for packets of type `LocationServicesMessageContainer`, which contain
  more LPP messages (potentially in batch). Transactions over this communication
  may be missed, or produce partially captured transactions.
  Requires ASN.1 and bindings from TS 24.080

```text
"LPP::Transaction[deadbeef/s000]::Progress[RequestLocationInformation -> ProvideLocationInformation x2]"
"LPP::Transaction[deadbeef/s000]::Summary[RequestCapabilities -> ProvideCapabilities -> Abort(TARGET_DEVICE_ABORT)]"
"LPP::Transaction[deadbeef/----]::Error(...)"
```

See: EFForg#1072
description:
"An information-only analyzer that captures the lifecycle of LPP transactions."
.into(),
version: 0,

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm aware all other analyzers index at 1. I felt 0 expressed the informational/exploratory nature of the initial pass here, but say the word and I'll change this.

@philgebhardt philgebhardt mentioned this pull request Oct 24, 2026
1 task done

This branch has not been deployed

No deployments
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