mirror of
https://gitlab.isc.org/isc-projects/kea
synced 2025-08-24 10:48:42 +00:00
78 lines
2.8 KiB
Plaintext
78 lines
2.8 KiB
Plaintext
|
@startuml
|
||
|
|
||
|
label _ [
|
||
|
|
||
|
{{
|
||
|
title RADIUS workflow for lease allocation in the DHCPv4 server
|
||
|
:Packet Received;
|
||
|
:Subnet Selection;
|
||
|
start
|
||
|
partition "**subnet4_select** callout" {
|
||
|
:Retrieve reservation from host cache for the current host and subnet.;
|
||
|
if (Reservation found?) then (yes)
|
||
|
if (Rservation for a different subnet?) then (yes)
|
||
|
:Reselect the subnet to the one from the reservation.;
|
||
|
else (no)
|
||
|
endif
|
||
|
:Retrieve reservation from host cache again in case the subnet was reselected.;
|
||
|
else (no)
|
||
|
endif
|
||
|
:Send Access-Request.;
|
||
|
if (Response) then (Access-Accept)
|
||
|
if (Framed-IP-Address attribute present?) then (yes)
|
||
|
:Reselect subnet to match a subnet the contains the IP address.;
|
||
|
else (no)
|
||
|
endif
|
||
|
if (Framed-IP-Pool attribute present?) then (yes)
|
||
|
:Reselect subnet to match a subnet guarded by the client class.;
|
||
|
:Assign packet to client class represented by the value of Framed-IP-Pool.;
|
||
|
else (no)
|
||
|
endif
|
||
|
:Populate the host cache with the reselected subnet ID and the potential IP address returned from the RADIUS server.;
|
||
|
else (Access-Reject)
|
||
|
endif
|
||
|
}
|
||
|
partition "**lease4_renew**, **lease4_release**, **lease4_decline**, **lease4_expire** callouts"
|
||
|
:Send Accounting-Request asynchronously.;
|
||
|
}
|
||
|
}}
|
||
|
|
||
|
{{
|
||
|
title RADIUS workflow for lease allocation in the DHCPv6 server
|
||
|
:Packet Received;
|
||
|
:Subnet Selection;
|
||
|
start
|
||
|
partition "**subnet6_select** callout" {
|
||
|
:Retrieve reservation from host cache for the current host and subnet.;
|
||
|
if (Reservation found?) then (yes)
|
||
|
if (Rservation for a different subnet?) then (yes)
|
||
|
:Reselect the subnet to the one from the reservation.;
|
||
|
else (no)
|
||
|
endif
|
||
|
:Retrieve reservation from host cache again in case the subnet was reselected.;
|
||
|
else (no)
|
||
|
endif
|
||
|
:Send Access-Request.;
|
||
|
if (Response) then (Access-Accept)
|
||
|
if (Framed-IPv6-Address attribute present?) then (yes)
|
||
|
:Reselect subnet to match a subnet the contains the IP address.;
|
||
|
else (no)
|
||
|
endif
|
||
|
if (Framed-IP-Pool attribute present?) then (yes)
|
||
|
:Reselect subnet to match a subnet guarded by the client class.;
|
||
|
:Assign packet to client class represented by the value of Framed-IP-Pool.;
|
||
|
else (no)
|
||
|
endif
|
||
|
:Populate the host cache with the reselected subnet ID and the potential IP address returned from the RADIUS server.;
|
||
|
else (Access-Reject)
|
||
|
endif
|
||
|
}
|
||
|
partition "**lease6_renew**, **lease6_rebind**, **lease6_release**, **lease6_decline**, **lease6_expire** callouts"
|
||
|
:Send Accounting-Request asynchronously.;
|
||
|
}
|
||
|
}}
|
||
|
|
||
|
]
|
||
|
|
||
|
@enduml
|