source: rubycfg_asp/trunk/asp_dcre/tinet/doc/tinet_sample.txt@ 315

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

SVNプロパティを設定

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
  • Property svn:mime-type set to text/plane; charset=UTF-8
File size: 49.3 KB
Line 
1 TCP/IP プロトコルスタック(TINET)
2 サンプルアプリケーション(リリース 1.7)[2017/5/15]
3
41. サンプルアプリケーション
5
6 サンプルとして、以下のアプリケーションを提供している。【】内は【アプ
7リケーション名、対応するネットワーク層】である。IPv64 はネットワーク層
8として IPv6 と IPv4 の両方を使用することを意味しており、 IPv64m は、
9IPv4 は IPv6 の IPv4 射影アドレスにより実装している。
10
11 (1) IPv6 TCP ECHO サーバ【echos6、IPv6】
12 ネットワークアプリケーションに必要な各ファイルの設定方法の
13 参考となる、 TCP エコーサーバ機能のみのシンプルなアプリケーショ
14 ンである。
15 (2) IPv4 TCP ECHO サーバ【echos4、IPv4】
16 ネットワークアプリケーションに必要な各ファイルの設定方法の
17 参考となる、 TCP エコーサーバ機能のみのシンプルなアプリケーショ
18 ンである。
19 (3) IPv6 UDP ECHO サーバ【usrv6、IPv6】
20 ネットワークアプリケーションに必要な各ファイルの設定方法の
21 参考となる、 UDP エコーサーバ機能のみのシンプルなアプリケーショ
22 ンである。
23 (4) IPv4 UDP ECHO サーバ【usrv4、IPv4】
24 ネットワークアプリケーションに必要な各ファイルの設定方法の
25 参考となる、 UDP エコーサーバ機能のみのシンプルなアプリケーショ
26 ンである。
27 (5) クライアントサーバ・セット【nserv、IPv64/IPv6/IPv64m/IPv4】
28 以下に示すサーバが提供されており、 必要に応じて組み込むサー
29 バを選択できる。
30
31 [1] WWW サーバ
32 [2] TCP エコーサーバ
33 [3] UDP エコーサーバ
34 [4] TCP ディスカードサーバ
35 [5] 簡易コンソール
36
37 また、クライアントとしては以下の機能が提供されており、 必要に
38 応じて組み込むクライアントを選択できる。
39
40 [1] TCP エコークライアント
41 [2] UDP エコークライアント
42 [3] TCP ディスカードクライアント
43 [4] UDP ディスカードクライアント
44 [5] DNS リゾルバー
45 [6] DHCPv6 クライアント
46 [7] DHCPv4 クライアント
47 [8] ping
48
49 (6) TOPPERS ASP/JSP サンプルプログラム sample1 のネットワーク対応
50 プログラム【sample1n、IPv6/IPv4】
51 TOPPERS/ASP と TOPPERS/JSP のサンプルプログラム sample1 の
52 ネットワーク対応プログラムである。telnet で接続すると、シリア
53 ルの入出力を引き継いで実行する。切断すると、 元のシリアルに入
54 出力を戻す。
55 (7) 最小構成サーバ【minsv、IPv4】
56 WWW サーバ・タスクと TCP エコーサーバ・タスクのみからなる最
57 小構成のサーバである。H8/3069F が内蔵している RAM(16K バイト)
58 と ROM(512K バイト)に収まり、外部メモリは不要である。現在は、
59 品川通信計装サービス製 NKEV-010H8(TOPPERS/JSP リリース 1.4.2
60 のみ)と秋月電子通商製 H8/3069F(TOPPERS/JSP リリース 1.4.1
61 以降と TOPPERS/ASP)のシステムに対応している。
62
632. サンプルアプリケーションの構築
64
65 TINET サンプルアプリケーションの構築は、 TOPPERS/ASP 環境と
66TOPPERS/JSP 環境におけるのサンプルアプリケーションの構築とほぼ同じであ
67る。
68
69 (1) TINET コンフィギュレーションスクリプトの実行
70 TINET サンプルアプリケーションの構築用ディレクトリを作成し、
71 TINET コンフィギュレーションスクリプトを実行する。
72
73 [1] TOPPERS/ASP 用 TINET コンフィギュレーションスクリプトの
74 実行
75
76 $ mkdir NETOBJ
77 $ cd NETOBJ
78 $ perl ../tinet/tinet_asp_configure -T akih8_3069f_gcc -A echos6
79 -i ether -v if_ed -n inet6 -s tcp
80
81 オプション(-T、-A、-a、-U、-L、-f、-D、-l、-t、-d、 -r、
82 -p、 -g)は、TOPPERS/ASP コンフィギュレーションスクリプ
83 トと同じである。 TOPPERS/ASP カーネルユーザーズマニュア
84 ル(user.txt)の「 5.コンフィギュレーションスクリプト
85 の使い方 」を参照すること。その他のオプションについては、
86 「9.2 TINET コンフィギュレーションスクリプトのオプショ
87 ン 」を参照すること。
88 アプリケーションとカーネルを別々に構築する方法につい
89 ては、 TOPPERS/ASP 環境におけるサンプルアプリケーション
90 の構築と同じである。 TOPPERS/ASP カーネルユーザーズマニュ
91 アル(user.txt)の「3.5 アプリケーションとカーネルを別
92 々に構築する方法 」を参照すること。
93 [2] TOPPERS/JSP 用 TINET コンフィギュレーションスクリプトの実行
94
95 $ mkdir NETOBJ
96 $ cd NETOBJ
97 $ perl ../tinet/tinet_jsp_configure -C h8 -S akih8_3069f -A echos6
98 -i ether -v if_ed -n inet6 -s tcp
99
100 オプション(-C、 -S、-T、-A、-U、-L、-D、-P、-p、-l)は、
101 TOPPERS/JSP コンフィギュレーションスクリプトと同じであ
102 る。 TOPPERS/JSP カーネルユーザーズマニュアル(user.txt)
103 の「 7.6 コンフィギュレーションスクリプトの使い方 」を
104 参照すること。 その他のオプションについては、「TINET コ
105 ンフィギュレーションスクリプトのオプション 」を参照すること。
106 アプリケーションとカーネルを別々に構築する方法につい
107 ては、 TOPPERS/JSP 環境におけるサンプルアプリケーション
108 の構築と同じである。 TOPPERS/JSP カーネルユーザーズマニュ
109 アル(user.txt)の「7.5 アプリケーションとカーネルを別
110 々に構築する方法 」を参照すること。
111
112 上記の例で、TOPPERS/ASP 環境と TOPPERS/JSP 環境のいずれの場
113 合も、ディレクトリ NETOBJ に以下のファイルが生成される。
114
115 Makefile Makefile
116 echos6.c サンプルプログラム本体
117 echos6.h サンプルプログラムのヘッダファイル
118 echos6.cfg サンプルプログラム用 ASP コンフィ
119 ギュレーションファイル
120 tinet_echos6.cfg サンプルプログラム用 TINET コンフィ
121 ギュレーションファイル
122 route_cfg.c サンプルプログラム用ルーティング表
123 tinet_app_config.h サンプルプログラム用コンパイル時指
124 定コンフィギュレーション
125
126 必要であれば、 Makefile を修正する。 修正については、
127 TOPPERS/ASP 環境では「7.3 アプリケーションの Makefile」、
128 TOPPERS/JSP 環境では「8.3 アプリケーションの Makefile」を参照
129 すること。
130 以下のサンプルアプリケーションでは、構築上の注意がある。 各
131 章を参照すること。
132
133 [1] 「9.3 クライアントサーバ・セット」
134 [2] 「9.4 TOPPERS ASP/JSP サンプルプログラム sample1 の
135 ネットワーク対応プログラム」
136 [3] 「9.5 最小構成サーバ」
137
138 (2) tinet_app_config.h の設定
139 IPv4 の場合、 IP アドレス、サブネットマスク、ディフォルトゲー
140 トウェイを指定する。
141
142 [1] IPV4_ADDR_LOCAL
143 自分の IP アドレスを指定する。ただし、 PPP を使用すると
144 き、相手に割当ててもらう場合は 0 を指定すること。なお、
145 PPP は参考実装である。
146 [2] IPV4_ADDR_REMOTE
147 相手の IP アドレスを指定する。 ただし、PPP を使用すると
148 き、相手に割当ててもらう場合は 0 を指定すること。なお、
149 PPP は参考実装である。
150 [3] IPV4_ADDR_LOCAL_MASK
151 サブネットマスクを指定する。ただし、 ネットワークインタ
152 フェースがイーサネットのとき有効である。
153 [4] IPV4_ADDR_DEFAULT_GW
154 ディフォルトゲートウェイを指定する。ただし、 ネットワー
155 クインタフェースがイーサネットのとき有効である。
156
157 (3) route_cfg.c の設定
158 ネットワークインタフェースがイーサネットの場合は、 ルーティ
159 ング表 routing_tbl を設定する。ただし、ディフォルトゲートウェ
160 イのみのシンプルなネットワークでは、 変更する必要はない。
161
162 (4) サンプルプログラムのコンパイル・リンク
163 TINET サンプルアプリケーションの構築用ディレクトリで、 サン
164 プルプログラムをコンパイル・リンクする。 コンパイル・リンクの
165 方法を以下に示す。
166
167 $ make depend
168 $ make
169
1703. TINET コンフィギュレーションスクリプトのオプション
171
1723. 1 TOPPERS/APS 用 TINET コンフィギュレーションスクリプトのオプション
173
174 TOPPERS/ASP 環境では、オプション(-T、-A、-a、-U、-L、-f、-D、-l、-d、
175-r、-p、-g)は、TOPPERS/ASP コンフィギュレーションスクリプトと同じであ
176る。 TOPPERS/ASP 用 TINET コンフィギュレーションスクリプト特有のオプショ
177ンを以下に示す。
178
179 -e <tinetdir> TINET のソースの置かれているディレクトリ
180 -i <net_if> ネットワークインタフェース(必須)
181 <net_if> には ether、ppp、loop の何れかを
182 指定する。
183
184 -v <net_dev> イーサネット・ディバイスドライバ
185 (ネットワークインタフェースに ether を指
186 定した場合は必須)
187 -n <net_proto> ネットワーク層プロトコル(必須)
188 <net_proto> に指定できるプロトコルを以下
189 に示す。
190
191 inet6 IPv6 のみ
192 inet4 IPv4 のみ
193 inet6/inet4 IPv6/IPv4 の両方
194 (デュアルスタック)
195 inet6m IPv6 のみで、 IPv4 射
196 影アドレス指定可能
197 inet6m/inet4 IPv6/IPv4 の両方と
198 IPv4 射影アドレス指定可能
199
200 -s <trans_proto> トランスポート層プロトコル(必須)
201 <trans_proto> には tcp、udp、tcp/udp の何
202 れかを指定する。
203 -t <templatedir> TINET テンプレートディレクトリ
204 デフォルトは tinet/asp_sample である。 な
205 お、 TOPPERS/ASP の同じオプションのデフォ
206 ルトは sample である。
207 -m <asptemplatedir> ASP テンプレートディレクトリ
208 デフォルトは sample である。
209
2103. 2 TOPPERS/JPS 用 TINET コンフィギュレーションスクリプトのオプション
211
212 TOPPERS/JSP 環境では、オプション(-C、-S、-T、-A、-U、-L、-D、-P、-p、
213-l)は、 TOPPERS/JSP コンフィギュレーションスクリプトと同じである。
214TOPPERS/ASP 用 TINET コンフィギュレーションスクリプト特有のオプション
215を以下に示す。
216
217 -e <tinetdir> TINET のソースの置かれているディレクトリ
218 -i <net_if> ネットワークインタフェース(必須)
219 <net_if> には ether、ppp、loop の何れかを
220 指定する。
221 -v <net_dev> イーサネット・ディバイスドライバ
222 (ネットワークインタフェースに ether を指
223 定した場合は必須)
224 -n <net_proto> ネットワーク層プロトコル(必須)
225 <net_proto> に指定できるプロトコルを以下
226 に示す。
227
228 inet6 IPv6 のみ
229 inet4 IPv4 のみ
230 inet6/inet4 IPv6/IPv4 の両方
231 (デュアルスタック)
232 inet6m IPv6 のみで、 IPv4 射
233 影アドレス指定可能
234 inet6m/inet4 IPv6/IPv4 の両方と
235 IPv4 射影アドレス指定
236 可能
237
238 -s <trans_proto> トランスポート層プロトコル(必須)
239 <trans_proto> には tcp、udp、tcp/udp の何
240 れかを指定する。
241 -d <dir> TINET テンプレートディレクトリ
242 デフォルトは tinet/jsp_sample である。 な
243 お、 TOPPERS/JSP の同じオプションのデフォ
244 ルトは sample である。
245 -m <jsptemplatedir> JSP テンプレートディレクトリ
246 デフォルトは sample である。
247
2484. クライアントサーバ・セットの構築
249
250 以下に示すサーバが提供されており、必要に応じて組み込むサーバを選択で
251きる。()内は、tinet/netapp 内にあるソースファイル名である。なお、 ディ
252フォルトで、 ITRON TCP/IP API 仕様の TCP と UDP の拡張機能が組込まれて
253いるので、「9.3.2 簡易コンソールのコマンド 」の wtw (wtw4)、wte (wte4)、
254wue、wtd コマンドで、それぞれのサーバ・タスクを起動する必要がある。
255
256 [1] WWW サーバ・タスク(wwws.c)
257 ルートページの他に、ネットワーク統計情報を表示する 2 ページか
258 ら構成され、タスク数は最大 2 である。
259 [2] TCP エコーサーバ・タスク
260 tcp_echo_srv1.c と tcp_echo_srv2.c のどちらかを選択する。
261 tcp_echo_srv1.c を選択した場合、省コピー API を使用して、ノン
262 ブロッキングコールを使用しない時は、タスク数を 8 まで指定可能
263 である。
264 [3] UDP エコーサーバ・タスク(udp_echo_srv.c)
265 [4] TCP ディスカードサーバ・タスク(tcp_discard_srv.c)
266 [5] 簡易コンソール・タスク(dbg_cons.c)
267 シリアルインタフェースだけでなく、telnet プロトコルを使用して、
268 ネットワーク経由で利用することも可能である。telnet で接続する
269 と、シリアルの入出力を引き継いで実行する。切断すると、 元のシ
270 リアルに入出力を戻す。 ただし、TCP のノンブロッキングコールを
271 組込む必要がある。
272
273また、クライアントとしては以下の機能が提供されており、必要に応じて組み
274込むクライアントを選択できる。
275
276 [1] TCP エコークライアント・タスク(tcp_echo_cli.c)
277 [2] UDP エコークライアント・タスク(udp_echo_cli.c)
278 [3] TCP ディスカードクライアント・タスク(tcp_discard_cli.c)
279 [4] UDP ディスカードクライアント・タスク(udp_discard_cli.c)
280 [5] ping(ping.c)
281
2824. 1 Makefile の設定
283
284 (1) 組込む機能の選択
285
286 [1] TCP の受信ウィンドバッファの省コピー機能
287 サンプルアプリケーションで、 TCP の受信ウィンドバッファ
288 の省コピー機能を組込む場合は、
289
290 TCP_CFG_RWBUF_CSAVE_ONLY = true
291
292 または、
293
294 TCP_CFG_RWBUF_CSAVE = true
295
296 を選択する。 TCP_CFG_RWBUF_CSAVE_ONLY を選択すると、TCP
297 通信端点を生成する静的 API である TCP_CRE_CEP で、 受信
298 ウィンドバッファ rbuf に、 メモリアドレスを指定しても、
299 プロトコルスタックは、この指定を無視して、 TCP の受信ウィ
300 ンドバッファの省コピー機能により処理する。 また、
301 TCP_CFG_RWBUF_CSAVE を選択すると、TCP_CRE_CEP で、 受信
302 ウィンドバッファ rbuf に、 NADR(NULL)を指定したときの
303 み、プロトコルスタックは TCP の受信ウィンドバッファの省
304 コピー機能により処理する。
305
306 [2] TCP の送信ウィンドバッファの省コピー機能
307 サンプルアプリケーションで、 TCP の送信ウィンドバッファ
308 の省コピー機能を組込む場合は、
309
310 TCP_CFG_SWBUF_CSAVE_ONLY = true
311
312 または、
313
314 TCP_CFG_SWBUF_CSAVE = true
315
316 を選択する。 TCP_CFG_SWBUF_CSAVE_ONLY を選択すると、TCP
317 通信端点を生成する静的 API である TCP_CRE_CEP で、 送信
318 ウィンドバッファ rbuf に、 メモリアドレスを指定しても、
319 プロトコルスタックは、この指定を無視して、 TCP の送信ウィ
320 ンドバッファの省コピー機能により処理する。 また、
321 TCP_CFG_SWBUF_CSAVE を選択すると、TCP_CRE_CEP で、 送信
322 ウィンドバッファ rbuf に、 NADR(NULL)を指定したときの
323 み、プロトコルスタックは TCP の送信ウィンドバッファの省
324 コピー機能により処理する。
325
326 [3] TCP のノンブロッキングコール
327 サンプルアプリケーションで、 TCP のノンブロッキングコー
328 ルを組込む場合は、
329
330 TCP_CFG_NON_BLOCKING = true
331
332 を選択する。
333
334 [4] UDP のノンブロッキングコール
335 サンプルアプリケーションで、 UDP のノンブロッキングコー
336 ルを組込む場合は、
337
338 UDP_CFG_NON_BLOCKING = true
339
340 を選択する。
341
342 [5] ITRON TCP/IP API 仕様の TCP の拡張機能
343 サンプルアプリケーションで、 ITRON TCP/IP API 仕様の
344 TCP の拡張機能を組込む場合は、
345
346 TCP_CFG_EXTENTIONS = true
347
348 を選択する。ディフォルトで true に設定されている。
349
350 [6] ITRON TCP/IP API 仕様の UDP の拡張機能
351 サンプルアプリケーションで、 ITRON TCP/IP API 仕様の
352 UDP の拡張機能を組込む場合は、
353
354 UDP_CFG_EXTENTIONS = true
355
356 を選択する。ディフォルトで true に設定されている。
357
358 (2) ノンブロッキングコール、ITRON TCP/IP API 仕様の拡張機能と省コ
359 ピー API の選択
360
361 [1] TCP のノンブロッキングコール
362 サンプルアプリケーションで、 TCP のノンブロッキングコー
363 ルを使用する場合は、
364
365 USE_TCP_NON_BLOCKING = true
366
367 を選択する。
368
369 [2] ITRON TCP/IP API 仕様の TCP の拡張機能
370 サンプルアプリケーションで、 ITRON TCP/IP API 仕様の
371 TCP の拡張機能を使用する場合は、
372
373 USE_TCP_EXTENTIONS = true
374
375 を選択する。ディフォルトで true に設定されている。
376
377 [3] 省コピー API
378 サンプルアプリケーションで、省コピー API を使用する場合は、
379
380 USE_COPYSAVE_API = true
381
382 を選択する。
383
384 [4] UDP のノンブロッキングコール
385 サンプルアプリケーションで、 UDP のノンブロッキングコー
386 ルを使用する場合は、
387
388 USE_UDP_NON_BLOCKING = true
389
390 を選択する。 ただし、 コールバックとは同時に使用できない。
391
392 [5] ITRON TCP/IP API 仕様の UDP の拡張機能
393 サンプルアプリケーションで、 ITRON TCP/IP API 仕様の
394 UDP の拡張機能を使用する場合は、
395
396 USE_UDP_EXTENTIONS = true
397
398 を選択する。ディフォルトで true に設定されている。
399
400 [6] UDP のコールバック
401 サンプルアプリケーションで、 UDP のコールバックを使用
402 する場合は、
403
404 USE_UDP_CALL_BACK = true
405
406 を選択する。ただし、 ノンブロッキングコールとは同時に使
407 用できない。
408
409 (3) 共通サーバプログラムの選択
410
411 [1] WWW サーバプログラムを使用する場合は、 以下の行を有効にする。
412
413 USE_WWW_SRV = ture
414
415 [2] WWW サーバプログラム(IPv4 優先接続待ち)を使用する場合
416 は、以下の行を有効にする。
417
418 USE_WWW4_SRV = ture
419
420 [3] UDP エコーサーバプログラムを使用する場合は、 以下の行を
421 有効にする。
422
423 USE_UDP_ECHO_SRV = ture
424
425 [4] UDP エコーサーバプログラム(IPv4 優先接続待ち)を使用す
426 る場合は、以下の行を有効にする。
427
428 USE_UDP4_ECHO_SRV = ture
429
430 [5] TCP ディスカードサーバプログラムを使用する場合は、 以下
431 の行を有効にする。
432
433 USE_TCP_DISCARD_SRV = ture
434
435 [6] 送受信タスク同一型の TCP エコーサーバプログラムを使用す
436 る場合は、以下の行を有効にする。
437
438 TCP_ECHO_SRV = tcp_echo_srv1
439
440 [7] 送受信タスク分離型の TCP エコーサーバプログラムを使用す
441 る場合は、以下の行を有効にする。
442
443 TCP_ECHO_SRV = tcp_echo_srv2
444
445 [8] TCP エコーサーバプログラム(IPv4 優先接続待ち)を使用す
446 る場合は、以下の行を有効にする。ただし、 送受信タスク同
447 一型の TCP エコーサーバプログラムを使用する場合のみ有効
448 である。
449
450 USE_TCP4_ECHO_SRV = ture
451
452 [9] シリアル経由のみコンソール入出力を使用する場合は、 以下
453 の行を有効にする。
454
455 USE_DBG_CONS = true
456
457 [10] シリアルとネットワーク経由のコンソール入出力を使用する
458 場合は、以下の行を有効にする。
459
460 USE_NET_CONS = true
461
462 ただし、 ノンブロッキングコールを組込んだ時のみ有効である。
463
464 (4) 共通クライアントプログラムの選択
465
466 [1] TCP エコークライアントプログラムを使用する場合は、 以下
467 の行を有効にする。
468
469 USE_TCP_ECHO_CLI = ture
470
471 [2] TCP エコークライアントプログラムで、IPv4 アドレスを指定
472 した時、tcp_con_cep を呼出し、IPv4 により接続する場合は
473 以下の行を有効にする。 なお、 ネットワーク層の選択で、
474 IPv6 と IPv4 の両方を指定した場合、この指定を行わないと
475 tcp_con_cep ではなく、 tcp6_con_cep を呼出す。 従って、
476 API_CFG_IP4MAPPED_ADDR を指定していないと、E_PAR が返さ
477 れるが、tcp6_con_cep のテストのためであり、問題はない。
478
479 USE_TCP4_ECHO_CLI = ture
480
481 [3] UDP エコークライアントプログラムを使用する場合は、 以下
482 の行を有効にする。
483
484 USE_UDP_ECHO_CLI = ture
485
486 [4] UDP エコークライアントプログラム(IPv4 優先接続待ち)を
487 使用する場合は、 以下の行を有効にする。
488
489 USE_UDP4_ECHO_CLI = ture
490
491 [5] TCP ディスカードクライアントプログラムを使用する場合は、
492 以下の行を有効にする。
493
494 USE_TCP_DISCARD_CLI = ture
495
496 [6] UDP ディスカードクライアントプログラムを使用する場合は、
497 以下の行を有効にする。
498
499 USE_UDP_DISCARD_CLI = ture
500
501 [7] DHCPv6 クライアントプログラムを使用する場合は、以下の行
502 を有効にする。
503
504 USE_DHCP6_CLI = true
505
506 [8] DHCPv4 クライアントプログラムを使用する場合は、以下の行
507 を有効にする。
508
509 USE_DHCP4_CLI = true
510
511 [9] DNS リゾルバーを使用する場合は、以下の行を有効にする。
512
513 USE_RESOLVER = true
514
515 [10] PING クライアントプログラムを使用する場合は、以下の行を
516 有効にする。
517
518 USE_PING = true
519
520 (5) 共通サーバタスク数の選択
521
522 [1] WWW サーバタスク数は以下の行で選択する。ただし最大 2 タ
523 スクである。
524
525 CDEFS := $(CDEFS) -DNUM_WWW_SRV_TASKS=2
526
527 [2] TCP ECHO サーバタスク数を選択する。ただし以下の条件のと
528 き有効である。
529
530 ・tcp_echo_srv1.c を選択した。
531 ・省コピー API を使用する。
532 ・ノンブロッキングコールを使用しない。
533
534 TCP ECHO サーバタスク数は以下の行で選択する。ただし最大
535 8 タスクである。
536
537 CDEFS := $(CDEFS) -DNUM_TCP_ECHO_SRV_TASKS=8
538
539 (6) 予約 ID 数の選択
540
541 [1] TCP/IPv4 受付口予約 ID 数は以下の行で選択する。ただし最
542 大 2 である。
543
544 CDEFS := $(CDEFS) -DNUM_VRID_TCP_REPS=2
545
546 [2] TCP/IPv4 通信端点予約 ID 数は以下の行で選択する。ただし
547 最大 4 である。
548
549 CDEFS := $(CDEFS) -DNUM_VRID_TCP_CEPS=4
550
551 [3] UDP/IPv4 通信端点予約 ID 数は以下の行で選択する。ただし
552 最大 2 である。
553
554 CDEFS := $(CDEFS) -DNUM_VRID_UDP_CEPS=2
555
556 [4] TCP/IPv6 受付口予約 ID 数は以下の行で選択する。ただし最
557 大 2 である。
558
559 CDEFS := $(CDEFS) -DNUM_VRID_TCP6_REPS=2
560
561 [5] TCP/IPv6 通信端点予約 ID 数は以下の行で選択する。ただし
562 最大 4 である。
563
564 CDEFS := $(CDEFS) -DNUM_VRID_TCP6_CEPS=4
565
566 [6] UDP/IPv6 通信端点予約 ID 数は以下の行で選択する。ただし
567 最大 2 である。
568
569 CDEFS := $(CDEFS) -DNUM_VRID_UDP6_CEPS=2
570
571 (7) その他
572
573 [1] TCP のセグメントサイズを MSS にする場合は、以下の行を有
574 効にする。
575
576 CDEFS := $(CDEFS) -DUSE_TCP_MSS_SEG
577
578 [2] IPv6 MMTU サイズのネットワークバッファを組込む場合は、
579 以下の行を有効にする。
580
581 CDEFS := $(CDEFS) -DUSE_IPV6_MMTU
582
5834. 2 サンプルアプリケーションのコンパイル時コンフィギュレーション
584
585 (1) DHCPv6 クライアント
586
587 [1] DHCP6_CLI_CFG_MODE
588 DHCPv6 クライアントの動作モードを指定する。
589 ステートレスモードを選択する時は
590 fDHCP6_CLI_CFG_STATELESS、 ステートフルモードを選択する
591 時は fDHCP6_CLI_CFG_STATEFULL を指定する。 ステートレス
592 モードでは、IPv6 アドレスを取得せず、DNS サーバの情報な
593 どのみ取得する。
594
595 [2] DHCP6_CLI_CFG_REQUIRED_OLIST
596 DHCPv6 サーバから取得する必須オプションリストを配列の初
597 期化形式で指定する。指定例を以下に示す。
598 #define DHCP6_CLI_CFG_REQUIRED_OLIST { \
599 DHCP6_OPT_NAME_SERVERS, \
600 }
601
602 オプションは tinet/netapp/dhcp6.h を参照すること。
603
604 [3] DHCP6_CLI_CFG_REQUEST_OLIST
605 DHCPv6 サーバから取得する必須オプションリストを配列の初
606 期化形式で指定する。 指定例を以下に示す。
607 #define DHCP6_CLI_CFG_REQUEST_OLIST { \
608 DHCP6_OPT_DOMAIN_SEARCH, \
609 }
610
611 オプションは tinet/netapp/dhcp6.h を参照すること。
612
613 (2) DHCPv4 クライアント
614
615 [1] DHCP4_CLI_CFG_REQUIRED_OLIST
616 DHCPv4 サーバから取得する必須オプションリストを配列の初
617 期化形式で指定する。指定例を以下に示す。
618 #define DHCP4_CLI_CFG_REQUIRED_OLIST { \
619 DHCP4_OPT_NAME_SERVERS, \
620 }
621
622 オプションは tinet/netapp/dhcp4.h を参照すること。
623
624 [2] DHCP4_CLI_CFG_REQUEST_OLIST
625 DHCPv4 サーバから取得する必須オプションリストを配列の初
626 期化形式で指定する。 指定例を以下に示す。
627 #define DHCP4_CLI_CFG_REQUEST_OLIST { \
628 DHCP4_OPT_DOMAIN_SEARCH, \
629 }
630
631 オプションは tinet/netapp/dhcp6.h を参照すること。
632
633 (3) DNS リゾルバー
634
635 [1] RSLV_CFG_DNS_DOMAIN_NAME_STR
636 ドメイン名の文字列を指定する。DHCPv6 クライアント、また
637 は DHCPv4 クライアントにより取得することも可能である。
638
639 [2] IPV6_ADDR_DNS_INIT
640 DNS サーバの IPv6 アドレスを配列の初期化形式で指定する。
641 DHCPv6 クライアントにより取得することも可能である。 DNS
642 サーバの IPv6 アドレスが、
643 fd90:cce5:25f6:ff81:201:2ff:fe81:e7c9 の場合の指定例を
644 以下に示す。
645
646 #define IPV6_ADDR_DNS_INIT \
647 {{{ UINT_C(0xfd), UINT_C(0x90), UINT_C(0xcc), UINT_C(0xe5), \
648 UINT_C(0x25), UINT_C(0xf6), UINT_C(0xff), UINT_C(0x81), \
649 UINT_C(0x02), UINT_C(0x01), UINT_C(0x02), UINT_C(0xff), \
650 UINT_C(0xfe), UINT_C(0x81), UINT_C(0xe7), UINT_C(0xc9) }}}
651
652 [3] IPV4_ADDR_DNS
653 DNS サーバの IPv4 アドレスを指定する。DHCPv4 クライアン
654 トにより取得することも可能である。 DNS サーバの IPv4 ア
655 ドレスが、172.25.129.140 の場合の指定例を以下に示す。
656
657 #define IPV4_ADDR_DNS MAKE_IPV4_ADDR(172,25,129,140)
658
6594. 3 簡易コンソールコマンド
660
661 インターネットサーバ・セットに組み込まれている簡易コンソールのコマン
662ドを以下に示す。
663
664 cf tinet_app_config.h 等で指定された、コンパイル時
665 コンフィギュレーションを表示する。
666
667 ct <cepid> [<fncd>]
668 ペンディングしている TCP 通信端点 <cepid> の処
669 理をキャンセルする。キャンセルする処理は <fncd>
670 で指定する。<fncd> を省略した場合は、全ての処理
671 をキャンセルする。
672
673 cu <cepid> [<fncd>]
674 ペンディングしている UDP 通信端点 <cepid> の処
675 理をキャンセルする。キャンセルする処理は <fncd>
676 で指定する。<fncd> を省略した場合は、全ての処理
677 をキャンセルする。
678
679 dc ネットワークインタフェースが PPP の時、または、
680 シリアルとネットワーク経由のコンソール入出力を
681 使用する時に有効であり、 接続を切断する。なお、
682 PPP は参考実装である。
683
684 dh DHCPv6 と DHCPv4 クライアントの情報を出力する。
685 dh6 DHCPv6 クライアントの情報を出力する。
686 dh6n IPv6 アドレス情報を解放して、 DHCPv6 サーバから
687 IPv6 アドレス情報を再取得する。
688 dh6r IPv6 アドレス情報を解放する。
689 dh4 DHCPv4 クライアントの情報を出力する。
690 dh4n IPv4 アドレス情報を解放して、 DHCPv4 サーバから
691 IPv4 アドレス情報を再取得する。
692 dh4r IPv4 アドレス情報を解放する。
693
694 dt <host> [<portno> [<repeat>]]
695 TCP ディスカードクライアント・タスクを起動し、
696 ディスカードサーバ <host> にディスカードパター
697 ンを送信する。<portno> は、ディスカードサーバの
698 ポート番号で、省略時(- を指定する)は 9 である。
699 <repeat> は、繰り返し回数で、省略時は 1 である。
700 dts TCP ディスカードクライアント・タスクの繰り返し
701 動作を停止する。
702
703 du <host> [<portno>]]
704 ディスカードサーバ <host> にディスカードパター
705 UDP ディスカードクライアント・タスクを起動し、
706 ンを繰り返し送信する。<portno> は、ディスカード
707 サーバのポート番号で、省略時は 9 である。
708 dus UDP ディスカードクライアント・タスクの繰り返し
709 動作を停止する。
710
711 et <host> [<portno> [<repeat>]]
712 et4 <host> [<portno> [<repeat>]]
713 et では TCP エコークライアント・タスクを起動す
714 る。et4 では IPv4 専用 TCP エコークライアント・
715 タスクを起動する。 何れも、 エコーサーバ <host>
716 にエコーパターンを送信する。<portno> は、エコー
717 サーバのポート番号で、 省略時(- を指定する)は
718 7 である。<repeat> は、繰り返し回数で、省略時は
719 1 である。
720 ets TCP エコークライアント・タスクの繰り返し動作を
721 停止する。
722 ets4 IPv4 専用 TCP エコークライアント・タスクの繰り
723 返し動作を停止する。
724
725 eu <host> [<portno>] [<msg> | <repeat>]
726 eu4 <host> [<portno>] [<msg> | <repeat>]
727 eu では UDP エコークライアント・タスクを起動す
728 る。eu4 では IPv4 専用 UDP エコークライアント・
729 タスクを起動する。 何れも、 エコーサーバ <host>
730 にエコーパターンを送信する。<portno> は、エコー
731 サーバのポート番号で、 省略時(- を指定する)は
732 7 である。<repeat>(数字)を指定した場合は、 定
733 型のメッセージを <repeat> 回繰り返し送信する。
734 <msg>(数字以外)を指定した場合は、 メッセージ
735 <msg> を送信する。
736 eus UDP エコークライアント・タスクの繰り返し動作を
737 停止する。
738 eus4 IPv4 専用 UDP エコークライアント・タスクの繰り
739 返し動作を停止する。
740
741 i ネットワークインタフェースが PPP の時に有効であ
742 る。直接接続の場合は、直ちに LCP を起動して、サー
743 バに接続する。モデム接続の場合は、 コンパイル時
744 コンフィギュレーションの MODEM_CFG_PHONE_NUMBER
745 パラメータで指定されているサーバに発呼する。 な
746 お、PPP は参考実装である。
747
748 if [<addr> <mask>] ネットワークインタフェースが PPP の時は、 IP ア
749 ドレス、 サブネットマスク、ブロードキャストアド
750 レスを出力する。 ネットワークインタフェースがイー
751 サネットで、 ネットワーク層が IPv4 の時は、
752 [<addr> <mask>] を指定できる。 [<addr> <mask>]
753 を指定しなければ、MAC アドレス、IPv4 アドレス、
754 サブネットマスク、 ブロードキャストアドレスの出
755 力のみ行う。 [<addr> <mask>] を指定した時は、
756 IPv4 アドレスとサブネットマスクを変更した後、
757 MAC アドレス、IPv4 アドレス、サブネットマスク、
758 ブロードキャストアドレスを出力する。<addr> は、
759 IPv4 アドレス、 <mask> は、サブネットマスクであ
760 る。なお、PPP は参考実装である。
761
762 na ネットワークインタフェースがイーサネットの時に
763 有効である。IPv6 では近隣アドレスキャッシュの状
764 態、IPv4 では ARP キャッシュを出力する。
765
766 nb ネットワークバッファの統計情報を出力する。
767
768 nc ネットワーク統計情報を表示する。
769
770 nr [<index> <target> <mask> <gateway>]
771 ネットワークインタフェースがイーサネットのとき
772 有効である。 ネットワーク層が IPv4 の時は、
773 [<index> <target> <mask> <gateway>] を指定でき
774 る。 [<index> <target> <mask> <gateway>] を指定
775 しなければ、 ルーティング表の出力のみ行う。
776 [<index> <target> <mask> <gateway>] を指定した
777 時は、 ルーティング表を変更した後、ルーティング
778 表を出力する。<index> は、 経路エントリのインデッ
779 クス、<target> は、目標ネットワークの IP アドレ
780 ス、<mask> は、目標ネットワークのサブネットマス
781 ク、 <gateway> は、ゲートウェイの IP アドレスである。
782
783 nrl ネットワークインタフェースがイーサネットで、 ネッ
784 トワーク層が IPv6 の時に有効である。 ディフォル
785 トルータ・リストを出力する。
786
787 nrp ネットワークインタフェースがイーサネットで、 ネッ
788 トワーク層が IPv6 の時に有効である。 プレフィッ
789 クスリストを出力する。
790
791 ns [<name>|<addr>] DNS サーバに正引きでホスト名 <name>、または、逆
792 引きで IP アドレス <addr> のアドレス情報を照会
793 し出力する。いずれも指定しない時は、 ドメイン名
794 と DNS サーバの IP アドレスを出力する。
795
796 nt TCP 通信端点と TCP 受付口の状態を表示する。
797
798 nu UDP 通信端点の状態を表示する。
799
800 p <host> [ <tmo> [<size>] ]
801 ホスト <host> に ICMP パケットを送信する。<tmo>
802 はタイムアウト値(単位は秒)で、 省略時(- を指
803 定する)は 3 秒である。 <size> はデータサイズで、
804 指定しない場合は 64 オクテットである。
805
806 ps タスクの状態を表示する。
807
808 r <tskid> タスク <tskid> の待ち状態を強制的に解除する。
809
810 tt <repid> ITRON TCP/IP API の TCP の拡張機能を組込む必要
811 がある。TCP 受付口 <repid> を削除し、対応するサー
812 バを停止する。
813
814 tu <cepid> ITRON TCP/IP API の UDP の拡張機能を組込む必要
815 がある。UDP 通信端点 <cepid> を削除し、対応する
816 サーバを停止する。
817
818 w <tskid> タスク <tskid> を起床する。
819
820 wtd ITRON TCP/IP API の TCP の拡張機能を組込む必要
821 がある。TCP ディスカードサーバ・タスクに TCP 受
822 付口と TCP 通信端点を割当て、TCP ディスカードサー
823 バ・タスクを起動する。
824
825 wte ITRON TCP/IP API の TCP の拡張機能を組込む必要
826 がある。TCP エコーサーバ・タスクに TCP 受付口と
827 TCP 通信端点を割当て、 TCP エコーサーバ・タスク
828 を起動する。
829
830 wte4 ITRON TCP/IP API の TCP の拡張機能を組込む必要
831 がある。 TCP エコーサーバ・タスクに IPv4 用 TCP
832 受付口と IPv4 用 TCP 通信端点を割当て、TCP エコー
833 サーバ・タスクを起動する。
834
835 wtw4 ITRON TCP/IP API の TCP の拡張機能を組込む必要
836 がある。WWW サーバ・タスクに IPv4 用 TCP 受付口
837 と IPv4 用 TCP 通信端点を割当て、WWW サーバ・タ
838 スクを起動する。
839 wtw ITRON TCP/IP API の TCP の拡張機能を組込む必要
840 がある。 WWW サーバ・タスクに TCP 受付口と TCP
841 通信端点を割当て、WWW サーバ・タスクを起動する。
842
843 wue ITRON UDP/IP API の UDP の拡張機能を組込む必要
844 がある。UDP エコーサーバ・タスクに UDP 通信端点
845 を割当て、UDP エコーサーバ・タスクを起動する。
846
8474. 4 DNSリゾルバーによるホスト名の指定
848
849 Makefile の組み込む機能の選択で、
850
851 USE_RESOLVER = true
852
853を指定して DNS リゾルバーを使用すると、簡易コンソールコマンドの <host>
854に指定したホスト名を、DNS サーバに照会して IP アドレスを得ることができ
855る(正引き)。
856 <host> の書式を以下に示す。
857 [-[6|4][A|a|Q|q]] <name>
858
859 各オプションを以下に示す。
860
861 6 ネットワーク層のプロトコルとして IPv6 により DNS サーバに照
862 会する。
863 4 ネットワーク層のプロトコルとして IPv4 により DNS サーバに照
864 会する。
865 q AAAA レコードのみ照会する。
866 Q AAAA レコードのみ照会する。
867 a A レコードのみ照会する。
868 A A レコードのみ照会する。
869
870 6 と 4 のどちらも指定しない時は、まず IPv6 で DNS サーバに照会するが、
871応答がない場合は IPv4 にフォールバックして DNS サーバに照会する。 ただ
872し、ネットワーク層としてどちらか一方のみ組込んだ場合は、このオプション
873は無視される。
874 q、 Q、a、A のいずれも指定しない時は、AAAA レコードの次に A レコード
875の順で DNS サーバに照会する。
876
8775. sample1 のネットワーク対応プログラム(sample1n)の構築
878
879 TOPPERS/ASP と TOPPERS/JSP のサンプルプログラム sample1 のネットワー
880ク対応プログラムである。telnet で接続すると、 シリアルの入出力を引き継
881いで実行する。 切断すると、 元のシリアルに入出力を戻す。
882 以下に構築方法を述べる。
883
884 (1) ASP/JSP コンフィギュレーションスクリプトの実行
885 それぞれの環境におけるコンフィギュレーションスクリプトを実
886 行する。以下は、 TOPPERS/ASP 環境におけるコンフィギュレーショ
887 ンスクリプトの実行例である。
888
889 $ mkdir NETOBJ
890 $ cd NETOBJ
891 $ perl ../configure -T akih8_3069f_gcc
892
893 (2) TINET コンフィギュレーションスクリプトの実行
894 それぞれの環境における TINET コンフィギュレーションスクリプ
895 トを実行する。 この時、 アプリケーションプログラム名として
896 sample1n を指定する。 以下は、 TOPPERS/ASP 環境における TINET
897 コンフィギュレーションスクリプトの実行例である。
898
899 $ perl ../tinet/tinet_asp_configure -T akih8_3069f_gcc -A sample1n
900 -i ether -v if_ed -n inet6 -s tcp
901
902 なお、オプション -n に inet6/inet4 を指定しても、 IPv6 でのみ
903 接続できる。
904
905 (3) Makefile の修正
906 アプリケーション本体(sample1n.c)と TOPPERS/ASP と
907 TOPPERS/JSP の sample1.c を一緒にコンパイル・リンクするため、
908 Makefile を修正する。
909
910 [1] TOPPERS/ASP 環境
911 Makefile の APPL_COBJS に sample1.o を追加する。
912
913 APPL_COBJS = $(APPLNAME).o sample1.o
914
915 [2] TOPPERS/JSP 環境
916 Makefile の UTASK_COBJS に sample1.o を追加する。
917
918 UTASK_COBJS = $(UNAME).o sample1.o
919
920 (4) sample1.c の修正
921 TOPPERS/ASP と TOPPERS/JSP の sample1.c のインクルードファ
922 イルの指定
923
924 #include "sample1.h"
925
926 の前に、 以下のインクルードファイルを追加する。
927
928 #include "sample1n.h"
929
930 (5) tinet_app_config.h の設定
931 IPv4 の場合、IP アドレス、サブネットマスク、 ディフォルトゲー
932 トウェイを指定する。
933
9346. 最小構成サーバの構築
935
936 WWW サーバ・タスクと TCP エコーサーバ・タスクのみからなる最小構成の
937サーバである。H8/3069F が内蔵している RAM(16K バイト)と ROM(512K バ
938イト)に収まり、外部メモリは不要である。現在は、品川通信計装サービス製
939NKEV-010H8(TOPPERS/JSP リリース 1.4.2 のみ)と秋月電子通商製 H8/3069F
940(TOPPERS/JSP リリース 1.4.1 以降と TOPPERS/ASP)のシステムに対応して
941いる。
942 各システム依存部の Makefile.config の「実行環境の定義」で、
943
944 # ROM化 外部RAM未使用
945 #DBGENV := INMEM_ONLY
946
947を有効にして、 コンパイル・リンクする。
Note: See TracBrowser for help on using the repository browser.