private void SendResponse(DNSFrame frame, List <Record> answers, EndPoint sender) { var responseFrame = new DNSFrame(); responseFrame.Question = frame.Question; responseFrame.FrameHeader = frame.FrameHeader; responseFrame.FrameHeader.FrameFlags.isResponse = true; responseFrame.FrameHeader.AnswerCount = (ushort)answers.Count; responseFrame.FrameHeader.NameServerCount = 0; responseFrame.FrameHeader.AdditionalCount = 0; var offset = (ushort)frame.sizeOfHeader; responseFrame.Answer = new Resource(); responseFrame.data = frame.data; for (int i = 0; i < answers.Count; i++) { responseFrame.Answer.Records.Add(answers[i]); } socket.SendTo(DNSFrameConverter.ToByte(responseFrame), sender); }
private void SendResponce(DNSFrame frame, Pair answer, EndPoint sender, Record question) { var newFrame = new DNSFrame(); newFrame.Question = new Resource(); newFrame.Question.LenghtResource = question.LengthRecord; newFrame.Question.Records = new List <Record>() { question }; newFrame.FrameHeader = frame.FrameHeader; newFrame.FrameHeader.FrameFlags.isResponse = true; newFrame.Answer = new Resource { Records = answer.Answer }; newFrame.Additional = new Resource { Records = answer.Additional }; newFrame.FrameHeader.AnswerCount = (ushort)answer.Answer.Count; newFrame.FrameHeader.AdditionalCount = (ushort)answer.Additional.Count; newFrame.data = frame.data; socket.SendTo(DNSFrameConverter.ToByte(newFrame), sender); }