public void Setv3Async(IPAddress ipAddress, string oid, SNMPv3Security security, string username, SNMPv3AuthenticationProvider authProvider, string auth, SNMPv3PrivacyProvider privProvider, string priv, string data, SNMPOptions options) { Task.Run(() => { try { IPEndPoint ipEndpoint = new IPEndPoint(ipAddress, options.Port); // Discovery Discovery discovery = Messenger.GetNextDiscovery(SnmpType.GetRequestPdu); ReportMessage report = discovery.GetResponse(options.Timeout, ipEndpoint); IPrivacyProvider privacy; if (security == SNMPv3Security.authPriv) { privacy = GetPrivacy(authProvider, auth, privProvider, priv); } else if (security == SNMPv3Security.authNoPriv) { privacy = GetPrivacy(authProvider, auth); } else // noAuthNoPriv { privacy = GetPrivacy(); } SetRequestMessage request = new SetRequestMessage(VersionCode.V3, Messenger.NextMessageId, Messenger.NextRequestId, new OctetString(username), new List <Variable> { new Variable(new ObjectIdentifier(oid), new OctetString(data)) }, privacy, Messenger.MaxMessageSize, report); ISnmpMessage reply = request.GetResponse(options.Timeout, ipEndpoint); OnComplete(); } catch (Lextm.SharpSnmpLib.Messaging.TimeoutException) { OnTimeout(); } catch (ErrorException) { OnError(); } }); }
// authPriv private IPrivacyProvider GetPrivacy(SNMPv3AuthenticationProvider authProvider, string auth, SNMPv3PrivacyProvider privProvider, string priv) { IAuthenticationProvider authenticationProvider; if (authProvider == SNMPv3AuthenticationProvider.MD5) { authenticationProvider = new MD5AuthenticationProvider(new OctetString(auth)); } else { authenticationProvider = new SHA1AuthenticationProvider(new OctetString(auth)); } if (privProvider == SNMPv3PrivacyProvider.DES) { return(new DESPrivacyProvider(new OctetString(priv), authenticationProvider)); } else { return(new AESPrivacyProvider(new OctetString(priv), authenticationProvider)); } }
public void Walkv3Async(IPAddress ipAddress, string oid, SNMPv3Security security, string username, SNMPv3AuthenticationProvider authProvider, string auth, SNMPv3PrivacyProvider privProvider, string priv, WalkMode walkMode, SNMPOptions options) { Task.Run(() => { try { IPEndPoint ipEndpoint = new IPEndPoint(ipAddress, options.Port); // Discovery Discovery discovery = Messenger.GetNextDiscovery(SnmpType.GetRequestPdu); ReportMessage report = discovery.GetResponse(options.Timeout, ipEndpoint); IPrivacyProvider privacy; if (security == SNMPv3Security.authPriv) { privacy = GetPrivacy(authProvider, auth, privProvider, priv); } else if (security == SNMPv3Security.authNoPriv) { privacy = GetPrivacy(authProvider, auth); } else // noAuthNoPriv { privacy = GetPrivacy(); } List <Variable> results = new List <Variable>(); Messenger.BulkWalk(VersionCode.V3, ipEndpoint, new OctetString(username), new ObjectIdentifier(oid), results, options.Timeout, 10, walkMode, privacy, report); foreach (Variable result in results) { OnReceived(new SNMPReceivedArgs(result.Id, result.Data)); } OnComplete(); } catch (Lextm.SharpSnmpLib.Messaging.TimeoutException) { OnTimeout(); } catch (ErrorException) { OnError(); } }); }