WIP
parent
9a5acf3cbd
commit
8e17a1bb6b
|
@ -53,6 +53,7 @@ namespace ln.snmp
|
|||
{
|
||||
shutdown = true;
|
||||
LocalEndpoint.Close();
|
||||
ReceiverThread.Interrupt();
|
||||
}
|
||||
|
||||
private void Receiver()
|
||||
|
@ -64,7 +65,7 @@ namespace ln.snmp
|
|||
IPEndPoint remoteEndpoint = null;
|
||||
byte[] datagram = LocalEndpoint.Receive(ref remoteEndpoint);
|
||||
|
||||
Logging.Log(LogLevel.DEBUG,"SNMPClient: Received: {0}", BitConverter.ToString(datagram));
|
||||
Logging.Log(LogLevel.DEBUGDETAIL,"SNMPClient: Received: {0}", BitConverter.ToString(datagram));
|
||||
|
||||
ASN1Value asn = new ASN1Value(datagram);
|
||||
SnmpMessage snmpMessage = asn;
|
||||
|
|
|
@ -41,7 +41,7 @@ namespace ln.snmp
|
|||
List<Sequence> results = new List<Sequence>();
|
||||
foreach (Variable varBind in varBinds.Items)
|
||||
{
|
||||
results.Add(varBind as Sequence);
|
||||
results.Add(varBind as Sequence);
|
||||
}
|
||||
return results;
|
||||
}
|
||||
|
@ -214,13 +214,15 @@ namespace ln.snmp
|
|||
{
|
||||
cont = true;
|
||||
row[n] = next[n];
|
||||
row[n].Items = new Variable[] { OIDs[n].IndexTo(lastOIDs[n]), next[n].Items[1] };
|
||||
}
|
||||
else
|
||||
{
|
||||
row[n] = null;
|
||||
}
|
||||
}
|
||||
results.Add(row);
|
||||
if (cont)
|
||||
results.Add(row);
|
||||
}
|
||||
return results.ToArray();
|
||||
}
|
||||
|
|
|
@ -224,7 +224,7 @@ namespace ln.snmp.endpoint
|
|||
}
|
||||
|
||||
Logging.Log(LogLevel.DEBUGDETAIL, "Authenticating Message: {0}",BitConverter.ToString(wholeMsg));
|
||||
Logging.Log(LogLevel.DEBUG, "Authenticated Message: {0}", BitConverter.ToString(((ASN1Value)message).AsByteArray));
|
||||
Logging.Log(LogLevel.DEBUGDETAIL, "Authenticated Message: {0}", BitConverter.ToString(((ASN1Value)message).AsByteArray));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -14,6 +14,7 @@ using ln.snmp.endpoint;
|
|||
using ln.snmp.types;
|
||||
using System.Linq;
|
||||
using ln.types;
|
||||
using ln.logging;
|
||||
namespace ln.snmp.rfc1213
|
||||
{
|
||||
public static class RFC1213
|
||||
|
@ -22,20 +23,21 @@ namespace ln.snmp.rfc1213
|
|||
public static Interface[] GetInterfaces(SnmpEndpoint endpoint)
|
||||
{
|
||||
Dictionary<int,Interface> interfaces = new Dictionary<int,Interface>();
|
||||
ObjectIdentifier baseOID = new ObjectIdentifier("1.3.6.1.2.1.2.2.1.2");
|
||||
|
||||
Sequence[][] ifTable = endpoint.snmpWalk(new String[] {
|
||||
"1.3.6.1.2.1.2.2.1.2",
|
||||
"1.3.6.1.2.1.2.2.1.10",
|
||||
"1.3.6.1.2.1.2.2.1.16",
|
||||
"1.3.6.1.2.1.2.2.1.14",
|
||||
"1.3.6.1.2.1.2.2.1.20"
|
||||
"1.3.6.1.2.1.2.2.1.6"
|
||||
});
|
||||
|
||||
foreach (Sequence[] row in ifTable)
|
||||
{
|
||||
ObjectIdentifier index = (row[0].Items[0] as ObjectIdentifier);
|
||||
|
||||
Interface intf = new Interface();
|
||||
intf.Name = (row[0].Items[1] as OctetString).StringValue;
|
||||
intf.HWAddr = BitConverter.ToString((row[1].Items[1] as OctetString).Bytes);
|
||||
|
||||
interfaces.Add(index.OIDValue[0],intf);
|
||||
}
|
||||
|
||||
|
@ -66,11 +68,11 @@ namespace ln.snmp.rfc1213
|
|||
public class Interface
|
||||
{
|
||||
public String Name { get; set; }
|
||||
public String HWAddr { get => hwaddr; set => hwaddr = value; }
|
||||
public CIDR[] IPAddresses => _IPAddresses.ToArray();
|
||||
|
||||
|
||||
private List<CIDR> _IPAddresses = new List<CIDR>();
|
||||
|
||||
private String hwaddr;
|
||||
|
||||
public Interface()
|
||||
{
|
||||
|
|
|
@ -15,7 +15,7 @@ namespace ln.snmp.types
|
|||
public uint UIntValue { get; set; }
|
||||
|
||||
public Unsigned32()
|
||||
:base(new Identifier(IdentifierClass.APPLICATION, false, 0x02))
|
||||
:base(new Identifier(IdentifierClass.APPLICATION, false, 0x102))
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -57,7 +57,31 @@ namespace ln.snmp.types
|
|||
{
|
||||
}
|
||||
public Counter32(uint value)
|
||||
: base(new Identifier(IdentifierClass.APPLICATION, false, 0x01),value)
|
||||
: base(new Identifier(IdentifierClass.APPLICATION, false, 0x01), value)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
public class Gauge32 : Unsigned32
|
||||
{
|
||||
public Gauge32()
|
||||
: base(new Identifier(IdentifierClass.APPLICATION, false, 0x02))
|
||||
{
|
||||
}
|
||||
public Gauge32(uint value)
|
||||
: base(new Identifier(IdentifierClass.APPLICATION, false, 0x02), value)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
public class TimeTicks : Unsigned32
|
||||
{
|
||||
public TimeTicks()
|
||||
: base(new Identifier(IdentifierClass.APPLICATION, false, 0x03))
|
||||
{
|
||||
}
|
||||
public TimeTicks(uint value)
|
||||
: base(new Identifier(IdentifierClass.APPLICATION, false, 0x03), value)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
|
|
@ -120,6 +120,8 @@ namespace ln.snmp.types
|
|||
registerKnownType<Integer>();
|
||||
registerKnownType<OctetString>();
|
||||
registerKnownType<Unsigned32>();
|
||||
registerKnownType<Gauge32>();
|
||||
registerKnownType<TimeTicks>();
|
||||
registerKnownType<Counter32>();
|
||||
registerKnownType<Counter64>();
|
||||
registerKnownType<Sequence>();
|
||||
|
|
Loading…
Reference in New Issue