source: rubycfg_asp/trunk/asp_dcre/tinet/doc/tinet.txt@ 313

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

ソースを追加

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
  • Property svn:mime-type set to text/plain
File size: 101.7 KB
Line 
1 TCP/IP プロトコルスタック(TINET)
2 ユーザズマニュアル(リリース 1.7)[2017/4/5]
3
41. TCP/IP プロトコルスタック(TINET)の概要
5
6 TINET は、TOPPERS/ASP と TOPPERS/JSP 用の IPv6/IPv4 デュアルスタック
7の TCP/IP プロトコルスタックである。
8
91. 1 機能一覧
10
11 以下に、TINET リリース 1.7 の機能一覧を示す。
12
13 (1) API
14
15 ・ITRON TCP/IP API 仕様の標準機能
16 ・暫定的な ITRON TCP/IP(バージョン 6)API 仕様の標準機能
17 ・ITRON TCP/IP API 仕様の拡張機能
18
19 (2) TCP
20
21 ・BSD の通信機能
22 ・最大セグメントサイズ(MSS)オプション
23 ・省コピー API
24 ・ノンブロッキングコール(組込み選択可)
25 ・タスクからの Time Wait 状æ…
26‹ã® TCP 通信端点分離機能(組込み
27 選択可)
28 ・送受信ウィンドバッファの省コピー機能(組込み選択可)
29 ・TCP ヘッダのトレース出力機能(組込み選択可)
30
31 (3) UDP
32
33 ・ノンブロッキングコール(組込み選択可)
34
35 (4) 近隣探索
36
37 ・近隣探索要請の送受信
38 ・近隣探索通知の送受信
39 ・ルータ通知メッセージの受信
40 ・ルータ要請メッセージの送信
41 ・アドレス重複検出機能
42
43 (5) ICMPv6
44
45 ・エコー要求・応答の送受信
46 ・エラーの送信(組込み選択可)
47 ・向け直しメッセージの受信(組込み選択可)
48 ・Path MTU
49
50 (6) ICMPv4
51
52 ・エコー要求・応答の送受信
53 ・エラーの送信(組込み選択可)
54 ・向け直しメッセージの受信(組込み選択可)
55
56 (7) IPv6
57
58 ・アドレスの自動設定
59 ・静的経路表
60 ・非 PC 系ディジタル機器への適用に向けた IPv6 最小要求仕様の
61 IPv6 最小ホスト仕様に準拠
62 ・拡張ヘッダのエラーの通知
63 ・断片ヘッダ(組込み選択可)
64 ・ホスト情
65報キャッシュ(組込み選択可)
66 ・IPv6/IPv4 完å…
67¨ãƒ‡ãƒ¥ã‚¢ãƒ«ã‚¹ã‚¿ãƒƒã‚¯ã€ãƒªãƒªãƒ¼ã‚¹ 1.7 新規】
68 ・IPv4 射影アドレス(組込み選択可)【リリース 1.7 新規】
69
70 (8) IPv4
71
72 ・静的経路表
73 ・IP データグラムの分割・再構成(組込み選択可)
74 ・IPSEC(組込み選択可、フックのみ実装
75)
76
77 (9) その他
78
79 ・ARP 要求・応答の送受信
80 ・ARP での IPv4 アドレス重複検出機能
81 ・DHCP への対応
82 ・SNMP 用管理情
83報ベース(MIB)の提供
84
851. 2 制限事項
86
87
88 以下に、TINET リリース 1.7 の制約事項
89を述べる。
90
91 (1) IPv6 では、ネットワークインタフェースはイーサネットのみ選択できる。
92 (2) IPv6 では、TCP と UDP の両方を選択するか、 どちらか一つを選択
93 しなければならない。 また、UDP のみを選択した場合は、ノンブロッ
94 キング機能を組み込む必
95要がある。
96 (3) ノンブロッキングコールにおいても、 通信端点の排他制御のため、
97 短時間であるがブロックすることがある。
98 (4) IPv6 に関する ITRON TCP/IP API 2.0 仕様には未対応である。
99 TINET リリース 1.2 からの暫定的な ITRON TCP/IP(バージョン 6)
100 API 仕様にのみ対応している。
101 (5) ITRON TCP/IP API 部分のライブラリ化は行われているが、ライブラ
102 リとアプリケーションプログラムを別々
103に構築しておき、 後でリン
104 クする方法はサポートしていない。
105 (6) 設定と読出し可能な TCP 通信端点オプションは無いため、TCP 通信
106 端点オプションの設定 API と読出し API の戻り値は E_PAR である。
107 (7) 設定と読出し可能な UDP 通信端点オプションは無いため、UDP 通信
108 端点オプションの設定 API と読出し API の戻り値は E_PAR である。
109
1101. 3 ディレクトリ構成
111
112 TINET のディレクトリは、 TOPPERS/ASP または TOPPERS/JSP のルートディ
113レクトリの下に置くことを想定しており、以下のディレクトリから構成されて
114いる。
115
116 tinet TINET のルートディレクトリ
117 tinet/cfg TINET コンフィギュレータ(TOPPERS/JSP 用のみ)
118 tinet/doc ドキュメント類
119 tinet/net 汎用ネットワーク
120 tinet/netapp サンプルのネットワークプログラム
121 tinet/netdev ネットワークインタフェースのドライバ
122 tinet/netinet IPv4/TCP/UDP/ICMP
123 tinet/netinet6 IPv6/ICMPv6/NDP
124
1251. 4 ドキュメント類
126
127 ドキュメント類を以下に示す。å…
128¨ã¦ã®ãƒ•ã‚¡ã‚¤ãƒ«ã¯ PDF でも提供している。
129
130 tinet.txt ユーザズマニュアル
131 tinet_gcc.txt ユーザズマニュアル【GCC 環境】
132 tinet_cs.txt ユーザズマニュアル【CS+ 環境(参考)】
133 tinet_sample.txt サンプルアプリケーション
134 tinet_config.txt コンパイル時コンフィギュレーション
135 tinet_defs.txt プロセッサ、システム依存定義
136
137
138
139
140
141苫小牧工業高等専門学校 - 2 - 情
142報工学科
143
144
145
146
147TINET ユーザズマニュアル 1. 4 ドキュメント類
148
149 tinet_chg.txt 変更メモ
150 tinet_ether.pdf TINET-1.4 におけるイーサネットの実装
151(PDFのみ)
152
1532. TINET コンフィギュレータと TINET コンフィグレーションファイル
154
1552. 1 TOPPERS/ASP
156
157 TOPPERS/ASP では、 TOPPERS/ASP 用コンフィギュレータを流用するため、
158TINET 独自のコンフィギュレータはない。
159 TOPPERS/ASP 用コンフィギュレータを流用して、TINET コンフィギュレーショ
160ンファイル(標準は tinet_$(APPLNAME).cfg)から以下のファイルを生成する。
161
162 (1) tinet_cfg.c
163 TINET カーネル構成ファイルで、 アプリケーションプログラム、
164 TINET とå…
165±ã«ã‚³ãƒ³ãƒ‘イルしてリンクする。
166
167 (2) tinet_kern.cfg
168 TINET 内
169部で使用するカーネルオブジェクトの静的 API が生成され、
170 TOPPERS/ASP システムコンフィギュレーションファイル(標準は
171 $(APPLNAME).cfg)にインクルードする。
172
173 (3) tinet_cfg.h
174 TINET 内
175部で使用するカーネルオブジェクトの ID 自動割付結果ファ
176 イルである。
177
1782. 2 TOPPERS/JSP
179
180 TINET コンフィギュレータは tinet/cfg/tinet_cfg (cygwin では
181tinet_cfg.exe) であり、ターゲットには依存していない。 TINET コンフィグ
182レータの生成については「8. TOPPERS/JSP 環境におけるインストールとファ
183イルの作成・変更 」を参ç…
184§ã™ã‚‹ã“と。
185 TOPPERS/JSP 用 TINET コンフィギュレータは TINET コンフィギュレーショ
186ンファイル(標準は tinet_$(UNAME).cfg)から以下のファイルを生成する。
187
188 (1) tinet_cfg.c
189 TINET カーネル構成ファイルで、 アプリケーションプログラム、
190 TINET とå…
191±ã«ã‚³ãƒ³ãƒ‘イルしてリンクする。
192
193 (2) tinet_kern.cfg
194 TINET 内
195部で使用するカーネルオブジェクトの静的 API が生成され、
196 TOPPERS/JSP システムコンフィギュレーションファイル(標準は
197 $(UNAME).cfg)にインクルードする。
198
199 (3) tinet_id.h
200 TINET 内
201部で使用するカーネルオブジェクトの ID 自動割付結果ファ
202 イルである。
203
2043. ITRON TCP/IP API仕様
205
2063. 1 暫定的なITRON TCP/IP(バージョン6)API仕様
207
208 IPv6 に関する ITRON TCP/IP API 2.0 仕様には未対応である。 TINET リリー
209ス 1.2 からの暫定的な ITRON TCP/IP(バージョン 6)API 仕様にのみ対応し
210ている。
211
212 (1) 1.5.1 データ構造/データ型 (1) IP アドレス/ポート番号をå…
213¥ã‚Œ
214 るデータ構造
215
216 /* IPv6 アドレス */
217 struct t_in6_addr {
218 union {
219 uint8_t __u6_addr8[16];
220 uint16_t __u6_addr16[8];
221 uint32_t __u6_addr32[4];
222 } __u6_addr;
223 } T_IN6_ADDR;
224
225 typedef struct t_ipv6ep {
226 T_IN6_ADDR ipaddr; /* IPv6 アドレス */
227 uint16_t portno; /* ポート番号 */
228 } T_IPV6EP;
229
230 (2) 1.5.1 データ構造/データ型 (2) オブジェクト生成用のデータ構造
231
232 typedef struct t_tcp6_crep {
233 /* 標準 */
234 ATR repatr; /* 受付口属性 */
235 T_IPV6EP myaddr; /* 自分のアドレス */
236 /* 実装
237依存 */
238 } T_TCP6_CREP;
239
240 (3) 1.5.1 データ構造/データ型 (5) 特殊な IP アドレスとポート番号
241
242 #define IPV6_ADDR_UNSPECIFIED_INIT \
243 {{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
244 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }}}
245 #define IPV6_ADDRANY IPV6_ADDR_UNSPECIFIED_INIT
246
247 (4) 2.2 TCP 受付口の生成/削除
248 【静的 API】
249 TCP6_CRE_REP(ID repid, { ATR repatr,
250 { T_IN6_ADDR myipaddr, uint16_t myportno } } );
251
252 【API の機能】
253 myipaddr の型が T_IN6_ADDR になった以外は、 ITRON
254 TCP/IP API 仕様と同じである。myipaddr には IPV6_ADDRANY
255 を指定できる。
256
257 (5) 2.4 接続/切断「接続要求待
258ち(受動オープン)」
259 【C 言語 API】
260 ER ercd = tcp6_acp_cep(ID cepid, ID repid,
261 T_IPV6EP *p_dstaddr, TMO tmout);
262
263 【API の機能】
264 p_dstaddr の型が、 T_IPV6EP* になった以外は、 ITRON
265 TCP/IP API 仕様と同じである。
266
267 (6) 2.4 接続/切断「接続要求(能動オープン)」
268 【C 言語 API】
269 ER ercd = tcp6_con_cep(ID cepid, T_IPV6EP *p_myaddr,
270 T_IPV6EP *p_dstaddr, TMO tmout);
271
272 【機能】
273 p_myaddr と p_dstaddr の型が、 T_IPV6EP* になった以外
274 は、ITRON TCP/IP API 仕様と同じである。
275
276 (7) 3.2 UDP 通信端点の生成/削除
277 【静的 API】
278 UDP6_CRE_CEP(ID cepid, { ATR cepatr,
279 { T_IN6_ADDR myipaddr, uint16_t myportno },
280 FP callback } );
281
282 【機能】
283 myipaddr の型が T_IN6_ADDR になった以外は、 ITRON
284 TCP/IP API 仕様と同じである。myipaddr には IPV6_ADDRANY
285 を指定できる。
286
287 (8) 3.3 データの送受信「パケットの送信」
288 【C 言語 API】
289 ER ercd = udp6_snd_dat(ID cepid, T_IPV6EP *p_dstaddr,
290 void *data, int_t len, TMO tmout);
291
292 【機能】
293 p_dstaddr の型が、 T_IPV6EP* になった以外は、 ITRON
294 TCP/IP API 仕様と同じである。
295
296 (9) 3.4 データの送受信「パケットの受信」
297 【C 言語 API】
298 ER ercd = udp6_rcv_dat(ID cepid, T_IPV6EP *p_dstaddr,
299 void *data, int_t len, TMO tmout);
300
301 【機能】
302 p_dstaddr の型が、 T_IPV6EP* になった以外は、 ITRON
303 TCP/IP API 仕様と同じである。
304
3053. 2 サポートするオブジェクトの定義
306
307 サポートするオブジェクトの定義は、以下に示す ITRON TCP/IP API 仕様の
308静的 API、 暫定的な ITRON TCP/IP(バージョン 6)API 仕様の静的 API、
309TINET 独自の静的 API、ファイルのインクルードである。
310
311 (1) TCP 受付口(IPv4)
312 【静的 API】
313 TCP_CRE_REP(ID repid, { ATR repatr,
314 { uint32_t myipaddr, uint16_t myportno } } );
315
316 【パラメータ】
317 パラメータについては、ITRON TCP/IP API 仕様と同じであ
318 り、実装
319依存の TCP 受付口属性はない。
320 【TCP 受付口数の定義】
321 TCP 受付口数を定義するプリプロセッサディレクティブで
322 あり、tinet_cfg.c に出力される。
323 #define TNUM_TCP_REPID <TCP受付口数>
324
325 【TCP 受付口 ID の最大値の変数の定義】
326 TCP 受付口 ID の最大値の変数の定義であり、tinet_cfg.c
327 に出力される。
328 const ID tmax_tcp_repid =
329 (TMIN_TCP_REPID + TNUM_TCP_REPID - 1);
330
331 (2) TCP 通信端点(IPv4)
332 【静的 API】
333 TCP_CRE_CEP(ID cepid, { ATR cepatr, void *sbuf, int_t sbufsz,
334 void *rbuf, int_t rbufsz,
335 FP callback } );
336
337 【パラメータ】
338 パラメータについては、ITRON TCP/IP API 仕様と同じであ
339 り、実装
340依存の TCP 通信端点属性はない。
341 【TCP 通信端点数の定義】
342 TCP 通信端点数を定義するプリプロセッサディレクティブ
343 であり、tinet_cfg.c に出力される。
344 #define TNUM_TCP_CEPID <TCP通信端点数>
345
346 【TCP 通信端点 ID の最大値の変数の定義】
347 TCP 通信端点 ID の最大値の変数の定義であり、
348 tinet_cfg.c に出力される。
349 const ID tmax_tcp_cepid =
350 (TMIN_TCP_CEPID + TNUM_TCP_CEPID - 1);
351
352 (3) UDP 通信端点(IPv4)
353 【静的 API】
354 UDP_CRE_CEP(ID cepid, { ATR cepatr,
355 { uint32_t myipaddr, uint16_t myportno },
356 FP callback } );
357
358 【パラメータ】
359 パラメータについては、ITRON UDP/IP API 仕様と同じであ
360 り、実装
361依存の UDP 通信端点属性はない。
362 【UDP 通信端点数の定義】
363 UDP 通信端点数を定義するプリプロセッサディレクティブ
364 であり、tinet_cfg.c に出力される。
365 #define TNUM_UDP_CEPID <UDP通信端点数>
366
367 【UDP 通信端点 ID の最大値の変数の定義】
368 UDP 通信端点 ID の最大値の変数を定義であり、
369 tinet_cfg.c に出力される。
370 const ID tmax_udp_cepid =
371 (TMIN_UDP_CEPID + TNUM_UDP_CEPID - 1);
372
373 (4) TCP 受付口(IPv6)
374 【静的 API】
375 TCP6_CRE_REP(ID repid, { ATR repatr,
376 { T_IN6_ADDR myipaddr, uint16_t myportno } } );
377
378 【パラメータ】
379 パラメータについては、myipaddr で指定する IP アドレス
380 は IPv6 であり、 IPv4 の IP_ADDRANY の代わりに、IPv6 で
381 は IPV6_ADDRANY を指定できる。これ以外は、 ITRON TCP/IP
382 API 仕様と同じであり、実装
383依存の TCP 受付口属性はない。
384 【TCP 受付口数の定義】
385 TCP 受付口数を定義するプリプロセッサディレクティブで
386 あり、tinet_cfg.c に出力される。
387 #define TNUM_TCP_REPID <TCP受付口数>
388
389 【TCP 受付口 ID の最大値の変数の定義】
390 TCP 受付口 ID の最大値の変数を定義であり、tinet_cfg.c
391 に出力される。
392 const ID tmax_tcp_repid =
393 (TMIN_TCP_REPID + TNUM_TCP_REPID - 1);
394
395 (5) TCP 通信端点(IPv6)
396 【静的 API】
397 TCP6_CRE_CEP(ID cepid, { ATR cepatr, void *sbuf, int_t sbufsz,
398 void *rbuf, int_t rbufsz,
399 FP callback } );
400
401 【パラメータ】
402 パラメータについては、ITRON TCP/IP API 仕様と同じであ
403 り、実装
404依存の TCP 通信端点属性はない。
405
406 【TCP 通信端点数の定義】
407 TCP 通信端点数を定義するプリプロセッサディレクティブ
408 であり、tinet_cfg.c に出力される。
409 #define TNUM_TCP_CEPID <TCP通信端点数>
410
411 【TCP 通信端点 ID の最大値の変数の定義】
412 最大の TCP 通信端点 ID の最大値の変数を定義であり、
413 tinet_cfg.c に出力される。
414 const ID tmax_tcp_cepid =
415 (TMIN_TCP_CEPID + TNUM_TCP_CEPID - 1);
416
417 (6) UDP 通信端点(IPv6)
418 【静的 API】
419 UDP6_CRE_CEP(ID cepid, { ATR cepatr,
420 { T_IN6_ADDR myipaddr, uint16_t myportno },
421 FP callback } );
422
423 【パラメータ】
424 パラメータについては、myipaddr で指定する IP アドレス
425 は IPv6 であり、 IPv4 の IP_ADDRANY の代わりに、IPv6 で
426 は IPV6_ADDRANY を指定できる。これ以外は、 ITRON TCP/IP
427 API 仕様と同じであり、実装
428依存の TCP 受付口属性はない。
429 【UDP 通信端点数の定義】
430 UDP 通信端点数を定義するプリプロセッサディレクティブ
431 であり、tinet_cfg.c に出力される。
432 #define TNUM_UDP_CEPID <UDP通信端点数>
433
434 【UDP 通信端点 ID の最大値の変数の定義】
435 UDP 通信端点 ID の最大値の変数を定義であり、
436 tinet_cfg.c に出力される。
437 const ID tmax_udp_cepid =
438 (TMIN_UDP_CEPID + TNUM_UDP_CEPID - 1);
439
440 (7) TCP 受付口の予約 ID(IPv4、TINET 独自)
441 【静的 API】
442 VRID_TCP_REP(ID repid);
443
444 【パラメータ】
445 ID repid 予約するTCP受付口ID
446
447 (8) TCP 通信端点の予約 ID(IPv4、TINET 独自)
448 【静的 API】
449 VRID_TCP_CEP(ID cepid);
450
451 【パラメータ】
452 ID repid 予約するTCP通信端点ID
453
454 (9) UDP 通信端点の予約 ID(IPv4、TINET 独自)
455 【静的 API】
456 VRID_UDP_CEP(ID cepid);
457
458 【パラメータ】
459 ID repid 予約するUDP通信端点ID
460
461 (10) TCP 受付口の予約 ID(IPv6、TINET 独自)
462 【静的 API】
463 VRID_TCP6_REP(ID repid);
464
465 【パラメータ】
466 ID repid 予約するTCP受付口ID
467
468 (11) TCP 通信端点の予約 ID(IPv6、TINET 独自)
469 【静的 API】
470 VRID_TCP6_CEP(ID cepid);
471
472 【パラメータ】
473 ID repid 予約するTCP通信端点ID
474
475 (12) UDP 通信端点の予約 ID(IPv6、TINET 独自)
476 【静的 API】
477 VRID_UDP6_CEP(ID cepid);
478
479 【パラメータ】
480 ID repid 予約するUDP通信端点ID
481
4824. ITRON TCP/IP API 拡張機能
483
484 TINET リリース 1.3 までは、ITRON TCP/IP API の標準機能のみに対応して
485いたが、 リリース 1.4 からは、拡張機能にも対応した。ただし、応用プログ
486ラムから使用する場合は、以下に示すコンパイル時コンフィギュレーションパ
487ラメータを指定しなければならない。
488
489 (1) TCP_CFG_EXTENTIONS
490 ITRON TCP/IP API の TCP の拡張機能を有効にする。
491
492 (2) UDP_CFG_EXTENTIONS
493 ITRON TCP/IP API の UDP の拡張機能を有効にする。
494
4954. 1 TCP の ITRON TCP/IP API 拡張機能
496
497 TCP_CFG_EXTENTIONS を指定することにより使用可能となる API を以下に示
498す。
499
500 ・TCP 受付口の予約 ID【静的 API、VRID_TCP_REP】(IPv4、TINET 独自)
501 ・TCP 受付口の予約 ID【静的 API、VRID_TCP6_REP】(IPv6、TINET 独自)
502 ・TCP 通信端点の予約 ID【静的 API、VRID_TCP_CEP】(IPv4、TINET 独自)
503 ・TCP 通信端点の予約 ID【静的 API、 VRID_TCP6_CEP】(IPv6、TINET 独自)
504 ・TCP 受付口の生成【動的 API、tcp_cre_rep】(IPv4)
505 ・TCP 受付口の生成【動的 API、tcp6_cre_rep】(IPv6、TINET 独自)
506 ・TCP 受付口の削除【動的 API、tcp_del_rep】
507 ・TCP 通信端点の生成【動的 API、tcp_cre_cep】
508 ・TCP 通信端点の削除【動的 API、tcp_del_cep】
509 ・緊急データの送信【tcp_snd_oob】
510 ・緊急データの受信【tcp_rcv_oob】
511 ・TCP 通信端点オプションの設定【tcp_set_opt】
512 ・TCP 通信端点オプションの読出し【tcp_get_opt】
513 ・緊急データ受信【コールバック、TEV_TCP_RCV_OOB】
514
515 (1) TCP 受付口の生成と削除
516 この機能により、1 個の TCP 受付口を複数のタスクでå…
517±æœ‰ã™ã‚‹ã“
518 とができる。ただし、1 回に使用できるのは 1 個のタスクに限定さ
519 れる。 以下に標準的な使用方法を述べる。 なお、 ç…
520©é›‘になるため
521 IPv6 に関しての説明は、一部省略している。
522
523 [1] TCP 受付口の予約 ID【静的 API、 VRID_TCP_REP、
524 VRID_TCP6_REP】により、TCP 受付口 ID を予約する。
525
526 VRID_TCP_REP の書式を以下に示す。
527
528 VRID_TCP_REP(ID repid);
529
530 パラメータ repid は予約する TCP 受付口 ID であり、 一般
531 的には、 TINET コンフィグレーションファイルに以下のよう
532 に指定する。
533
534 VRID_TCP_REP (TCP_RSV_REPID1);
535
536 これにより、 TCP 受付口用のメモリ領域が確保され、 TINET
537 内
538部で使用するカーネルオブジェクトの ID 自動割付結果ファ
539 イル(TOPPERS/ASP は tinet_cfg.h、 TOPPERS/JSP は
540 tinet_id.h)に、 対応するマクロ定義が以下のように出力される。
541
542 #define TCP_RSV_REPID1 1
543
544 [2] TCP 受付口の生成【動的 API、tcp_cre_rep、tcp6_cre_rep】
545 により、TCP 受付口を生成する。
546
547 まず、TCP 受付口生成情
548報構造体に情
549報を設定する。IPv4 の
550 場合の例を以下に示す。
551
552 T_TCP_CREP crep;
553 crep.repatr = 0;
554 crep.myaddr.portno = 7;
555 crep.myaddr.ipaddr = IPV4_ADDRANY;
556
557 また IPv6 の場合の例を以下に示す。
558
559 T_TCP6_CREP crep;
560 crep.repatr = 0;
561 crep.myaddr.portno = 7;
562 memcpy(&crep.myaddr.ipaddr, &ipv6_addrany, sizeof(T_IN6_ADDR));
563
564 いずれも、 受付ける自分の IP アドレスは規定値(å…
565¨ã¦ï¼‰ã§ã‚る。
566 次に、tcp_cre_rep の書式を示す。
567
568 ER ercd = tcp_cre_rep(ID repid, T_TCP_CREP *pk_crep);
569
570 パラメータ repid には [1] で予約した TCP 受付口 ID を指
571 定し、pk_crep には上記で設定済みの TCP 受付口生成情
572報へ
573 のポインタを指定する。一般的な例を以下に示す。
574
575 ercd = tcp_cre_rep(TCP_RSV_REPID1, &crep);
576
577 これにより、 VRID_TCP_REP で確保された TCP 受付口用のメ
578 モリ領域に TCP 受付口生成情
579報が書込まれる。
580
581 [3] 接続要求待
582ち(受動オープン)【tcp_acp_cep、tcp6_acp_cep】
583 により、接続要求待
584ち(受動オープン)する。
585
586 tcp_acp_cep の書式を示す。
587
588 ER ercd = tcp_acp_cep(ID cepid, ID repid,
589 T_IPV4EP *p_dstaddr, TMO tmout);
590
591 パラメータ repid に [1] で予約した TCP 受付口 ID を指定
592 する以外は、 通常の呼び出しと同じである。
593
594 [4] TCP 受付口の削除【動的 API、tcp_del_rep】により、TCP 受
595 付口を削除する。
596
597 通常は、 接続要求待
598ち(受動オープン)が終了した後に、
599 TCP 受付口を削除するが、 接続要求待
600ち(受動オープン)中
601 に、tcp_del_cep により、 TCP 通信端点を削除することも可
602 能である。 この場合、tcp_acp_cep の戻り値には、E_DLT が
603 返される。TCP 受付口を削除すると、 他のタスクが同じ TCP
604 受付口 ID を利用できる。tcp_del_rep の書式を示す。
605
606 ER ercd = tcp_del_rep(ID cepid);
607
608 パラメータ repid には [1] で予約した TCP 受付口 ID を指
609 定する。
610
611 (2) TCP 通信端点の生成と削除
612 この機能により、1 個の TCP 通信端点を複数のタスクでå…
613±æœ‰ã™ã‚‹
614 ことができる。ただし、1 回に使用できるのは 1 個のタスクに限定
615 される。 以下に標準的な使用方法を述べる。なお、ç…
616©é›‘になるため
617 IPv6 に関しての説明は、一部省略している。
618
619 [1] TCP 通信端点の予約 ID【静的 API、 VRID_TCP_CEP、
620 VRID_TCP6_CEP】により、TCP 通信端点 ID を予約する。
621
622 VRID_TCP_CEP の書式を以下に示す。
623
624 VRID_TCP_CEP(ID cepid);
625
626 パラメータ cepid は予約する TCP 通信端点 ID であり、 一
627 般的には、 TINET コンフィグレーションファイルに以下のよ
628 うに指定する。
629
630 VRID_TCP_CEP (TCP_RSV_CEPID1);
631
632 これにより、TCP 通信端点用のメモリ領域が確保され、TINET
633 内
634部で使用するカーネルオブジェクトの ID 自動割付結果ファ
635 イル(TOPPERS/ASP は tinet_cfg.h、 TOPPERS/JSP は
636 tinet_id.h)に、 対応するマクロ定義が以下のように出力される。
637
638 #define TCP_RSV_CEPID1 1
639
640 [2] TCP 通信端点の生成【動的 API、 tcp_cre_cep】により、TCP
641 通信端点を生成する。
642
643 まず、TCP 通信端点生成情
644報構造体に情
645報を設定する。 一般
646 的な例を以下に示す。
647
648 T_TCP_CCEP ccep;
649 ccep.cepatr = 0;
650 ccep.sbufsz = TCP_ECHO_SRV_SWBUF_SIZE;
651 ccep.rbufsz = TCP_ECHO_SRV_RWBUF_SIZE;
652 ccep.sbuf = tcp_echo_srv_swbuf;
653 ccep.rbuf = tcp_echo_srv_rwbuf;
654 ccep.callback = (FP)callback_nblk_tcp_echo_srv;
655
656 次に、tcp_cre_cep の書式を示す。
657
658 ER ercd = tcp_cre_cep(ID cepid, T_TCP_CCEP *pk_ccep);
659
660 パラメータ cepid には [1] で予約した TCP 通信端点 ID を
661 指定し、pk_ccep には上記で設定済みの TCP 通信端点生成情
662
663 報へのポインタを指定する。 一般的な例を以下に示す。
664
665 ercd = tcp_cre_cep(TCP_RSV_CEPID1, &ccep);
666
667 これにより、 VRID_TCP_CEP で確保された TCP 通信端点用の
668 メモリ領域に TCP 通信端点生成情
669報が書込まれる。
670 この後、TCP の各 API のパラメータ cepid に [1] で予約
671 した TCP 通信端点 ID を指定する以外は、 通常の TCP 通信
672 端点と同じように使用できる。
673
674 [3] TCP 通信端点の削除【動的 API、tcp_del_cep】により、 TCP
675 通信端点を削除する。
676
677 tcp_cls_cep を呼び出すまでは、 TCP 通信端点を削除でき
678 ないが、tcp_cls_cep の後は TCP 通信端点を削除でき、他の
679 タスクが同じ TCP 通信端点 ID を利用できる。 tcp_del_cep
680 の書式を示す。
681
682 ER ercd = tcp_del_cep(ID cepid);
683
684 パラメータ cepid には [1] で予約した TCP 通信端点 ID を
685 指定する。
686
687 (3) 緊急データの送受信
688
689 [1] 緊急データの送信【tcp_snd_oob】
690
691 tcp_snd_oob の書式を以下に示す。
692
693 ER_UINT ercd = tcp_snd_oob(ID cepid, void *data, int_t len, TMO tmout);
694
695 なお、 以下に示すような制約がある。
696
697 ・緊急データだからといって、 すでに送信ウィンドバッファ
698 にある通常のデータよりå…
699ˆã«é€ä¿¡ã•ã‚Œã‚‹ã‚ã‘ではない。
700 ・tcp_snd_oob で、複数バイトのデータを送信しても(len >
701 1)、受信側で受信できるのは、送信した data の最後の 1
702 バイトのみである。また、 これより前のデータは通常のデー
703 タとして受信される。
704
705 [2] 緊急データの受信【tcp_rcv_oob】
706
707 tcp_rcv_oob の書式を以下に示す。
708
709 ER_UINT ercd = tcp_rcv_oob(ID cepid, void *data, int_t len);
710
711 なお、 以下に示すような制約がある。
712
713 ・緊急データ受信のコールバック関数内
714で呼び出すことを想
715 定している。
716 ・受信できるのは、緊急データの最後の 1 バイトのみである。
717 従って、正常に tcp_rcv_oob から戻ってきた時の戻り値は、
718 常に 1 である。
719
720 [3] 緊急データ受信【コールバック、TEV_TCP_RCV_OOB】
721 緊急データを受信した時、 TCP 通信端点に指定されている
722 コールバック関数を呼び出す。 この時の事象の種類が
723 TEV_TCP_RCV_OOB である。ただし、 TCP 通信端点にコールバッ
724 ク関数が指定されていない場合、 または、コールバック関数
725 内
726で tcp_rcv_oob が呼び出されなければ、受信した緊急デー
727 タは通常のデータとして受信する。
728
729 [4] コンパイル時コンフィギュレーションパラメータ
730
731 TCP_CFG_URG_OFFSET
732
733 緊急データの最後のバイトのオフセット、 値が -1 の場合は
734 BSD の実装
735と同じで、 緊急ポインタは、緊急データの最後の
736 バイトの次のバイトを差す。 値が 0 の場合は RFC1122 の規
737 定と同じで、 緊急ポインタは、緊急データの最後のバイトを
738 差す。既定値は -1 である。
739
740 (4) TCP 通信端点オプションの設定と読出し
741 設定可能な TCP 通信端点オプションは無いため、どちらの関数も
742 戻り値として E_PAR が返される。
743
7444. 2 UDP の ITRON TCP/IP API 拡張機能
745
746 UDP_CFG_EXTENTIONS を指定することにより使用可能となる API を以下に示
747す。
748
749 ・UDP 通信端点の予約 ID【静的 API、VRID_UDP_CEP】(IPv4、TINET 独自)
750 ・UDP 通信端点の予約 ID【静的 API、VRID_UDP6_CEP】(IPv6、TINET 独自)
751 ・UDP 通信端点の生成【動的 API、udp_cre_cep】(IPv4)
752 ・UDP 通信端点の生成【動的 API、udp6_cre_cep】(IPv6、TINET 独自)
753 ・UDP 通信端点の削除【動的 API、udp_del_cep】
754 ・UDP 通信端点オプションの設定【udp_set_opt】
755 ・UDP 通信端点オプションの読出し【udp_get_opt】
756
757 (1) UDP 通信端点の生成と削除
758 この機能により、1 個の UDP 通信端点を複数のタスクでå…
759±æœ‰ã™ã‚‹
760 ことができる。ただし、1 回に使用できるのは 1 個のタスクに限定
761 される。 以下に標準的な使用方法を述べる。なお、ç…
762©é›‘になるため
763 IPv6 に関しての説明は、一部省略している。
764
765 [1] UDP 通信端点の予約 ID【静的 API、 VRID_UDP_CEP、
766 VRID_UDP6_CEP】により、UDP 通信端点 ID を予約する。
767
768 VRID_UDP_CEP の書式を以下に示す。
769
770 VRID_UDP_CEP(ID cepid);
771
772 パラメータ cepid は予約する UDP 通信端点 ID であり、 一
773 般的には、 TINET コンフィグレーションファイルに以下のよ
774 うに指定する。
775
776 VRID_UDP_CEP (UDP_RSV_CEPID1);
777
778 これにより、UDP 通信端点用のメモリ領域が確保され、TINET
779 内
780部で使用するカーネルオブジェクトの ID 自動割付結果ファ
781 イル(TOPPERS/ASP は tinet_cfg.h、 TOPPERS/JSP は
782 tinet_id.h)に、 対応するマクロ定義が以下のように出力される。
783
784 #define UDP_RSV_CEPID1 1
785
786 [2] UDP 通信端点の生成【動的 API、 udp_cre_cep】により、UDP
787 通信端点を生成する。
788
789 まず、UDP 通信端点生成情
790報構造体に情
791報を設定する。 通信
792 相手からのデータの受信を待
793つ応用アプリケーションで、
794 IPv4 の場合の例を以下に示す。
795
796 T_UDP_CCEP ccep;
797 ccep.cepatr = 0;
798 ccep.myaddr.portno = 7;
799 ccep.myaddr.ipaddr = IPV4_ADDRANY;
800
801 また IPv6 の場合の例を以下に示す。
802
803 T_UDP_CCEP ccep;
804 ccep.cepatr = 0;
805 ccep.myaddr.portno = 7;
806 memcpy(&ccep.myaddr.ipaddr, &ipv6_addrany, sizeof(T_IN6_ADDR));
807
808 いずれも、 受付ける自分の IP アドレスは規定値(å…
809¨ã¦ï¼‰ã§ã‚る。
810 次に、udp_cre_cep の書式を示す。
811
812 ER ercd = udp_cre_cep(ID cepid, T_UDP_CCEP *pk_ccep);
813
814 パラメータ cepid には [1] で予約した UDP 通信端点 ID を
815 指定し、pk_ccep には上記で設定済みの UDP 通信端点生成情
816
817 報へのポインタを指定する。 一般的な例を以下に示す。
818
819 ercd = udp_cre_cep(UDP_RSV_CEPID1, &ccep);
820
821 これにより、 VRID_UDP_CEP で確保された UDP 通信端点用の
822 メモリ領域に UDP 通信端点生成情
823報が書込まれる。
824 この後、UDP の各 API のパラメータ cepid に [1] で予約
825 した UDP 通信端点 ID を指定する以外は、 通常の UDP 通信
826 端点と同じように使用できる。
827
828 [3] UDP 通信端点の削除【動的 API、 udp_del_cep】により、UDP
829 通信端点を削除する。
830
831 UDP 通信端点はいつでも削除でき、 他のタスクが同じ UDP
832 通信端点 ID を利用できる。 なお、udp_snd_dat で送信待
833ち
834 の時、または、udp_rcv_dat で受信待
835ちの時に、udp_del_cep
836 により、UDP 通信端点を削除すると、 それぞれの関数の戻り
837 値には、E_DLT が返される。
838 次に、udp_del_cep の書式を示す。
839
840 ER ercd = udp_del_cep(ID cepid);
841
842 パラメータ cepid には [1] で予約した UDP 通信端点 ID を
843 指定する。
844
845 (2) UDP 通信端点オプションの設定と読出し
846 設定可能な TCP 通信端点オプションは無いため、どちらの関数も
847 戻り値として E_PAR が返される。
848
8495. ルーティングの設定
850
851 ルーティングエントリには、静的ルーティングエントリと向け直し(ICMP)
852によるルーティングエントリがある。
853 静的ルーティングエントリは、予め決められたルーティング情
854報であり、ルー
855ティング設定ファイル route_cfg.c のルーティング表エントリé…
856åˆ—に設定す
857る。なお、ディフォルトゲートウェイのみのシンプルなネットワークでは、サ
858ンプルアプリケーション echos の route_cfg.c をそのまま流用できる。
859 向け直し(ICMP)によるルーティングエントリは、TINET コンフィギュレー
860ション・パラメータ定義ファイルで、ルーティング表で予め確保するエントリ
861数を定義し、 ルーティング設定ファイル route_cfg.c のルーティング表エン
862トリé…
863åˆ—に、 空のエントリとして確保する。
864
865 (1) ルーティング表のエントリ数の設定
866 エントリ数の設定するマクロは、 TINET コンフィギュレーション・
867 パラメータ定義ファイルで定義する。
868
869 [1] NUM_IN6_STATIC_ROUTE_ENTRY
870 IPv6 用のルーティング表の静的ルーティングエントリ数を指
871 定する。
872 [2] NUM_IN6_REDIRECT_ROUTE_ENTRY
873 IPv6 用のルーティング表で予め確保する、向け直し(ICMP)
874 によるルーティングエントリ数を指定する。 0 を指定すると、
875 向け直し(ICMPv6)を無視する。
876 [3] NUM_IN4_STATIC_ROUTE_ENTRY
877 IPv4 用のルーティング表の静的ルーティングエントリ数を指
878 定する。
879 [4] NUM_IN4_REDIRECT_ROUTE_ENTRY
880 IPv4 用のルーティング表で予め確保する、向け直し(ICMP)
881 によるルーティングエントリ数を指定する。 0 を指定すると、
882 向け直し(ICMP)を無視する。
883
884 (2) ルーティング表エントリ構造体(IPv6)
885 IPv6 では、#include <netinet6/in6_var.h> で定義されている。
886 各フィールドの意味を以下に示す。
887
888 T_IN6_ADDR target 目標ネットワークアドレス
889 T_IN6_ADDR gateway ゲートウェイの IP アドレス
890 uint32_t expire 有効時間が切れる時刻、0xffffffff を指定すること。
891 uint8_t flags フラグ、0x01 を指定すること。
892 uint8_t prefix_len プレフィックス長
893
894 IP アドレスは、{{{ と }}} で囲み、 1 オクテット単位で指定する。
895 例を以下に示す。
896
897 { { { 0xfe, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x41,
898 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } } }
899
900 (3) ルーティング表エントリ構造体(IPv4)
901 IPv4 では、#include <netinet/in_var.h> で定義されている。各
902 フィールドの意味を以下に示す。
903
904 T_IN4_ADDR targe 目標ネットワークのIPアドレス、
905 ディフォルトゲートウェイでは0を指定する。
906 T_IN4_ADDR mask 目標ネットワークのサブネットマスク、
907 ディフォルトゲートウェイでは0を指定する。
908 T_IN4_ADDR gateway ゲートウェイの IP アドレス、
909 自ネットワーク内
910では0を指定する。
911
912 (4) インクルードファイル
913 以下のインクルードファイルを指定すること。
914
915 [1] TOPPERS/ASP
916
917 #include <kernel.h>
918 #include <tinet_defs.h>
919 #include <tinet_config.h>
920 #include <netinet/in.h>
921 #include <netinet/in_var.h>
922
923 [2] TOPPERS/JSP
924
925 #include <s_services.h>
926 #include <t_services.h>
927 #include <tinet_defs.h>
928 #include <tinet_config.h>
929 #include <netinet/in.h>
930 #include <netinet/in_var.h>
931
932 (5) ルーティング表エントリé…
933åˆ—(IPv6)
934 以下のように指定すること。
935
936 T_IN6_RTENTRY routing6_tbl[NUM_ROUTE_ENTRY] = {
937 <ルーティング表エントリ構造体 1>,
938 <ルーティング表エントリ構造体 2>,
939 ...
940 <ルーティング表エントリ構造体 n>,
941 };
942
943 (6) ルーティング表エントリé…
944åˆ—(IPv4)
945 以下のように指定すること。
946
947 T_IN4_RTENTRY routing4_tbl[NUM_ROUTE_ENTRY] = {
948 <ルーティング表エントリ構造体 1>,
949 <ルーティング表エントリ構造体 2>,
950 ...
951 <ルーティング表エントリ構造体 n>,
952 };
953
954 (7) 探索順序
955 探索は、インデックスが大きな順、つまり、 ルーティング表エン
956 トリé…
957åˆ—の最後の <ルーティング表エントリ構造体 n> から、 最初
958 の <ルーティング表エントリ構造体 1> に向って行われる。
959
9606. TINET 独自機能
961
9626. 1 タスクからの Time Wait 状æ…
963‹ã® TCP 通信端点分離機能
964
965 TCP 通信端点は、ソケットインタフェースにおけるファイルディスクリプタ
966と異なり、 TCP の接続状æ…
967‹ãŒå®Œå…
968¨ã«çµ‚了するまで再利用可能とはならない。
969TCP/IP プロトコルの仕様に従うと、 接続状æ…
970‹ãŒå®Œå…
971¨ã«çµ‚了するまで数分かか
972る場合がある。問題になるのは、å…
973ˆã«ã€TCP 通信端点のコネクション切断 API
974の tcp_sht_cep を呼出し、 コネクションを切断する場合である。 この時、
975tcp_sht_cep で指定された TCP 通信端点は、最終的に Time Wait 状æ…
976‹ã«ãªã‚Šã€
977TCP 通信端点のクローズ API の tcp_cls_cep を呼出したタスクも、タイムア
978ウト待
979ち状æ…
980‹ã«ãªã‚‹ã€‚従って、サーバ側から切断する応用プログラム(WWW な
981ど)のタスクでは、タイムアウトするまで、次の接続要求を受信することがで
982きない。
983 これに対応するため、 TINET は、終了待
984ちの TCP 通信端点をタスクから切
985り離すことにより、タスクが待
986ち状æ…
987‹ã«ãªã‚‰ãªã„ようにする機能を持っており、
988有効にするためには、 コンパイル時コンフィギュレーションパラメータ
989NUM_TCP_TW_CEP_ENTRY を tinet_app_config.h 等に指定し、 確保する TW 用
990TCP 通信端点の数(1 以上の値)を定義する。
991 TCP 通信端点が Time Wait になると、TCP 通信端点から、 Time Wait に必
992
993要な通信管理データを TW 用 TCP 通信端点にコピーし、å…
994ƒã® TCP 通信端点を
995開放する。 これに伴って、 タスクも待
996ち状æ…
997‹ã‹ã‚‰é–‹æ”¾ã•ã‚Œã‚‹ã€‚ また、TW 用
998TCP 通信端点には Time Wait に必
999要な通信管理データのみをコピーすること
1000で、メモリの消費を抑えている。
1001 ただし、この機能を有効にしていても、コネクションの同時切断のタイミン
1002グによっては、分離されない場合がある。
1003
10046. 2 受信ウィンドバッファの省コピー機能
1005
1006 ITRON TCP/IP API 仕様では、TCP 通信端点を生成する静的 API で、受信ウ
1007インドバッファのå…
1008ˆé ­ã‚¢ãƒ‰ãƒ¬ã‚¹ã®æŒ‡å®šã«ã€ NADR を指定すると、プロトコルス
1009タックで、 受信ウインドバッファを確保することになっている。
1010 TINET では、ネットワークバッファを、受信ウインドバッファとすることで、
1011NADR の指定に対応している。 さらに、ネットワークインタフェースで受信し
1012たプロトルコデータを保持するネットワークバッファを、そのまま受信ウイン
1013ドバッファとすることで、ネットワークインタフェースと、TINET 内
1014部で、デー
1015タのコピーを省いている。特に、 省コピー API を使用することにより、 API
1016におけるデータのコピーも行わないことも可能である。
1017 この機能に関係するコンパイル時コンフィギュレーションパラメータを、以
1018下に示す。
1019
1020 (1) TCP_CFG_RWBUF_CSAVE_ONLY
1021 TCP 通信端点の受信ウィンドバッファの省コピー機能を組込み、 こ
1022 の機能のみ使用する。TCP 通信端点を生成する静的 API で、受信ウ
1023 インドバッファのå…
1024ˆé ­ã‚¢ãƒ‰ãƒ¬ã‚¹ã®æŒ‡å®šã«ã€ 応用プログラムが用意し
1025 たバッファを指定しても無視する。
1026
1027 (2) TCP_CFG_RWBUF_CSAVE
1028 TCP 通信端点の受信ウィンドバッファの省コピー機能を組込む。TCP
1029 通信端点を生成する静的 API で、受信ウインドバッファのå…
1030ˆé ­ã‚¢ãƒ‰
1031 レスの指定に、NADR を指定した場合は、受信ウィンドバッファの省
1032 コピー機能を使用するが、 応用プログラムが用意したバッファを指
1033 定した場合は、 受信ウィンドバッファの省コピー機能を使用しない。
1034
1035 (3) TCP_CFG_RWBUF_CSAVE_MAX_QUEUES
1036 TCP 通信端点の受信ウィンドバッファの省コピー機能の、 受信ウィ
1037 ンドバッファキューの最大エントリ数である。 ただし、正常に受信
1038 したセグメントも破棄するため、再送回数が増加する。また、 指定
1039 しないと制限しない。
1040
1041なお、TCP_CFG_RWBUF_CSAVE_ONLY と TCP_CFG_RWBUF_CSAVE の、いずれも指定
1042しない場合は、 TCP 通信端点を生成する静的 API で、受信ウインドバッファ
1043のå…
1044ˆé ­ã‚¢ãƒ‰ãƒ¬ã‚¹ã®æŒ‡å®šã«ã€NADR を指定することができない。
1045
10466. 3 送信ウィンドバッファの省コピー機能
1047
1048 ITRON TCP/IP API 仕様では、TCP 通信端点を生成する静的 API で、受信ウ
1049インドバッファと同様に、 送信ウインドバッファのå…
1050ˆé ­ã‚¢ãƒ‰ãƒ¬ã‚¹ã®æŒ‡å®šã«ã€
1051NADR を指定すると、 プロトコルスタックで、送信ウインドバッファを確保す
1052ることになっている。
1053 TINET では、ネットワークバッファを、送信ウインドバッファとすることで、
1054NADR の指定に対応している。さらに、 書込まれたデータの前に必
1055要なヘッダ
1056を付加して、そのままネットワークインタフェースに渡すことにより、ネット
1057ワークインタフェースと、TINET 内
1058部で、データのコピーを省いている。特に、
1059省コピー API を使用することで、 API におけるデータのコピーも行わないこ
1060とも可能である。
1061 ただし、 イーサネット出力時に、 NIC でネットワークバッファを開放する
1062(コンパイル時コンフィギュレーションパラメータ
1063ETHER_NIC_CFG_RELEASE_NET_BUF を、指定する必
1064要がある)ディバイスドライ
1065バでは、 この送信ウィンドバッファの省コピー機能を利用することはできない。
1066 この機能に関係するコンパイル時コンフィギュレーションパラメータを、以
1067下に示す。
1068
1069 (1) TCP_CFG_SWBUF_CSAVE_ONLY
1070 TCP 通信端点の送信ウィンドバッファの省コピー機能を組込み、 こ
1071 の機能のみ使用する。TCP 通信端点を生成する静的 API で、送信ウ
1072 インドバッファのå…
1073ˆé ­ã‚¢ãƒ‰ãƒ¬ã‚¹ã®æŒ‡å®šã«ã€ 応用プログラムが用意し
1074 たバッファを指定しても無視する。
1075
1076 (2) TCP_CFG_SWBUF_CSAVE
1077 TCP 通信端点の送信ウィンドバッファの省コピー機能を組込む。TCP
1078 通信端点を生成する静的 API で、送信ウインドバッファのå…
1079ˆé ­ã‚¢ãƒ‰
1080 レスの指定に、NADR を指定した場合は、送信ウィンドバッファの省
1081 コピー機能を使用するが、 応用プログラムが用意したバッファを指
1082 定した場合は、 送信ウィンドバッファの省コピー機能を使用しない。
1083
1084 (3) TCP_CFG_SWBUF_CSAVE_MAX_SIZE
1085 TCP 通信端点の送信ウィンドバッファの省コピー機能で、 送信ウィ
1086 ンドバッファに使用するネットワークバッファの最大サイズであり、
1087 標準値は IF_PDU_SIZE である。
1088
1089 (4) TCP_CFG_SWBUF_CSAVE_MIN_SIZE
1090 TCP 通信端点の送信ウィンドバッファの省コピー機能で、 送信ウィ
1091 ンドバッファに使用するネットワークバッファの最小サイズであり、
1092 標準値は 0 である。
1093
1094なお、TCP_CFG_SWBUF_CSAVE_ONLY と TCP_CFG_SWBUF_CSAVE の、いずれも指定
1095しない場合は、TCP 通信端点を生成する静的 API で、 送信ウインドバッファ
1096のå…
1097ˆé ­ã‚¢ãƒ‰ãƒ¬ã‚¹ã®æŒ‡å®šã«ã€NADR を指定することができない。
1098
10996. 4 ノンブロッキングコールの無効化
1100
1101 応用プロクラムで、 ノンブロッキングコールを使用しない場合は、 TCP と
1102UDP のノンブロッキングコール機能を組込まないで、メモリを節約することが
1103できる。
1104 この機能に関係するコンパイル時コンフィギュレーションパラメータを、以
1105下に示す。
1106
1107 (1) TCP_CFG_NON_BLOCKING
1108 TCP のノンブロッキングコール機能を組込む。
1109
1110 (2) UDP_CFG_NON_BLOCKING
1111 UDP のノンブロッキングコール機能を組込む。
1112
1113ただし、 過去のリリースとの互換性のため、 どちらのパラメータも、
1114tinet/tinet_config.h に指定されており、 既定では、ノンブロッキングコー
1115ル機能が組込まれるようになっている。 なお、 サンプルアプリケーションの
1116tinet_app_config.h には、 指定を解除するマクロが定義されている。組込ま
1117ない場合は、以下のマクロを Makefile に定義する。
1118
1119 UNDEF_TCP_CFG_NON_BLOCKING
1120 UNDEF_UDP_CFG_NON_BLOCKING
1121
11226. 5 TINETのライブラリ化
1123
1124 TINET のライブラリ化は、メモリ使用量を削減することを目的に実装
1125してい
1126る。このため、ライブラリ化されているのは ITRON TCP/IP API 部分のみであ
1127り、TINET のコア部分のライブラリ化は行われていない。また、コンパイル時
1128オプションにより、処理内
1129容が変わるため、ライブラリも再構築する必
1130要があ
1131る。従って、ライブラリとアプリケーションプログラムを別々
1132に構築しておき、
1133後でリンクする方法はサポートしていない。
1134 ITRON TCP/IP API 部分もライブラリ化させないためには、 アプリケーショ
1135ンの Makefile に NO_USE_TINET_LIBRARY = true を指定する。
1136
11376. 6 TCP ヘッダのトレース出力機能
1138
1139 送受信する TCP セグメントの TCP ヘッダと TCP 通信端点の情
1140報を出力す
1141る機能である。なお、 CONSOLE_PORTID で指定されるシリアルポートに直接出
1142力するので、 SYSLOG 出力が乱れることがある。受信時の出力例と意味を以下
1143に示す。
1144
1145 <I 329.599=c: 4 s:CW f:60c00:--A---- a: 74461 s: 76082 w:58400 l: 0=
1146
1147 329.599 受信した時間、1/1000 秒単位、または 1 秒単位
1148 c: 4 TCP 通信端点 ID
1149 s:CW TCP FSM 状æ…
1150‹ï¼ˆtinet/netinet/tcp_fsm.h 参ç…
1151§ï¼‰
1152 f:60c00 TCP 通信端点の状æ…
1153‹ãƒ•ãƒ©ã‚°ï¼ˆ16 進数、
1154 tinet/netinet/tcp_var.h 参ç…
1155§ï¼‰
1156 :--A---- TCP ヘッダのフラグフィールドの値(tinet/netinet/tcp.h
1157 参ç…
1158§ï¼‰
1159 a: 74461 TCP ヘッダの確認応答番号(コネクション確立時からの相
1160 対値)
1161 s: 76082 TCP ヘッダのシーケンス番号(コネクション確立時からの
1162 相対値)
1163 w:58400 TCP ヘッダのウインドサイズ
1164 l:0 受信ペイロードデータ数
1165
1166 送信時の出力例と意味を以下に示す。
1167
1168 =O 329.627=c: 4 s:CW f:60d20:--AP--- s: 74461 a: 76082 w: 2920 l:1460>
1169
1170 329.627 送信した時間、1/1000 秒単位、または 1 秒単位
1171 c: 4 TCP 通信端点 ID
1172 s:CW TCP FSM 状æ…
1173‹ï¼ˆtinet/netinet/tcp_fsm.h 参ç…
1174§ï¼‰
1175 f:60d20 TCP 通信端点の状æ…
1176‹ãƒ•ãƒ©ã‚°ï¼ˆ16 進数、
1177 tinet/netinet/tcp_var.h 参ç…
1178§ï¼‰
1179 :--AP--- TCP ヘッダのフラグフィールドの値(tinet/netinet/tcp.h
1180 参ç…
1181§ï¼‰
1182 s: 74461 TCP ヘッダのシーケンス番号(コネクション確立時からの
1183 相対値)
1184 a: 76082 TCP ヘッダの確認応答番号(コネクション確立時からの相
1185 対値)
1186 w: 2920 TCP ヘッダのウインドサイズ
1187 l:1460 送信ペイロードデータ数
1188
1189 この機能に関係するコンパイル時コンフィギュレーションパラメータを、以
1190下に示す。
1191
1192 (1) TCP_CFG_TRACE
1193 TCP ヘッダのトレース出力機能を組込む。
1194
1195 (2) TCP_CFG_TRACE_IPV4_RADDR
1196 トレース出力対象のリモートホストの IPv4 アドレスを指定する。
1197 IPV4_ADDRANY を指定すると、å…
1198¨ã¦ã®ãƒ›ã‚¹ãƒˆã‚’対象とする。
1199
1200 (3) TCP_CFG_TRACE_LPORTNO
1201 トレース出力対象のローカルホストのポート番号を指定する。
1202 TCP_PORTANY を指定すると、å…
1203¨ã¦ã®ãƒãƒ¼ãƒˆç•ªå·ã‚’対象にする。
1204
1205 (4) TCP_CFG_TRACE_RPORTNO
1206 トレース出力対象のリモートホストのポート番号を指定する。
1207 TCP_PORTANY を指定すると、å…
1208¨ã¦ã®ãƒãƒ¼ãƒˆç•ªå·ã‚’対象にする。
1209
12106. 7 IPv6におけるアドレス管理とPath MTUへの対応
1211
1212 TINET リリース 1.3 まで、IPv6 におけるアドレス管理は限定的な対応のみ
1213であり、 Path MTU にも対応していなかったが、ホスト情
1214報のキャッシュを実
1215装
1216することにより、TINET リリース 1.4 からは、ほぼ完å…
1217¨ã«å¯¾å¿œã—た。
1218 この機能に関係するコンパイル時コンフィギュレーションパラメータを、以
1219下に示す。
1220
1221 (1) NUM_IN6_IFADDR_ENTRY
1222 インタフェースのアドレスリスト(IPv6)のエントリ数である。
1223
1224 (2) NUM_ND6_DEF_RTR_ENTRY
1225 ディフォルトルータリストのエントリ数で、最大値は 16 である。0
1226 を指定するとルータ通知を受信しない。ただし、現在は、 ルータ通
1227 知の受信以外にサイトローカルアドレス等を設定する方法がない。
1228
1229 (3) NUM_ND6_PREFIX_ENTRY
1230 プレフィックスリストのエントリ数で、最大値は 16 である。
1231
1232 (4) NUM_IN6_HOSTCACHE_ENTRY
1233 IPv6 用ホスト情
1234報キャッシュのエントリ数で、 0 を指定すると
1235 IPv6 用ホスト情
1236報キャッシュを組込まない。また、この場合、Path
1237 MTU への対応も限定的になる。
1238
12396. 8 IPv6/IPv4完å…
1240¨ãƒ‡ãƒ¥ã‚¢ãƒ«ã‚¹ã‚¿ãƒƒã‚¯
1241
1242 TINET リリース 1.5 まで、 組込み可能なネットワーク層は IPv6 か IPv4
1243のいずれかであったが、 TINET リリース 1.7 からは両方を組込むことがが可
1244能になった。
1245 ネットワーク層として IPv6 を選択した場合は、 IPv6 の API における
1246IPv6 アドレスとして IPv4 射影アドレスを使用することが可能である。
1247 この機能を有効にするコンパイル時コンフィギュレーションパラメータを、
1248以下に示す。
1249 API_CFG_IP4MAPPED_ADDR
1250このコンパイル時コンフィギュレーションパラメータをしない時は、以下の示
1251す API の引数として IPv4 射影アドレスを指定すると、 戻り値として E_PAR
1252が返される。
1253
1254 [1] tcp_cre_rep
1255 [2] tcp_acp_cep
1256 [3] tcp_con_cep
1257 [4] udp_cre_cep
1258 [5] udp_snd_dat
1259
12607. TINET 独自 API
1261
12627. 1 ネットワーク統計情
1263å ±
1264
1265 送受信オクテット数、 送受信パケット数等の統計情
1266報のカウンタ
1267(net_count)が、単純変数、構造体、é…
1268åˆ—により組込まれている。
1269
1270 (1) ネットワーク統計情
1271報の有効化
1272 コンパイル時コンフィギュレーション・ファイルのいずれかで、
1273 プロトコル毎にネットワーク統計情
1274報を有効にする事が必
1275要である。
1276 有効にするためには、マクロ NET_COUNT_ENABLE に、 プロトコル識
1277 別フラグ(インクルードファイル net/net.h で定義されている)を
1278 ビット論理和により設定する。
1279
1280 (2) ネットワーク統計情
1281報の標準データ型と標準構造体
1282 いずれもインクルードファイル net/net_count.h に定義されている。
1283
1284 typedef UD T_NET_COUNT_VAL;
1285
1286 typedef struct t_net_count {
1287 T_NET_COUNT_VAL in_octets; /* 受信オクテット数 */
1288 T_NET_COUNT_VAL out_octets; /* 送信オクテット数 */
1289 T_NET_COUNT_VAL in_packets; /* 受信バケット数 */
1290 T_NET_COUNT_VAL out_packets; /* 送信バケット数 */
1291 T_NET_COUNT_VAL in_err_packets; /* 受信エラーバケット数 */
1292 T_NET_COUNT_VAL out_err_packets; /* 送信エラーバケット数 */
1293 } T_NET_COUNT;
1294
1295 (3) プロトコル毎のネットワーク統計情
1296å ±
1297 以下に、 プロトコル毎のネットワーク統計情
1298報の変数またはé…
1299åˆ—
1300 を示す。()内
1301はインクルードファイル net/net.h に定義されてい
1302 るプロトコル識別フラグである。また、é…
1303åˆ—変数の場合、 é…
1304åˆ—の内
1305
1306 容は、インクルードファイル net/net_count.h を参ç…
1307§ã™ã‚‹ã“と。
1308
1309 [1] PPP の HDLC(PROTO_FLG_PPP_HDLC)
1310 標準構造体変数で、変数名は net_count_hdlc である。
1311
1312 [2] PPP の認証プロトコル(PROTO_FLG_PPP_PAP)
1313 標準データ型変数で、 変数名は、受信オクテット数が
1314
1315 net_count_ppp_upap_in_octets
1316
1317 送信オクテット数が
1318
1319 net_count_ppp_upap_out_octets
1320
1321 [3] PPP のリンク制御プロトコル(PROTO_FLG_PPP_LCP)
1322 標準データ型変数で、変数名は、 受信オクテット数が
1323
1324 net_count_ppp_lcp_in_octets
1325
1326 送信オクテット数が
1327
1328 net_count_ppp_lcp_out_octets
1329
1330 [4] PPP の IP 依存制御プロトコル(PROTO_FLG_PPP_IPCP)
1331 標準データ型変数で、 変数名は、受信オクテット数が
1332
1333 net_count_ppp_ipcp_in_octets
1334
1335 送信オクテット数が
1336
1337 net_count_ppp_ipcp_out_octets
1338
1339 [5] PPP å…
1340¨ä½“(PROTO_FLG_PPP)
1341 PPP å…
1342¨ä½“のネットワーク統計情
1343報は、 標準構造体変数で、
1344 変数名は net_count_ppp である。 また、 PPP での net_buf
1345 の割当て失敗数は、 標準データ型変数で、 変数名は
1346 net_count_ppp_no_buf である。
1347
1348 [6] ループバックインタフェース(PROTO_FLG_LOOP)
1349 標準構造体変数で、変数名は net_count_loop である。
1350
1351 [7] イーサネットディバイスドライバ NIC(PROTO_FLG_ETHER_NIC)
1352 標準データ型é…
1353åˆ—変数で、 変数名は net_count_ether_nic
1354 である。
1355
1356 [8] (PROTO_FLG_ETHER)
1357 標準構造体変数で、変数名は net_count_ether である。
1358
1359 [9] (PROTO_FLG_ARP)
1360 標準構造体変数で、変数名は net_count_arp である。
1361
1362 [10] (PROTO_FLG_IP4)
1363 標準データ型é…
1364åˆ—変数で、変数名は net_count_ip4 である。
1365
1366 [11] (PROTO_FLG_IP6)
1367 標準データ型é…
1368åˆ—変数で、変数名は net_count_ip6 である。
1369
1370 [12] (PROTO_FLG_ICMP4)
1371 標準構造体変数で、変数名は net_count_icmp4 である。
1372
1373 [13] (PROTO_FLG_ICMP6)
1374 標準データ型é…
1375åˆ—変数で、変数名は net_count_icmp6 である。
1376
1377 [14] (PROTO_FLG_ND6)
1378 標準データ型é…
1379åˆ—変数で、変数名は net_count_nd6 である。
1380
1381 [15] (PROTO_FLG_UDP)
1382 標準構造体変数で、変数名は net_count_udp である。
1383
1384 [16] (PROTO_FLG_TCP)
1385 標準データ型é…
1386åˆ—変数で、変数名は net_count_tcp である。
1387
1388 [17] (PROTO_FLG_NET_BUF)
1389 net_buf に関しては、 特殊であるためサンプルアプリケー
1390 ション nserv で使用している netapp/dbg_cons.c の関数
1391 net_count を参ç…
1392§ã™ã‚‹ã“と。
1393
13947. 2 SNMP 用管理情
1395報ベース(MIB)
1396
1397 コンパイル時コンフィギュレーション・ファイルのいずれかで、 マクロ
1398SUPPORT_MIB を定義することにより、SNMP 用管理情
1399報ベース(MIB)に準拠し
1400たネットワーク統計の取得が可能である。ただし、TINET 自体は、管理情
1401報ベー
1402ス(MIB)に準拠したネットワーク統計を提供するだけで,SNMP をサポートし
1403ていない。また、RFC1213、RFC2465、RFC2466 に定義されているå…
1404¨ã¦ã®æƒ…
1405報が
1406取得できるわけではない。取得できる情
1407報は、関係するインクルードファイル
1408の構造体の定義を参ç…
1409§ã™ã‚‹ã“と。
1410 以下に、グループ、構造体を定義しているインクルードファイル、構造体名、
1411構造体変数名を示す。
1412
1413 (1) TCP グループ
1414
1415 インクルードファイル netinet/tcp_var.h
1416 構造体名 T_TCP_STATS
1417 変数名 tcp_stats
1418
1419 (2) UDP グループ
1420
1421 インクルードファイル netinet/udp_var.h
1422 構造体名 T_UDP_STATS
1423 変数名 udp_stats
1424
1425 (3) ICMPv4 グループ
1426
1427 インクルードファイル netinet/icmp_var.h
1428 構造体名 T_ICMP_STATS
1429 変数名 icmp_stats
1430
1431 (4) IPv4 グループ
1432
1433 インクルードファイル netinet/ip_var.h
1434 構造体名 T_IP_STATS
1435 変数名 ip_stats
1436
1437 (5) ICMPv6 グループ
1438
1439 インクルードファイル netinet/icmp6.h
1440 構造体名 T_ICMP6_IFSTAT
1441 変数名 icmp6_ifstat
1442
1443 (6) IPv6 グループ
1444
1445 インクルードファイル netinet6/ip6_var.h
1446 構造体名 T_IN6_IFSTAT
1447 変数名 in6_ifstat
1448
1449 (7) ネットワークインタフェース(イーサネット)グループ
1450
1451 インクルードファイル net/if_var.h
1452 構造体名 T_IF_STATS
1453 変数名 if_stats
1454
14557. 3 TINET 内
1456部アクセス関数、サポート関数、å…
1457¨åŸŸå¤‰æ•°ã¨ãƒžã‚¯ãƒ­
1458
1459 応用プログラムから TINET 内
1460部にアクセスするための関数、 サポート関数、
1461å…
1462¨åŸŸå¤‰æ•°ã¨ãƒžã‚¯ãƒ­ã§ã‚る。
1463
1464 (1) IPv6 アドレスをリテラル表現(文字列)に変換する関数
1465 【C 言語 API】
1466 char *p_retbuf = ipv62str (char *p_buf, const T_IN6_ADDR *p_addr);
1467
1468 【パラメータ】
1469 char buf リテラル表現のIPv6アドレスを格納するバッファ
1470 const T_IN6_ADDR addr IPv6アドレス
1471
1472 【リターンパラメータ】
1473 char retbuf リテラル表現の IPv6 アドレスが格納されたバッファ
1474
1475 【インクルードファイル】
1476 <netinet/in.h>
1477
1478 【機能】
1479 IPv6 アドレスをリテラル表現(文字列)に変換する。パラ
1480 メータ buf には、最低 46 バイトの領域が必
1481要である。また、
1482 パラメータ buf に、 NULL を指定すると、TINET 内
1483部で確保
1484 してあるバッファに IPv6 アドレスをリテラル表現に変換し
1485 て書き込み、そのアドレスを返す。 コンパイル時コンフィギュ
1486 レーションパラメータ NUM_IPADDR_STR_BUFF によりバッファ
1487 数を指定することが出来る。 ただし、バッファ数を超
1488えて連
1489 続的に呼出すとバッファを上書きする。
1490
1491 (2) 設定可能な最大 IPv6 アドレス数を返す関数
1492 【C 言語 API】
1493 u_int num = in6_get_maxnum_ifaddr (void);
1494
1495 【リターンパラメータ】
1496 u_int num 設定可能な最大IPv6アドレス数
1497
1498 【インクルードファイル】
1499 <netinet/in.h>
1500
1501 【機能】
1502 ネットワークインタフェースに設定可能な最大 IPv6 アド
1503 レス数を返す関数である。 なお、 現在設定されている IPv6
1504 アドレス数とは異なる。
1505
1506 (3) 設定されている IPv6 アドレスを返す関数
1507 【C 言語 API】
1508 const T_IN6_ADDR *p_addr = in6_get_ifaddr (int_t index);
1509
1510 【パラメータ】
1511 int_t index IPv6アドレスのインデックス値
1512
1513 【リターンパラメータ】
1514 T_IN6_ADDR addr 設定されているIPv6アドレスが格納されたバッファ
1515
1516 【インクルードファイル】
1517 <netinet/in.h>
1518
1519 【機能】
1520 ネットワークインタフェースに設定されている IPv6 アド
1521 レスを返す関数である。ただし、 未定義の場合は NULL を返
1522 す。 index には 0 ~ ( 設定可能な最大 IPv6 アドレス数
1523 -1) を指定できる。
1524
1525 (4) 設定されている IPv6 アドレスを更新する関数
1526 【C 言語 API】
1527 ER ercd = in6_upd_ifaddr (T_IN6_ADDR *p_addr,
1528 uint_t prefixlen,
1529 uint32_t vltime,
1530 uint32_t pltime);
1531
1532 【パラメータ】
1533 T_IN6_ADDR addr 更新するIPv6アドレス
1534 int_t prefixlen プレフィックス長
1535 int32_t vltime 有効時間(単位は秒)
1536 int32_t pltime 推奨有効時間(単位は秒)
1537
1538 【リターンパラメータ】
1539 ER ercd エラーコード
1540
1541 【エラーコード】
1542 E_OBJ 空きがない。
1543 E_PAR パラメータエラー(p_addrがNULL等)。
1544
1545 【インクルードファイル】
1546 <netinet/in.h>
1547
1548 【機能】
1549 ネットワークインタフェースに設定されている IPv6 アド
1550 レスのプレフィックス長、有効時間、 推奨有効時間を更新す
1551 る。 ただし、未定義の場合は追加する。
1552
1553 (5) 設定されている IPv6 アドレスを削除する関数
1554 【C 言語 API】
1555 ER ercd = in6_del_ifaddr (T_IN6_ADDR *p_addr);
1556
1557 【パラメータ】
1558 T_IN6_ADDR addr 削除するIPv6アドレス
1559
1560 【リターンパラメータ】
1561 ER ercd エラーコード
1562
1563 【エラーコード】
1564 E_PAR パラメータエラー(指定されたアドレスがない等)。
1565
1566 【インクルードファイル】
1567 <netinet/in.h>
1568
1569 【機能】
1570 ネットワークインタフェースに設定されている IPv6 アド
1571 レスを削除する。
1572
1573 (6) 設定可能な最大 IPv4 アドレス数を返す関数
1574 【C 言語 API】
1575 uint_t num = in4_get_maxnum_ifaddr (void);
1576
1577
1578 【リターンパラメータ】
1579 uint_t num 設定可能な最大IPv4アドレス数を返す関数
1580
1581 【インクルードファイル】
1582 <netinet/in.h>
1583
1584 【機能】
1585 ネットワークインタフェースに設定可能な最大 IPv4 アド
1586 レス数を返す関数である。なお、現在は常に 1 を返す。
1587
1588 (7) インタフェースに IPv4 アドレスを設定する関数
1589 【C 言語 API】
1590 ER ercd = in4_add_ifaddr (T_IN4_ADDR addr, T_IN4_ADDR mask);
1591
1592 【パラメータ】
1593 T_IN4_ADDR addr IPアドレス
1594 T_IN4_ADDR mask サブネットマスク
1595
1596 【リターンパラメータ】
1597 ER ercd エラーコード(現在は常にE_OK)
1598
1599 【エラーコード】
1600 E_OK 現在は常にE_OK
1601
1602 【インクルードファイル】
1603 <netinet/in.h>
1604
1605 【機能】
1606 インタフェースに IPv4 アドレスを設定する。
1607
1608 (8) IPv4 用静的経路表に経路情
1609報を設定する関数
1610 【C 言語 API】
1611 ER ercd = in4_add_route (int index, T_IN4_ADDR target,
1612 T_IN4_ADDR mask,
1613 T_IN4_ADDR gateway);
1614
1615 【パラメータ】
1616 int index エントリのインデックス
1617 T_IN4_ADDR target 目標ネットワークのIPアドレス
1618 T_IN4_ADDR mask 目標ネットワークのサブネットマスク
1619 T_IN4_ADDR gateway ゲートウェイのIPアドレス
1620
1621 【リターンパラメータ】
1622 ER ercd エラーコード
1623
1624 【エラーコード】
1625 E_PAR 引数indexの値が負か、コンパイル時コンフィギュレーション
1626 パラメータNUM_ROUTE_ENTRY以上のときE_PAR
1627
1628 【インクルードファイル】
1629 <netinet/in.h>
1630
1631 【機能】
1632 IPv4 用静的経路表に経路情
1633報を設定する。
1634
1635 (9) IPv4 アドレスをリテラル表現(文字列)に変換する関数
1636 【C 言語 API】
1637 char *p_retbuf = ip2str (char *p_buf, const T_IN4_ADDR *p_ipaddr);
1638
1639 【パラメータ】
1640 char buf リテラル表現のIPv4アドレスを格納するバッファ
1641 const T_IN4_ADDR ipaddr IPv4アドレス
1642
1643 【リターンパラメータ】
1644 char retbuf リテラル表現の IPv4 アドレスが格納されたバッファ
1645
1646 【インクルードファイル】
1647 <netinet/in.h>
1648
1649 【機能】
1650 IPv4 アドレスをリテラル表現(文字列)に変換する。パラ
1651 メータ buf には、最低 16 バイトの領域が必
1652要である。また、
1653 パラメータ buf に、 NULL を指定すると、TINET 内
1654部で確保
1655 してあるバッファに IPv4 アドレスをリテラル表現に変換し
1656 て書き込み、そのアドレスを返す。 コンパイル時コンフィギュ
1657 レーションパラメータ NUM_IPADDR_STR_BUFF によりバッファ
1658 数を指定することが出来る。 ただし、バッファ数を超
1659えて連
1660 続的に呼出すとバッファを上書きする。
1661
1662 (10) ITRON TCP/IP API 機能コードを文字表現に変換する関数
1663 【C 言語 API】
1664 const char *p_str = in_strtfn (FN fncd);
1665
1666 【パラメータ】
1667 FN fncd ITRON TCP/IP API 機能コード
1668
1669 【リターンパラメータ】
1670 const char str ITRON TCP/IP API 機能コードの文字表現
1671
1672 【インクルードファイル】
1673 <netinet/in.h>
1674
1675 【機能】
1676 ITRON TCP/IP API 機能コードを文字表現に変換する。
1677
1678 (11) MAC アドレスをリテラル表現(文字列)に変換する関数
1679 【C 言語 API】
1680 char *p_retbuf = mac2str (char *p_buf, uint8_t *p_macaddr);
1681
1682 【パラメータ】
1683 char buf リテラル表現のMACアドレスを格納するバッファ
1684 uint8_t macaddr MACアドレス
1685
1686 【リターンパラメータ】
1687 char retbuf リテラル表現の MAC アドレスが格納されたバッファ
1688
1689 【インクルードファイル】
1690 <sil.h> TOPPERS/ASP では必
1691要
1692 <net/net.h>
1693
1694 【機能】
1695 MAC アドレスをリテラル表現(文字列)に変換する。 パラ
1696 メータ buf には、最低 18 バイトの領域が必
1697要である。また、
1698 パラメータ buf に、NULL を指定すると、 TINET 内
1699部で確保
1700 してあるバッファに MAC アドレスをリテラル表現に変換して
1701 書き込み、 そのアドレスを返す。コンパイル時コンフィギュ
1702 レーションパラメータ NUM_MACADDR_STR_BUFF によりバッファ
1703 数を指定することが出来る。ただし、 バッファ数を超
1704えて連
1705 続的に呼出すとバッファを上書きする。
1706
1707 (12) IPv4 アドレスを IPv6 の IPv4 射影アドレスに変換する関数
1708 【C 言語 API】
1709 T_IN6_ADDR *p_dstaddr = in6_make_ipv4mapped (T_IN6_ADDR *dst,
1710 T_IN4_ADDR src);
1711
1712 【パラメータ】
1713 T_IN6_ADDR *dst 格納å…
1714ˆã®IPv6アドレス変数へのポインタ
1715 T_IN4_ADDR src 変換するIPv4アドレス
1716
1717 【リターンパラメータ】
1718 T_IN6_ADDR *p_dstaddr 格納å…
1719ˆã®IPv6アドレス変数へのポインタ
1720
1721 【インクルードファイル】
1722 <netinet/in.h>
1723
1724 【機能】
1725 IPv4 アドレスを IPv6 の IPv4 射影アドレスに変換する。
1726
1727 (13) 指定した IPv6 アドレスが IPv4 射影アドレスかを判定する関数
1728 【C 言語 API】
1729 bool_t ret = in6_is_addr_ipv4mapped (const T_IN6_ADDR *addr);
1730
1731 【パラメータ】
1732 T_IN6_ADDR *p_dstaddr 判定するIPv6アドレス変数へのポインタ
1733
1734 【リターンパラメータ】
1735 bool_t ret IPv6アドレスがIPv4射影アドレスであればtrueが返される。
1736
1737 【インクルードファイル】
1738 <netinet/in.h>
1739
1740 【機能】
1741 指定した IPv6 アドレスが IPv4 射影アドレスかを判定す
1742 る。IPv6 アドレスが IPv4 射影アドレスであれば true が返
1743 される。
1744
1745 (14) IPv6 の特殊なアドレスに対応するå…
1746¨åŸŸå¤‰æ•°
1747 【C 言語 API】
1748 const T_IN6_ADDR in6_addr_unspecified;
1749 const T_IN6_ADDR in6_addr_linklocal_allnodes;
1750 const T_IN6_ADDR in6_addr_linklocal_allrouters;
1751
1752 【機能】
1753 IPv6 では、アドレス長が 128 ビット(16 バイト)で、値
1754 をマクロで定義することができないために用意したå…
1755¨åŸŸå¤‰æ•°
1756 であり、以下のように、 メモリ操作関数を呼び出してコピーする。
1757 memcpy(&myaddr.ipaddr, &in6_addr_unspecified, sizeof(T_IN6_ADDR));
1758
1759 (15) IPv6 の IPV6_ADDRANY に対応するå…
1760¨åŸŸå¤‰æ•°
1761 【C 言語 API】
1762 const T_IN6_ADDR ipv6_addrany;
1763
1764 【機能】
1765 T_IPV6EP の ipaddr フィールドに、値 IPV4_ADDRANY を代
1766 å…
1767¥ã™ã‚‹ã¨ãã€IPv4 では、
1768 myaddr.ipaddr = IPV4_ADDRANY;
1769
1770 と指定できるが、IPv6 では、同様の指定ができないために用
1771 意したå…
1772¨åŸŸå¤‰æ•°ã§ã‚り、 以下のように、メモリ操作関数を呼
1773 び出してコピーする。
1774 memcpy(&myaddr.ipaddr, &ipv6_addrany, sizeof(T_IN6_ADDR));
1775
1776 なお、このå…
1777¨åŸŸå¤‰æ•°ã¯ãƒžã‚¯ãƒ­ã§å®šç¾©ã—ている。
1778
1779 (16) TINET のバージョン情
1780報マクロ
1781 【C 言語 API】
1782 TINET_PRVER
1783
1784 【ビットé…
1785åˆ†ã€‘
1786 ビット12~15 メジャーリリース(現在の値は1)
1787 ビット4~11 マイナーリリース(現在の値は7)
1788 ビット3~0 パッチレベル(現在の値は0)
1789
1790 【インクルードファイル】
1791 <net/net.h>
1792
1793 (17) 8 ビット毎に指定した IPv4 アドレスを 32 ビットにするマクロ
1794 【C 言語 API】
1795 T_IN4_ADDR addr = MAKE_IPV4_ADDR(uint8_t a, uint8_t b,
1796 uint8_t c, uint8_t d);
1797
1798 【パラメータ】
1799 uint8_t a IPv4アドレスのビット24~31
1800 uint8_t b IPv4アドレスのビット16~23
1801 uint8_t c IPv4アドレスのビット8~15
1802 uint8_t d IPv4アドレスのビット0~7
1803
1804 【リターンパラメータ】
1805 T_IN4_ADDR addr 32ビットのIPv4アドレス
1806
1807 【インクルードファイル】
1808 <netinet/in.h>
1809
1810 【機能】
1811 各オクテットの値から IPv4 アドレスを生成する。
1812
1813 (18) 一般定数マクロ
1814
1815 TCP_REP_NONE 該当する TCP 受付口が無い。値は(0)。
1816 TCP_CEP_NONE 該当する TCP 通信端点が無い。値は(0)。
1817 UDP_CEP_NONE 該当する UDP 通信端点が無い。値は(0)。
1818
18197. 4 応用プログラムコールバック関数
1820
1821 TINET から呼出される応用プログラムコールバック関数であり、応用プログ
1822ラム側で用意する必
1823要がある。
1824
1825 (1) IPv4 アドレス重複検出時のコールバック関数
1826 【C 言語 API】
1827 boot_t reply = arp_callback_duplicated(uint8_t *shost);
1828
1829 【パラメータ】
1830 uint8_t shost 重複相手のMACアドレス
1831
1832 【リターンパラメータ】
1833 bool_t reply 重複の通知
1834
1835 【インクルードファイル】
1836 <netinet/if_ether.h>
1837
1838 【コンパイル時コンフィギュレーションパラメータ】
1839 ARP_CFG_CALLBACK_DUPLICATED
1840
1841 【機能】
1842 戻り値に TRUE を指定すると、TINET で重複相手の MAC ア
1843 ドレスを syslog に出力し、 重複相手にも重複したことを伝
1844 える。FALSE を指定すると何もしない。
1845
18468. 謝辞
1847
1848 本 TCP/IP プロトコルスタックは、次の組織の皆様の御支援により研究・開
1849発を行いました。関係各位に感謝いたします。
1850
1851 (1) 財団法人道央産業技術振興機構様
1852
1853 [1] 事業名(実施年度)
1854 高度技術開発委託事業(平成 12 年度)
1855 [2] テーマ名
1856 組込み型制御システム用 TCP/IP プロトコルスタックの開発
1857
1858 (2) 株式会社 NTT ドコモ北海道苫小牧支店様
1859 (3) 経済産業省東北経済産業局(委託å…
1860ˆç®¡ç†æ³•äºº: 財団法人みやぎ産業
1861 振興機構)様
1862
1863 [1] 事業名(実施年度)
1864 地域新生コンソーシアム研究開発事業(平成14年度~15年度)
1865 [2] テーマ名
1866 組込みシステム・オープンプラットホームの構築とその実用化開発
1867
1868 (4) 宮城県産業技術総合センター様
1869 (5) TOPPERS プロジェクト様
1870 (6) 株式会社ヴィッツ様
1871 (7) 財団法人電気・電子情
1872報学術振興財団様
1873
1874 [1] 第 6 回 LSI IP デザイン・アワード IP 受賞
1875 (2004 年、 平成 16 年 5 月 20 日)
1876 オープンソースの組込みシステム用 TCP/IP
1877 プロトコルスタック : TINET
1878 [2] 第 7 回 LSI IP デザイン・アワード IP 受賞
1879 (2005 年、 平成 17 年 5 月 19 日)
1880 組込みシステム用 IP バージョン 6 対応 TCP/IP
1881 プロトコルスタック : TINET-1.2
1882
1883 (8) 株式会社北斗電子様
1884 (9) 有限会社品川通信計装
1885サービス様
1886 (10) 北海道立工業試験場様
1887
1888 [1] 事業名(実施年度)
1889 重点領域特別研究(平成 17 年度~ 18 年度)
1890 [2] テーマ名
1891 組込みシステム向けネットワーク接続ソフトウェア群の開発
1892
1893 (11) 総務省北海道総合通信局様
1894
1895 [1] 事業名(実施年度)
1896 戦略的情
1897報通信研究開発推進制度【SCOPE】「地域 ICT 振興
1898 型研究開発」(平成 22 年度~平成 23 年度)
1899 [2] テーマ名
1900 ユビキタスサービスプラットフォームに対応した組込みシス
1901 テム用 TCP/IP プロトコルスタックとサポートシステムの研究開発
1902
1903 (12) ルネサスエレクトロニクス株式会社様
1904
1905 (13) 経済産業省北海道経済産業局様
1906
1907 [1] 事業名(実施年度)
1908 中小企業経営支援等対策費補助金「戦略的基盤技術高度化支援事業」
1909 (平成 26 年度~平成 28 年度)
1910 [2] テーマ名
1911 農業機械のさらなる高度化と海外進出に資する
1912 次世代電子制御ソフトウェア基盤の開発
1913
19149. ライセンス
1915
1916 TINET は FreeBSD をå…
1917ƒã«é–‹ç™ºã‚’行ったため、 TINET を含むソフトウェアを、
1918他のソフトウェア開発に使用できない形で再é…
1919å¸ƒã™ã‚‹å ´åˆï¼ˆTOPPERS ライセン
1920ス (3) に規程されている形æ…
1921‹ï¼‰ã¯ã€ TOPPERS ライセンス (3) の (b) の報告
1922だけでは不十分で、(a) による方法が必
1923要である。
1924 以下に示す TOPPERS、 FreeBSD および FreeBSD へのソフトウェアの寄贈者
1925
1926のライセンス規定に従って、再é…
1927å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€…
1928マニュアルな
1929ど)に、ライセンス表示を行うと。
1930
1931(1)FreeBSD
1932
1933 /*
1934 * Copyright (c) 1980, 1986, 1993
1935 * The Regents of the University of California. All rights reserved.
1936 *
1937 * Redistribution and use in source and binary forms, with or without
1938 * modification, are permitted provided that the following conditions
1939 * are met:
1940 * 1. Redistributions of source code must retain the above copyright
1941 * notice, this list of conditions and the following disclaimer.
1942 * 2. Redistributions in binary form must reproduce the above copyright
1943 * notice, this list of conditions and the following disclaimer in the
1944 * documentation and/or other materials provided with the distribution.
1945 * 3. All advertising materials mentioning features or use of this software
1946 * must display the following acknowledgement:
1947 * This product includes software developed by the University of
1948 * California, Berkeley and its contributors.
1949 * 4. Neither the name of the University nor the names of its contributors
1950 * may be used to endorse or promote products derived from this software
1951 * without specific prior written permission.
1952 *
1953 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
1954 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
1955 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
1956 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
1957 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
1958 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
1959 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
1960 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
1961 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
1962 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
1963 * SUCH DAMAGE.
1964 */
1965
1966(2)KAME
1967
1968 /*
1969 * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
1970 * All rights reserved.
1971 *
1972 * Redistribution and use in source and binary forms, with or without
1973 * modification, are permitted provided that the following conditions
1974 * are met:
1975 * 1. Redistributions of source code must retain the above copyright
1976 * notice, this list of conditions and the following disclaimer.
1977 * 2. Redistributions in binary form must reproduce the above copyright
1978 * notice, this list of conditions and the following disclaimer in the
1979 * documentation and/or other materials provided with the distribution.
1980 * 3. Neither the name of the project nor the names of its contributors
1981 * may be used to endorse or promote products derived from this software
1982 * without specific prior written permission.
1983 *
1984 * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
1985 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
1986 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
1987 * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
1988 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
1989 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
1990 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
1991 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
1992 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
1993 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
1994 * SUCH DAMAGE.
1995 */
1996
1997(3)イーサネット・ディバイスドライバ
1998
1999 /*
2000 * Copyright (c) 1995, David Greenman
2001 * All rights reserved.
2002 *
2003 * Redistribution and use in source and binary forms, with or without
2004 * modification, are permitted provided that the following conditions
2005 * are met:
2006 * 1. Redistributions of source code must retain the above copyright
2007 * notice unmodified, this list of conditions, and the following
2008 * disclaimer.
2009 * 2. Redistributions in binary form must reproduce the above copyright
2010 * notice, this list of conditions and the following disclaimer in the
2011 * documentation and/or other materials provided with the distribution.
2012 *
2013 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
2014 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
2015 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
2016 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
2017 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
2018 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
2019 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
2020 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
2021 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
2022 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
2023 * SUCH DAMAGE.
2024 *
2025 * $FreeBSD: src/sys/i386/isa/if_ed.c,v 1.148.2.4 1999/09/25 13:08:18 nyan Exp $
2026 */
2027
2028 /*
2029 * Device driver for National Semiconductor DS8390/WD83C690 based ethernet
2030 * adapters. By David Greenman, 29-April-1993
2031 *
2032 * Currently supports the Western Digital/SMC 8003 and 8013 series,
2033 * the SMC Elite Ultra (8216), the 3Com 3c503, the NE1000 and NE2000,
2034 * and a variety of similar clones.
2035 *
2036 */
2037
2038(4)/usr/sbin/ppp
2039
2040 /*
2041 * User Process PPP
2042 *
2043 * Written by Toshiharu OHNO (tony-o@iij.ad.jp)
2044 *
2045 * Copyright (C) 1993, Internet Initiative Japan, Inc. All rights reserverd.
2046 *
2047 * Redistribution and use in source and binary forms are permitted
2048 * provided that the above copyright notice and this paragraph are
2049 * duplicated in all such forms and that any documentation,
2050 * advertising materials, and other materials related to such
2051 * distribution and use acknowledge that the software was developed
2052 * by the Internet Initiative Japan, Inc. The name of the
2053 * IIJ may not be used to endorse or promote products derived
2054 * from this software without specific prior written permission.
2055 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
2056 * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
2057 * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
2058 */
2059
2060(5)/usr/sbin/pppd
2061
2062 /*
2063 * main.c - Point-to-Point Protocol main module
2064 *
2065 * Copyright (c) 1989 Carnegie Mellon University.
2066 * All rights reserved.
2067 *
2068 * Redistribution and use in source and binary forms are permitted
2069 * provided that the above copyright notice and this paragraph are
2070 * duplicated in all such forms and that any documentation,
2071 * advertising materials, and other materials related to such
2072 * distribution and use acknowledge that the software was developed
2073 * by Carnegie Mellon University. The name of the
2074 * University may not be used to endorse or promote products derived
2075 * from this software without specific prior written permission.
2076 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
2077 * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
2078 * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
2079 */
2080
2081(6)TOPPERS/ASP
2082
2083 /*
2084 * TOPPERS/ASP Kernel
2085 * Toyohashi Open Platform for Embedded Real-Time Systems/
2086 * Advanced Standard Profile Kernel
2087 *
2088 * Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
2089 * Toyohashi Univ. of Technology, JAPAN
2090 * Copyright (C) 2004-2013 by Embedded and Real-Time Systems Laboratory
2091 * Graduate School of Information Science, Nagoya Univ., JAPAN
2092 *
2093 * 上記著作権者
2094は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
2095 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
2096 * 変・再é…
2097å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
2098 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
2099 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
2100 * スコード中に含まれていること.
2101 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
2102 * 用できる形で再é…
2103å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é…
2104å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
2105 * 者
2106マニュアルなど)に,上記の著作権表示,この利用条件および下記
2107 * の無保証規定を掲載すること.
2108 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
2109 * 用できない形で再é…
2110å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
2111 * と.
2112 * (a) 再é…
2113å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€…
2114マニュアルなど)に,上記の著
2115 * 作権表示,この利用条件および下記の無保証規定を掲載すること.
2116 * (b) 再é…
2117å¸ƒã®å½¢æ…
2118‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
2119 * 報告すること.
2120 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
2121 * 害からも,上記著作権者
2122およびTOPPERSプロジェクトをå…
2123è²¬ã™ã‚‹ã“と.
2124 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
2125 * 由に基づく請求からも,上記著作権者
2126およびTOPPERSプロジェクトを
2127 * å…
2128è²¬ã™ã‚‹ã“と.
2129 *
2130 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者
2131お
2132 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
2133 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
2134 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
2135 * の責任を負わない.
2136 *
2137 * $Id: tinet.txt 313 2017-07-23 04:50:32Z coas-nagasima $
2138 */
2139
2140(7)TOPPERS/JSP
2141
2142 /*
2143 * TOPPERS/JSP Kernel
2144 * Toyohashi Open Platform for Embedded Real-Time Systems/
2145 * Just Standard Profile Kernel
2146 *
2147 * Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
2148 * Toyohashi Univ. of Technology, JAPAN
2149 * Copyright (C) 2004 by Embedded and Real-Time Systems Laboratory
2150 * Graduate School of Information Science, Nagoya Univ., JAPAN
2151 *
2152 * 上記著作権者
2153は,以下の (1)~(4) の条件か,Free Software Foundation
2154 * によってå…
2155¬è¡¨ã•ã‚Œã¦ã„ã‚‹ GNU General Public License の Version 2 に記
2156 * 述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
2157 * を改変したものを含む.以下同じ)を使用・複製・改変・再é…
2158å¸ƒï¼ˆä»¥ä¸‹ï¼Œ
2159 * 利用と呼ぶ)することを無償で許諾する.
2160 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
2161 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
2162 * スコード中に含まれていること.
2163 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
2164 * 用できる形で再é…
2165å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é…
2166å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
2167 * 者
2168マニュアルなど)に,上記の著作権表示,この利用条件および下記
2169 * の無保証規定を掲載すること.
2170 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
2171 * 用できない形で再é…
2172å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
2173 * と.
2174 * (a) 再é…
2175å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€…
2176マニュアルなど)に,上記の著
2177 * 作権表示,この利用条件および下記の無保証規定を掲載すること.
2178 * (b) 再é…
2179å¸ƒã®å½¢æ…
2180‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
2181 * 報告すること.
2182 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
2183 * 害からも,上記著作権者
2184およびTOPPERSプロジェクトをå…
2185è²¬ã™ã‚‹ã“と.
2186 *
2187 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者
2188お
2189 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
2190 * 含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
2191 * 接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
2192 *
2193 * @(#) $Id: tinet.txt 313 2017-07-23 04:50:32Z coas-nagasima $
2194 */
2195
2196(8)TOPPERS/ASP/CFG
2197
2198 /*
2199 * TOPPERS Software
2200 * Toyohashi Open Platform for Embedded Real-Time Systems
2201 *
2202 * Copyright (C) 2007-2012 by TAKAGI Nobuhisa
2203 *
2204 * 上記著作権者
2205は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
2206 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
2207 * 変・再é…
2208å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
2209 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
2210 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
2211 * スコード中に含まれていること.
2212 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
2213 * 用できる形で再é…
2214å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é…
2215å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
2216 * 者
2217マニュアルなど)に,上記の著作権表示,この利用条件および下記
2218 * の無保証規定を掲載すること.
2219 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
2220 * 用できない形で再é…
2221å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
2222 * と.
2223 * (a) 再é…
2224å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€…
2225マニュアルなど)に,上記の著
2226 * 作権表示,この利用条件および下記の無保証規定を掲載すること.
2227 * (b) 再é…
2228å¸ƒã®å½¢æ…
2229‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
2230 * 報告すること.
2231 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
2232 * 害からも,上記著作権者
2233およびTOPPERSプロジェクトをå…
2234è²¬ã™ã‚‹ã“と.
2235 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
2236 * 由に基づく請求からも,上記著作権者
2237およびTOPPERSプロジェクトを
2238 * å…
2239è²¬ã™ã‚‹ã“と.
2240 *
2241 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者
2242お
2243 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
2244 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
2245 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
2246 * の責任を負わない.
2247 *
2248 */
2249
2250(9)TINET
2251
2252 /*
2253 * TINET (TCP/IP Protocol Stack)
2254 *
2255 * Copyright (C) 2001-2016 by Dep. of Computer Science and Engineering
2256 * Tomakomai National College of Technology, JAPAN
2257 *
2258 * 上記著作権者
2259は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
2260 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
2261 * 変・再é…
2262å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
2263 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
2264 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
2265 * スコード中に含まれていること.
2266 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
2267 * 用できる形で再é…
2268å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é…
2269å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
2270 * 者
2271マニュアルなど)に,上記の著作権表示,この利用条件および下記
2272 * の無保証規定を掲載すること.
2273 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
2274 * 用できない形で再é…
2275å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
2276 * と.
2277 * (a) 再é…
2278å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€…
2279マニュアルなど)に,上記の著
2280 * 作権表示,この利用条件および下記の無保証規定を掲載すること.
2281 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
2282 * 害からも,上記著作権者
2283およびTOPPERSプロジェクトをå…
2284è²¬ã™ã‚‹ã“と.
2285 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
2286 * 由に基づく請求からも,上記著作権者
2287およびTOPPERSプロジェクトを
2288 * å…
2289è²¬ã™ã‚‹ã“と.
2290 *
2291 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者
2292お
2293 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
2294 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
2295 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
2296 * の責任を負わない.
2297 *
2298 * @(#) $Id: tinet.txt 313 2017-07-23 04:50:32Z coas-nagasima $
2299 */
Note: See TracBrowser for help on using the repository browser.