Пример #1
0
            static bool ParseNode(MIBNode parent, XmlNode node, ObjectIdentifier baseOid)
            {
                var oidParts = baseOid.ToNumerical();
                var oid      = ObjectIdentifier.Create(oidParts, uint.Parse(node.Attributes.GetNamedItem("id").Value));

                var name = node.Attributes.GetNamedItem("name").Value;

                var mnode = new MIBNode {
                    Name   = name,
                    Oid    = oid,
                    Parent = parent
                };

                var typeStr = node.Attributes.GetNamedItem("type").Value.Replace("[]", "Array");

                mnode.Type = (MIBType)Enum.Parse(typeof(MIBType), typeStr, true);

                _Oids[oid] = mnode;

                if (parent != null)
                {
                    parent.AddChild(mnode);
                }

                foreach (var child in node.ChildNodes.OfType <XmlNode>().Where((n) => n.Name == "symbol"))
                {
                    mnode.AddValueMapping(int.Parse(child.Attributes.GetNamedItem("value").Value), child.Attributes.GetNamedItem("name").Value);
                }

                foreach (var child in node.ChildNodes.OfType <XmlNode>().Where((n) => n.Name == "node"))
                {
                    if (!ParseNode(mnode, child, oid))
                    {
                        return(false);
                    }
                }

                return(true);
            }
Пример #2
0
            public static void EnsureRoot()
            {
                if (_Oids.ContainsKey(RootOid))
                {
                    return;
                }

                var oids = new List <Tuple <string, string> > {
                    new Tuple <string, string>("1.3", "org"),
                    new Tuple <string, string>("1.3.6", "dod"),
                    new Tuple <string, string>("1.3.6.1", "internet"),
                    new Tuple <string, string>("1.3.6.1.4", "private"),
                    new Tuple <string, string>("1.3.6.1.4.1", "enterprises"),
                    new Tuple <string, string>("1.3.6.1.2", "mgmt"),
                };

                foreach (var pair in oids)
                {
                    var oid  = new ObjectIdentifier(pair.Item1);
                    var node = new MIBNode {
                        Name = pair.Item2,
                        Oid  = oid
                    };

                    if (pair.Item1.Count(c => c == '.') > 1)
                    {
                        var parentOid = new ObjectIdentifier(string.Join(".", pair.Item1.Split('.').Take(pair.Item1.Count(c => c == '.'))));
                        var parent    = _Oids[parentOid];
                        if (parent != null)
                        {
                            parent.AddChild(node);
                            node.Parent = parent;
                        }
                    }

                    _Oids[oid] = node;
                }
            }
Пример #3
0
 public void AddChild(MIBNode child)
 {
     _children.Add(child);
 }