in Source/Tx.Network/Snmp/SnmpTrapListener.cs [14:52]
protected override bool TryParse(IpPacket packet, out IEnvelope envelope)
{
envelope = null;
if (!packet.PacketHeader.DestinationIpAddress.Equals(this.ListenEndPoint.Address))
{
return false;
}
var upacket = packet.ToUdpDatagram(false);
var isValid = upacket.UdpDatagramHeader.DestinationPort == this.ListenEndPoint.Port;
if (isValid)
{
SnmpDatagram datagram;
if (upacket.TryParseSnmpDatagram(out datagram))
{
isValid = datagram.Header.Version == SnmpVersion.V1 || datagram.Header.Version == SnmpVersion.V2C;
if (isValid)
{
envelope = new SnmpTrapEnvelope
{
OccurrenceTime = packet.ReceivedTime,
ReceivedTime = packet.ReceivedTime,
Payload = upacket.UdpData.Array,
PayloadInstance = new SnmpDatagram(
packet.ReceivedTime,
packet.PacketHeader.SourceIpAddress.ToString(),
datagram.Header,
datagram.VarBinds),
};
}
}
}
return isValid;
}