You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
FreeDMR/docs/codex-notes.md

2.2 KiB

Codex Notes

Network Direct Dial

Findings:

  • HBP RPTO options are variable-length in DMRGateway and null-padded options are already trimmed in FreeDMR.
  • DMRGateway bounds normal Homebrew DMRD packets to fixed length and uses a 300-byte stack buffer for outbound RPTO; a 255-byte receive limit in FreeDMR is conservative and compatible.
  • FreeDMR can implement repeater-ID network direct dial without a new packet forwarding path by activating an existing #<tg> dial route and reusing the current TG9 rewrite logic.
  • FreeDMR1 still treats HBP SLOTS as repeater-advertised metadata from the RPTC config packet or legacy PEER config. It is not currently a master-side routing policy knob for dynamic/dial behavior.

Assumptions:

  • NETWORK_DIRECT_DIAL_SLOT=0 means disabled; 1 presents TG9 TS1; 2 presents TG9 TS2 for DMO/simplex clients.
  • Network direct dial is client/session-overridable through OPTIONS; the compact alias is NDD_SLOT.
  • RF-originated traffic must not activate network direct dial.
  • Invalid NETWORK_DIRECT_DIAL_SLOT values in config should fall back to 0 and log a warning; invalid OPTIONS values should leave the current session value unchanged.

Unresolved questions:

  • Whether to add a later local CW N notification for blocked network direct dial attempts.
  • Whether a broader HBP bounds-validation pass should reject all non-exact DMRD lengths rather than only guarding short packets.
  • Whether FreeDMR2 should promote HBP SLOTS/DMO capability into an explicit access-session capability model. FreeDMR1 should not infer this for network direct dial.

Protocol-sensitive areas:

  • Network direct dial is a narrow exception to the normal rule that network audio does not change local RF-facing dial state.
  • It must not override active or hangtime user-selected dial-a-TG state.
  • It must preserve existing packet rewrite boundaries by using the established TG9 reflector bridge path.

Inferred invariants:

  • General private voice routing remains disabled.
  • Repeater/client-directed group-call access is allowed only when explicitly configured and the selected RF slot is idle.
  • Overlength OPTIONS should be acknowledged but ignored to avoid client reconnect loops while protecting parser state.

Powered by TurnKey Linux.