mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
* Begin logic * Closes #9068: Disallow assigning bcast/networks to interfaces * Allow net IDs in /31, /32, /127, /128 * linting error * Implement requested changes * Condensed the "if" logic a bit --------- Co-authored-by: Austin de Coup-Crank <decoupca@moodys.com> Co-authored-by: jeremystretch <jstretch@netboxlabs.com>
This commit is contained in:
committed by
GitHub
parent
078893e034
commit
005e3fd692
@ -351,6 +351,18 @@ class IPAddressForm(TenancyForm, NetBoxModelForm):
|
|||||||
'primary_for_parent', "Only IP addresses assigned to an interface can be designated as primary IPs."
|
'primary_for_parent', "Only IP addresses assigned to an interface can be designated as primary IPs."
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Do not allow assigning a network ID or broadcast address to an interface.
|
||||||
|
if interface and (address := self.cleaned_data.get('address')):
|
||||||
|
if address.ip == address.network:
|
||||||
|
msg = f"{address} is a network ID, which may not be assigned to an interface."
|
||||||
|
if address.version == 4 and address.prefixlen not in (31, 32):
|
||||||
|
raise ValidationError(msg)
|
||||||
|
if address.version == 6 and address.prefixlen not in (127, 128):
|
||||||
|
raise ValidationError(msg)
|
||||||
|
if address.ip == address.broadcast:
|
||||||
|
msg = f"{address} is a broadcast address, which may not be assigned to an interface."
|
||||||
|
raise ValidationError(msg)
|
||||||
|
|
||||||
def save(self, *args, **kwargs):
|
def save(self, *args, **kwargs):
|
||||||
ipaddress = super().save(*args, **kwargs)
|
ipaddress = super().save(*args, **kwargs)
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user