internal override void ParseAnswer(byte[] resultData, int startPosition, int length) { int endPosition = startPosition + length; Options = new List <EDnsOptionBase>(); while (startPosition < endPosition) { EDnsOptionType type = (EDnsOptionType)DnsMessageBase.ParseUShort(resultData, ref startPosition); ushort dataLength = DnsMessageBase.ParseUShort(resultData, ref startPosition); EDnsOptionBase option; switch (type) { case EDnsOptionType.NsId: option = new NsIdOption(); break; default: option = new UnknownOption(type); break; } option.ParseData(resultData, startPosition, dataLength); Options.Add(option); startPosition += dataLength; } }
internal override void ParseRecordData(byte[] resultData, int startPosition, int length) { int endPosition = startPosition + length; Options = new List <EDnsOptionBase>(); while (startPosition < endPosition) { EDnsOptionType type = (EDnsOptionType)DnsMessageBase.ParseUShort(resultData, ref startPosition); ushort dataLength = DnsMessageBase.ParseUShort(resultData, ref startPosition); EDnsOptionBase option; switch (type) { case EDnsOptionType.LongLivedQuery: option = new LongLivedQueryOption(); break; case EDnsOptionType.UpdateLease: option = new UpdateLeaseOption(); break; case EDnsOptionType.NsId: option = new NsIdOption(); break; case EDnsOptionType.Owner: option = new OwnerOption(); break; case EDnsOptionType.DnssecAlgorithmUnderstood: option = new DnssecAlgorithmUnderstoodOption(); break; case EDnsOptionType.DsHashUnderstood: option = new DsHashUnderstoodOption(); break; case EDnsOptionType.Nsec3HashUnderstood: option = new Nsec3HashUnderstoodOption(); break; case EDnsOptionType.ClientSubnet: option = new ClientSubnetOption(); break; default: option = new UnknownOption(type); break; } option.ParseData(resultData, startPosition, dataLength); Options.Add(option); startPosition += dataLength; } }
internal EDnsOptionBase(EDnsOptionType optionType) { Type = optionType; }
/// <summary> /// Creates a new instance of the UnknownOption class /// </summary> /// <param name="type">Type of the option</param> /// <param name="data">The data of the option</param> public UnknownOption(EDnsOptionType type, byte[] data) : this(type) { Data = data; }
internal UnknownOption(EDnsOptionType type) : base(type) { }
internal UnknownOption(EDnsOptionType type) : base(type) { }
/// <summary> /// Creates a new instance of the UnknownOption class /// </summary> /// <param name="type"> Type of the option </param> public UnknownOption(EDnsOptionType type, byte[] data) : this(type) { Data = data; }
internal EDnsOptionBase(EDnsOptionType optionType) { Type = optionType; }
public UnknownOption(EDnsOptionType type) : base(type) { }
public UnknownOption(EDnsOptionType type) : base(type) { }