From 0f4a4fb2da85b8d96a59cc8c0c2c08a9853db568 Mon Sep 17 00:00:00 2001 From: adjivas Date: Tue, 25 Feb 2025 19:15:39 +0100 Subject: [PATCH] fix: lookUp for BindingIP --- internal/context/ausf_context_init.go | 1 + internal/utils/net.go | 8 ++++++ internal/utils/net_test.go | 41 ++++++++++++++++++++------- pkg/factory/config.go | 3 +- 4 files changed, 42 insertions(+), 11 deletions(-) diff --git a/internal/context/ausf_context_init.go b/internal/context/ausf_context_init.go index 1f0ca30..17c6360 100644 --- a/internal/context/ausf_context_init.go +++ b/internal/context/ausf_context_init.go @@ -59,6 +59,7 @@ func InitAusfContext(context *AUSFContext) { logger.InitLog.Warn("Error parsing ServerIPv4 address as string. Using the 0.0.0.0 address as default.") context.BindingIP = "0.0.0.0" } + context.BindingIP = ausf_utils.BindingLookup(context.BindingIP) sbiRegisterIp := ausf_utils.RegisterAddr(context.RegisterIP) sbiPort := uint16(context.SBIPort) diff --git a/internal/utils/net.go b/internal/utils/net.go index 2e27c58..e0d074e 100644 --- a/internal/utils/net.go +++ b/internal/utils/net.go @@ -7,6 +7,14 @@ import ( "github.com/free5gc/ausf/internal/logger" ) +func BindingLookup(bindIP string) string { + ips, err := net.LookupIP(bindIP) + if err != nil { + logger.InitLog.Errorf("Resolve BindingIP hostname %s failed: %+v", bindIP, err) + } + return ips[0].String() +} + func RegisterAddr(registerIP string) netip.Addr { ips, err := net.LookupIP(registerIP) if err != nil { diff --git a/internal/utils/net_test.go b/internal/utils/net_test.go index d0d1833..3d4103e 100644 --- a/internal/utils/net_test.go +++ b/internal/utils/net_test.go @@ -6,39 +6,60 @@ import ( "testing" ) +func TestBindingLookupWithLocalhost(t *testing.T) { + expectedBindIP := "::1" + + bindIP := BindingLookup("localhost") + assert.Equal(t, bindIP, expectedBindIP) +} + +func TestBindingLookupWithIpV4(t *testing.T) { + expectedBindIP := "127.0.0.1" + + bindIP := BindingLookup("127.0.0.1") + assert.Equal(t, bindIP, expectedBindIP) +} + +func TestBindingLookupWithIpV6(t *testing.T) { + expectedBindIP := "2001:db8::1:0:0:1" + + bindIP := BindingLookup("2001:db8::1:0:0:1") + assert.Equal(t, bindIP, expectedBindIP) +} + func TestRegisterAddrWithLocalhost(t *testing.T) { - expected_addr, err := netip.ParseAddr("::1") + expectedAddr, err := netip.ParseAddr("::1") if err != nil { - t.Errorf("invalid expected IP: %+v", expected_addr) + t.Errorf("invalid expected IP: %+v", expectedAddr) } addr := RegisterAddr("localhost") - if addr != expected_addr { + if addr != expectedAddr { t.Errorf("invalid IP: %+v", addr) } - assert.Equal(t, addr, expected_addr) + assert.Equal(t, addr, expectedAddr) } func TestRegisterAddrWithIpV4(t *testing.T) { - expected_addr, err := netip.ParseAddr("127.0.0.1") + expectedAddr, err := netip.ParseAddr("127.0.0.1") if err != nil { - t.Errorf("invalid expected IP: %+v", expected_addr) + t.Errorf("invalid expected IP: %+v", expectedAddr) } addr := RegisterAddr("127.0.0.1") - if addr != expected_addr { + if addr != expectedAddr { t.Errorf("invalid IP: %+v", addr) } } func TestRegisterAddrWithIpV6(t *testing.T) { - expected_addr, err := netip.ParseAddr("2001:db8::1:0:0:1") + expectedAddr, err := netip.ParseAddr("2001:db8::1:0:0:1") if err != nil { - t.Errorf("invalid expected IP: %+v", expected_addr) + t.Errorf("invalid expected IP: %+v", expectedAddr) } addr := RegisterAddr("2001:db8::1:0:0:1") - if addr != expected_addr { + if addr != expectedAddr { t.Errorf("invalid IP: %+v", addr) } } diff --git a/pkg/factory/config.go b/pkg/factory/config.go index 842eeba..6ca6584 100644 --- a/pkg/factory/config.go +++ b/pkg/factory/config.go @@ -15,6 +15,7 @@ import ( "github.com/asaskevich/govalidator" "github.com/free5gc/ausf/internal/logger" + ausf_utils "github.com/free5gc/ausf/internal/utils" "github.com/free5gc/openapi/models" ) @@ -284,7 +285,7 @@ func (c *Config) GetSbiBindingIP() string { bindIP = c.Configuration.Sbi.BindingIPv4 } } - return bindIP + return ausf_utils.BindingLookup(bindIP) } func (c *Config) GetSbiPort() int {