@@ -26,7 +26,6 @@ def validate(record)
2626 end
2727
2828 validate_allowed_keys ( rule , record , index )
29-
3029 add_rule_error ( "protocol must be 'tcp', 'udp', 'icmp', 'icmpv6' or 'all'" , record , index ) unless valid_protocol ( rule [ :protocol ] )
3130
3231 if valid_destination_type ( rule [ :destination ] , record , index )
@@ -46,9 +45,9 @@ def validate(record)
4645
4746 def get_allowed_ip_version ( rule )
4847 if rule [ :protocol ] == 'icmp'
49- NetAddr :: IPv4Net
48+ 4
5049 elsif rule [ :protocol ] == 'icmpv6'
51- NetAddr :: IPv6Net
50+ 6
5251 end
5352 end
5453
@@ -158,6 +157,7 @@ def validate_destination(destination, protocol, allowed_ip_version, record, inde
158157 unless valid_ip_version? ( allowed_ip_version , parsed_ip )
159158 elsif address_list . length == 2
160159 ips = CloudController ::RuleValidator . parse_ip ( address_list )
160+
161161 return add_rule_error ( 'destination IP address range is invalid' , record , index ) unless ips
162162
163163 sorted_ips = if ips . first . is_a? ( NetAddr ::IPv4 )
@@ -169,14 +169,14 @@ def validate_destination(destination, protocol, allowed_ip_version, record, inde
169169 reversed_range_error = 'beginning of IP address range is numerically greater than the end of its range (range endpoints are inverted)'
170170 add_rule_error ( reversed_range_error , record , index ) unless ips . first == sorted_ips . first
171171 add_rule_error ( "for protocol \" #{ protocol } \" you cannot use IPv#{ ips . first . version } addresses" , record , index ) \
172- unless valid_ip_version? ( allowed_ip_version , ips . first )
172+ unless valid_ip_version? ( allowed_ip_version , sorted_ips . first )
173173 else
174174 add_rule_error ( error_message , record , index )
175175 end
176176 end
177177
178178 def valid_ip_version? ( allowed_ip_version , parsed_ip )
179- parsed_ip . nil? || allowed_ip_version . nil? || parsed_ip . is_a? ( allowed_ip_version )
179+ parsed_ip . nil? || allowed_ip_version . nil? || parsed_ip . version == allowed_ip_version
180180 end
181181
182182 def add_rule_error ( message , record , index )
0 commit comments