2
0
mirror of https://gitlab.isc.org/isc-projects/kea synced 2025-08-23 18:37:35 +00:00
kea/doc/sphinx/uml/packet4.uml
2021-05-27 05:15:56 +00:00

93 lines
2.4 KiB
Plaintext

@startuml
title DHCPv4 packet processing (Kea 1.8.0)
agent "Receive query" as receivePacket
note left : input
agent "Service Enabled" as isServiceEnabled
agent "Callout buffer4_receive" as buffer4_receive
note right : hook
agent "Unpack query" as unpack
agent "Classify query" as classify
agent "Callout pkt4_receive" as pkt4_receive
note right : hook
agent "Check DROP class" as drop_class
agent "Avoid same client race in multi-threaded mode" as same_client
note right : postpone processing or drop
rectangle "Process Query on its Message Type" as process {
agent "Process Discover" as processDiscover
agent "Process Request" as processRequest
agent "Process Release" as processRelease
agent "Process Decline" as processDecline
agent "Process Inform" as processInform
}
agent "Callout leases4_committed" as leases4_committed
note right : hook
agent "Park" as park
agent "Callout pkt4_send" as pkt4_send
agent "Send response" as send
agent "Pack response" as pack
agent "Callout buffer4_send" as buffer4_send
agent "Send response" as send
note left : output
agent "Drop packet" as drop
note left : error
receivePacket --> isServiceEnabled
isServiceEnabled --> buffer4_receive : service is enabled
isServiceEnabled ----> drop : service is disabled
buffer4_receive --> unpack : CONTINUE
buffer4_receive --> classify : SKIP
buffer4_receive ----> drop : DROP
unpack --> classify
unpack ---> drop : on error
classify --> pkt4_receive
pkt4_receive --> drop_class : CONTINUE
pkt4_receive ---> drop : DROP
drop_class --> same_client
drop_class ---> drop : query in DROP class
same_client ---> process
same_client ---> drop : queries from the same client possible race
process ---> drop : unknown message type
processDiscover --> leases4_committed
processDiscover ---> drop : on error
processRequest --> leases4_committed
processRequest ---> drop : on error
processRelease --> leases4_committed
processRelease ---> drop : on error
processDecline --> leases4_committed
processDecline ---> drop : on error
processInform --> leases4_committed
processInform ---> drop : on error
leases4_committed --> pkt4_send : CONTINUE
leases4_committed ---> drop : DROP
leases4_committed --> park : PARK
park -[dashed]-> pkt4_send : unpark
pkt4_send --> pack : CONTINUE
pkt4_send --> buffer4_send : SKIP
pkt4_send ---> drop : DROP
pack --> buffer4_send
buffer4_send --> send : CONTINUE
buffer4_send ---> drop : DROP
send -[hidden]-> drop
footer dashed arrow means asynchronous processing
@enduml