source: EcnlProtoTool/trunk/asp3_dcre/tinet/netapp/dns.h@ 331

Last change on this file since 331 was 331, checked in by coas-nagasima, 6 years ago

prototoolに関連するプロジェクトをnewlibからmuslを使うよう変更・更新
ntshellをnewlibの下位の実装から、muslのsyscallの実装に変更・更新
以下のOSSをアップデート
・mruby-1.3.0
・musl-1.1.18
・onigmo-6.1.3
・tcc-0.9.27
以下のOSSを追加
・openssl-1.1.0e
・curl-7.57.0
・zlib-1.2.11
以下のmrbgemsを追加
・iij/mruby-digest
・iij/mruby-env
・iij/mruby-errno
・iij/mruby-iijson
・iij/mruby-ipaddr
・iij/mruby-mock
・iij/mruby-require
・iij/mruby-tls-openssl

  • Property svn:eol-style set to native
  • Property svn:mime-type set to text/x-chdr
File size: 9.7 KB
Line 
1/*
2 * TINET (TCP/IP Protocol Stack)
3 *
4 * Copyright (C) 2001-2017 by Dep. of Computer Science and Engineering
5 * Tomakomai National College of Technology, JAPAN
6 *
7 * 上記著作権者
8は,以下の (1)~(4) の条件か,Free Software Foundation
9 * によってå…
10¬è¡¨ã•ã‚Œã¦ã„ã‚‹ GNU General Public License の Version 2 に記
11 * 述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
12 * を改変したものを含む.以下同じ)を使用・複製・改変・再é…
13å¸ƒï¼ˆä»¥ä¸‹ï¼Œ
14 * 利用と呼ぶ)することを無償で許諾する.
15 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
16 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
17 * スコード中に含まれていること.
18 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
19 * 用できる形で再é…
20å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é…
21å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
22 * 者
23マニュアルなど)に,上記の著作権表示,この利用条件および下記
24 * の無保証規定を掲載すること.
25 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
26 * 用できない形で再é…
27å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
28 * と.
29 * (a) 再é…
30å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€…
31マニュアルなど)に,上記の著
32 * 作権表示,この利用条件および下記の無保証規定を掲載すること.
33 * (b) 再é…
34å¸ƒã®å½¢æ…
35‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
36 * 報告すること.
37 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
38 * 害からも,上記著作権者
39およびTOPPERSプロジェクトをå…
40è²¬ã™ã‚‹ã“と.
41 *
42 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者
43お
44 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
45 * 含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
46 * 接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
47 *
48 * @(#) $Id$
49 */
50
51#ifndef DNS_H
52#define DNS_H
53
54/*
55 * DNS メッセージに関する定義
56 *
57 * RFC1034、RFC1035、RFC1886、RFC2136、
58 * RFC2671、RFC2845、RFC2930、RFC3596
59 *
60 * DNS メッセージ
61 *
62 * +---------------------+
63 * | Header |
64 * +---------------------+
65 * | Question | Question section 形式
66 * +---------------------+
67 * | Answer | RR (Resouce Record) 形式
68 * +---------------------+
69 * | Authority | RR (Resouce Record) 形式
70 * +---------------------+
71 * | Additional | RR (Resouce Record) 形式
72 * +---------------------+
73 *
74 * DNS ヘッダ
75 *
76 * 0 7 8 15
77 * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
78 * | ID |
79 * +--+-----------+--+--+--+--+--------+-----------+
80 * |QR| Opcode |AA|TC|RD|RA| Z | RCODE |
81 * +--+--------+--+--+--+--+--+--------+-----------+
82 * | QDCOUNT |
83 * +-----------------------------------------------+
84 * | ANCOUNT |
85 * +-----------------------------------------------+
86 * | NSCOUNT |
87 * +-----------------------------------------------+
88 * | ARCOUNT |
89 * +-----------------------------------------------+
90 */
91
92typedef struct dns_hdr {
93 uint16_t id; /* ID */
94 uint16_t code; /* QR: 1
95 Opcode: 4
96 AA: 1
97 TC: 1
98 RD: 1
99 RA: 1
100 Z: 3
101 RCODE: 4
102 */
103 uint16_t qdcount; /* question section */
104 uint16_t ancount; /* answer section */
105 uint16_t nscount; /* authority section */
106 uint16_t arcount; /* additional section */
107 } T_DNS_HDR;
108
109/*
110 * code の定義
111 */
112
113/* QR の定義 */
114
115#define DNS_QR_QUERY 0x0000U
116#define DNS_QR_RESPONSE 0x8000U
117
118/* Opcode の定義 */
119
120#define DNS_OPCODE_MASK 0x7800U
121#define DNS_OPCODE_FORWARD 0x0000U
122#define DNS_OPCODE_REVERSE 0x0800U
123#define DNS_OPCODE_STATUS 0x1000U
124
125/* AA の定義 */
126
127#define DNS_AUTHORITATIVE 0x0400U
128
129/* TC の定義 */
130
131#define DNS_TRUN_CATION 0x0200U
132
133/* RD の定義 */
134
135#define DNS_RECURSION_DESIRED 0x0100U
136
137/* RA の定義 */
138
139#define DNS_RECURSION_AVAILABLE 0x0080U
140
141/* RCODE の定義 */
142
143#define DNS_RCODE_MASK 0x000fU
144#define DNS_RCODE_NO_ERROR 0x0000U
145#define DNS_RCODE_FORMAT_ERROR 0x0001U
146#define DNS_RCODE_SERVER_ERROR 0x0002U
147#define DNS_RCODE_NAME_ERROR 0x0003U
148#define DNS_RCODE_NOT_IMPLEMENT 0x0004U
149#define DNS_RCODE_REFUSED 0x0005U
150
151/*
152 * DNS TYPE の定義
153 */
154
155#define DNS_TYPE_A (uint16_t)1U
156#define DNS_TYPE_NS (uint16_t)2U
157#define DNS_TYPE_CNAME (uint16_t)5U
158#define DNS_TYPE_SOA (uint16_t)6U
159#define DNS_TYPE_PTR (uint16_t)12U
160#define DNS_TYPE_AAAA (uint16_t)28U
161
162/*
163 * DNS CLASS の定義
164 */
165
166#define DNS_CLASS_IN (uint16_t)1U
167
168/*
169 * RR (Resouce Record) 形式
170 *
171 * 0 7 8 15
172 * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
173 * | . |
174 * +----------------- . -----------------+
175 * | NAME |
176 * +----------------- . -----------------+
177 * | . |
178 * +-----------------------------------------------+
179 * | TYPE |
180 * +-----------------------------------------------+
181 * | CLASS |
182 * +-----------------------------------------------+
183 * | TTL |
184 * | |
185 * +-----------------------------------------------+
186 * | RDLENGTH |
187 * +-----------------------------------------------+
188 * | . |
189 * +----------------- . -----------------+
190 * | RDATA |
191 * +----------------- . -----------------+
192 * | . |
193 * +-----------------------------------------------+
194 *
195 * 注意: offset の原点は DNS message のå…
196ˆé ­
197 */
198
199typedef struct dns_rr {
200 /* NAME */
201 uint16_t type; /* TYPE */
202 uint16_t class; /* CLASS */
203 uint32_t ttl; /* TTL */
204 uint16_t rdlength; /* RDATA length */
205 /* RDATA */
206 } T_DNS_RR;
207
208#define T_DNS_RR_SIZE (sizeof(uint16_t)*3+sizeof(uint32_t))
209
210/*
211 * Question section 形式
212 *
213 * 0 7 8 15
214 * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
215 * | . |
216 * +----------------- . -----------------+
217 * | QNAME |
218 * +----------------- . -----------------+
219 * | . |
220 * +-----------------------------------------------+
221 * | QTYPE |
222 * +-----------------------------------------------+
223 * | QCLASS |
224 * +-----------------------------------------------+
225 */
226
227typedef struct dns_qd {
228 /* QNAME */
229 uint16_t type; /* TYPE */
230 uint16_t class; /* CLASS */
231 } T_DNS_QD;
232
233#define T_DNS_QD_SIZE (sizeof(uint16_t)*2)
234
235/*
236 * SOA RDATA 形式
237 *
238 * 0 7 8 15
239 * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
240 * | . |
241 * +----------------- . -----------------+
242 * | MNAME |
243 * +----------------- . -----------------+
244 * | . |
245 * +-----------------------------------------------+
246 * | . |
247 * +----------------- . -----------------+
248 * | RNAME |
249 * +----------------- . -----------------+
250 * | . |
251 * +-----------------------------------------------+
252 * | SERIAL |
253 * | |
254 * +-----------------------------------------------+
255 * | REFRESH |
256 * | |
257 * +-----------------------------------------------+
258 * | RETRY |
259 * | |
260 * +-----------------------------------------------+
261 * | EXPIRE |
262 * | |
263 * +-----------------------------------------------+
264 * | MINIMUM |
265 * | |
266 * +-----------------------------------------------+
267 *
268 * 注意: offset の原点は DNS message のå…
269ˆé ­
270 */
271
272typedef struct dns_soa {
273 /* MNAME */
274 /* RNAME */
275 uint32_t serial; /* SERIAL */
276 uint32_t refresh; /* REFRESH */
277 uint32_t retry; /* RETRY */
278 uint32_t expire; /* EXPIRE */
279 uint32_t minimum; /* MINIMUM */
280 } T_DNS_SOA;
281
282#define T_DNS_SOA_SIZE (sizeof(uint32_t)*5)
283
284/*
285 * DNS の定数の定義
286 */
287
288#define DNS_LABEL_LENGTH 63
289#define DNS_NAME_LENGTH 255
290#define DNS_UDP_MSG_LENGTH 512
291
292#define DNS_MSG_COMP_MARK 0xc0
293
294#endif /* of #ifndef DNS_H */
Note: See TracBrowser for help on using the repository browser.