Initial - DoIP header process
[Correct pattern format]
[Incorrect pattern format]
Check generic DoIP synchronization pattern
[Supported payload type]
[Unknown payload type]
Check payload type
[Message length processable]
[Message too large]
Check whether the message length exceeds the maximum processable length
[Sufficient memory available]
[Out of memory]
Check current DoIP protocol handler memory
[Valid length]
[Invalid payload length]
Check payload type-specific length
[Payload type = "Generic header negative acknowledge"]
[Payload type = "Vehicle identification response" || "Vehicle announcement message"]
[Payload type = "Routing activation request"]
[Payload type = "Diagnostic message"]
[Payload type = "Vehicle identification request"]
[Payload type = "DoIP status request" || "DoIP status response"]
[Payload type = "Alive check response"]
[Payload type = "Diagnostic power mode response"]
Further process the message
Send generic DoIP header NACK(NACK code)
Exit point - socket closed
Close socket
Send generic DoIP header NACK(NACK code)
Exit point - message discarded
Read and discard payload length bytes
Routing activation handler
*
Diagnostic message handler
*
Vehicle identification request handler
*
Determine DoIP entity status
*
Alive check
*
Determine diagnostic power mode
*