001 /*
002 * Licensed to the Apache Software Foundation (ASF) under one
003 * or more contributor license agreements. See the NOTICE file
004 * distributed with this work for additional information
005 * regarding copyright ownership. The ASF licenses this file
006 * to you under the Apache License, Version 2.0 (the
007 * "License"); you may not use this file except in compliance
008 * with the License. You may obtain a copy of the License at
009 *
010 * http://www.apache.org/licenses/LICENSE-2.0
011 *
012 * Unless required by applicable law or agreed to in writing,
013 * software distributed under the License is distributed on an
014 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
015 * KIND, either express or implied. See the License for the
016 * specific language governing permissions and limitations
017 * under the License.
018 *
019 */
020
021 package org.apache.directory.server.dns.messages;
022
023
024 import java.util.List;
025
026
027 /**
028 * All communications inside of the domain protocol are carried in a single
029 * format called a message. The top level format of message is divided
030 * into 5 sections (some of which are empty in certain cases) shown below:
031 *
032 * +---------------------+
033 * | Header |
034 * +---------------------+
035 * | Question | the question for the name server
036 * +---------------------+
037 * | Answer | ResourceRecords answering the question
038 * +---------------------+
039 * | Authority | ResourceRecords pointing toward an authority
040 * +---------------------+
041 * | Additional | ResourceRecords holding additional information
042 * +---------------------+
043 *
044 * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
045 * @version $Rev: 547514 $, $Date: 2007-06-15 06:50:50 +0300 (Fri, 15 Jun 2007) $
046 */
047 public class DnsMessageModifier
048 {
049 /**
050 * The header section is always present. The header includes fields that
051 * specify which of the remaining sections are present, and also specify
052 * whether the message is a query or a response, a standard query or some
053 * other opcode, etc.
054 */
055 private int transactionId;
056 private MessageType messageType;
057 private OpCode opCode;
058 private boolean authoritativeAnswer;
059 private boolean truncated;
060 private boolean recursionDesired;
061 private boolean recursionAvailable;
062 private boolean reserved;
063 private boolean acceptNonAuthenticatedData;
064
065 private ResponseCode responseCode;
066
067 private List<QuestionRecord> questionRecords;
068 private List<ResourceRecord> answerRecords;
069 private List<ResourceRecord> authorityRecords;
070 private List<ResourceRecord> additionalRecords;
071
072
073 /**
074 * Returns the {@link DnsMessage}.
075 *
076 * @return The {@link DnsMessage}.
077 */
078 public DnsMessage getDnsMessage()
079 {
080 return new DnsMessage( transactionId, messageType, opCode, authoritativeAnswer, truncated, recursionDesired,
081 recursionAvailable, reserved, acceptNonAuthenticatedData, responseCode, questionRecords, answerRecords,
082 authorityRecords, additionalRecords );
083 }
084
085
086 /**
087 * @param acceptNonAuthenticatedData The acceptNonAuthenticatedData to set.
088 */
089 public void setAcceptNonAuthenticatedData( boolean acceptNonAuthenticatedData )
090 {
091 this.acceptNonAuthenticatedData = acceptNonAuthenticatedData;
092 }
093
094
095 /**
096 * @param additionalRecords The additional to set.
097 */
098 public void setAdditionalRecords( List<ResourceRecord> additionalRecords )
099 {
100 this.additionalRecords = additionalRecords;
101 }
102
103
104 /**
105 * @param answerRecords The answer to set.
106 */
107 public void setAnswerRecords( List<ResourceRecord> answerRecords )
108 {
109 this.answerRecords = answerRecords;
110 }
111
112
113 /**
114 * @param authoritativeAnswer The authoritativeAnswer to set.
115 */
116 public void setAuthoritativeAnswer( boolean authoritativeAnswer )
117 {
118 this.authoritativeAnswer = authoritativeAnswer;
119 }
120
121
122 /**
123 * @param authorityRecords The authority to set.
124 */
125 public void setAuthorityRecords( List<ResourceRecord> authorityRecords )
126 {
127 this.authorityRecords = authorityRecords;
128 }
129
130
131 /**
132 * @param messageType The messageType to set.
133 */
134 public void setMessageType( MessageType messageType )
135 {
136 this.messageType = messageType;
137 }
138
139
140 /**
141 * @param opCode The opCode to set.
142 */
143 public void setOpCode( OpCode opCode )
144 {
145 this.opCode = opCode;
146 }
147
148
149 /**
150 * @param questionRecords The question to set.
151 */
152 public void setQuestionRecords( List<QuestionRecord> questionRecords )
153 {
154 this.questionRecords = questionRecords;
155 }
156
157
158 /**
159 * @param recursionAvailable The recursionAvailable to set.
160 */
161 public void setRecursionAvailable( boolean recursionAvailable )
162 {
163 this.recursionAvailable = recursionAvailable;
164 }
165
166
167 /**
168 * @param recursionDesired The recursionDesired to set.
169 */
170 public void setRecursionDesired( boolean recursionDesired )
171 {
172 this.recursionDesired = recursionDesired;
173 }
174
175
176 /**
177 * @param reserved The reserved to set.
178 */
179 public void setReserved( boolean reserved )
180 {
181 this.reserved = reserved;
182 }
183
184
185 /**
186 * @param responseCode The responseCode to set.
187 */
188 public void setResponseCode( ResponseCode responseCode )
189 {
190 this.responseCode = responseCode;
191 }
192
193
194 /**
195 * @param transactionId The transactionId to set.
196 */
197 public void setTransactionId( int transactionId )
198 {
199 this.transactionId = transactionId;
200 }
201
202
203 /**
204 * @param truncated The truncated to set.
205 */
206 public void setTruncated( boolean truncated )
207 {
208 this.truncated = truncated;
209 }
210 }