in pkg/ipamd/ipamd.go [2367:2394]
func (c *IPAMContext) isConfigValid() bool {
// Validate that only one among v4 and v6 is enabled.
if c.enableIPv4 && c.enableIPv6 {
log.Errorf("IPv4 and IPv6 are both enabled. VPC CNI currently does not support dual stack mode")
return false
} else if !c.enableIPv4 && !c.enableIPv6 {
log.Errorf("IPv4 and IPv6 are both disabled. One of them have to be enabled")
return false
}
// Validate PD mode is enabled if VPC CNI is operating in IPv6 mode. Custom networking is not supported in IPv6 mode.
if c.enableIPv6 && (c.useCustomNetworking || !c.enablePrefixDelegation) {
log.Errorf("IPv6 is supported only in Prefix Delegation mode. Custom Networking is not supported in IPv6 mode. Please set the env variables accordingly.")
return false
}
// Validate Prefix Delegation against v4 and v6 modes.
if c.enablePrefixDelegation && !c.awsClient.IsPrefixDelegationSupported() {
if c.enableIPv6 {
log.Errorf("Prefix Delegation is not supported on non-nitro instance %s. IPv6 is only supported in Prefix delegation Mode. ", c.awsClient.GetInstanceType())
return false
}
log.Warnf("Prefix delegation is not supported on non-nitro instance %s hence falling back to default (secondary IP) mode", c.awsClient.GetInstanceType())
c.enablePrefixDelegation = false
}
return true
}