add PROTO_NUM_IPV6_ICMP for _validate_port_range

PROTO_NUM_IPV6_ICMP is missed in _validate_port_range,
this patch adds it.

Closes-Bug: #1574472
Change-Id: I52e2dcf65f35da880c64056b159ac2414702bf1e
This commit is contained in:
lzklibj 2016-04-25 15:02:58 +08:00
parent 1019d2b1e5
commit 03c03dbd21
2 changed files with 16 additions and 1 deletions

View File

@ -454,7 +454,8 @@ class SecurityGroupDbMixin(ext_sg.SecurityGroupPluginBase):
pass
else:
raise ext_sg.SecurityGroupInvalidPortRange()
elif ip_proto == constants.PROTO_NUM_ICMP:
elif ip_proto in [constants.PROTO_NUM_ICMP,
constants.PROTO_NUM_IPV6_ICMP]:
for attr, field in [('port_range_min', 'type'),
('port_range_max', 'code')]:
if rule[attr] is not None and not (0 <= rule[attr] <= 255):

View File

@ -290,3 +290,17 @@ class SecurityGroupDbMixinTestCase(testlib_api.SqlTestCase):
for i, protocol in enumerate(protocols):
self.assertEqual(protocol_names_nums[i],
self.mixin._get_ip_proto_name_and_num(protocol))
def test__validate_port_range_for_icmp_exception(self):
states = [(1, 256, securitygroup.SecurityGroupInvalidIcmpValue),
(None, 6, securitygroup.SecurityGroupMissingIcmpType),
(300, 1, securitygroup.SecurityGroupInvalidIcmpValue)]
for protocol in (constants.PROTO_NAME_ICMP,
constants.PROTO_NAME_IPV6_ICMP,
n_const.PROTO_NAME_IPV6_ICMP_LEGACY):
for pmin, pmax, exception in states:
self.assertRaises(exception,
self.mixin._validate_port_range,
{'port_range_min': pmin,
'port_range_max': pmax,
'protocol': protocol})