nodeid 76050 have a interface(objectId=76051) ifindex=5 mac address A0:36:BC:5B:19:A7 is physical link on the sw-203-dlink(dgs-1510-52) switch eth1/0/2
nodeid 76040 have a interface(objectId=76041) ifindex=5 mac address A0:36:BC:5B:18:D9 is physical link on the sw-203-dlink(dgs-1510-52) switch eth1/0/41
nodeid 76048 have a interface(objectId=76049) ifindex=5 mac address A0:36:BC:5B:1A:E0 is physical link on the sw-203-dlink(dgs-1510-52) switch eth1/0/42
my nodeid 76050 76040 76048 's operation The operating systems are completely cloned. Only the hardware information is slightly different, such as the network card mac address and ip.
in netxms i use topology sw-203-dlink switch forwarding database list result ,It is also consistent with the actual interface between the computer and the switch.
so i search in source code
In lln.cpp I find I saw the relevant code below
Also, I have also directly queried the lldp of the switch and I get this result
Name/OID: .1.0.8802.1.1.2.1.4.1.1.7.306145956.42.9; Value (OctetString): A0-36-BC-5B-1A-E0
Name/OID: .1.0.8802.1.1.2.1.4.1.1.7.306145970.41.17; Value (OctetString): A0-36-BC-5B-18-D9
Name/OID: .1.0.8802.1.1.2.1.4.1.1.7.306146123.2.15; Value (OctetString): A0-36-BC-5B-19-A7
The information on lldp also confirms that the node is on the correct interface.
so,Is it possible that some misjudgment or mistake occurred here?
/**
* Check if given information is duplicate
*/
bool LinkLayerNeighbors::isDuplicate(const LL_NEIGHBOR_INFO& info)
{
for(int i = 0; i < m_connections.size(); i++)
{
LL_NEIGHBOR_INFO *n = m_connections.get(i);
if (n->ifLocal == info.ifLocal)
{
if ((n->ifRemote != info.ifRemote) || (n->objectId != info.objectId))
{
nxlog_debug_tag(DEBUG_TAG_TOPO_LINK, 5, _T("LinkLayerNeighbors::isDuplicate: inconsistent data: %s(ifLocal=%d remote=%d/%d) %s(ifLocal=%d remote=%d/%d)"),
GetLinkLayerProtocolName(n->protocol), n->ifLocal, n->objectId, n->ifRemote,
GetLinkLayerProtocolName(info.protocol), info.ifLocal, info.objectId, info.ifRemote);
}
return true;
}
if (n->ifRemote == info.ifRemote)
{
if ((n->ifLocal != info.ifLocal) || (n->objectId != info.objectId))
{
nxlog_debug_tag(DEBUG_TAG_TOPO_LINK, 5, _T("LinkLayerNeighbors::isDuplicate: inconsistent data: %s(ifLocal=%d remote=%d/%d) %s(ifLocal=%d remote=%d/%d)"),
GetLinkLayerProtocolName(n->protocol), n->ifLocal, n->objectId, n->ifRemote,
GetLinkLayerProtocolName(info.protocol), info.ifLocal, info.objectId, info.ifRemote);
}
return true;
}
}
return false;
}