mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-14 01:41:22 -06:00
Fixes #2757: Always treat first/last IPs within a /31 or /127 as usable
This commit is contained in:
parent
73a1d6a7ba
commit
0d415d94a5
@ -12,6 +12,7 @@ v2.5.3 (FUTURE)
|
|||||||
## Bug Fixes
|
## Bug Fixes
|
||||||
|
|
||||||
* [#2742](https://github.com/digitalocean/netbox/issues/2742) - Preserve cluster assignment when editing a device
|
* [#2742](https://github.com/digitalocean/netbox/issues/2742) - Preserve cluster assignment when editing a device
|
||||||
|
* [#2757](https://github.com/digitalocean/netbox/issues/2757) - Always treat first/last IPs within a /31 or /127 as usable
|
||||||
* [#2762](https://github.com/digitalocean/netbox/issues/2762) - Add missing DCIM field values to API `_choices` endpoint
|
* [#2762](https://github.com/digitalocean/netbox/issues/2762) - Add missing DCIM field values to API `_choices` endpoint
|
||||||
|
|
||||||
|
|
||||||
|
@ -438,12 +438,23 @@ class Prefix(ChangeLoggedModel, CustomFieldModel):
|
|||||||
child_ips = netaddr.IPSet([ip.address.ip for ip in self.get_child_ips()])
|
child_ips = netaddr.IPSet([ip.address.ip for ip in self.get_child_ips()])
|
||||||
available_ips = prefix - child_ips
|
available_ips = prefix - child_ips
|
||||||
|
|
||||||
# Remove unusable IPs from non-pool prefixes
|
# All IP addresses within a pool are considered usable
|
||||||
if not self.is_pool:
|
if self.is_pool:
|
||||||
available_ips -= netaddr.IPSet([
|
return available_ips
|
||||||
netaddr.IPAddress(self.prefix.first),
|
|
||||||
netaddr.IPAddress(self.prefix.last),
|
# All IP addresses within a point-to-point prefix (IPv4 /31 or IPv6 /127) are considered usable
|
||||||
])
|
if (
|
||||||
|
self.family == 4 and self.prefix.prefixlen == 31 # RFC 3021
|
||||||
|
) or (
|
||||||
|
self.family == 6 and self.prefix.prefixlen == 127 # RFC 6164
|
||||||
|
):
|
||||||
|
return available_ips
|
||||||
|
|
||||||
|
# Omit first and last IP address from the available set
|
||||||
|
available_ips -= netaddr.IPSet([
|
||||||
|
netaddr.IPAddress(self.prefix.first),
|
||||||
|
netaddr.IPAddress(self.prefix.last),
|
||||||
|
])
|
||||||
|
|
||||||
return available_ips
|
return available_ips
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user