2
0
mirror of https://gitlab.isc.org/isc-projects/kea synced 2025-08-24 10:48:42 +00:00
kea/doc/sphinx/uml/packet4.uml

93 lines
2.4 KiB
Plaintext
Raw Normal View History

2020-07-17 12:56:16 +02:00
@startuml
2020-08-21 15:19:53 +02:00
title DHCPv4 packet processing (Kea 1.8.0)
2020-07-17 12:56:16 +02:00
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
2021-01-22 01:36:41 +02:00
agent "Avoid same client race in multi-threaded mode" as same_client
2020-07-21 22:27:50 +02:00
note right : postpone processing or drop
2020-07-17 12:56:16 +02:00
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
}
2021-05-21 11:47:38 +03:00
agent "Callout leases4_committed" as leases4_committed
2020-07-17 12:56:16 +02:00
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
2020-07-21 22:27:50 +02:00
drop_class --> same_client
2020-07-17 12:56:16 +02:00
drop_class ---> drop : query in DROP class
2020-07-21 22:27:50 +02:00
same_client ---> process
same_client ---> drop : queries from the same client possible race
2020-07-17 12:56:16 +02:00
process ---> drop : unknown message type
2021-05-21 11:47:38 +03:00
processDiscover --> leases4_committed
2020-07-17 12:56:16 +02:00
processDiscover ---> drop : on error
2021-05-21 11:47:38 +03:00
processRequest --> leases4_committed
2020-07-17 12:56:16 +02:00
processRequest ---> drop : on error
2021-05-21 11:47:38 +03:00
processRelease --> leases4_committed
2020-07-17 12:56:16 +02:00
processRelease ---> drop : on error
2021-05-21 11:47:38 +03:00
processDecline --> leases4_committed
2020-07-17 12:56:16 +02:00
processDecline ---> drop : on error
2021-05-21 11:47:38 +03:00
processInform --> leases4_committed
2020-07-17 12:56:16 +02:00
processInform ---> drop : on error
2021-05-21 11:47:38 +03:00
leases4_committed --> pkt4_send : CONTINUE
leases4_committed ---> drop : DROP
leases4_committed --> park : PARK
2020-07-17 12:56:16 +02:00
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
2020-07-21 22:27:50 +02:00
footer dashed arrow means asynchronous processing
2021-05-21 11:47:38 +03:00
@enduml