/// <summary>Construct and send SNMP v3 authPriv Trap</summary>
/// <param name="receiver">Trap receiver IP address</param>
/// <param name="receiverPort">Trap receiver UDP port number</param>
/// <param name="engineId">Sender SNMP engineId</param>
/// <param name="senderEngineBoots">Sender SNMP engine boots</param>
/// <param name="senderEngineTime">Sender SNMP engine time</param>
/// <param name="senderUserName">Security (user) name</param>
/// <param name="senderUpTime">Sender upTime</param>
/// <param name="trapObjectID">Trap object ID</param>
/// <param name="varList">Variable binding list</param>
/// <param name="authDigest">
/// Authentication digest. See <see cref="AuthenticationDigests"/> enumeration for
/// available digests
/// </param>
/// <param name="authSecret">Authentication secret</param>
/// <param name="privProtocol">
/// Privacy protocol. See <see cref="EPrivacyProtocols"/> enumeration for
/// available privacy protocols.
/// </param>
/// <param name="privSecret">Privacy secret</param>
public void SendV3Trap(
IpAddress receiver,
int receiverPort,
byte[] engineId,
int senderEngineBoots,
int senderEngineTime,
string senderUserName,
uint senderUpTime,
Oid trapObjectID,
VbCollection varList,
AuthenticationDigests authDigest,
byte[] authSecret,
EPrivacyProtocols privProtocol,
byte[] privSecret
)
{
SnmpV3Packet packet = new SnmpV3Packet();
packet.Pdu.Type = EPduType.V2Trap;
packet.AuthPriv(Encoding.UTF8.GetBytes(senderUserName), authSecret, authDigest, privSecret, privProtocol);
packet.SetEngineId(engineId);
packet.SetEngineTime(senderEngineBoots, senderEngineTime);
packet.ScopedPdu.TrapObjectID.Set(trapObjectID);
packet.ScopedPdu.TrapSysUpTime.Value = senderUpTime;
packet.ScopedPdu.VbList.Add(varList);
packet.MessageFlags.Reportable = false;
SendV3Trap(packet, receiver, receiverPort);
}