diff --git a/internal/source/vmware/vmware_sync.go b/internal/source/vmware/vmware_sync.go index a062c3d1..3de652cb 100644 --- a/internal/source/vmware/vmware_sync.go +++ b/internal/source/vmware/vmware_sync.go @@ -906,6 +906,10 @@ func (vc *VmwareSource) syncVMInterfaces(nbi *inventory.NetboxInventory, vmwareV return fmt.Errorf("adding VmInterface: %s", err) } + if netboxVM.Name == "csm-dev.src.si" { + print("hello") + } + vmIPv4Addresses, vmIPv6Addresses = vc.addVMInterfaceIPs(nbi, nbVMInterface, nicIPv4Addresses, nicIPv6Addresses, vmIPv4Addresses, vmIPv6Addresses) } } diff --git a/internal/utils/networking.go b/internal/utils/networking.go index 1c0d2378..cd205b7b 100644 --- a/internal/utils/networking.go +++ b/internal/utils/networking.go @@ -11,7 +11,17 @@ import ( // Function that receives ipAddress and performs a reverse lookup // to get the hostname. If the reverse lookup fails, it returns an empty string. func ReverseLookup(ipAddress string) string { - names, err := net.LookupAddr(ipAddress) + // Parse the IP address to handle cases where a subnet mask is provided + ip, _, err := net.ParseCIDR(ipAddress) + if err != nil { + // If parsing as CIDR fails, try to parse it as a plain IP address + ip = net.ParseIP(ipAddress) + if ip == nil { + return "" + } + } + + names, err := net.LookupAddr(ip.String()) if err != nil || len(names) == 0 { return "" } diff --git a/internal/utils/networking_test.go b/internal/utils/networking_test.go index 5fac3aec..fbde02dd 100644 --- a/internal/utils/networking_test.go +++ b/internal/utils/networking_test.go @@ -21,6 +21,13 @@ func TestReverseLookup(t *testing.T) { }, want: "", }, + { + name: "Valid rerse lookup", + args: args{ + ipAddress: "1.1.1.1", + }, + want: "one.one.one.one", + }, { name: "Valid reverse lookup", args: args{ @@ -28,6 +35,20 @@ func TestReverseLookup(t *testing.T) { }, want: "dns.google", }, + { + name: "Lookup IP with mask", + args: args{ + ipAddress: "8.8.8.8/24", + }, + want: "dns.google", + }, + { + name: "Lookup IP with wrong mask should fail", + args: args{ + ipAddress: "8.8.8.8/36", + }, + want: "", + }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) {