merge snmp-discovered interfaces with existing node found by ip
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
5
nodes.go
5
nodes.go
@@ -233,6 +233,10 @@ func (n *Nodes) mergeNodes(keepID, mergeID int) {
|
|||||||
keep := n.nodes[keepID]
|
keep := n.nodes[keepID]
|
||||||
merge := n.nodes[mergeID]
|
merge := n.nodes[mergeID]
|
||||||
|
|
||||||
|
if keep == nil || merge == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
if merge.Name != "" && keep.Name == "" {
|
if merge.Name != "" && keep.Name == "" {
|
||||||
keep.Name = merge.Name
|
keep.Name = merge.Name
|
||||||
}
|
}
|
||||||
@@ -243,6 +247,7 @@ func (n *Nodes) mergeNodes(keepID, mergeID int) {
|
|||||||
ips = append(ips, ip)
|
ips = append(ips, ip)
|
||||||
}
|
}
|
||||||
n.updateNodeInterface(keep, keepID, iface.MAC, ips, iface.Name)
|
n.updateNodeInterface(keep, keepID, iface.MAC, ips, iface.Name)
|
||||||
|
n.macIndex[iface.MAC.String()] = keepID
|
||||||
}
|
}
|
||||||
|
|
||||||
delete(n.nodes, mergeID)
|
delete(n.nodes, mergeID)
|
||||||
|
|||||||
8
snmp.go
8
snmp.go
@@ -207,6 +207,14 @@ func (t *Tendrils) queryInterfaceMACs(snmp *gosnmp.GoSNMP, deviceIP net.IP) {
|
|||||||
t.nodes.Update(iface.mac, nil, iface.name, "", "snmp-ifmac")
|
t.nodes.Update(iface.mac, nil, iface.name, "", "snmp-ifmac")
|
||||||
macs = append(macs, iface.mac)
|
macs = append(macs, iface.mac)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
existingNode := t.nodes.GetByIP(deviceIP)
|
||||||
|
if existingNode != nil {
|
||||||
|
for _, iface := range existingNode.Interfaces {
|
||||||
|
macs = append(macs, iface.MAC)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if len(macs) > 1 {
|
if len(macs) > 1 {
|
||||||
t.nodes.Merge(macs, "snmp-ifmac")
|
t.nodes.Merge(macs, "snmp-ifmac")
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user