mirror of
https://github.com/lwip-tcpip/lwip.git
synced 2024-10-04 05:39:53 +00:00
LwipMibCompiler: Remove false positive root entities
This commit is contained in:
parent
dfc963880a
commit
588b11185a
@ -27,16 +27,7 @@ namespace Lextm.SharpSnmpLib.Mib
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// gather all items below ModuleIdentity
|
|
||||||
foreach (MibTreeNode mibTreeNode in _root)
|
|
||||||
{
|
|
||||||
entities.Remove (mibTreeNode.Entity);
|
|
||||||
BuildTree(mibTreeNode, entities);
|
|
||||||
UpdateTreeNodeTypes(mibTreeNode);
|
|
||||||
}
|
|
||||||
|
|
||||||
// find OID assignments as root, if there are any that are not below ModuleIdentity
|
// find OID assignments as root, if there are any that are not below ModuleIdentity
|
||||||
// FIXME: There may be multiple OID assignments that create a tree (find the root ones!)
|
|
||||||
foreach (IEntity element in entities)
|
foreach (IEntity element in entities)
|
||||||
{
|
{
|
||||||
OidValueAssignment oa = element as OidValueAssignment;
|
OidValueAssignment oa = element as OidValueAssignment;
|
||||||
@ -47,6 +38,13 @@ namespace Lextm.SharpSnmpLib.Mib
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FilterRealRoots (_root, entities);
|
||||||
|
|
||||||
|
foreach (MibTreeNode mibTreeNode in _root)
|
||||||
|
{
|
||||||
|
entities.Remove (mibTreeNode.Entity);
|
||||||
|
}
|
||||||
|
|
||||||
if (_root.Count == 0)
|
if (_root.Count == 0)
|
||||||
{
|
{
|
||||||
//no module identity, assume first entity is root
|
//no module identity, assume first entity is root
|
||||||
@ -70,6 +68,29 @@ namespace Lextm.SharpSnmpLib.Mib
|
|||||||
get { return _root; }
|
get { return _root; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private bool EntityExists(IList<IEntity> entities, string name) {
|
||||||
|
foreach(IEntity entity in entities) {
|
||||||
|
if (entity.Name == name) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void FilterRealRoots(IList<MibTreeNode> root, IList<IEntity> entities)
|
||||||
|
{
|
||||||
|
int i = 0;
|
||||||
|
while (i < _root.Count) {
|
||||||
|
if (EntityExists(entities, _root[i].Entity.Parent))
|
||||||
|
{
|
||||||
|
_root.RemoveAt(i);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void BuildTree(MibTreeNode node, IList<IEntity> entities)
|
private void BuildTree(MibTreeNode node, IList<IEntity> entities)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user