/* Copyright (C) 2014 Tal Aloni . All rights reserved. * * You can redistribute this program and/or modify it under the terms of * the GNU Lesser Public License as published by the Free Software Foundation, * either version 3 of the License, or (at your option) any later version. */ using System; using System.Collections.Generic; using System.Text; using Utilities; namespace SMBLibrary.NetBios { public class NodeStatistics { public const int Length = 46; public byte[] UnitID; // MAC address, 6 bytes; public byte Jumpers; public byte TestResult; public ushort VersionNumber; public ushort PeriodOfStatistics; public ushort NumberOfCRCs; public ushort NumberOfAlignmentErrors; public ushort NumberOfCollisions; public ushort NumberOfSendAborts; public uint NumberOfGoodSends; public uint NumberOfGoodReceives; public ushort NumberOfRetransmits; public ushort NumberOfNoResourceConditions; public ushort NumberOfFreeCommandBlocks; public ushort TotalNumberOfCommandBlocks; public ushort MaxTotalNumberOfCommandBlocks; public ushort NumberOfPendingSessions; public ushort MaxNumberOfPendingSessions; public ushort MaxTotalsSessionsPossible; public ushort SessionDataPacketSize; public NodeStatistics() { UnitID = new byte[6]; } public void WriteBytes(byte[] buffer, int offset) { ByteWriter.WriteBytes(buffer, ref offset, UnitID, 6); ByteWriter.WriteByte(buffer, ref offset, Jumpers); ByteWriter.WriteByte(buffer, ref offset, TestResult); BigEndianWriter.WriteUInt16(buffer, ref offset, VersionNumber); BigEndianWriter.WriteUInt16(buffer, ref offset, PeriodOfStatistics); BigEndianWriter.WriteUInt16(buffer, ref offset, NumberOfCRCs); BigEndianWriter.WriteUInt16(buffer, ref offset, NumberOfAlignmentErrors); BigEndianWriter.WriteUInt16(buffer, ref offset, NumberOfCollisions); BigEndianWriter.WriteUInt16(buffer, ref offset, NumberOfSendAborts); BigEndianWriter.WriteUInt32(buffer, ref offset, NumberOfGoodSends); BigEndianWriter.WriteUInt32(buffer, ref offset, NumberOfGoodReceives); BigEndianWriter.WriteUInt16(buffer, ref offset, NumberOfRetransmits); BigEndianWriter.WriteUInt16(buffer, ref offset, NumberOfNoResourceConditions); BigEndianWriter.WriteUInt16(buffer, ref offset, NumberOfFreeCommandBlocks); BigEndianWriter.WriteUInt16(buffer, ref offset, TotalNumberOfCommandBlocks); BigEndianWriter.WriteUInt16(buffer, ref offset, MaxTotalNumberOfCommandBlocks); BigEndianWriter.WriteUInt16(buffer, ref offset, NumberOfPendingSessions); BigEndianWriter.WriteUInt16(buffer, ref offset, MaxNumberOfPendingSessions); BigEndianWriter.WriteUInt16(buffer, ref offset, MaxTotalsSessionsPossible); BigEndianWriter.WriteUInt16(buffer, ref offset, SessionDataPacketSize); } public byte[] GetBytes() { byte[] buffer = new byte[Length]; WriteBytes(buffer, 0); return buffer; } } }