... | ... | @@ -2,9 +2,10 @@ |
|
|
```mermaid
|
|
|
graph LR;
|
|
|
|
|
|
SubGraph2 --> SubnetSelection
|
|
|
|
|
|
subgraph "Subnet Selection"
|
|
|
Node10(Iterate through subnets <br> in insertion order, <br> checking for first match with: <br> incoming interface <br> ciaddr, client address <br> giaddr, gateway address <br> local address <br> remote address) --> Node11
|
|
|
Node10[[Iterate through subnets <br> in insertion order, <br> checking for first match with: <br> incoming interface <br> ciaddr, client address <br> giaddr, gateway address <br> local address <br> remote address]] --> Node11
|
|
|
Node5 -- No, add options from HR --> Node10
|
|
|
Node11[Subnet match] --> Node12{Evaluate client classes?}
|
|
|
Node12 -- Yes --> Node13
|
|
|
Node12 -- No --> Node14
|
... | ... | @@ -12,27 +13,26 @@ SubGraph2 --> SubnetSelection |
|
|
Node13 -- No --> Node10
|
|
|
Node14{check for host reservation in subnet?} -- Yes --> Node15
|
|
|
Node14 -- No --> Node16
|
|
|
Node15[Check for Host Reservation, <br> evaluating Mac address and ciaddr] -- Reservation, <br> add class=known <br> add options from HR --> Node17
|
|
|
Node15[(Check for Host Reservation, <br> evaluating Mac address and ciaddr)] -- Reservation, <br> add class=known <br> add options from HR --> Node17
|
|
|
Node15 -- No reservation --> Node16
|
|
|
Node16((Subnet Selected)) --> SubGraph3
|
|
|
Node17((Address Selected)) --> SubGraph4
|
|
|
end
|
|
|
|
|
|
end
|
|
|
|
|
|
SubGraph3 --> AddressAssignment
|
|
|
subgraph "Address Assignment"
|
|
|
Node16((Subnet Selected)) --> Node20
|
|
|
Node20(Iterate through pools <br> in order configured) --> Node21
|
|
|
Node21[Next Address] --> Node22
|
|
|
Node21 -- Pool exhausted --> Node20
|
|
|
Node22[Check lease DB] -- Address available --> Node23((Address Selected))
|
|
|
Node22[(Check lease DB)] -- Address available --> Node23((Address Selected))
|
|
|
Node22 -- active or expired lease <br> address unavailable --> Node21
|
|
|
Node22 -- address is reserved <br> address unavailable --> Node21
|
|
|
Node23 --> SubGraph4
|
|
|
Node23 ==> Node30
|
|
|
|
|
|
end
|
|
|
|
|
|
SubGraph4 --> OptionSelection
|
|
|
|
|
|
subgraph "Option Selection"
|
|
|
Node17((Address Selected)) --> Node23
|
|
|
Node30{Is this a host reservation?} -- Yes --> Node31[Add options associated <br> HR and class = known]
|
|
|
Node31 --> Node32[Add any additional options <br> associated with client class]
|
|
|
Node30 -- No --> Node32
|
... | ... | @@ -40,18 +40,18 @@ SubGraph3 --> AddressAssignment |
|
|
Node33 --> Node34[Add any additional options <br> defined in subnet]
|
|
|
Node34 --> Node35[Add any additional options <br> defined in shared subnet]
|
|
|
Node35 --> Node36[Add global options]
|
|
|
Node36 --> Node37((Options assigned))
|
|
|
Node36 --> Node37((Options assigned)) --> Node6
|
|
|
end
|
|
|
|
|
|
|
|
|
subgraph "Client Request"
|
|
|
Node1[Request for new lease] --> Node2{Bypass global HR check}
|
|
|
Node2 -- Default --> Node3[Check for global HR]
|
|
|
Node2 -- Default --> Node3[(Check for global HR)]
|
|
|
Node2 -- Yes, reservation mode: disabled --> Node10
|
|
|
Node3 --> Node4(add class = known)
|
|
|
Node4 --> Node5{Does HR include an address?}
|
|
|
Node5 -- Yes, address provided --> Node17
|
|
|
Node5 -- No, add options from HR --> SubGraph2
|
|
|
Node6 ==> Node7[(Write lease to lease db)] ==> Node8([Respond to client <br> confirming lease])
|
|
|
|
|
|
end
|
|
|
|
... | ... | |