/* This file is part of PacketDotNet PacketDotNet is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. PacketDotNet is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with PacketDotNet. If not, see . */ /* * Copyright 2010 Evan Plaice * Copyright 2010 Chris Morgan */ using System; using MiscUtil.Conversion; using PacketDotNet.Utils; namespace PacketDotNet.LLDP { /// /// A Time to Live TLV /// public class TimeToLive : TLV { // NOTE: No need to warn about lack of use, the compiler won't // put any calls to 'log' here but we need 'log' to exist to compile #pragma warning disable 0169, 0649 private static readonly ILogInactive log; #pragma warning restore 0169, 0649 /// /// Number of bytes in the value portion of this tlv /// private const int ValueLength = 2; #region Constructors /// /// Creates a TTL TLV /// /// /// /// /// The TTL TLV's offset from the /// origin of the LLDP /// public TimeToLive(byte[] bytes, int offset) : base(bytes, offset) { log.Debug(""); } /// /// Creates a TTL TLV and sets it value /// /// /// The length in seconds until the LLDP /// is refreshed /// public TimeToLive(ushort seconds) { log.Debug(""); var bytes = new byte[TLVTypeLength.TypeLengthLength + ValueLength]; int offset = 0; int length = bytes.Length; tlvData = new ByteArraySegment(bytes, offset, length); Type = TLVTypes.TimeToLive; Seconds = seconds; } #endregion #region Properties /// /// The number of seconds until the LLDP needs /// to be refreshed /// /// A value of 0 means that the LLDP source is /// closed and should no longer be refreshed /// public ushort Seconds { get { // get the seconds return BigEndianBitConverter.Big.ToUInt16(tlvData.Bytes, tlvData.Offset + TLVTypeLength.TypeLengthLength); } set { EndianBitConverter.Big.CopyBytes(value, tlvData.Bytes, tlvData.Offset + TLVTypeLength.TypeLengthLength); } } /// /// Convert this TTL TLV to a string. /// /// /// A human readable string /// public override string ToString () { return string.Format("[TimeToLive: Seconds={0}]", Seconds); } #endregion } }