diff --git a/doc/sphinx/uml/appendRequestedOptions.svg b/doc/sphinx/uml/appendRequestedOptions.svg index 93c17ff0ca..c8889437c2 100644 --- a/doc/sphinx/uml/appendRequestedOptions.svg +++ b/doc/sphinx/uml/appendRequestedOptions.svg @@ -1,41 +1,112 @@ -Append requested options algorithm (Kea 1.8.0)get configured option listget parameter request list (PRL) from queryget configured options in dhcp4 spacepush back option code to PRLfor each persistent optionfor each item from configured option listget configured options in dhcp4 spaceadd option to responsefirstfoundnot found or already foundfor each item from configured option listyesoption is not set in responsenofor each code in PRLdone; -stop - -@enduml - -PlantUML version 1.2020.15(Sun Jun 28 13:39:45 CEST 2020) -(GPL source distribution) -Java Runtime: OpenJDK Runtime Environment -JVM: OpenJDK 64-Bit Server VM -Default Encoding: UTF-8 -Language: en -Country: US ---> \ No newline at end of file + + + + + Append requested options algorithm (Kea 1.8.0) + + get configured option list + + get parameter request list (PRL) from query + + get configured options in dhcp4 space + + push back option code to PRL + + for each persistent option + + for each item from configured option list + + get configured options in dhcp4 space + + add option to response + + first + found + not found or already found + + + for each item from configured option list + + yes + option is not set in response + no + + + for each code in PRL + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/sphinx/uml/appendRequestedVendorOptions.svg b/doc/sphinx/uml/appendRequestedVendorOptions.svg index 2fe289a029..94685f9879 100644 --- a/doc/sphinx/uml/appendRequestedVendorOptions.svg +++ b/doc/sphinx/uml/appendRequestedVendorOptions.svg @@ -1,63 +1,196 @@ -Append vendor requested options algorithm (Kea 1.8.0)get vendor id from query vivso optionget vendor id from response vivso optionreturnnovendor idyesget configured option listget option request list (ORO) from query DOCSIS vendor optionget configured options in vendor id spacepush back option code to OROfor each persistent optionfor each item from configured option listcreate vivso option for vendor idnoresponse vivso optionyesadded = falseget configured options in vendor id spaceadd sub-option to vivso optionadded = truefirstfoundnot found or already foundfor each item from configured option listyessub-option is not set in vivso optionnoadd vivso option in responsenovivso option in responseyesyesaddednofor each code in OROdone; -stop - -@enduml - -PlantUML version 1.2020.15(Sun Jun 28 13:39:45 CEST 2020) -(GPL source distribution) -Java Runtime: OpenJDK Runtime Environment -JVM: OpenJDK 64-Bit Server VM -Default Encoding: UTF-8 -Language: en -Country: US ---> \ No newline at end of file + + + + + Append vendor requested options algorithm (Kea 1.8.0) + + get vendor id from query vivso option + + get vendor id from response vivso option + + return + + + + no + vendor id + yes + + get configured option list + + get option request list (ORO) from query DOCSIS vendor option + + get configured options in vendor id space + + push back option code to ORO + + for each persistent option + + for each item from configured option list + + create vivso option for vendor id + + no + response vivso option + yes + + + added = false + + get configured options in vendor id space + + add sub-option to vivso option + + added = true + + first + found + not found or already found + + + for each item from configured option list + + yes + sub-option is not set in vivso option + no + + + add vivso option in response + + no + vivso option in response + yes + + + yes + added + no + + + for each code in ORO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/sphinx/uml/assign-lease4.svg b/doc/sphinx/uml/assign-lease4.svg index 0a519342f6..12f09a2d24 100644 --- a/doc/sphinx/uml/assign-lease4.svg +++ b/doc/sphinx/uml/assign-lease4.svg @@ -1,113 +1,238 @@ -DHCPv4 Assign Lease (Kea 1.8.0)INIT-REBOOT stateLease allocatedGet existing lease by client idGet existing lease by hardware addressGet authoritativeupdate DDNSSend ACKCheck Subnetentry pointGet server idGet hintGet hardware address and client idProcess hostnameRequest leaseNo lease allocatedexit pointSend NAKexit pointNo responseexit pointno subnetuse requested address optionuse client addressno hintrequested address and no server idhas a client idno client idfoundnot foundnot authoritative and no owned leaseowned lease with hint mismatchauthoritative and no owned leaseother caseslease allocatedno lease allocated \ No newline at end of file + + + + + DHCPv4 Assign Lease (Kea 1.8.0) + + + + INIT-REBOOT state + + + + + Lease allocated + + + + + Get existing lease by client id + + + + + Get existing lease by hardware address + + + + + Get authoritative + + + + + update DDNS + + + + + Send ACK + + + + + Check Subnet + + + + + entry point + + + + + Get server id + + + + + Get hint + + + + + Get hardware address and client id + + + + + Process hostname + + + + + Request lease + + + + + No lease allocated + + + + + exit point + + + + + Send NAK + + + + + exit point + + + + + No response + + + + + exit point + + + + + + + + + + + no subnet + + + + + + + + + + + use requested address option + + + + + + use client address + + + + + + no hint + + + + + + requested address and no server id + + + + + + + + + + + has a client id + + + + + + no client id + + + + + + found + + + + + + not found + + + + + + + + + + + not authoritative and no owned lease + + + + + + owned lease with hint mismatch + + + + + + authoritative and no owned lease + + + + + + other cases + + + + + + + + + + + lease allocated + + + + + + + + + + + + + + + + no lease allocated + + + + + + + + + diff --git a/doc/sphinx/uml/buildCfgOptionList.svg b/doc/sphinx/uml/buildCfgOptionList.svg index c42e8d76cb..e1d74703a9 100644 --- a/doc/sphinx/uml/buildCfgOptionList.svg +++ b/doc/sphinx/uml/buildCfgOptionList.svg @@ -1,62 +1,178 @@ -buildCfgOptionList: build configured option list algorithm (Kea 1.8.0)Get (empty) configured option listreturnyesno subnetnopush back host configured optionsyescurrent host reservationnoget pool of assigned addresspush back pool configured optionsyespoolnoyesassigned addressnopush back subnet configured optionsget shared network from subnetpush back shared network configured optionsyesshared networknoget client class definition from current configurationfoundnoyeslog debug "class unconfigured"nobuilt-in client classyespush back client class definition configured optionsfor each query client classpush back global configured optionsreturn \ No newline at end of file + + + + + buildCfgOptionList: build configured option list algorithm (Kea 1.8.0) + + + Get (empty) configured option list + + return + + + + yes + no subnet + no + + push back host configured options + + yes + current host reservation + no + + + get pool of assigned address + + push back pool configured options + + yes + pool + no + + + yes + assigned address + no + + + push back subnet configured options + + get shared network from subnet + + push back shared network configured options + + yes + shared network + no + + + get client class definition from current configuration + + found + no + yes + + log debug "class unconfigured" + + no + built-in client class + yes + + + push back client class definition configured options + + + for each query client class + + push back global configured options + + return + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/sphinx/uml/currentHost4.svg b/doc/sphinx/uml/currentHost4.svg index 1db758c119..58ed82ef4a 100644 --- a/doc/sphinx/uml/currentHost4.svg +++ b/doc/sphinx/uml/currentHost4.svg @@ -1,147 +1,301 @@ -currentHost DHCPv4 (Kea 1.8.0)Subnet SelectionSet subnet to the selected subnetHas client a lease for its client id?Iterate on allowed subnets for client idSet subnet to the by client id leaseHas client a matching lease?Iterate on allowed subnets for hardware addressSet subnet to the matching leaseHas an address reservation?Set subnet to address reservation subnetIs the address in an allowed pool?Iterate on allowed subnets with poolSet subnet to address pool subnetAllocate a new leaseIterate on allowed subnetsSet subnet to allocated lease subnetGet subnet host reservation modeIs subnet host reservation mode global?Get global host reservationGet subnet host reservationReturn current host reservationno client id optionmatch-client-id is false or no leasefound a leasenot found by client id, try by hardware addressno hardware addressno lease or client id mismatchfound a leasenot foundyesno or not check in the taken branchpool check is not in all branchesaddress not in an allowed pooladdress in an allowed poolno allowed poolstart from preferred (last used) subnetallocation is not in all branchesno free addressfound a free addressyesnoreturn global host reservationreturn subnet host reservationOnly the initial lookup is always performed: other occasions to change the subnet so the current host are only in some branches \ No newline at end of file + + + + + currentHost DHCPv4 (Kea 1.8.0) + + + + Subnet Selection + + + + + Set subnet to the selected subnet + + + + + Has client a lease for its client id? + + + + + Iterate on allowed subnets for client id + + + + + Set subnet to the by client id lease + + + + + Has client a matching lease? + + + + + Iterate on allowed subnets for hardware address + + + + + Set subnet to the matching lease + + + + + Has an address reservation? + + + + + Set subnet to address reservation subnet + + + + + Is the address in an allowed pool? + + + + + Iterate on allowed subnets with pool + + + + + Set subnet to address pool subnet + + + + + Allocate a new lease + + + + + Iterate on allowed subnets + + + + + Set subnet to allocated lease subnet + + + + + Get subnet host reservation mode + + + + + Is subnet host reservation mode global? + + + + + Get global host reservation + + + + + Get subnet host reservation + + + + + Return current host reservation + + + + + + + + + + + + + + + + no client id option + + + + + + + + + + + match-client-id is false or no lease + + + + + + found a lease + + + + + + + + + + + not found by client id, try by hardware address + + + + + + no hardware address + + + + + + + + + + + no lease or client id mismatch + + + + + + found a lease + + + + + + + + + + + not found + + + + + + yes + + + + + + no or not check in the taken branch + + + + + + + + + + + + + + + + pool check is not in all branches + + + + + + address not in an allowed pool + + + + + + address in an allowed pool + + + + + + no allowed pool + + + + + + + + + + + start from preferred (last used) subnet + + + + + + allocation is not in all branches + + + + + + no free address + + + + + + found a free address + + + + + + + + + + + + + + + + yes + + + + + + no + + + + + + return global host reservation + + + + + + return subnet host reservation + + Only the initial lookup is always performed: other occasions to change the subnet so the current host are only in some branches + + + diff --git a/doc/sphinx/uml/lease-states.svg b/doc/sphinx/uml/lease-states.svg index ae70b45486..873cd64132 100644 --- a/doc/sphinx/uml/lease-states.svg +++ b/doc/sphinx/uml/lease-states.svg @@ -1,67 +1,116 @@ -lease states (Kea 1.8.0)Freenot in the lease databaseAssignedAssigned expiredDeclinedDeclined expiredExpired-Reclaimedassignmentrelease queryafter valid lifetimereuserenew querydecline queryafter probation periodreusereclaimremovereuseremove \ No newline at end of file + + + + + lease states (Kea 1.8.0) + + + + Free + + + + + not in the lease database + + + + + Assigned + + + + + Assigned expired + + + + + Declined + + + + + Declined expired + + + + + Expired-Reclaimed + + + + + + assignment + + + + + + release query + + + + + + after valid lifetime + + + + + + reuse + + + + + + renew query + + + + + + decline query + + + + + + after probation period + + + + + + reuse + + + + + + reclaim + + + + + + remove + + + + + + reuse + + + + + + remove + + + + + diff --git a/doc/sphinx/uml/main-loop.svg b/doc/sphinx/uml/main-loop.svg index 9ad33e147e..f2d095ec23 100644 --- a/doc/sphinx/uml/main-loop.svg +++ b/doc/sphinx/uml/main-loop.svg @@ -1,99 +1,162 @@ -DHCP server main loop (Kea 1.8.0)Main LoopEvent LoopWait for next eventCheck ShutdownTimeoutSignalHandle SignalExternal SocketHandle External SocketDHCP QueryProcess QueryI/O ServiceExecute ready handlerget next eventtimeout expiredno ready handlerdashed arrow means priority \ No newline at end of file + + + + + DHCP server main loop (Kea 1.8.0) + + + + Main Loop + + + + + Event Loop + + + + + Wait for next event + + + + + I/O Service + + + + + Execute ready handler + + + + + Check Shutdown + + + + + Signal + + + + + Handle Signal + + + + + External Socket + + + + + Handle External Socket + + + + + DHCP Query + + + + + Process Query + + + + + Timeout + + + + + + get next event + + + + + + + + + + + got signal + + + + + + + + + + + + + + + + external socket ready + + + + + + + + + + + + + + + + DHCP socket ready + + + + + + + + + + + + + + + + timeout expired + + + + + + handler ready + + + + + + no ready handler + + + + + + execute ready handler + + + + + + + dashed arrow means priority + + + diff --git a/doc/sphinx/uml/packet4.svg b/doc/sphinx/uml/packet4.svg index 2e37ed9fff..0badab5735 100644 --- a/doc/sphinx/uml/packet4.svg +++ b/doc/sphinx/uml/packet4.svg @@ -1,160 +1,355 @@ -DHCPv4 packet processing (Kea 1.8.0)Process Query on its Message TypeProcess DiscoverProcess RequestProcess ReleaseProcess DeclineProcess InformReceive queryinputService EnabledCallout buffer4_receivehookUnpack queryClassify queryCallout pkt4_receivehookCheck DROP classAvoid same client race in multi-threaded modepostpone processing or dropCallout leases4_committedhookParkCallout pkt4_sendSend responsePack responseCallout buffer4_sendoutputDrop packeterrorservice is enabledservice is disabledCONTINUESKIPDROPon errorCONTINUEDROPquery in DROP classqueries from the same client possible raceunknown message typeon erroron erroron erroron erroron errorCONTINUEDROPPARKunparkCONTINUESKIPDROPCONTINUEDROPdashed arrow means asynchronous processing + + + + + DHCPv4 packet processing (Kea 1.8.0) + + + + Process Query on its Message Type + + + + + Process Discover + + + + + Process Request + + + + + Process Release + + + + + Process Decline + + + + + Process Inform + + + + + Receive query + + + + + input + + + + + Service Enabled + + + + + Callout buffer4_receive + + + + + hook + + + + + Unpack query + + + + + Classify query + + + + + Callout pkt4_receive + + + + + hook + + + + + Check DROP class + + + + + Avoid same client race in multi-threaded mode + + + + + postpone processing or drop + + + + + Callout leases4_committed + + + + + hook + + + + + Park + + + + + Callout pkt4_send + + + + + Send response + + + + + Pack response + + + + + Callout buffer4_send + + + + + output + + + + + Drop packet + + + + + error + + + + + + + + + + + service is enabled + + + + + + service is disabled + + + + + + CONTINUE + + + + + + SKIP + + + + + + DROP + + + + + + + + + + + on error + + + + + + + + + + + CONTINUE + + + + + + DROP + + + + + + + + + + + query in DROP class + + + + + + + + + + + queries from the same client possible race + + + + + + unknown message type + + + + + + + + + + + on error + + + + + + + + + + + on error + + + + + + + + + + + on error + + + + + + + + + + + on error + + + + + + + + + + + on error + + + + + + CONTINUE + + + + + + DROP + + + + + + PARK + + + + + + unpark + + + + + + CONTINUE + + + + + + SKIP + + + + + + DROP + + + + + + + + + + + CONTINUE + + + + + + DROP + + + dashed arrow means asynchronous processing + + + diff --git a/doc/sphinx/uml/request4-lease.svg b/doc/sphinx/uml/request4-lease.svg index 28b47de999..2a8a0a2fbb 100644 --- a/doc/sphinx/uml/request4-lease.svg +++ b/doc/sphinx/uml/request4-lease.svg @@ -1,203 +1,437 @@ -Allocate a lease for DHCPREQUEST (Kea 1.8.0)Check requested addressGet lease for requested addressCheck client leaseAllocate a new leaseAllocate or reuse leaseAllocate unreserved leaseCheck lease for reserved addressCheck out-of-pool addressCheck requested leaseCheck renewCreate a new leaseDelete old leaseGet candidate leaseReuse expired leaseReclaim expired leaseupdate lease informationCallout lease4_selecthookUpdate leaseIterate pools and subnetsPick addressCheck reserved addressedCheck already in use by another threadCheck leaseFind client leaseentry pointCheck requested reservationGet reservationUpdate requested addressReturn no leaseexit pointReturn renewed leaseexit pointReturn leaseexit pointhas requested address (hint)no requested address (hint)no conflicting reservationreservation owned by another clienthas a reservationrequest reserved addressno reservationhas requested leasenot expired lease owned by another clientno reservationhas requested reservationhas reservation for another addressno active reserved leaseowned reservation for the requested addressrequested address is in allowed an pooladdress not reserved and not in allowed poolhas a client leaserequested address was already assigned to the clienthas a requested addressno requested addressexpired candidate leaseconflicting candidate leaseno candidate leaseSKIPaddress reserved to another clientaddress already in use by another threadactive leaseexpired leaseno lease \ No newline at end of file + + + + + Allocate a lease for DHCPREQUEST (Kea 1.8.0) + + + + Check requested address + + + + + Get lease for requested address + + + + + Check client lease + + + + + Allocate a new lease + + + + + Allocate or reuse lease + + + + + Allocate unreserved lease + + + + + Check lease for reserved address + + + + + Check out-of-pool address + + + + + Check requested lease + + + + + Check renew + + + + + Create a new lease + + + + + Delete old lease + + + + + Get candidate lease + + + + + Reuse expired lease + + + + + Reclaim expired lease + + + + + update lease information + + + + + Callout lease4_select + + + + + hook + + + + + Update lease + + + + + Iterate pools and subnets + + + + + Pick address + + + + + Check reserved addressed + + + + + Check already in use by another thread + + + + + Check lease + + + + + Find client lease + + + + + entry point + + + + + Check requested reservation + + + + + Get reservation + + + + + Update requested address + + + + + Return no lease + + + + + exit point + + + + + Return renewed lease + + + + + exit point + + + + + Return lease + + + + + exit point + + + + + + has requested address (hint) + + + + + + no requested address (hint) + + + + + + no conflicting reservation + + + + + + reservation owned by another client + + + + + + has a reservation + + + + + + request reserved address + + + + + + no reservation + + + + + + + + + + + has requested lease + + + + + + not expired lease owned by another client + + + + + + no reservation + + + + + + has requested reservation + + + + + + has reservation for another address + + + + + + no active reserved lease + + + + + + + + + + + owned reservation for the requested address + + + + + + requested address is in allowed an pool + + + + + + address not reserved and not in allowed pool + + + + + + has a client lease + + + + + + requested address was already assigned to the client + + + + + + + + + + + has a requested address + + + + + + no requested address + + + + + + + + + + + expired candidate lease + + + + + + conflicting candidate lease + + + + + + no candidate lease + + + + + + + + + + + + + + + + + + + + + SKIP + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + address reserved to another client + + + + + + + + + + + address already in use by another thread + + + + + + + + + + + active lease + + + + + + expired lease + + + + + + no lease + + + + + + + + + + + + + + diff --git a/doc/sphinx/uml/request4.svg b/doc/sphinx/uml/request4.svg index 527f2efc15..78f0aaaeda 100644 --- a/doc/sphinx/uml/request4.svg +++ b/doc/sphinx/uml/request4.svg @@ -1,107 +1,213 @@ -DHCPREQUEST processing (Kea 1.8.0)A lease was assignedAdd reserved classesClassify required classesBuild configured option listAppend requested optionsAppend requested vendor optionsAppend basic optionsSet fixed fieldsEntry pointSelect subnethook pointFind host reservationAdd either KNOWN or UNKNOWN classClassify (2nd pass)Process client nameAssign a leaseAdjust interface dataAppend server IDon success exit pointReturn no responseon error exit pointhook set DROPDHCPACKDHCPNAKon error \ No newline at end of file + + + + + DHCPREQUEST processing (Kea 1.8.0) + + + + A lease was assigned + + + + + Add reserved classes + + + + + Classify required classes + + + + + Build configured option list + + + + + Append requested options + + + + + Append requested vendor options + + + + + Append basic options + + + + + Set fixed fields + + + + + Entry point + + + + + Select subnet + + + + + hook point + + + + + Find host reservation + + + + + Add either KNOWN or UNKNOWN class + + + + + Classify (2nd pass) + + + + + Process client name + + + + + Assign a lease + + + + + Adjust interface data + + + + + Append server ID + + + + + on success exit point + + + + + Return no response + + + + + on error exit point + + + + + + + + + + + + + + + + hook set DROP + + + + + + + + + + + + + + + + + + + + + + + + + + DHCPACK + + + + + + DHCPNAK + + + + + + on error + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/sphinx/uml/requestLease4.svg b/doc/sphinx/uml/requestLease4.svg index 800e77d6eb..2b7d0a75f3 100644 --- a/doc/sphinx/uml/requestLease4.svg +++ b/doc/sphinx/uml/requestLease4.svg @@ -1,310 +1,540 @@ -requestLease4 algorithm (Kea 1.8.0)get lease for the clientreserved addressyesnorequested addressnoyesrequested address = reserved addressreturn no leaseyesrequested address is reserved for another clientnoreturn no leaseyesactive and owned by another clientnoyeslease for requested addressnoreturn no leaseyesactivenoyeslease for requested addressnoreturn no leasenorequested address in allowed poolyesnorequested address == reserved addressyesrequested addressyesnoreturn no leaseyesrequested address is reserved for another clientnoreturn no leaseyesactive and owned by another clientnoyeslease for requested addressnoreturn no leasenorequested address in allowed poolyespick candidate addresslease for candidatenoyescreate and return new leasereclaim expired leaseupdate lease informationcallout lease4_selectcallout returnSKIPCONTINUEreturn no leaseupdate leasereturn reused leaseyesexpirednonocandidate is used by another threadyesnocandidate is reserved for another clientyesiterate over pools and subnetsmaximum attemptsreturn no leasenoclient lease and lease address in allowed poolyesupdate lease informationreclaim expired leaseyesold lease expirednocallout lease4_renewcallout returnSKIPCONTINUEreturn old client leaseupdate leasereturn renewed client leaseyeshas reserved address or client lease address in allowed poolnoyesno requested address or requested address == client lease addressnoyesclient leasenoget lease for requested addressrequested leaseyesnoexpirednoyesreturn no leasereclaim expired leaseupdate lease informationcallout lease4_selectcallout returnSKIPCONTINUEreturn no leaseupdate leasereturn reused leasecreate and return new lease \ No newline at end of file + + + + + requestLease4 algorithm (Kea 1.8.0) + + + get lease for the client + + reserved address + yes + no + + requested address + no + yes + + requested address = reserved address + + return no lease + + + + yes + requested address is reserved for another client + no + + + return no lease + + + + yes + active and owned by another client + no + + yes + lease for requested address + no + + + return no lease + + + + yes + active + no + + yes + lease for requested address + no + + + return no lease + + + + no + requested address in allowed pool + yes + + no + requested address == reserved address + yes + + + requested address + yes + no + + return no lease + + + + yes + requested address is reserved for another client + no + + return no lease + + + + yes + active and owned by another client + no + + yes + lease for requested address + no + + + return no lease + + + + no + requested address in allowed pool + yes + + pick candidate address + + lease for candidate + no + yes + + create and return new lease + + + + reclaim expired lease + + update lease information + + callout lease4_select + + callout return + SKIP + CONTINUE + + return no lease + + + + update lease + + return reused lease + + + + yes + expired + no + + no + candidate is used by another thread + yes + + + no + candidate is reserved for another client + yes + + + iterate over pools and subnets + + maximum attempts + + return no lease + + + + no + client lease and lease address in allowed pool + yes + + + + update lease information + + reclaim expired lease + + yes + old lease expired + no + + + callout lease4_renew + + callout return + SKIP + CONTINUE + + return old client lease + + + + update lease + + return renewed client lease + + + + yes + has reserved address or client lease address in allowed pool + no + + yes + no requested address or requested address == client lease address + no + + + yes + client lease + no + + + get lease for requested address + + requested lease + yes + no + + expired + no + yes + + return no lease + + + + reclaim expired lease + + update lease information + + callout lease4_select + + callout return + SKIP + CONTINUE + + return no lease + + + + update lease + + return reused lease + + + + create and return new lease + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/sphinx/uml/select4.svg b/doc/sphinx/uml/select4.svg index a2b5ed6844..b733a70a3a 100644 --- a/doc/sphinx/uml/select4.svg +++ b/doc/sphinx/uml/select4.svg @@ -1,157 +1,345 @@ -DHCPv4 subnet selection (Kea 1.8.0)RelayedSet address for lookupTry incoming interfaceTry addressRelay address matches subnetRelay address matches shared networkCheck client classSet relay addressSet client addressSet source addressInterface matches subnetInterface matches shared networkCheck client classSet interface addressCheck subnet prefixCheck client classEntry pointTry RAI link selectTry subnet selection optionFound a subnetFound no subnetCallout subnet4_selectReturn a subnetReturn no subnetDrop queryrelayednot relayedno matchmatchno matchmatchcompatiblenot compatibletry the relay addresshas no relay addresshas no client addressno suitable addresshas a relay addresshas a client addresshas source address and use unicastno interfacematchno matchmarchno matchcompatiblenot compatiblehas an interface addressno interface addressmatchno matchcompatiblenot compatibleCONTINUE and subnet setSKIP or subnet not setDROP \ No newline at end of file + + + + + DHCPv4 subnet selection (Kea 1.8.0) + + + + Relayed + + + + + Set address for lookup + + + + + Try incoming interface + + + + + Try address + + + + + Relay address matches subnet + + + + + Relay address matches shared network + + + + + Check client class + + + + + Set relay address + + + + + Set client address + + + + + Set source address + + + + + Interface matches subnet + + + + + Interface matches shared network + + + + + Check client class + + + + + Set interface address + + + + + Check subnet prefix + + + + + Check client class + + + + + Entry point + + + + + Try RAI link select + + + + + Try subnet selection option + + + + + Found a subnet + + + + + Found no subnet + + + + + Callout subnet4_select + + + + + Return a subnet + + + + + Return no subnet + + + + + Drop query + + + + + + + + + + + + + + + + relayed + + + + + + not relayed + + + + + + + + + + + no match + + + + + + match + + + + + + no match + + + + + + match + + + + + + compatible + + + + + + not compatible + + + + + + try the relay address + + + + + + has no relay address + + + + + + has no client address + + + + + + no suitable address + + + + + + has a relay address + + + + + + has a client address + + + + + + has source address and use unicast + + + + + + no interface + + + + + + match + + + + + + no match + + + + + + march + + + + + + no match + + + + + + compatible + + + + + + not compatible + + + + + + has an interface address + + + + + + no interface address + + + + + + match + + + + + + no match + + + + + + compatible + + + + + + not compatible + + + + + + + + + + + + + + + + + CONTINUE and subnet set + + + + + + SKIP or subnet not set + + + + + + DROP + + + + diff --git a/doc/sphinx/uml/tkey.svg b/doc/sphinx/uml/tkey.svg index 6bfb43f03d..25bd4c674a 100644 --- a/doc/sphinx/uml/tkey.svg +++ b/doc/sphinx/uml/tkey.svg @@ -1,21 +1,24 @@ -TKEY Exchange (GSS-TSIG hook)Kea D2 serverKea D2 serverDNS serverDNS serverTKEY requestTKEY response (signed) \ No newline at end of file + + + + + TKEY Exchange (GSS-TSIG hook) + + + + Kea D2 server + + Kea D2 server + + DNS server + + DNS server + + + TKEY request + + + TKEY response (signed) + + + diff --git a/doc/sphinx/uml/update.svg b/doc/sphinx/uml/update.svg index 7fb4947414..fef2e381bb 100644 --- a/doc/sphinx/uml/update.svg +++ b/doc/sphinx/uml/update.svg @@ -1,21 +1,24 @@ -DNS Update Exchange (GSS-TSIG hook)Kea D2 serverKea D2 serverDNS serverDNS serverDNS update request (signed)DNS update response (signed) \ No newline at end of file + + + + + DNS Update Exchange (GSS-TSIG hook) + + + + Kea D2 server + + Kea D2 server + + DNS server + + DNS server + + + DNS update request (signed) + + + DNS update response (signed) + + +