in agent/envoy_bootstrap/platforminfo/platform_info_collector.go [256:297]
func getEcsContainerSupportedIPFamilies(uri string) string {
metadataMap, err := getEcsMetadata(uri)
if err != nil {
log.Warnf("Failed generating SupportedIPFamilies info from ECS metadata: %v", err)
return ""
}
containers := metadataMap["Containers"]
if containers == nil || len(containers.([]interface{})) == 0 {
log.Warnf("Containers info not found in ECS metadata: %v", metadataMap)
return ""
}
// all containers share the same networks
containerInfo := containers.([]interface{})[0]
networks := containerInfo.(map[string]interface{})["Networks"]
if networks == nil || len(networks.([]interface{})) == 0 {
log.Warnf("Networks info not found in container info in ECS metadata: %v", containerInfo)
return ""
}
hasIPv4Addresses := false
hasIPv6Addresses := false
networksArray := networks.([]interface{})
for i := 0; i < len(networksArray); i++ {
if networksArray[i].(map[string]interface{})["IPv4Addresses"] != nil {
hasIPv4Addresses = true
}
if networksArray[i].(map[string]interface{})["IPv6Addresses"] != nil {
hasIPv6Addresses = true
}
}
if hasIPv4Addresses && hasIPv6Addresses {
return "ALL"
}
if hasIPv4Addresses {
return "IPv4_ONLY"
}
if hasIPv6Addresses {
return "IPv6_ONLY"
}
log.Warnf("Neither IPv4 or IPv6 addresses are found in ECS metadata Networks")
return ""
}