diff options
Diffstat (limited to 'doc/sphinx/uml/currentHost4.uml')
-rw-r--r-- | doc/sphinx/uml/currentHost4.uml | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/doc/sphinx/uml/currentHost4.uml b/doc/sphinx/uml/currentHost4.uml new file mode 100644 index 0000000..1e9ef4d --- /dev/null +++ b/doc/sphinx/uml/currentHost4.uml @@ -0,0 +1,83 @@ +@startuml + +title currentHost DHCPv4 (Kea 1.8.0) + +agent "Subnet Selection" as entry + +agent "Set subnet to the selected subnet" as setSelected + +agent "Has client a lease for its client id?" as clientid_lookup + +agent "Iterate on allowed subnets for client id" as clientid_iterate + +agent "Set subnet to the by client id lease" as found_clientid + +agent "Has client a matching lease?" as hwaddr_lookup + +agent "Iterate on allowed subnets for hardware address" as hwaddr_iterate + +agent "Set subnet to the matching lease" as found_hwaddr + +agent "Has an address reservation?" as hasAddressReservation + +agent "Set subnet to address reservation subnet" as setAddressReservation + +agent "Is the address in an allowed pool?" as pool + +agent "Iterate on allowed subnets with pool" as pool_iterate + +agent "Set subnet to address pool subnet" as inAllowedPool + +agent "Allocate a new lease" as allocate + +agent "Iterate on allowed subnets" as allocate_iterate + +agent "Set subnet to allocated lease subnet" as allocated + +agent "Get subnet host reservation mode" as getHRmode + +agent "Is subnet host reservation mode global?" as checkHRmode + +agent "Get global host reservation" as global + +agent "Get subnet host reservation" as bySubnet + +agent "Return current host reservation" as return + +entry --> setSelected +setSelected --> clientid_lookup +clientid_lookup ---> hwaddr_lookup : no client id option +clientid_lookup --> clientid_iterate +clientid_iterate -> clientid_iterate : match-client-id is false or no lease +clientid_iterate --> found_clientid : found a lease +found_clientid ----> hasAddressReservation +clientid_iterate --> hwaddr_lookup : not found by client id, try by hardware address +hwaddr_lookup ---> hasAddressReservation : no hardware address +hwaddr_lookup --> hwaddr_iterate +hwaddr_iterate -> hwaddr_iterate : no lease or client id mismatch +hwaddr_iterate --> found_hwaddr : found a lease +found_hwaddr ----> hasAddressReservation +hwaddr_iterate --> hasAddressReservation : not found +hasAddressReservation --> setAddressReservation : yes +hasAddressReservation --> pool : no or not check in the taken branch +setAddressReservation --> pool +pool --> pool_iterate +pool ---> allocate : pool check is not in all branches +pool_iterate -> pool_iterate : address not in an allowed pool +pool_iterate --> inAllowedPool : address in an allowed pool +pool_iterate ---> allocate : no allowed pool +inAllowedPool --> allocate +allocate --> allocate_iterate : start from preferred (last used) subnet +allocate ---> getHRmode : allocation is not in all branches +allocate_iterate -> allocate_iterate : no free address +allocate_iterate --> allocated : found a free address +allocated --> getHRmode +getHRmode --> checkHRmode +checkHRmode --> global : yes +checkHRmode --> bySubnet : no +global --> return : return global host reservation +bySubnet --> return : return subnet host reservation + +footer Only the initial lookup is always performed: other occasions to change the subnet so the current host are only in some branches + +@enduml
\ No newline at end of file |