diff --git a/docs/models/ipam/iprange.md b/docs/models/ipam/iprange.md index ab712e5b2..7b0457f27 100644 --- a/docs/models/ipam/iprange.md +++ b/docs/models/ipam/iprange.md @@ -9,3 +9,6 @@ IP also ranges share the same functional roles as prefixes and VLANs, although t * Deprecated - No longer in use The status of a range does _not_ have any impact on its member IP addresses, which may have their statuses modified separately. + +!!! note + The maximum supported size of an IP range is 2^32 - 1. diff --git a/docs/release-notes/version-3.0.md b/docs/release-notes/version-3.0.md index 9018d651b..2a316bfed 100644 --- a/docs/release-notes/version-3.0.md +++ b/docs/release-notes/version-3.0.md @@ -13,6 +13,7 @@ ### Bug Fixes +* [#7252](https://github.com/netbox-community/netbox/issues/7252) - Validate IP range size does not exceed max supported value * [#7294](https://github.com/netbox-community/netbox/issues/7294) - Fix SVG rendering for cable traces ending at unoccupied front ports * [#7304](https://github.com/netbox-community/netbox/issues/7304) - Require explicit values for all required choice fields during CSV import * [#7321](https://github.com/netbox-community/netbox/issues/7321) - Don't overwrite multi-select custom fields during bulk edit diff --git a/netbox/ipam/models/ip.py b/netbox/ipam/models/ip.py index 3e2e671ca..8d5a27686 100644 --- a/netbox/ipam/models/ip.py +++ b/netbox/ipam/models/ip.py @@ -600,6 +600,11 @@ class IPRange(PrimaryModel): if overlapping_range: raise ValidationError(f"Defined addresses overlap with range {overlapping_range} in VRF {self.vrf}") + # Validate maximum size + MAX_SIZE = 2 ** 32 - 1 + if int(self.end_address.ip - self.start_address.ip) + 1 > MAX_SIZE: + raise ValidationError(f"Defined range exceeds maximum supported size ({MAX_SIZE})") + def save(self, *args, **kwargs): # Record the range's size (number of IP addresses)