示例#1
0
        public DHCPv6PacketTimeOption(UInt16 code, UInt32 timeValue, DHCPv6PacketTimeOptionUnits unit)
            : base(code, ByteHelper.GetBytes(timeValue))
        {
            switch (unit)
            {
            case DHCPv6PacketTimeOptionUnits.Days:
                Value = TimeSpan.FromDays(timeValue);
                break;

            case DHCPv6PacketTimeOptionUnits.Hours:
                Value = TimeSpan.FromHours(timeValue);
                break;

            case DHCPv6PacketTimeOptionUnits.Minutes:
                Value = TimeSpan.FromMinutes(timeValue);
                break;

            case DHCPv6PacketTimeOptionUnits.Seconds:
                Value = TimeSpan.FromSeconds(timeValue);
                break;

            case DHCPv6PacketTimeOptionUnits.HundredsOfSeconds:
                Value = TimeSpan.FromMilliseconds(timeValue * 10);
                break;

            case DHCPv6PacketTimeOptionUnits.Milliseconds:
                Value = TimeSpan.FromMilliseconds(timeValue);
                break;

            default:
                break;
            }
        }
示例#2
0
        public static DHCPv6PacketTimeOption FromByteArray(Byte[] data, Int32 offset, DHCPv6PacketTimeOptionUnits unit)
        {
            if (data == null || data.Length < offset + 4)
            {
                throw new ArgumentException(nameof(data));
            }

            UInt16 code   = ByteHelper.ConvertToUInt16FromByte(data, offset);
            UInt16 length = ByteHelper.ConvertToUInt16FromByte(data, offset + 2);

            UInt32 value;

            if (length == 4)
            {
                value = ByteHelper.ConvertToUInt32FromByte(data, offset + 4);
            }
            else if (length == 2)
            {
                value = ByteHelper.ConvertToUInt16FromByte(data, offset + 4);
            }
            else
            {
                throw new ArgumentException("unexpected length");
            }

            return(new DHCPv6PacketTimeOption(code, value, unit));
        }
示例#3
0
 public DHCPv6PacketTimeOption(DHCPv6PacketOptionTypes code, UInt32 timeValue, DHCPv6PacketTimeOptionUnits unit)
     : this((UInt16)code, timeValue, unit)
 {
 }