Merge pull request #1064 from kube-vip/resolver

Resolver, this will ensure that an address that is not an IP address is resolved first to determine the CIDR
This commit is contained in:
Daniel Finneran
2025-02-17 16:14:22 +01:00
committed by GitHub
2 changed files with 7 additions and 4 deletions

View File

@@ -60,7 +60,7 @@ var kubeManifestPod = &cobra.Command{
if initConfig.VIPCIDR == "" && initConfig.Address != "" {
initConfig.VIPCIDR, err = GenerateCidrRange(initConfig.Address)
if err != nil {
log.Error("No interface is specified for kube-vip to bind to")
log.Error("config parse", "err", err)
return
}
}
@@ -93,7 +93,7 @@ var kubeManifestDaemon = &cobra.Command{
if initConfig.VIPCIDR == "" && initConfig.Address != "" {
initConfig.VIPCIDR, err = GenerateCidrRange(initConfig.Address)
if err != nil {
log.Error("No interface is specified for kube-vip to bind to")
log.Error("config parse", "err", err)
return
}
}

View File

@@ -463,9 +463,12 @@ func GenerateCidrRange(address string) (string, error) {
addresses := strings.Split(address, ",")
for _, a := range addresses {
ip := net.ParseIP(a)
if ip == nil {
return "", fmt.Errorf("invalid IP address: %s from [%s]", a, address)
ips, err := net.LookupIP(a)
if len(ips) == 0 || err != nil {
return "", fmt.Errorf("invalid IP address: %s from [%s], %v", a, address, err)
}
ip = ips[0]
}
if ip.To4() != nil {