SNMP MIB Compiler: Deal with multiple OID assignments in a MIB file

This commit is contained in:
Dirk Ziegelmeier 2016-01-11 19:45:57 +01:00
parent bb8ecd7e08
commit 8c4d1909f4

View File

@ -23,15 +23,14 @@ namespace Lextm.SharpSnmpLib.Mib
if (mi != null) if (mi != null)
{ {
entities.Remove(element);
_root.Add(new MibTreeNode(null, mi)); _root.Add(new MibTreeNode(null, mi));
break;
} }
} }
// gather all items below ModuleIdentity // gather all items below ModuleIdentity
foreach (MibTreeNode mibTreeNode in _root) foreach (MibTreeNode mibTreeNode in _root)
{ {
entities.Remove (mibTreeNode.Entity);
BuildTree(mibTreeNode, entities); BuildTree(mibTreeNode, entities);
UpdateTreeNodeTypes(mibTreeNode); UpdateTreeNodeTypes(mibTreeNode);
} }
@ -44,9 +43,7 @@ namespace Lextm.SharpSnmpLib.Mib
if (oa != null) if (oa != null)
{ {
entities.Remove(element);
_root.Add(new MibTreeNode(null, oa)); _root.Add(new MibTreeNode(null, oa));
break;
} }
} }
@ -54,11 +51,14 @@ namespace Lextm.SharpSnmpLib.Mib
{ {
//no module identity, assume first entity is root //no module identity, assume first entity is root
_root.Add(new MibTreeNode(null, entities[0])); _root.Add(new MibTreeNode(null, entities[0]));
entities.RemoveAt(0);
} }
foreach (MibTreeNode mibTreeNode in _root) foreach (MibTreeNode mibTreeNode in _root)
{ {
if (entities.Contains (mibTreeNode.Entity))
{
entities.Remove (mibTreeNode.Entity);
}
BuildTree(mibTreeNode, entities); BuildTree(mibTreeNode, entities);
UpdateTreeNodeTypes(mibTreeNode); UpdateTreeNodeTypes(mibTreeNode);
} }