private NetWareIpState ParseState(IBinaryValue binaryValue)
        {
            var stateByte = binaryValue.AsByte();

            if (!Enum.IsDefined(typeof(NetWareIpState), stateByte))
            {
                throw new FormatException(
                          "The first byte of the NetWare SubOptions Option (DHCP Option code 63) must be between 0x01 and 0x04.");
            }

            return((NetWareIpState)stateByte);
        }
 internal DhcpVendorSpecificInformationOption(IBinaryValue value)
 {
     Value = value;
 }
 public DhcpClassIdOption(IBinaryValue classId)
 {
     ClassId = classId;
 }
 public DhcpClientIdOption(IBinaryValue clientId)
 {
     ClientId = clientId;
 }
        private IReadOnlyList <INetWareSubOption> ParseSubOptions(IBinaryValue binaryValue)
        {
            var valueCollection = binaryValue.AsTaggedValueCollection();
            var subOptions      = new List <INetWareSubOption>();

            foreach (var keyValuePair in valueCollection)
            {
                if (Enum.IsDefined(typeof(NetWareIpState), keyValuePair.Key))
                {
                    // State should be only in first byte, others are ignored
                    continue;
                }

                switch (keyValuePair.Key)
                {
                case 0x05:
                {
                    var value     = keyValuePair.Value.AsBoolean();
                    var subOption = new NetWareNsqBroadcastSubOption(value);

                    subOptions.Add(subOption);
                }
                break;

                case 0x06:
                {
                    var value     = keyValuePair.Value.AsIpAddressList();
                    var subOption = new NetWarePreferredDssSubOption(value);

                    subOptions.Add(subOption);
                }
                break;

                case 0x07:
                {
                    var value     = keyValuePair.Value.AsIpAddressList();
                    var subOption = new NetWareNearestNwipServerSubOption(value);

                    subOptions.Add(subOption);
                }
                break;

                case 0x08:
                {
                    var value     = keyValuePair.Value.AsByte();
                    var subOption = new NetWareAutoRetriesSubOption(value);

                    subOptions.Add(subOption);
                }
                break;

                case 0x09:
                {
                    var value     = keyValuePair.Value.AsByte();
                    var subOption = new NetWareAutoRetriesDelaySubOption(value);

                    subOptions.Add(subOption);
                }
                break;

                case 0x0a:
                {
                    var value     = keyValuePair.Value.AsBoolean();
                    var subOption = new NetWareSupportVersion11SubOption(value);

                    subOptions.Add(subOption);
                }
                break;

                case 0x0b:
                {
                    var value     = keyValuePair.Value.AsIpAddress();
                    var subOption = new NetWarePrimaryDssSubOption(value);

                    subOptions.Add(subOption);
                }
                break;
                }
            }

            return(subOptions);
        }