Address order: sequential, reverse or random, per subnet and pool
- Which never-used pool address a new client gets: sequential (the lowest, as before), reverse or random, in the settings, a subnet or a single pool (FIRST-LAST:ORDER). When no never-used address is left, the one free the longest, whatever the order; returning clients keep theirs. - A subnet's pools are used in the order listed, or one at random weighted by its never-used addresses. Pools now keep the order they are given in (no more sorting by address). - CLI --address-order and --pool-order; --add-pool of an existing range changes its order in place. Web UI: per-pool order and a move-up button, pool and address order on the subnet and settings pages. - Kea's allocator: random is imported. Schema migration 5. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
29fc991ce1
commit
8ee430276c
29 files changed
+653
-79
No files matched your search
+15
-9
@@ -68,19 +68,25 @@ type SettingsInput struct {
|
||||
PingTimeout *int `json:"ping_timeout_ms,omitempty"`
|
||||
DeclineHold *int `json:"decline_hold,omitempty"`
|
||||
NotAuthoritative *bool `json:"not_authoritative,omitempty"`
|
||||
// AddressOrder is sequential, reverse or random.
|
||||
AddressOrder *string `json:"address_order,omitempty"`
|
||||
}
|
||||
|
||||
// SubnetInput creates or changes a subnet (unset fields stay). Pools are
|
||||
// "FIRST-LAST" or prefixes.
|
||||
// "FIRST-LAST" or prefixes, with ":ORDER" for a pool's own address order.
|
||||
type SubnetInput struct {
|
||||
Name *string `json:"name,omitempty"`
|
||||
Interface *string `json:"interface,omitempty"`
|
||||
Prefix *string `json:"prefix,omitempty"`
|
||||
Pools *[]string `json:"pools,omitempty"`
|
||||
LeaseTime *int `json:"lease_time,omitempty"`
|
||||
Options *[]OptionInput `json:"options,omitempty"`
|
||||
Disabled *bool `json:"disabled,omitempty"`
|
||||
Comment *string `json:"comment,omitempty"`
|
||||
Name *string `json:"name,omitempty"`
|
||||
Interface *string `json:"interface,omitempty"`
|
||||
Prefix *string `json:"prefix,omitempty"`
|
||||
Pools *[]string `json:"pools,omitempty"`
|
||||
// PoolOrder is listed or random; AddressOrder sequential, reverse,
|
||||
// random or "" (the settings').
|
||||
PoolOrder *string `json:"pool_order,omitempty"`
|
||||
AddressOrder *string `json:"address_order,omitempty"`
|
||||
LeaseTime *int `json:"lease_time,omitempty"`
|
||||
Options *[]OptionInput `json:"options,omitempty"`
|
||||
Disabled *bool `json:"disabled,omitempty"`
|
||||
Comment *string `json:"comment,omitempty"`
|
||||
}
|
||||
|
||||
// ReservationInput creates or changes a reservation (unset fields stay).
|
||||
|
||||
Reference in new issue
Block a user