forked from eclipse-opensovd/opensovd
-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Labels
Description
Beschreibung
Generic NACK Handling in cda-comm-doip ist unvollstaendig. 3 Communication Parameters (nack_number_of_retries, diagnostic_ack_timeout, retry_period) sind definiert aber nicht verwendet (markiert mit // todo use this in #22). Die GenericNack-Variante im Response-Enum enthaelt nicht die Adresse des absendenden ECUs.
Betroffene Dateien
cda-comm-doip/src/lib.rs—GenericNackEnum-Variante ohne ECU-Adressecda-comm-doip/src/connections.rs— Connection Handlingcda-comm-doip/src/ecu_connection.rs— ECU-spezifische Verbindungslogikcda-interfaces/src/datatypes/com_params.rs— Parameter-Definitionen
Implementierungs-Tasks
-
GenericNackEnum um ECU-Adresse (u16 logical address) erweitern -
nack_number_of_retriesHashMap auswerten: pro NRC-Code konfigurierbare Retry-Anzahl -
diagnostic_ack_timeoutin DoIP Message-Handling integrieren -
retry_periodzwischen Retries einhalten - BusyRepeatRequest (NRC 0x21) Retry-Logik mit konfigurierbarer Anzahl
- TemporarilyNotAvailable Handling
- Logging: NACK-Events mit ECU-Adresse und NRC-Code loggen
- Fehler-Propagation an SOVD-API Layer (korrekte HTTP Status Codes)
Unit Tests (Pflicht)
- Test: GenericNack enthaelt korrekte ECU-Adresse
- Test: Retry bei konfigurierbarem NRC (z.B. NRC 0x21) mit N Retries
- Test: Kein Retry bei NRC der nicht in
nack_number_of_retriesMap - Test:
diagnostic_ack_timeout— Timeout wird korrekt ausgeloest - Test:
retry_period— Wartezeit zwischen Retries eingehalten - Test: Max Retries erreicht -> Fehler propagiert
- Test: BusyRepeatRequest mit 0 Retries -> sofortiger Fehler
- Test: Parallele Requests mit unterschiedlichen Retry-Configs
- Test: Default-Werte wenn Parameter nicht konfiguriert
- Test: NACK waehrend laufendem Flash-Transfer
CrossCheck & Constraints
- Pruefung gegen ISO 13400-2 (DoIP) NACK Response Codes
- Pruefung gegen ISO 14229-1 NRC Definitionen (Table A.1)
- Constraint: Retry-Count muss >= 0 und <= 255 sein
- Constraint: Timeout-Werte muessen > 0 und <= 30s sein (DoIP Spec)
- Constraint: retry_period >= diagnostic_ack_timeout (sinnvolle Konfiguration)
- Regressionstests: Bestehende DoIP-Kommunikation darf nicht brechen
- Integration Test: NACK-Szenario mit ECU-Simulator
Security Audit
- NACK-Flooding: Rate-Limiting bei exzessiven NACKs (DoS-Schutz)
- Retry-Storm Prevention: Max Gesamtzeit fuer Retries begrenzen
- Keine Leaks von internen Adressen in SOVD API Error-Responses
- Timeout-Werte nicht von externem Input steuerbar (nur Config)
Zeitschaetzung
| Aufwand | |
|---|---|
| Konventioneller Entwickler | 4 PT |
| KI-Agent | 1.5 PT |
Reactions are currently unavailable