/// <summary> /// Initializes a new instance of the <see cref="Header"/> class. /// </summary> /// <param name="messageId">The message id.</param> /// <param name="maxMessageSize">Size of the max message.</param> /// <param name="securityBits">The flags.</param> /// <param name="securityModel">The security model.</param> /// <remarks>If you want an empty header, please use <see cref="Empty"/>.</remarks> public Header(Integer32 messageId, Integer32 maxMessageSize, OctetString securityBits, Integer32 securityModel) { if (messageId == null) { throw new ArgumentNullException("messageId"); } if (maxMessageSize == null) { throw new ArgumentNullException("maxMessageSize"); } if (securityBits == null) { throw new ArgumentNullException("securityBits"); } if (securityModel == null) { throw new ArgumentNullException("securityModel"); } _messageId = messageId; _maxSize = maxMessageSize; _flags = securityBits; _securityModel = securityModel; }
/// <summary> /// Creates a <see cref="InformRequestPdu"/> instance for discovery. /// </summary> /// <param name="requestId">The request id.</param> public InformRequestPdu(int requestId) { Enterprise = null; RequestId = new Integer32(requestId); _time = new TimeTicks(0); Variables = new List<Variable>(); _varbindSection = Variable.Transform(Variables); }
public void TestNegative() { const int i = -2147418240; Integer32 data = new Integer32(i); byte[] bytes = data.ToBytes(); Integer32 other = (Integer32)DataFactory.CreateSnmpData(bytes); Assert.AreEqual(i, other.ToInt32()); }
public void TestNegative2() { // bug 7217 http://sharpsnmplib.codeplex.com/workitem/7217 Integer32 i = new Integer32(-250); var result = DataFactory.CreateSnmpData(i.ToBytes()); Assert.AreEqual(SnmpType.Integer32, result.TypeCode); Assert.AreEqual(-250, ((Integer32)result).ToInt32()); }
public GetRequestPdu(int requestId, ErrorCode errorStatus, int errorIndex, IList<Variable> variables) { RequestId = new Integer32(requestId); ErrorStatus = new Integer32((int)errorStatus); ErrorIndex = new Integer32(errorIndex); Variables = variables; _varbindSection = Variable.Transform(variables); }
/// <summary> /// Creates a <see cref="SetRequestPdu"/> instance with all contents. /// </summary> /// <param name="requestId">The request id.</param> /// <param name="errorStatus">Error status</param> /// <param name="errorIndex">Error index</param> /// <param name="variables">Variables</param> private SetRequestPdu(Integer32 requestId, Integer32 errorStatus, Integer32 errorIndex, IList<Variable> variables) { RequestId = requestId; ErrorStatus = errorStatus; ErrorIndex = errorIndex; Variables = variables; _varbindSection = Variable.Transform(Variables); }
private GetNextRequestPdu(Integer32 requestId, Integer32 errorStatus, Integer32 errorIndex, IList<Variable> variables) { RequestId = requestId; ErrorStatus = errorStatus; ErrorIndex = errorIndex; Variables = variables; _varbindSection = Variable.Transform(variables); ////_raw = ByteTool.ParseItems(_seq, _errorStatus, _errorIndex, _varbindSection); }
private GetBulkRequestPdu(Integer32 requestId, Integer32 nonRepeaters, Integer32 maxRepetitions, IList<Variable> variables) { RequestId = requestId; ErrorStatus = nonRepeaters; ErrorIndex = maxRepetitions; Variables = variables; _varbindSection = Variable.Transform(variables); ////_raw = ByteTool.ParseItems(_seq, _nonRepeaters, _maxRepetitions, _varbindSection); }
/// <summary> /// Creates a <see cref="ResponsePdu"/> with all contents. /// </summary> /// <param name="requestId">The request ID.</param> /// <param name="errorStatus">Error status.</param> /// <param name="errorIndex">Error index.</param> /// <param name="variables">Variables.</param> public ResponsePdu(int requestId, ErrorCode errorStatus, int errorIndex, IList<Variable> variables) { RequestId = new Integer32(requestId); ErrorStatus = new Integer32((int)errorStatus); ErrorIndex = new Integer32(errorIndex); Variables = variables; _varbindSection = Variable.Transform(variables); ////_raw = ByteTool.ParseItems(_sequenceNumber, _errorStatus, _errorIndex, _varbindSection); }
public void TestToInt32() { const int result = -26955; byte[] expected = new byte[] {0x96, 0xB5}; Integer32 test = new Integer32(expected); Assert.AreEqual(result, test.ToInt32()); Assert.AreEqual(255, new Integer32(new byte[] {0x00, 0xFF}).ToInt32()); }
public void TestNegative3() { // #7240 const int i = -237053658; Integer32 data = new Integer32(i); byte[] bytes = data.ToBytes(); Assert.AreEqual(6, bytes.Length); var exception = Assert.Throws<ArgumentException>(() => DataFactory.CreateSnmpData(new byte[] { 0x02, 0x05, 0xFF, 0xF1, 0xDE, 0xD9, 0x26 })); Assert.AreEqual("truncation error for 32-bit integer coding\r\nParameter name: length", exception.Message); }
public void TestToBytes() { byte[] bytes = new byte[] {0x02, 0x02, 0x96, 0xB5}; Integer32 test = new Integer32(-26955); Assert.AreEqual(bytes, test.ToBytes()); Assert.AreEqual(new byte[] {0x02, 0x02, 0x00, 0xFF}, new Integer32(255).ToBytes()); Assert.AreEqual(6, new Integer32(2147483647).ToBytes().Length); }
/// <summary>Constructor</summary> public TrapPdu() { _asnType = (byte)PduType.Trap; _enterprise = new Oid(); _agentAddr = new IpAddress(); _generic = new Integer32(); _specific = new Integer32(); _timeStamp = new TimeTicks(); _variables = new VbCollection(); }
public void TestConstructor() { Integer32 test = new Integer32(100); Assert.AreEqual(100, test.ToInt32()); Integer32 test2 = new Integer32(new byte[] {0x00}); Assert.AreEqual(0, test2.ToInt32()); Integer32 test3 = new Integer32(new byte[] {0xFF}); Assert.AreEqual(-1, test3.ToInt32()); }
public TrapV2Pdu(int requestId, ObjectIdentifier enterprise, uint time, IList<Variable> variables) { Enterprise = enterprise; RequestId = new Integer32(requestId); _time = new TimeTicks(time); Variables = variables; IList<Variable> full = new List<Variable>(variables); full.Insert(0, new Variable(new uint[] { 1, 3, 6, 1, 2, 1, 1, 3, 0 }, _time)); full.Insert(1, new Variable(new uint[] { 1, 3, 6, 1, 6, 3, 1, 1, 4, 1, 0 }, Enterprise)); _varbindSection = Variable.Transform(full); }
public InformRequestPdu(int requestId, ObjectIdentifier enterprise, uint time, IList<Variable> variables) { Enterprise = enterprise; RequestId = new Integer32(requestId); _time = new TimeTicks(time); Variables = variables; IList<Variable> full = new List<Variable>(variables); full.Insert(0, new Variable(new uint[] { 1, 3, 6, 1, 2, 1, 1, 3, 0 }, _time)); full.Insert(1, new Variable(new uint[] { 1, 3, 6, 1, 6, 3, 1, 1, 4, 1, 0 }, Enterprise)); _varbindSection = Variable.Transform(full); ////_raw = ByteTool.ParseItems(_seq, new Integer32(0), new Integer32(0), _varbindSection); }
/// <summary> /// Creates a <see cref="GetBulkRequestPdu"/> with all contents. /// </summary> /// <param name="requestId">The request id.</param> /// <param name="nonRepeaters">Non-repeaters.</param> /// <param name="maxRepetitions">Max repetitions.</param> /// <param name="variables">Variables.</param> public GetBulkRequestPdu(int requestId, int nonRepeaters, int maxRepetitions, IList<Variable> variables) { if (variables == null) { throw new ArgumentNullException("variables"); } RequestId = new Integer32(requestId); ErrorStatus = new Integer32(nonRepeaters); ErrorIndex = new Integer32(maxRepetitions); Variables = variables; _varbindSection = Variable.Transform(variables); }
/// <summary> /// Initializes a new instance of the <see cref="Header"/> class. /// </summary> /// <param name="messageId">The message id.</param> /// <param name="maxMessageSize">Size of the max message.</param> /// <param name="securityLevel">The security level.</param> /// <remarks>If you want an empty header, please use <see cref="Empty"/>.</remarks> public Header(Integer32 messageId, Integer32 maxMessageSize, Levels securityLevel) { if (maxMessageSize == null) { throw new ArgumentNullException("maxMessageSize"); } _messageId = messageId; _maxSize = maxMessageSize; SecurityLevel = securityLevel; _flags = new OctetString(SecurityLevel); _securityModel = DefaultSecurityModel; }
public void TestConstructor() { Integer32 test = new Integer32(100); Assert.AreEqual(100, test.ToInt32()); Assert.Throws<InvalidCastException>(() => test.ToErrorCode()); Assert.Throws<InvalidCastException>(() => new Integer32(-1).ToErrorCode()); Integer32 test2 = new Integer32(new byte[] {0x00}); Assert.AreEqual(0, test2.ToInt32()); Integer32 test3 = new Integer32(new byte[] {0xFF}); Assert.AreEqual(-1, test3.ToInt32()); }
/// <summary> /// Creates a <see cref="ResponsePdu"/> with all contents. /// </summary> /// <param name="requestId">The request ID.</param> /// <param name="errorStatus">Error status.</param> /// <param name="errorIndex">Error index.</param> /// <param name="variables">Variables.</param> public ResponsePdu(int requestId, ErrorCode errorStatus, int errorIndex, IList<Variable> variables) { if (variables == null) { throw new ArgumentNullException("variables"); } RequestId = new Integer32(requestId); ErrorStatus = new Integer32((int)errorStatus); ErrorIndex = new Integer32(errorIndex); Variables = variables; _varbindSection = Variable.Transform(variables); }
/// <summary> /// Creates a <see cref="GetNextRequestPdu"/> with all contents. /// </summary> /// <param name="requestId">The request id.</param> /// <param name="variables">Variables</param> public GetNextRequestPdu(int requestId, IList<Variable> variables) { if (variables == null) { throw new ArgumentNullException("variables"); } RequestId = new Integer32(requestId); ErrorStatus = Integer32.Zero; ErrorIndex = Integer32.Zero; Variables = variables; _varbindSection = Variable.Transform(variables); }
/// <summary> /// Initializes a new instance of the <see cref="Header"/> class. /// </summary> /// <param name="data">The data.</param> public Header(ISnmpData data) { if (data == null) { throw new ArgumentNullException("data"); } Sequence container = (Sequence)data; _messageId = (Integer32)container[0]; _maxSize = (Integer32)container[1]; _flags = (OctetString)container[2]; _securityModel = (Integer32)container[3]; }
public void TestConstructor() { Integer32 test = new Integer32(100); Assert.AreEqual(100, test.ToInt32()); Integer32 test2 = new Integer32(new byte[] { 0x00 }); Assert.AreEqual(0, test2.ToInt32()); Integer32 test3 = new Integer32(new byte[] { 0xFF }); Assert.AreEqual(-1, test3.ToInt32()); }
public static IList <Variable> Set(string IpAddress, string writePermissionString, string Identifier, int readPort, string InsertedValue) { ISnmpData insertedValue = new Integer32(int.Parse(InsertedValue)); var result = Messenger.Set(VersionCode.V1, new IPEndPoint(IPAddress.Parse(IpAddress), readPort), new OctetString(writePermissionString), new List <Variable> { new Variable(new ObjectIdentifier(Identifier), insertedValue) }, 60000); return(result); }
public void TestEqual() { var left = new Integer32(599); var right = new Integer32(599); Assert.Equal(599.GetHashCode(), left.GetHashCode()); Assert.Equal(left, right); Assert.True((Integer32)null == (Integer32)null); Assert.NotEqual(null, right); Assert.NotEqual(left, null); Assert.True(left.Equals((object)right)); Assert.True(left.Equals(right)); Assert.True(left != null); }
public void SetGood() { var i1 = new Integer32(10); var i2 = new Integer32(20); Assert.Equal(10, i1); i1.Set(i2); i2.Value = 30; Assert.Equal(20, i1.Value); Assert.Equal(30, i2.Value); }
private void ActSetExecute(object sender, EventArgs e) { try { ISnmpData data; using (FormSet form = new FormSet()) { ObjectIdentifier id = GetIdForGet( treeView1.SelectedNode.Tag as IDefinition); form.OldVal = Profiles.DefaultProfile.GetValue(new Variable(id)); if (form.ShowDialog() != DialogResult.OK) { return; } if (form.IsString) { data = new OctetString(form.NewVal); } else { int result; if (!int.TryParse(form.NewVal, out result)) { MessageBox.Show( "Value entered was not an Integer!", "SNMP Set Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } data = new Integer32(result); } } Logger.Info("==== Begin SET ===="); ObjectIdentifier id1 = GetIdForGet(treeView1.SelectedNode.Tag as IDefinition); Profiles.DefaultProfile.Set(new Variable(id1, data)); } catch (Exception ex) { Logger.Info(ex.ToString()); } finally { Logger.Info("==== End SET ===="); } }
/// <inheritdoc/> public override string?ToString() { return(DataType switch { StormGameEventDataType.Bool => Boolean?.ToString(), StormGameEventDataType.Integer32 => Integer32?.ToString(), StormGameEventDataType.UnsignedInteger32 => UnsignedInteger32?.ToString(), StormGameEventDataType.UnsignedInteger64 => UnsignedInteger64?.ToString(), StormGameEventDataType.Blob => Blob != null ? @$ "" "{Blob}" "" : null, StormGameEventDataType.Array => Array != null ? $"[{string.Join(", ", Array.Select(i => i?.ToString()))}]" : null, StormGameEventDataType.Structure => Structure != null ? $"{{{string.Join(", ", Structure.Select(i => i?.ToString()))}}}" : null, StormGameEventDataType.BitArray => BitArray != null ? $"[{string.Join(", ", BitArray.Select(i => i.ToString()))}]" : null, _ => string.Empty, });
public void TestEqual() { var left = new Integer32(599); var right = new Integer32(599); Assert.AreEqual(left, right); // ReSharper disable RedundantCast // ReSharper disable EqualExpressionComparison Assert.IsTrue((Integer32)null == (Integer32)null); // ReSharper restore EqualExpressionComparison // ReSharper restore RedundantCast Assert.AreNotEqual(null, right); Assert.AreNotEqual(left, null); Assert.IsTrue(left.Equals(right)); Assert.IsTrue(left != null); }
/// <summary> /// Reset USM object to default values. All OctetString and MutableByte members are reset to 0 length and /// privacy and authentication protocols are set to none. /// </summary> public void Reset() { Type = 3; engineId = new OctetString(); engineBoots = new Integer32(); engineTime = new Integer32(); authentication = AuthenticationDigests.None; securityName = new OctetString(); authenticationSecret = new MutableByte(); authenticationParameters = new OctetString(); privacySecret = new MutableByte(); privacy = EPrivacyProtocols.None; privacyParameters = new OctetString(); }
/// <summary> /// Returns two LONG values, in and out octets for plotting. /// </summary> /// <param name="interfaceIndex"></param> /// <returns></returns> private long[] getInterfaceOctets(int interfaceIndex) { // Where our SNMP results are going. List <Variable> oidResults = new List <Variable>(); ObjectIdentifier oidSpeed = new ObjectIdentifier(".1.3.6.1.2.1.2.2.1.5." + interfaceIndex); ObjectIdentifier oidType = new ObjectIdentifier(".1.3.6.1.2.1.2.2.1.3." + interfaceIndex); ObjectIdentifier oidInOctets = new ObjectIdentifier(".1.3.6.1.2.1.2.2.1.10. " + interfaceIndex); ObjectIdentifier oidOutOctets = new ObjectIdentifier(".1.3.6.1.2.1.2.2.1.16." + interfaceIndex); // OID's we're going to retrieve. List <Variable> oidList = new List <Variable>(); oidList.Add(new Variable(oidSpeed)); oidList.Add(new Variable(oidType)); oidList.Add(new Variable(oidInOctets)); oidList.Add(new Variable(oidOutOctets)); long[] returnValue = new long[3]; oidResults = snmp.GetOidValues(oidList); Integer32 vIfType = (Integer32)oidResults.Find(o => o.Id == oidType).Data; int dIfType = vIfType.ToInt32(); Gauge32 guageIfSpeed = (Gauge32)oidResults.Find(o => o.Id == oidSpeed).Data; Variable vInOctets = oidResults.Find(o => o.Id == oidInOctets); Variable vOutOctets = oidResults.Find(o => o.Id == oidOutOctets); if (dIfType != 94 && dIfType != 117 && dIfType != 6 && dIfType != 131) { return new long[] { 0, 0, 0 } } ; if (vInOctets.Data.TypeCode == SnmpType.NoSuchInstance || vOutOctets.Data.TypeCode == SnmpType.NoSuchInstance) { return(new long[] { 0, 0, 0 }); } Counter32 counterInOctets = (Counter32)vInOctets.Data; Counter32 counterOutOctets = (Counter32)vOutOctets.Data; returnValue[0] = Convert.ToInt64(guageIfSpeed.ToUInt32()); returnValue[1] = Convert.ToInt64(counterInOctets.ToString()); returnValue[2] = Convert.ToInt64(counterOutOctets.ToString()); return(returnValue); }
public void TestConstructor() { Integer32 test = new Integer32(100); Assert.Equal(100, test.ToInt32()); Assert.Throws <InvalidCastException>(() => test.ToErrorCode()); Assert.Throws <InvalidCastException>(() => new Integer32(-1).ToErrorCode()); Integer32 test2 = new Integer32(new byte[] { 0x00 }); Assert.Equal(0, test2.ToInt32()); Integer32 test3 = new Integer32(new byte[] { 0xFF }); Assert.Equal(-1, test3.ToInt32()); }
public void TestEqual() { var left = new Integer32(599); var right = new Integer32(599); Assert.Equal(left, right); // ReSharper disable RedundantCast // ReSharper disable EqualExpressionComparison Assert.True((Integer32)null == (Integer32)null); // ReSharper restore EqualExpressionComparison // ReSharper restore RedundantCast Assert.NotEqual(null, right); Assert.NotEqual(left, null); Assert.True(left.Equals(right)); Assert.True(left != null); }
public void Generate() { var i = new Integer32(300); var buffer = new MutableByte(); i.Encode(buffer); var expected = new byte[] { SnmpConstants.SmiInteger, // ASN.1 Type 0x02, // Length 0x01, 0x2C, // 300 in big endian }; Assert.Equal(expected, buffer); }
public static ISnmpData GetSnmpFromDotNet(object valeur) { ISnmpData data = null; if (valeur != null) { if (valeur is int) { data = new Integer32((int)valeur); } else { data = new OctetString(valeur.ToString()); } } return(data); }
/// <summary> Private implementation of getResponse. /// Has an Integer object as a parameter so we can distinguish /// the null and the message number case /// </summary> // private LdapMessage getResponse(System.Int32 msgid) private LdapMessage getResponse(Integer32 msgid) { System.Object resp; RfcLdapMessage message; LdapMessage response; if ((resp = agent.getLdapMessage(msgid)) == null) { // blocks return(null); // no messages from this agent } // Local error occurred, contains a LocalException if (resp is LdapResponse) { return((LdapMessage)resp); } // Normal message handling message = (RfcLdapMessage)resp; switch (message.Type) { case LdapMessage.SEARCH_RESPONSE: response = new LdapSearchResult(message); break; case LdapMessage.SEARCH_RESULT_REFERENCE: response = new LdapSearchResultReference(message); break; case LdapMessage.EXTENDED_RESPONSE: ExtResponseFactory fac = new ExtResponseFactory(); response = ExtResponseFactory.convertToExtendedResponse(message); break; case LdapMessage.INTERMEDIATE_RESPONSE: response = IntermediateResponseFactory.convertToIntermediateResponse(message); break; default: response = new LdapResponse(message); break; } return(response); }
private ISnmpData ConvertStringValue2SnmpData(SnmpType type, string value) { ISnmpData data; try { switch (type) { case SnmpType.Integer32: data = new Integer32(int.Parse(value)); break; case SnmpType.Counter32: data = new Counter32(uint.Parse(value)); break; case SnmpType.Gauge32: data = new Gauge32(uint.Parse(value)); break; case SnmpType.TimeTicks: data = new TimeTicks(uint.Parse(value)); break; case SnmpType.OctetString: data = new OctetString(value); break; case SnmpType.IPAddress: data = new IP((IPAddress.Parse(value)).GetAddressBytes()); break; default: throw new InvalidDataType(); } } catch (InvalidCastException) { throw new InvalidDataType(); } return(data); }
public InformRequestPdu(int requestId, ObjectIdentifier enterprise, uint time, IList<Variable> variables) { if (enterprise == null) { throw new ArgumentNullException("enterprise"); } if (variables == null) { throw new ArgumentNullException("variables"); } Enterprise = enterprise; RequestId = new Integer32(requestId); _time = new TimeTicks(time); Variables = variables; IList<Variable> full = new List<Variable>(variables); full.Insert(0, new Variable(_timeId, _time)); full.Insert(1, new Variable(_enterpriseId, Enterprise)); _varbindSection = Variable.Transform(full); }
/// <summary> /// Creates a <see cref="TrapV1Pdu"/> instance with PDU elements. /// </summary> /// <param name="enterprise">Enterprise</param> /// <param name="agent">Agent address</param> /// <param name="generic">Generic trap type</param> /// <param name="specific">Specific trap type</param> /// <param name="timestamp">Time stamp</param> /// <param name="variables">Variable binds</param> public TrapV1Pdu(ObjectIdentifier enterprise, IP agent, Integer32 generic, Integer32 specific, TimeTicks timestamp, IList<Variable> variables) { if (enterprise == null) { throw new ArgumentNullException("enterprise"); } if (agent == null) { throw new ArgumentNullException("agent"); } if (generic == null) { throw new ArgumentNullException("generic"); } if (specific == null) { throw new ArgumentNullException("specific"); } if (timestamp == null) { throw new ArgumentNullException("timestamp"); } if (variables == null) { throw new ArgumentNullException("variables"); } Enterprise = enterprise; AgentAddress = agent; _generic = generic; _specific = specific; TimeStamp = timestamp; _varbindSection = Variable.Transform(variables); Variables = variables; }
private void configPduVb(LeafVarBinding leafVb, Pdu pdu) { System.Collections.Generic.IEnumerator <string> enumerator = leafVb.VarBindings.Keys.GetEnumerator(); while (enumerator.MoveNext()) { string current = enumerator.Current; if (pdu.Type == PduType.Set) { object obj = leafVb.VarBindings[current]; AsnType value = null; if (obj is string) { value = new OctetString(System.Convert.ToString(obj)); } else { if (obj is int) { value = new Integer32(System.Convert.ToInt32(obj)); } else { if (obj is System.Net.IPAddress) { value = new IpAddress(obj as System.Net.IPAddress); } } } pdu.VbList.Add(new Oid(current), value); } else { pdu.VbList.Add(current); } } }
/// <summary>Used to create correct variable type object for the specified encoded type</summary> /// <param name="asnType">ASN.1 type code</param> /// <returns>A new object matching type supplied or null if type was not recognized.</returns> public static AsnType GetSyntaxObject(SMIDataTypeCode asnType) { AsnType obj = null; if (asnType == SMIDataTypeCode.Integer) obj = new Integer32 (); else if (asnType == SMIDataTypeCode.Counter32) obj = new Counter32 (); else if (asnType == SMIDataTypeCode.Gauge32) obj = new Gauge32 (); else if (asnType == SMIDataTypeCode.Counter64) obj = new Counter64 (); else if (asnType == SMIDataTypeCode.TimeTicks) obj = new TimeTicks (); else if (asnType == SMIDataTypeCode.OctetString) obj = new OctetString (); else if (asnType == SMIDataTypeCode.Opaque) obj = new Opaque (); else if (asnType == SMIDataTypeCode.IPAddress) obj = new IpAddress (); else if (asnType == SMIDataTypeCode.ObjectId) obj = new Oid (); else if (asnType == SMIDataTypeCode.PartyClock) obj = new V2PartyClock (); else if (asnType == SMIDataTypeCode.NoSuchInstance) obj = new NoSuchInstance (); else if (asnType == SMIDataTypeCode.NoSuchObject) obj = new NoSuchObject (); else if (asnType == SMIDataTypeCode.EndOfMibView) obj = new EndOfMibView (); else if (asnType == SMIDataTypeCode.Null) { obj = new Null (); } return obj; }
public void SetStringBad() { var i1 = new Integer32(10); Assert.Throws <ArgumentException>(() => { i1.Set("Bad"); }); }
public void ConvertToString() { var i1 = new Integer32(10); Assert.Equal("10", i1.ToString()); }
internal static extern int SHGetFileInfo(string pszPath, Integer32 dwFileAttributes, ref SHFILEINFO psfi, Integer32 cbFileInfo, Integer32 uFlags);
public void TestToBytes2() { Integer32 i = new Integer32(-1); Assert.AreEqual(new byte[] {0x02, 0x01, 0xFF}, i.ToBytes()); }
private void ConstructListByIP(IpAddress agentIP, string equipName) { if (string.IsNullOrEmpty(equipName)) { try { equipName = App.idAndEquipList[App.ipAndIPinfoList[agentIP.ToString()].EquipIndex].Name; } catch { } } ocInterfaces.Clear(); OctetString community = new OctetString(App.snmpCommunity); AgentParameters param = new AgentParameters(community); param.DisableReplySourceCheck = !App.snmpCheckSrcFlag; // Set SNMP version to 2 (GET-BULK only works with SNMP ver 2 and 3) param.Version = SnmpVersion.Ver2; // Construct target UdpTarget target = new UdpTarget((IPAddress)agentIP, App.snmpPort, App.snmpTimeout, App.snmpRetry); // Define Oid that is the root of the MIB // tree you wish to retrieve Oid rootOid = new Oid("1.3.6.1.2.1.2.2.1.1"); // ifIndex // This Oid represents last Oid returned by // the SNMP agent Oid lastOid = (Oid)rootOid.Clone(); // Pdu class used for all requests Pdu pdu = new Pdu(PduType.GetBulk); // In this example, set NonRepeaters value to 0 pdu.NonRepeaters = 0; // MaxRepetitions tells the agent how many Oid/Value pairs to return // in the response. pdu.MaxRepetitions = 5; // Loop through results while (lastOid != null) { // When Pdu class is first constructed, RequestId is set to 0 // and during encoding id will be set to the random value // for subsequent requests, id will be set to a value that // needs to be incremented to have unique request ids for each // packet if (pdu.RequestId != 0) { pdu.RequestId += 1; } // Clear Oids from the Pdu class. pdu.VbList.Clear(); // Initialize request PDU with the last retrieved Oid pdu.VbList.Add(lastOid); // Make SNMP request SnmpV2Packet result = null; try { result = (SnmpV2Packet)target.Request(pdu, param); } catch (Exception ex) { MessageBox.Show("获取SNMP应答出现错误\n" + ex.Message); target.Close(); return; } // You should catch exceptions in the Request if using in real application. // If result is null then agent didn't reply or we couldn't parse the reply. if (result != null) { // ErrorStatus other then 0 is an error returned by // the Agent - see SnmpConstants for error definitions if (result.Pdu.ErrorStatus != 0) { // agent reported an error with the request MessageBox.Show(string.Format("SNMP应答数据包中有错误。 Error {0} index {1}", result.Pdu.ErrorStatus, result.Pdu.ErrorIndex)); lastOid = null; break; } else { // Walk through returned variable bindings foreach (Vb v in result.Pdu.VbList) { // Check that retrieved Oid is "child" of the root OID if (rootOid.IsRootOf(v.Oid)) { if (v.Value.Type == SnmpConstants.SMI_ENDOFMIBVIEW) { lastOid = null; } else { lastOid = v.Oid; } Integer32 f = v.Value as Integer32; Interface intf = new Interface(agentIP); intf.EquipName = equipName; //intf.TimerInteral = double.Parse(cbbTimerInterval.Text); ocInterfaces.Add(f, intf); } else { // we have reached the end of the requested // MIB tree. Set lastOid to null and exit loop lastOid = null; break; // 每个数据包获取5个值,一旦有一个不是这一列的数据,后面的应该都不是了 } } } } else { MessageBox.Show("指定网管代理未返回有效信息"); } } target.Close(); string errorMessage; foreach (Integer32 i in ocInterfaces.Keys) { string strOid = "1.3.6.1.2.1.2.2.1.2." + i.ToString(); VbCollection vbc = SnmpHelper.GetResultsFromOids(agentIP, new string[] { strOid }, out errorMessage); ocInterfaces[i].Descr = vbc[0].Value.ToString(); ocInterfaces[i].IfIndex = i; } }
internal System.Object getLdapMessage(Integer32 msgId) { System.Object rfcMsg; // If no messages for this agent, just return null if (messages.Count == 0) { return(null); } if (msgId != null) { // Request messages for a specific ID try { // Get message for this ID // Message info = messages.findMessageById(msgId); Message info = messages.findMessageById(msgId.intValue); rfcMsg = info.waitForReply(); // blocks for a response if (!info.acceptsReplies() && !info.hasReplies()) { // Message complete and no more replies, remove from id list SupportClass.VectorRemoveElement(messages, info); info.Abandon(null, null); // Get rid of resources } else { } return(rfcMsg); } catch (System.FieldAccessException ex) { // no such message id return(null); } } else { // A msgId was NOT specified, any message will do lock (messages.SyncRoot) { while (true) { int next = indexLastRead + 1; Message info; for (int i = 0; i < messages.Count; i++) { if (next >= messages.Count) { next = 0; } info = (Message)messages[next]; indexLastRead = next++; rfcMsg = info.Reply; // Check this request is complete if (!info.acceptsReplies() && !info.hasReplies()) { // Message complete & no more replies, remove from id list SupportClass.VectorRemoveElement(messages, info); // remove from list info.Abandon(null, null); // Get rid of resources // Start loop at next message that is now moved // to the current position in the Vector. i -= 1; } if (rfcMsg != null) { // We got a reply return(rfcMsg); } else { // We found no reply here } } // end for loop */ // Messages can be removed in this loop, we we must // check if any messages left for this agent if (messages.Count == 0) { return(null); } // No data, wait for something to come in. try { System.Threading.Monitor.Wait(messages.SyncRoot, TimeSpan.FromSeconds(40)); } catch (System.Threading.ThreadInterruptedException ex) { } } /* end while */ } /* end synchronized */ } }
/// <summary> /// Reset the class. Initialize all member values to class defaults. /// </summary> public void Reset() { _engineId = new OctetString(); _engineBoots = new Integer32(); _engineTime = new Integer32(); _engineTimeStamp = DateTime.MinValue; _privacyProtocol = PrivacyProtocols.None; _authenticationProtocol = AuthenticationDigests.None; _privacySecret = new MutableByte(); _authenticationSecret = new MutableByte(); _contextEngineId = new OctetString(); _contextName = new OctetString(); _securityName = new OctetString(); // max message size is initialized to 64KB by default. It will be // to the smaller of the two values after discovery process _maxMessageSize = new Integer32(64 * 1024); _reportable = true; _privacyKey = null; _authenticationKey = null; }
static void Main(string[] args) { string community = "public"; bool showHelp = false; bool showVersion = false; VersionCode version = VersionCode.V1; int timeout = 1000; int retry = 0; Levels level = Levels.Reportable; string user = string.Empty; string authentication = string.Empty; string authPhrase = string.Empty; string privacy = string.Empty; string privPhrase = string.Empty; OptionSet p = new OptionSet() .Add("c:", "-c for community name, (default is public)", delegate(string v) { if (v != null) { community = v; } }) .Add("l:", "-l for security level, (default is noAuthNoPriv)", delegate(string v) { if (v.ToUpperInvariant() == "NOAUTHNOPRIV") { level = Levels.Reportable; } else if (v.ToUpperInvariant() == "AUTHNOPRIV") { level = Levels.Authentication | Levels.Reportable; } else if (v.ToUpperInvariant() == "AUTHPRIV") { level = Levels.Authentication | Levels.Privacy | Levels.Reportable; } else { throw new ArgumentException("no such security mode: " + v); } }) .Add("a:", "-a for authentication method (MD5 or SHA)", delegate(string v) { authentication = v; }) .Add("A:", "-A for authentication passphrase", delegate(string v) { authPhrase = v; }) .Add("x:", "-x for privacy method", delegate(string v) { privacy = v; }) .Add("X:", "-X for privacy passphrase", delegate(string v) { privPhrase = v; }) .Add("u:", "-u for security name", delegate(string v) { user = v; }) .Add("h|?|help", "-h, -?, -help for help.", delegate(string v) { showHelp = v != null; }) .Add("V", "-V to display version number of this application.", delegate(string v) { showVersion = v != null; }) .Add("t:", "-t for timeout value (unit is second).", delegate(string v) { timeout = int.Parse(v) * 1000; }) .Add("r:", "-r for retry count (default is 0)", delegate(string v) { retry = int.Parse(v); }) .Add("v:", "-v for SNMP version (1, 2, and 3 are currently supported)", delegate(string v) { switch (int.Parse(v)) { case 1: version = VersionCode.V1; break; case 2: version = VersionCode.V2; break; case 3: version = VersionCode.V3; break; default: throw new ArgumentException("no such version: " + v); } }); List <string> extra = p.Parse(args); if (showHelp) { ShowHelp(); return; } if (showVersion) { Console.WriteLine(System.Reflection.Assembly.GetExecutingAssembly().GetName().Version); return; } if (extra.Count < 2) { ShowHelp(); return; } IPAddress ip; bool parsed = IPAddress.TryParse(extra[0], out ip); if (!parsed) { foreach (IPAddress address in Dns.GetHostAddresses(extra[0]).Where(address => address.AddressFamily == AddressFamily.InterNetwork)) { ip = address; break; } if (ip == null) { Console.WriteLine("invalid host or wrong IP address found: " + extra[0]); return; } } if ((extra.Count - 1) % 3 != 0) { Console.WriteLine("invalid variable number: " + (extra.Count - 1)); return; } try { List <Variable> vList = new List <Variable>(); for (int i = 1; i < extra.Count; i = i + 3) { string type = extra[i + 1]; if (type.Length != 1) { Console.WriteLine("invalid type string: " + type); return; } ISnmpData data; switch (type[0]) { case 'i': data = new Integer32(int.Parse(extra[i + 2])); break; case 'u': data = new Gauge32(uint.Parse(extra[i + 2])); break; case 't': data = new TimeTicks(uint.Parse(extra[i + 2])); break; case 'a': data = new IP(IPAddress.Parse(extra[i + 2])); break; case 'o': data = new ObjectIdentifier(extra[i + 2]); break; case 'x': data = new OctetString(ByteTool.Convert(extra[i + 2])); break; case 's': data = new OctetString(extra[i + 2]); break; case 'd': data = new OctetString(ByteTool.ConvertDecimal(extra[i + 2])); break; case 'n': data = new Null(); break; default: Console.WriteLine("unknown type string: " + type[0]); return; } Variable test = new Variable(new ObjectIdentifier(extra[i]), data); vList.Add(test); } IPEndPoint receiver = new IPEndPoint(ip, 161); if (version != VersionCode.V3) { foreach (Variable variable in Messenger.Set(version, receiver, new OctetString(community), vList, timeout)) { Console.WriteLine(variable); } return; } if (string.IsNullOrEmpty(user)) { Console.WriteLine("User name need to be specified for v3."); return; } IAuthenticationProvider auth = (level & Levels.Authentication) == Levels.Authentication ? GetAuthenticationProviderByName(authentication, authPhrase) : DefaultAuthenticationProvider.Instance; IPrivacyProvider priv; if ((level & Levels.Privacy) == Levels.Privacy) { priv = new DESPrivacyProvider(new OctetString(privPhrase), auth); } else { priv = new DefaultPrivacyProvider(auth); } Discovery discovery = Messenger.NextDiscovery; ReportMessage report = discovery.GetResponse(timeout, receiver); SetRequestMessage request = new SetRequestMessage(VersionCode.V3, Messenger.NextMessageId, Messenger.NextRequestId, new OctetString(user), vList, priv, Messenger.MaxMessageSize, report); ISnmpMessage response = request.GetResponse(timeout, receiver); if (response.Pdu().ErrorStatus.ToInt32() != 0) // != ErrorCode.NoError { throw ErrorException.Create( "error in response", receiver.Address, response); } foreach (Variable v in response.Pdu().Variables) { Console.WriteLine(v); } } catch (SnmpException ex) { Console.WriteLine(ex); } catch (SocketException ex) { Console.WriteLine(ex); } }
public void TestToBytes2() { Integer32 i = new Integer32(-1); Assert.Equal(new byte[] { 0x02, 0x01, 0xFF }, i.ToBytes()); }
public TrapV1Pdu(uint[] enterprise, IP agent, Integer32 generic, Integer32 specific, TimeTicks timestamp, IList<Variable> variables) : this(new ObjectIdentifier(enterprise), agent, generic, specific, timestamp, variables) { }
public void SetStringEmpty() { var i1 = new Integer32(10); Assert.Throws <ArgumentOutOfRangeException>(() => { i1.Set(string.Empty); }); }
internal static extern Integer32 DwmGetWindowAttribute(Integer hwnd, DWMWINDOWATTRIBUTE dwAttribute, out Integer32 pvAttribute, Integer32 cbAttribute);
static void Main(string[] args) { string community = "public"; bool showHelp = false; bool showVersion = false; VersionCode version = VersionCode.V1; int timeout = 1000; int retry = 0; Levels level = Levels.Reportable; string user = string.Empty; string authentication = string.Empty; string authPhrase = string.Empty; string privacy = string.Empty; string privPhrase = string.Empty; bool dump = false; OptionSet p = new OptionSet() .Add("c:", "Community name, (default is public)", delegate(string v) { if (v != null) { community = v; } }) .Add("l:", "Security level, (default is noAuthNoPriv)", delegate(string v) { if (v.ToUpperInvariant() == "NOAUTHNOPRIV") { level = Levels.Reportable; } else if (v.ToUpperInvariant() == "AUTHNOPRIV") { level = Levels.Authentication | Levels.Reportable; } else if (v.ToUpperInvariant() == "AUTHPRIV") { level = Levels.Authentication | Levels.Privacy | Levels.Reportable; } else { throw new ArgumentException("no such security mode: " + v); } }) .Add("a:", "Authentication method (MD5 or SHA)", delegate(string v) { authentication = v; }) .Add("A:", "Authentication passphrase", delegate(string v) { authPhrase = v; }) .Add("x:", "Privacy method", delegate(string v) { privacy = v; }) .Add("X:", "Privacy passphrase", delegate(string v) { privPhrase = v; }) .Add("u:", "Security name", delegate(string v) { user = v; }) .Add("h|?|help", "Print this help information.", delegate(string v) { showHelp = v != null; }) .Add("V", "Display version number of this application.", delegate(string v) { showVersion = v != null; }) .Add("d", "Display message dump", delegate(string v) { dump = true; }) .Add("t:", "Timeout value (unit is second).", delegate(string v) { timeout = int.Parse(v) * 1000; }) .Add("r:", "Retry count (default is 0)", delegate(string v) { retry = int.Parse(v); }) .Add("v:", "SNMP version (1, 2, and 3 are currently supported)", delegate(string v) { switch (int.Parse(v)) { case 1: version = VersionCode.V1; break; case 2: version = VersionCode.V2; break; case 3: version = VersionCode.V3; break; default: throw new ArgumentException("no such version: " + v); } }); if (args.Length == 0) { ShowHelp(p); return; } List <string> extra; try { extra = p.Parse(args); } catch (OptionException ex) { Console.WriteLine(ex.Message); return; } if (showHelp) { ShowHelp(p); return; } if ((extra.Count - 1) % 3 != 0) { Console.WriteLine("invalid variable number: " + extra.Count); return; } if (showVersion) { Console.WriteLine(Assembly.GetEntryAssembly().GetCustomAttribute <AssemblyVersionAttribute>().Version); return; } IPAddress ip; bool parsed = IPAddress.TryParse(extra[0], out ip); if (!parsed) { var addresses = Dns.GetHostAddressesAsync(extra[0]); addresses.Wait(); foreach (IPAddress address in addresses.Result.Where(address => address.AddressFamily == AddressFamily.InterNetwork)) { ip = address; break; } if (ip == null) { Console.WriteLine("invalid host or wrong IP address found: " + extra[0]); return; } } try { List <Variable> vList = new List <Variable>(); for (int i = 1; i < extra.Count; i = i + 3) { string type = extra[i + 1]; if (type.Length != 1) { Console.WriteLine("invalid type string: " + type); return; } ISnmpData data; switch (type[0]) { case 'i': data = new Integer32(int.Parse(extra[i + 2])); break; case 'u': data = new Gauge32(uint.Parse(extra[i + 2])); break; case 't': data = new TimeTicks(uint.Parse(extra[i + 2])); break; case 'a': data = new IP(IPAddress.Parse(extra[i + 2]).GetAddressBytes()); break; case 'o': data = new ObjectIdentifier(extra[i + 2]); break; case 'x': data = new OctetString(ByteTool.Convert(extra[i + 2])); break; case 's': data = new OctetString(extra[i + 2]); break; case 'd': data = new OctetString(ByteTool.ConvertDecimal(extra[i + 2])); break; case 'n': data = new Null(); break; default: Console.WriteLine("unknown type string: " + type[0]); return; } Variable test = new Variable(new ObjectIdentifier(extra[i]), data); vList.Add(test); } IPEndPoint receiver = new IPEndPoint(ip, 161); if (version != VersionCode.V3) { foreach (Variable variable in Messenger.Set(version, receiver, new OctetString(community), vList, timeout)) { Console.WriteLine(variable); } return; } if (string.IsNullOrEmpty(user)) { Console.WriteLine("User name need to be specified for v3."); return; } IAuthenticationProvider auth = (level & Levels.Authentication) == Levels.Authentication ? GetAuthenticationProviderByName(authentication, authPhrase) : DefaultAuthenticationProvider.Instance; IPrivacyProvider priv; if ((level & Levels.Privacy) == Levels.Privacy) { #if NET452 priv = new DESPrivacyProvider(new OctetString(privPhrase), auth); #else Console.WriteLine("DES (ECB) is not supported by .NET Core."); return; #endif } else { priv = new DefaultPrivacyProvider(auth); } Discovery discovery = Messenger.GetNextDiscovery(SnmpType.SetRequestPdu); ReportMessage report = discovery.GetResponse(timeout, receiver); SetRequestMessage request = new SetRequestMessage(VersionCode.V3, Messenger.NextMessageId, Messenger.NextRequestId, new OctetString(user), vList, priv, Messenger.MaxMessageSize, report); ISnmpMessage reply = request.GetResponse(timeout, receiver); if (dump) { Console.WriteLine("Request message bytes:"); Console.WriteLine(ByteTool.Convert(request.ToBytes())); Console.WriteLine("Response message bytes:"); Console.WriteLine(ByteTool.Convert(reply.ToBytes())); } if (reply is ReportMessage) { if (reply.Pdu().Variables.Count == 0) { Console.WriteLine("wrong report message received"); return; } var id = reply.Pdu().Variables[0].Id; if (id != Messenger.NotInTimeWindow) { var error = id.GetErrorMessage(); Console.WriteLine(error); return; } // according to RFC 3414, send a second request to sync time. request = new SetRequestMessage(VersionCode.V3, Messenger.NextMessageId, Messenger.NextRequestId, new OctetString(user), vList, priv, Messenger.MaxMessageSize, reply); reply = request.GetResponse(timeout, receiver); } else if (reply.Pdu().ErrorStatus.ToInt32() != 0) // != ErrorCode.NoError { throw ErrorException.Create( "error in response", receiver.Address, reply); } foreach (Variable v in reply.Pdu().Variables) { Console.WriteLine(v); } } catch (SnmpException ex) { Console.WriteLine(ex); } catch (SocketException ex) { Console.WriteLine(ex); } }
private List <Variable> BuildVariableList(Command command, List <string> values) { List <Variable> variables = new List <Variable>(); if (command == Command.Get) { for (int i = 1; i < values.Count; i++) { Variable test = new Variable(new ObjectIdentifier(values[i])); variables.Add(test); } } else { for (int i = 1; i < values.Count; i = i + 3) { string type = values[i + 1]; if (type.Length != 1) { throw new InvalidOperationException("SNMP Error: Invalid type string: " + type); } ISnmpData data; switch (type[0]) { case 'i': data = new Integer32(int.Parse(values[i + 2])); break; case 'u': data = new Gauge32(uint.Parse(values[i + 2])); break; case 't': data = new TimeTicks(uint.Parse(values[i + 2])); break; case 'a': data = new IP(IPAddress.Parse(values[i + 2])); break; case 'o': data = new ObjectIdentifier(values[i + 2]); break; case 'x': data = new OctetString(ByteTool.Convert(values[i + 2])); break; case 's': data = new OctetString(values[i + 2]); break; case 'd': data = new OctetString(ByteTool.ConvertDecimal(values[i + 2])); break; case 'n': data = new Null(); break; default: throw new InvalidOperationException("SNMP Error: Unknown type string: " + type[0]); } Variable test = new Variable(new ObjectIdentifier(values[i]), data); variables.Add(test); } } return(variables); }
/// <summary> /// Initializes a new instance of the <see cref="TrapV1Pdu"/> class. /// </summary> /// <param name="length">The length data.</param> /// <param name="stream">The stream.</param> public TrapV1Pdu(Tuple<int, byte[]> length, Stream stream) { if (length == null) { throw new ArgumentNullException("length"); } if (stream == null) { throw new ArgumentNullException("stream"); } Enterprise = (ObjectIdentifier)DataFactory.CreateSnmpData(stream); AgentAddress = (IP)DataFactory.CreateSnmpData(stream); _generic = (Integer32)DataFactory.CreateSnmpData(stream); _specific = (Integer32)DataFactory.CreateSnmpData(stream); TimeStamp = (TimeTicks)DataFactory.CreateSnmpData(stream); _varbindSection = (Sequence)DataFactory.CreateSnmpData(stream); Variables = Variable.Transform(_varbindSection); _length = length.Item2; }
public void Visit(Integer32 value) { value.TypedValue = mBitsReader.ReadInt32(value.BitsCount); }
/// <summary> /// Standard constructor /// </summary> public AgentParameters() { _version = new Integer32((int)SnmpVersion.Ver1); _community = new OctetString("public"); _disableReplySourceCheck = false; }
/// <summary> /// /// </summary> /// <param name="oid"></param> /// <param name="value"></param> /// <param name="trapsEps"></param> public SnmpIntObject(string oid, int value, params IPEndPoint[] trapsEps) : base(oid) { _data = new Integer32(value); _trapsEps = trapsEps; }