]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[#1329] Added requestLease4 activity uml
authorFrancis Dupont <fdupont@isc.org>
Sat, 18 Jul 2020 18:26:48 +0000 (20:26 +0200)
committerFrancis Dupont <fdupont@isc.org>
Tue, 4 Aug 2020 08:45:38 +0000 (10:45 +0200)
doc/devel/Makefile.am
doc/devel/images/assign-lease4.png [moved from doc/devel/images/assign-lease.png with 100% similarity]
doc/devel/images/assign-lease4.svg [moved from doc/devel/images/assign-lease.svg with 100% similarity]
doc/devel/images/assign-lease4.uml [moved from doc/devel/images/assign-lease.uml with 100% similarity]
doc/devel/images/request4-lease.png [moved from doc/devel/images/request-lease.png with 100% similarity]
doc/devel/images/request4-lease.svg [moved from doc/devel/images/request-lease.svg with 100% similarity]
doc/devel/images/request4-lease.uml [moved from doc/devel/images/request-lease.uml with 100% similarity]
doc/devel/images/requestLease4.uml [new file with mode: 0644]

index 603760b171b490655f440d0e1c1ab221364488c4..2648dcd451c3059db2b94a2d32f52fd37aa62215 100644 (file)
@@ -11,21 +11,24 @@ EXTRA_DIST += mainpage.dox
 EXTRA_DIST += terminology.dox
 EXTRA_DIST += unit-tests.dox
 
-EXTRA_DIST += images/assign-lease.png
-EXTRA_DIST += images/assign-lease.svg
-EXTRA_DIST += images/assign-lease.uml
+EXTRA_DIST += images/assign-lease4.png
+EXTRA_DIST += images/assign-lease4.svg
+EXTRA_DIST += images/assign-lease4.uml
 EXTRA_DIST += images/main-loop.png
 EXTRA_DIST += images/main-loop.svg
 EXTRA_DIST += images/main-loop.uml
 EXTRA_DIST += images/packet4.png
 EXTRA_DIST += images/packet4.svg
 EXTRA_DIST += images/packet4.uml
-EXTRA_DIST += images/request-lease.png
-EXTRA_DIST += images/request-lease.svg
-EXTRA_DIST += images/request-lease.uml
+EXTRA_DIST += images/request4-lease.png
+EXTRA_DIST += images/request4-lease.svg
+EXTRA_DIST += images/request4-lease.uml
 EXTRA_DIST += images/request4.png
 EXTRA_DIST += images/request4.svg
 EXTRA_DIST += images/request4.uml
+EXTRA_DIST += images/requestLease4.png
+EXTRA_DIST += images/requestLease4.svg
+EXTRA_DIST += images/requestLease4.uml
 EXTRA_DIST += images/select4.png
 EXTRA_DIST += images/select4.svg
 EXTRA_DIST += images/select4.uml
diff --git a/doc/devel/images/requestLease4.uml b/doc/devel/images/requestLease4.uml
new file mode 100644 (file)
index 0000000..ce98c37
--- /dev/null
@@ -0,0 +1,145 @@
+@startuml
+
+start
+:get lease for the client;
+
+if (reserved address) then (yes)
+  if (requested address) then (no)
+    :requested address = reserved address;
+  else (yes)
+    if (requested address is reserved for another client) then (yes)
+      :return no lease;
+      stop
+    else (no)
+    endif
+  endif
+  if (lease for requested address) then (yes)
+    if (active and owned by another client) then (yes)
+      :return no lease;
+      stop
+    else (no)
+    endif
+  else (no)
+  endif
+  if (requested address == reserved address) then (no)
+    if (lease for requested address) then (yes)
+      if (active) then (yes)
+        :return no lease;
+        stop
+      else (no)
+      endif
+    else (no)
+    endif
+    if (requested address in allowed pool) then (no)
+      :return no lease;
+      stop
+    else (yes)
+    endif
+  else (yes)
+  endif
+
+else (no)
+
+  if (requested address) then (yes)
+    if (requested address is reserved for another client) then (yes)
+      :return no lease;
+      stop
+    else (no)
+    endif
+    if (lease for requested address) then (yes)
+      if (active and owned by another client) then (yes)
+        :return no lease;
+        stop
+      else (no)
+      endif
+    else (no) 
+    endif
+    if (requested address in allowed pool) then (no)
+      :return no lease;
+      stop
+    else (yes)
+    endif
+  else (no)
+    if (client lease and lease address in allowed pool) then (no)
+      while (iterate over pools and subnect)
+        :pick candidate address;
+        if (candidate is reserved for another client) then (no)
+          if (lease for candidate) then (no)
+            :create and return new lease;
+            stop
+          else (yes)
+            if (expired) then (yes)
+              :reclaim expired lease;
+              :update lease information;
+              :callout lease4_select;
+              if (callout return) then (SKIP)
+                :return no lease;
+                stop
+              else (CONTINUE)
+                :update lease;
+                :return reused lease;
+                stop
+              endif
+            else (no)
+            endif     
+          endif
+        else (yes)
+        endif
+      endwhile
+      :maximum attempts;
+      :return no lease;
+      stop
+    else (yes)
+    endif
+  endif
+endif
+
+' after check
+if (client lease) then (yes)
+  if (no requested address or requested address == client lease address) then (yes)
+    if (has reserved address or client lease address in allowed pool) then (yes)
+      :update lease information;
+      if (old lease expired) then (yes)
+        :reclaim expired lease;
+      else (no)
+      endif
+      :callout lease4_renew;
+      if (callout return) then (SKIP)
+        :return old client lease;
+        stop
+      else (CONTINUE)
+        :update lease;
+        :return renewed client lease;
+        stop
+      endif
+    else (no)
+    endif
+  else (no)
+  endif
+else (no)
+endif
+
+:get lease for requested address;
+if (requested lease) then (yes)
+  if (expired) then (no)
+    :return no lease;
+    stop
+  else (yes)
+    :reclaim expired lease;
+    :update lease information;
+    :callout lease4_select;
+    if (callout return) then (SKIP)
+      :return no lease;
+      stop
+    else (CONTINUE)
+      :update lease;
+      :return reused lease;
+      stop
+    endif
+  endif
+else (no)
+ :create and return new lease;
+ stop
+endif
+
+@enduml