NSX|P: Fix ipv6 subnet gateway IP

Since NSX 3.0 ipv6 subnet GW cannot have a zero suffix.
This fix performs the check & update for MP DHCP subnets,
in addition to the Policy DHCP subnets that already had this check.

Change-Id: Ie74e96eb36df16f5e98588d92067f94168f3f5a6
This commit is contained in:
asarfaty 2020-04-21 10:45:56 +02:00
parent 0d88f9b98b
commit e6fd14c028
1 changed files with 6 additions and 3 deletions

View File

@ -1288,8 +1288,11 @@ class NsxPolicyPlugin(nsx_plugin_common.NsxPluginV3Base):
def _init_ipv6_gateway(self, subnet):
# Override neutron decision to verify that also for ipv6 the first
# ip in the cidr is not used, as the NSX does not support xxxx::0 as a
# segment subnet gateway.
if (subnet.get('gateway_ip') is const.ATTR_NOT_SPECIFIED and
# segment subnet gateway in versions supporting policy DHCP
if (self.nsxpolicy.feature_supported(
nsxlib_consts.FEATURE_NSX_POLICY_DHCP) and
subnet.get('gateway_ip') is const.ATTR_NOT_SPECIFIED and
subnet.get('ip_version') == const.IP_VERSION_6 and
subnet.get('cidr') and subnet['cidr'] != const.ATTR_NOT_SPECIFIED):
net = netaddr.IPNetwork(subnet['cidr'])
@ -1325,6 +1328,7 @@ class NsxPolicyPlugin(nsx_plugin_common.NsxPluginV3Base):
@nsx_plugin_common.api_replay_mode_wrapper
def create_subnet(self, context, subnet):
self._init_ipv6_gateway(subnet['subnet'])
if not self.use_policy_dhcp:
# Subnet with MP DHCP
return self._create_subnet_with_mp_dhcp(context, subnet)
@ -1333,7 +1337,6 @@ class NsxPolicyPlugin(nsx_plugin_common.NsxPluginV3Base):
net_id = subnet['subnet']['network_id']
network = self._get_network(context, net_id)
self._validate_single_ipv6_subnet(context, network, subnet['subnet'])
self._init_ipv6_gateway(subnet['subnet'])
net_az = self.get_network_az_by_net_id(context, net_id)
# Allow manipulation of only 1 subnet of the same network at once