firewall: fix handling DstHost.prefixlen=0
Do not silently convert it into 32 or 128 netmask. And also do not include it actual rule (it's no-op check).
This commit is contained in:
parent
f1036c27a7
commit
51f77d5834
@ -88,7 +88,10 @@ class DstHost(RuleOption):
|
|||||||
# add prefix length to bare IP addresses
|
# add prefix length to bare IP addresses
|
||||||
try:
|
try:
|
||||||
socket.inet_pton(socket.AF_INET6, value)
|
socket.inet_pton(socket.AF_INET6, value)
|
||||||
self.prefixlen = prefixlen or 128
|
if prefixlen is not None:
|
||||||
|
self.prefixlen = prefixlen
|
||||||
|
else:
|
||||||
|
self.prefixlen = 128
|
||||||
if self.prefixlen < 0 or self.prefixlen > 128:
|
if self.prefixlen < 0 or self.prefixlen > 128:
|
||||||
raise ValueError(
|
raise ValueError(
|
||||||
'netmask for IPv6 must be between 0 and 128')
|
'netmask for IPv6 must be between 0 and 128')
|
||||||
@ -100,7 +103,10 @@ class DstHost(RuleOption):
|
|||||||
if value.count('.') != 3:
|
if value.count('.') != 3:
|
||||||
raise ValueError(
|
raise ValueError(
|
||||||
'Invalid number of dots in IPv4 address')
|
'Invalid number of dots in IPv4 address')
|
||||||
self.prefixlen = prefixlen or 32
|
if prefixlen is not None:
|
||||||
|
self.prefixlen = prefixlen
|
||||||
|
else:
|
||||||
|
self.prefixlen = 32
|
||||||
if self.prefixlen < 0 or self.prefixlen > 32:
|
if self.prefixlen < 0 or self.prefixlen > 32:
|
||||||
raise ValueError(
|
raise ValueError(
|
||||||
'netmask for IPv4 must be between 0 and 32')
|
'netmask for IPv4 must be between 0 and 32')
|
||||||
@ -137,6 +143,10 @@ class DstHost(RuleOption):
|
|||||||
@property
|
@property
|
||||||
def rule(self):
|
def rule(self):
|
||||||
'''API representation of this rule element'''
|
'''API representation of this rule element'''
|
||||||
|
if self.prefixlen == 0 and self.type != 'dsthost':
|
||||||
|
# 0.0.0.0/0 or ::/0, doesn't limit to any particular host,
|
||||||
|
# so skip it
|
||||||
|
return None
|
||||||
return self.type + '=' + str(self)
|
return self.type + '=' + str(self)
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user