public static SnmpV3Packet BuildInformResponse(SnmpV3Packet informPacket) { if (informPacket.Version != SnmpVersion.Ver3) throw new SnmpInvalidVersionException("INFORM packet can only be parsed from an SNMP version 3 packet."); if (informPacket.Pdu.Type != PduType.Inform) throw new SnmpInvalidPduTypeException("Inform response can only be built for INFORM packets."); SnmpV3Packet response = new SnmpV3Packet(informPacket.ScopedPdu); response.MessageId = informPacket.MessageId; response.USM.SecurityName.Set(informPacket.USM.SecurityName); response.USM.EngineTime = informPacket.USM.EngineTime; response.USM.EngineBoots = informPacket.USM.EngineBoots; response.USM.EngineId.Set(informPacket.USM.EngineId); response.USM.Authentication = informPacket.USM.Authentication; if( response.USM.Authentication != AuthenticationDigests.None ) response.USM.AuthenticationSecret.Set(informPacket.USM.AuthenticationSecret); else response.USM.AuthenticationSecret.Reset(); response.USM.Privacy = informPacket.USM.Privacy; if (response.USM.Privacy != PrivacyProtocols.None) response.USM.PrivacySecret.Set(informPacket.USM.PrivacySecret); else response.USM.PrivacySecret.Reset(); response.MsgFlags.Authentication = informPacket.MsgFlags.Authentication; response.MsgFlags.Privacy = informPacket.MsgFlags.Privacy; response.MsgFlags.Reportable = informPacket.MsgFlags.Reportable; response.ScopedPdu.ContextEngineId.Set(informPacket.ScopedPdu.ContextEngineId); response.ScopedPdu.ContextName.Set(informPacket.ScopedPdu.ContextName); response.Pdu.Type = PduType.Response; response.Pdu.TrapObjectID.Set(informPacket.Pdu.TrapObjectID); response.Pdu.TrapSysUpTime.Value = informPacket.Pdu.TrapSysUpTime.Value; response.Pdu.RequestId = informPacket.Pdu.RequestId; return response; }
/// <summary> /// Build SNMP RESPONSE packet for the received INFORM packet. /// </summary> /// <returns>SNMP version 3 packet containing RESPONSE to the INFORM packet contained in the class instance.</returns> public SnmpV3Packet BuildInformResponse() { return(SnmpV3Packet.BuildInformResponse(this)); }