... | ... | @@ -4,37 +4,43 @@ graph LR; |
|
|
|
|
|
SubGraph2 --> SubnetSelection
|
|
|
subgraph "Subnet Selection"
|
|
|
Node10(Iterate through subnets in insertion order)
|
|
|
Node10 -- incoming interface --> Node11
|
|
|
Node10 -- ciaddr, client address --> Node11
|
|
|
Node10 -- giaddr, gateway address --> Node11
|
|
|
Node10 -- local address --> Node11
|
|
|
Node10 -- remote address --> Node11
|
|
|
Node11[Select Subnet] --> Node12{Evaluate client classes?}
|
|
|
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
|
|
|
Node11[Subnet match] --> Node12{Evaluate client classes?}
|
|
|
Node12 -- Yes --> Node13
|
|
|
Node12 -- No --> Node16
|
|
|
Node13{Is client class allowed in this subnet?} -- Yes --> Node14
|
|
|
Node13 -- No --> Node10
|
|
|
Node14{check for host reservation in subnet?} -- Yes --> Node15
|
|
|
Node14 -- No --> Node16
|
|
|
Node15[Check for Host Reservation] -- Reservation --> 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 Assigned)) --> SubGraph4
|
|
|
Node17((Address Selected)) --> SubGraph4
|
|
|
end
|
|
|
|
|
|
|
|
|
SubGraph3 --> AddressAssignment
|
|
|
subgraph "Address Assignment"
|
|
|
SubGraph3Flow(Iterate through pools in order configured)
|
|
|
SubGraph3Flow -- Choice1 --> DoChoice11
|
|
|
SubGraph3Flow -- Choice2 --> DoChoice12
|
|
|
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 -- active or expired lease <br> address unavailable --> Node21
|
|
|
Node22 -- address is reserved <br> address unavailable --> Node21
|
|
|
Node23 --> SubGraph4
|
|
|
|
|
|
end
|
|
|
|
|
|
SubGraph4 --> OptionSelection
|
|
|
subgraph "Option Selection"
|
|
|
SubGraph4Flow(Iterate through subnets in insertion order)
|
|
|
SubGraph4Flow -- Choice1 --> DoChoice14
|
|
|
SubGraph4Flow -- Choice2 --> DoChoice21
|
|
|
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
|
|
|
Node32 --> Node33[Add any additional options <br> defined in pool]
|
|
|
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))
|
|
|
end
|
|
|
|
|
|
|
... | ... | @@ -44,8 +50,8 @@ SubGraph3 --> AddressAssignment |
|
|
Node2 -- Yes, reservation mode: disabled --> SubGraph2[Subnet selection]
|
|
|
Node3 --> Node4(add class = known)
|
|
|
Node4 --> Node5{Does HR include an address?}
|
|
|
Node5 -- Yes, address provided --> SubGraph4[Option Selection]
|
|
|
Node5 -- No --> SubGraph2[Subnet selection]
|
|
|
Node5 -- Yes, address provided --> Node17
|
|
|
Node5 -- No, add options from HR --> Subgraph2
|
|
|
|
|
|
end
|
|
|
|
... | ... | |