Changeset 315 for rubycfg_asp/trunk/asp_dcre/tinet/doc/tinet.txt
- Timestamp:
- Jul 23, 2017, 2:29:40 PM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
rubycfg_asp/trunk/asp_dcre/tinet/doc/tinet.txt
-
Property svn:mime-type
changed from
text/plain
totext/plane; charset=UTF-8
r313 r315 1 TCP/IP ãããã³ã«ã¹ã¿ãã¯ï¼TINETï¼2 ã¦ã¼ã¶ãºããã¥ã¢ã«ï¼ãªãªã¼ã¹ 1.7ï¼ï¼»2017/4/5ï¼½3 4 1. TCP/IP ãããã³ã«ã¹ã¿ãã¯ï¼TINETï¼ã®æ¦è¦5 6 TINET ã¯ãTOPPERS/ASP 㨠TOPPERS/JSP ç¨ã® IPv6/IPv4 ãã¥ã¢ã«ã¹ã¿ãã¯7 ã® TCP/IP ãããã³ã«ã¹ã¿ãã¯ã§ããã 8 9 1. 1 æ©è½ä¸è¦§10 11 以ä¸ã«ãTINET ãªãªã¼ã¹ 1.7 ã®æ©è½ä¸è¦§ã示ãã1 TCP/IP プロトコルスタック(TINET) 2 ユーザズマニュアル(リリース 1.7)[2017/4/5] 3 4 1. TCP/IP プロトコルスタック(TINET)の概要 5 6 TINET は、TOPPERS/ASP と TOPPERS/JSP 用の IPv6/IPv4 デュアルスタック 7 の TCP/IP プロトコルスタックである。 8 9 1. 1 機能一覧 10 11 以下に、TINET リリース 1.7 の機能一覧を示す。 12 12 13 13 (1) API 14 14 15 ã»ITRON TCP/IP API ä»æ§ã®æ¨æºæ©è½16 ã»æ«å®ç㪠ITRON TCP/IPï¼ãã¼ã¸ã§ã³ 6ï¼API ä»æ§ã®æ¨æºæ©è½17 ã»ITRON TCP/IP API ä»æ§ã®æ¡å¼µæ©è½15 ・ITRON TCP/IP API 仕様の標準機能 16 ・暫定的な ITRON TCP/IP(バージョン 6)API 仕様の標準機能 17 ・ITRON TCP/IP API 仕様の拡張機能 18 18 19 19 (2) TCP 20 20 21 ã»BSD ã®éä¿¡æ©è½ 22 ã»æ大ã»ã°ã¡ã³ããµã¤ãºï¼MSSï¼ãªãã·ã§ã³ 23 ã»çã³ãã¼ API 24 ã»ãã³ããããã³ã°ã³ã¼ã«ï¼çµè¾¼ã¿é¸æå¯ï¼ 25 ã»ã¿ã¹ã¯ããã® Time Wait ç¶æ 26 ã® TCP é信端ç¹åé¢æ©è½ï¼çµè¾¼ã¿ 27 é¸æå¯ï¼ 28 ã»éåä¿¡ã¦ã£ã³ããããã¡ã®çã³ãã¼æ©è½ï¼çµè¾¼ã¿é¸æå¯ï¼ 29 ã»TCP ãããã®ãã¬ã¼ã¹åºåæ©è½ï¼çµè¾¼ã¿é¸æå¯ï¼ 21 ・BSD の通信機能 22 ・最大セグメントサイズ(MSS)オプション 23 ・省コピー API 24 ・ノンブロッキングコール(組込み選択可) 25 ・タスクからの Time Wait 状態の TCP 通信端点分離機能(組込み 26 選択可) 27 ・送受信ウィンドバッファの省コピー機能(組込み選択可) 28 ・TCP ヘッダのトレース出力機能(組込み選択可) 30 29 31 30 (3) UDP 32 31 33 ã»ãã³ããããã³ã°ã³ã¼ã«ï¼çµè¾¼ã¿é¸æå¯ï¼34 35 (4) è¿é£æ¢ç´¢36 37 ã»è¿é£æ¢ç´¢è¦è«ã®éåä¿¡38 ã»è¿é£æ¢ç´¢éç¥ã®éåä¿¡39 ã»ã«ã¼ã¿éç¥ã¡ãã»ã¼ã¸ã®åä¿¡40 ã»ã«ã¼ã¿è¦è«ã¡ãã»ã¼ã¸ã®éä¿¡41 ã»ã¢ãã¬ã¹éè¤æ¤åºæ©è½32 ・ノンブロッキングコール(組込み選択可) 33 34 (4) 近隣探索 35 36 ・近隣探索要請の送受信 37 ・近隣探索通知の送受信 38 ・ルータ通知メッセージの受信 39 ・ルータ要請メッセージの送信 40 ・アドレス重複検出機能 42 41 43 42 (5) ICMPv6 44 43 45 ã»ã¨ã³ã¼è¦æ±ã»å¿çã®éåä¿¡46 ã»ã¨ã©ã¼ã®éä¿¡ï¼çµè¾¼ã¿é¸æå¯ï¼47 ã»åãç´ãã¡ãã»ã¼ã¸ã®åä¿¡ï¼çµè¾¼ã¿é¸æå¯ï¼48 ã»Path MTU44 ・エコー要求・応答の送受信 45 ・エラーの送信(組込み選択可) 46 ・向け直しメッセージの受信(組込み選択可) 47 ・Path MTU 49 48 50 49 (6) ICMPv4 51 50 52 ã»ã¨ã³ã¼è¦æ±ã»å¿çã®éåä¿¡53 ã»ã¨ã©ã¼ã®éä¿¡ï¼çµè¾¼ã¿é¸æå¯ï¼54 ã»åãç´ãã¡ãã»ã¼ã¸ã®åä¿¡ï¼çµè¾¼ã¿é¸æå¯ï¼51 ・エコー要求・応答の送受信 52 ・エラーの送信(組込み選択可) 53 ・向け直しメッセージの受信(組込み選択可) 55 54 56 55 (7) IPv6 57 56 58 ã»ã¢ãã¬ã¹ã®èªåè¨å® 59 ã»éççµè·¯è¡¨ 60 ã»é PC ç³»ãã£ã¸ã¿ã«æ©å¨ã¸ã®é©ç¨ã«åãã IPv6 æå°è¦æ±ä»æ§ã® 61 IPv6 æå°ãã¹ãä»æ§ã«æºæ 62 ã»æ¡å¼µãããã®ã¨ã©ã¼ã®éç¥ 63 ã»æçãããï¼çµè¾¼ã¿é¸æå¯ï¼ 64 ã»ãã¹ãæ 65 å ±ãã£ãã·ã¥ï¼çµè¾¼ã¿é¸æå¯ï¼ 66 ã»IPv6/IPv4 å®å 67 ¨ãã¥ã¢ã«ã¹ã¿ãã¯ããªãªã¼ã¹ 1.7 æ°è¦ã 68 ã»IPv4 å°å½±ã¢ãã¬ã¹ï¼çµè¾¼ã¿é¸æå¯ï¼ããªãªã¼ã¹ 1.7 æ°è¦ã 57 ・アドレスの自動設定 58 ・静的経路表 59 ・非 PC 系ディジタル機器への適用に向けた IPv6 最小要求仕様の 60 IPv6 最小ホスト仕様に準拠 61 ・拡張ヘッダのエラーの通知 62 ・断片ヘッダ(組込み選択可) 63 ・ホスト情報キャッシュ(組込み選択可) 64 ・IPv6/IPv4 完全デュアルスタック【リリース 1.7 新規】 65 ・IPv4 射影アドレス(組込み選択可)【リリース 1.7 新規】 69 66 70 67 (8) IPv4 71 68 72 ã»éççµè·¯è¡¨ 73 ã»IP ãã¼ã¿ã°ã©ã ã®åå²ã»åæ§æï¼çµè¾¼ã¿é¸æå¯ï¼ 74 ã»IPSECï¼çµè¾¼ã¿é¸æå¯ãããã¯ã®ã¿å®è£ 75 ï¼ 76 77 (9) ãã®ä» 78 79 ã»ARP è¦æ±ã»å¿çã®éåä¿¡ 80 ã»ARP ã§ã® IPv4 ã¢ãã¬ã¹éè¤æ¤åºæ©è½ 81 ã»DHCP ã¸ã®å¯¾å¿ 82 ã»SNMP ç¨ç®¡çæ 83 å ±ãã¼ã¹ï¼MIBï¼ã®æä¾ 84 85 1. 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 110 1. 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 ãããã¯ã¼ã¯ã¤ã³ã¿ãã§ã¼ã¹ã®ãã©ã¤ã 69 ・静的経路表 70 ・IP データグラムの分割・再構成(組込み選択可) 71 ・IPSEC(組込み選択可、フックのみ実装) 72 73 (9) その他 74 75 ・ARP 要求・応答の送受信 76 ・ARP での IPv4 アドレス重複検出機能 77 ・DHCP への対応 78 ・SNMP 用管理情報ベース(MIB)の提供 79 80 1. 2 制限事項 81 82 以下に、TINET リリース 1.7 の制約事項を述べる。 83 84 (1) IPv6 では、ネットワークインタフェースはイーサネットのみ選択できる。 85 (2) IPv6 では、TCP と UDP の両方を選択するか、 どちらか一つを選択 86 しなければならない。 また、UDP のみを選択した場合は、ノンブロッ 87 キング機能を組み込む必要がある。 88 (3) ノンブロッキングコールにおいても、 通信端点の排他制御のため、 89 短時間であるがブロックすることがある。 90 (4) IPv6 に関する ITRON TCP/IP API 2.0 仕様には未対応である。 91 TINET リリース 1.2 からの暫定的な ITRON TCP/IP(バージョン 6) 92 API 仕様にのみ対応している。 93 (5) ITRON TCP/IP API 部分のライブラリ化は行われているが、ライブラ 94 リとアプリケーションプログラムを別々に構築しておき、 後でリン 95 クする方法はサポートしていない。 96 (6) 設定と読出し可能な TCP 通信端点オプションは無いため、TCP 通信 97 端点オプションの設定 API と読出し API の戻り値は E_PAR である。 98 (7) 設定と読出し可能な UDP 通信端点オプションは無いため、UDP 通信 99 端点オプションの設定 API と読出し API の戻り値は E_PAR である。 100 101 1. 3 ディレクトリ構成 102 103 TINET のディレクトリは、 TOPPERS/ASP または TOPPERS/JSP のルートディ 104 レクトリの下に置くことを想定しており、以下のディレクトリから構成されて 105 いる。 106 107 tinet TINET のルートディレクトリ 108 tinet/cfg TINET コンフィギュレータ(TOPPERS/JSP 用のみ) 109 tinet/doc ドキュメント類 110 tinet/net 汎用ネットワーク 111 tinet/netapp サンプルのネットワークプログラム 112 tinet/netdev ネットワークインタフェースのドライバ 122 113 tinet/netinet IPv4/TCP/UDP/ICMP 123 114 tinet/netinet6 IPv6/ICMPv6/NDP 124 115 125 1. 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 147 TINET ã¦ã¼ã¶ãºããã¥ã¢ã« 1. 4 ããã¥ã¡ã³ãé¡ 148 149 tinet_chg.txt å¤æ´ã¡ã¢ 150 tinet_ether.pdf TINET-1.4 ã«ãããã¤ã¼ãµãããã®å®è£ 151 ï¼PDFã®ã¿ï¼ 152 153 2. TINET ã³ã³ãã£ã®ã¥ã¬ã¼ã¿ã¨ TINET ã³ã³ãã£ã°ã¬ã¼ã·ã§ã³ãã¡ã¤ã« 116 1. 4 ドキュメント類 117 118 ドキュメント類を以下に示す。全てのファイルは PDF でも提供している。 119 120 tinet.txt ユーザズマニュアル 121 tinet_gcc.txt ユーザズマニュアル【GCC 環境】 122 tinet_cs.txt ユーザズマニュアル【CS+ 環境(参考)】 123 tinet_sample.txt サンプルアプリケーション 124 tinet_config.txt コンパイル時コンフィギュレーション 125 tinet_defs.txt プロセッサ、システム依存定義 126 127 128 129 130 131 苫小牧工業高等専門学校 - 2 - 情報工学科 132 133 134 135 136 TINET ユーザズマニュアル 1. 4 ドキュメント類 137 138 tinet_chg.txt 変更メモ 139 tinet_ether.pdf TINET-1.4 におけるイーサネットの実装(PDFのみ) 140 141 2. TINET コンフィギュレータと TINET コンフィグレーションファイル 154 142 155 143 2. 1 TOPPERS/ASP 156 144 157 TOPPERS/ASP ã§ã¯ã TOPPERS/ASP ç¨ã³ã³ãã£ã®ã¥ã¬ã¼ã¿ãæµç¨ããããã158 TINET ç¬èªã®ã³ã³ãã£ã®ã¥ã¬ã¼ã¿ã¯ãªãã159 TOPPERS/ASP ç¨ã³ã³ãã£ã®ã¥ã¬ã¼ã¿ãæµç¨ãã¦ãTINET ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§160 ã³ãã¡ã¤ã«ï¼æ¨æºã¯ tinet_$(APPLNAME).cfgï¼ãã以ä¸ã®ãã¡ã¤ã«ãçæããã 145 TOPPERS/ASP では、 TOPPERS/ASP 用コンフィギュレータを流用するため、 146 TINET 独自のコンフィギュレータはない。 147 TOPPERS/ASP 用コンフィギュレータを流用して、TINET コンフィギュレーショ 148 ンファイル(標準は tinet_$(APPLNAME).cfg)から以下のファイルを生成する。 161 149 162 150 (1) tinet_cfg.c 163 TINET ã«ã¼ãã«æ§æãã¡ã¤ã«ã§ã ã¢ããªã±ã¼ã·ã§ã³ããã°ã©ã ã 164 TINET ã¨å 165 ±ã«ã³ã³ãã¤ã«ãã¦ãªã³ã¯ããã 151 TINET カーネル構成ファイルで、 アプリケーションプログラム、 152 TINET と共にコンパイルしてリンクする。 166 153 167 154 (2) tinet_kern.cfg 168 TINET å 169 é¨ã§ä½¿ç¨ããã«ã¼ãã«ãªãã¸ã§ã¯ãã®éç API ãçæããã 170 TOPPERS/ASP ã·ã¹ãã ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ãã¡ã¤ã«ï¼æ¨æºã¯ 171 $(APPLNAME).cfgï¼ã«ã¤ã³ã¯ã«ã¼ãããã 155 TINET 内部で使用するカーネルオブジェクトの静的 API が生成され、 156 TOPPERS/ASP システムコンフィギュレーションファイル(標準は 157 $(APPLNAME).cfg)にインクルードする。 172 158 173 159 (3) tinet_cfg.h 174 TINET å 175 é¨ã§ä½¿ç¨ããã«ã¼ãã«ãªãã¸ã§ã¯ãã® ID èªåå²ä»çµæãã¡ 176 ã¤ã«ã§ããã 160 TINET 内部で使用するカーネルオブジェクトの ID 自動割付結果ファ 161 イルである。 177 162 178 163 2. 2 TOPPERS/JSP 179 164 180 TINET ã³ã³ãã£ã®ã¥ã¬ã¼ã¿ã¯ tinet/cfg/tinet_cfg (cygwin ã§ã¯ 181 tinet_cfg.exe) ã§ãããã¿ã¼ã²ããã«ã¯ä¾åãã¦ããªãã TINET ã³ã³ãã£ã° 182 ã¬ã¼ã¿ã®çæã«ã¤ãã¦ã¯ã8. TOPPERS/JSP ç°å¢ã«ãããã¤ã³ã¹ãã¼ã«ã¨ãã¡ 183 ã¤ã«ã®ä½æã»å¤æ´ ããåç 184 §ãããã¨ã 185 TOPPERS/JSP ç¨ TINET ã³ã³ãã£ã®ã¥ã¬ã¼ã¿ã¯ TINET ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ 186 ã³ãã¡ã¤ã«ï¼æ¨æºã¯ tinet_$(UNAME).cfgï¼ãã以ä¸ã®ãã¡ã¤ã«ãçæããã 165 TINET コンフィギュレータは tinet/cfg/tinet_cfg (cygwin では 166 tinet_cfg.exe) であり、ターゲットには依存していない。 TINET コンフィグ 167 レータの生成については「8. TOPPERS/JSP 環境におけるインストールとファ 168 イルの作成・変更 」を参照すること。 169 TOPPERS/JSP 用 TINET コンフィギュレータは TINET コンフィギュレーショ 170 ンファイル(標準は tinet_$(UNAME).cfg)から以下のファイルを生成する。 187 171 188 172 (1) tinet_cfg.c 189 TINET ã«ã¼ãã«æ§æãã¡ã¤ã«ã§ã ã¢ããªã±ã¼ã·ã§ã³ããã°ã©ã ã 190 TINET ã¨å 191 ±ã«ã³ã³ãã¤ã«ãã¦ãªã³ã¯ããã 173 TINET カーネル構成ファイルで、 アプリケーションプログラム、 174 TINET と共にコンパイルしてリンクする。 192 175 193 176 (2) tinet_kern.cfg 194 TINET å 195 é¨ã§ä½¿ç¨ããã«ã¼ãã«ãªãã¸ã§ã¯ãã®éç API ãçæããã 196 TOPPERS/JSP ã·ã¹ãã ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ãã¡ã¤ã«ï¼æ¨æºã¯ 197 $(UNAME).cfgï¼ã«ã¤ã³ã¯ã«ã¼ãããã 177 TINET 内部で使用するカーネルオブジェクトの静的 API が生成され、 178 TOPPERS/JSP システムコンフィギュレーションファイル(標準は 179 $(UNAME).cfg)にインクルードする。 198 180 199 181 (3) tinet_id.h 200 TINET å 201 é¨ã§ä½¿ç¨ããã«ã¼ãã«ãªãã¸ã§ã¯ãã® ID èªåå²ä»çµæãã¡ 202 ã¤ã«ã§ããã 203 204 3. ITRON TCP/IP APIä»æ§ 205 206 3. 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 ã¢ãã¬ã¹ */ 182 TINET 内部で使用するカーネルオブジェクトの ID 自動割付結果ファ 183 イルである。 184 185 3. ITRON TCP/IP API仕様 186 187 3. 1 暫定的なITRON TCP/IP(バージョン6)API仕様 188 189 IPv6 に関する ITRON TCP/IP API 2.0 仕様には未対応である。 TINET リリー 190 ス 1.2 からの暫定的な ITRON TCP/IP(バージョン 6)API 仕様にのみ対応し 191 ている。 192 193 (1) 1.5.1 データ構造/データ型 (1) IP アドレス/ポート番号を入れ 194 るデータ構造 195 196 /* IPv6 アドレス */ 217 197 struct t_in6_addr { 218 198 union { … … 224 204 225 205 typedef struct t_ipv6ep { 226 T_IN6_ADDR ipaddr; /* IPv6 ã¢ãã¬ã¹*/227 uint16_t portno; /* ãã¼ãçªå·*/206 T_IN6_ADDR ipaddr; /* IPv6 アドレス */ 207 uint16_t portno; /* ポート番号 */ 228 208 } T_IPV6EP; 229 209 230 (2) 1.5.1 ãã¼ã¿æ§é ï¼ãã¼ã¿å (2) ãªãã¸ã§ã¯ãçæç¨ã®ãã¼ã¿æ§é210 (2) 1.5.1 データ構造/データ型 (2) オブジェクト生成用のデータ構造 231 211 232 212 typedef struct t_tcp6_crep { 233 /* æ¨æº */ 234 ATR repatr; /* åä»å£å±æ§ */ 235 T_IPV6EP myaddr; /* èªåã®ã¢ãã¬ã¹ */ 236 /* å®è£ 237 ä¾å */ 213 /* 標準 */ 214 ATR repatr; /* 受付口属性 */ 215 T_IPV6EP myaddr; /* 自分のアドレス */ 216 /* 実装依存 */ 238 217 } T_TCP6_CREP; 239 218 240 (3) 1.5.1 ãã¼ã¿æ§é ï¼ãã¼ã¿å (5) ç¹æ®ãª IP ã¢ãã¬ã¹ã¨ãã¼ãçªå·219 (3) 1.5.1 データ構造/データ型 (5) 特殊な IP アドレスとポート番号 241 220 242 221 #define IPV6_ADDR_UNSPECIFIED_INIT \ … … 245 224 #define IPV6_ADDRANY IPV6_ADDR_UNSPECIFIED_INIT 246 225 247 (4) 2.2 TCP åä»å£ã®çæï¼åé¤248 ãéç APIã226 (4) 2.2 TCP 受付口の生成/削除 227 【静的 API】 249 228 TCP6_CRE_REP(ID repid, { ATR repatr, 250 229 { T_IN6_ADDR myipaddr, uint16_t myportno } } ); 251 230 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ã 231 【API の機能】 232 myipaddr の型が T_IN6_ADDR になった以外は、 ITRON 233 TCP/IP API 仕様と同じである。myipaddr には IPV6_ADDRANY 234 を指定できる。 235 236 (5) 2.4 接続/切断「接続要求待ち(受動オープン)」 237 【C 言語 API】 260 238 ER ercd = tcp6_acp_cep(ID cepid, ID repid, 261 239 T_IPV6EP *p_dstaddr, TMO tmout); 262 240 263 ãAPI ã®æ©è½ã264 p_dstaddr ã®åãã T_IPV6EP* ã«ãªã£ã以å¤ã¯ãITRON265 TCP/IP API ä»æ§ã¨åãã§ããã266 267 (6) 2.4 æ¥ç¶ï¼åæãæ¥ç¶è¦æ±ï¼è½åãªã¼ãã³ï¼ã268 ãC è¨èª APIã241 【API の機能】 242 p_dstaddr の型が、 T_IPV6EP* になった以外は、 ITRON 243 TCP/IP API 仕様と同じである。 244 245 (6) 2.4 接続/切断「接続要求(能動オープン)」 246 【C 言語 API】 269 247 ER ercd = tcp6_con_cep(ID cepid, T_IPV6EP *p_myaddr, 270 248 T_IPV6EP *p_dstaddr, TMO tmout); 271 249 272 ãæ©è½ã273 p_myaddr 㨠p_dstaddr ã®åãã T_IPV6EP* ã«ãªã£ã以å¤274 ã¯ãITRON TCP/IP API ä»æ§ã¨åãã§ããã275 276 (7) 3.2 UDP é信端ç¹ã®çæï¼åé¤277 ãéç APIã250 【機能】 251 p_myaddr と p_dstaddr の型が、 T_IPV6EP* になった以外 252 は、ITRON TCP/IP API 仕様と同じである。 253 254 (7) 3.2 UDP 通信端点の生成/削除 255 【静的 API】 278 256 UDP6_CRE_CEP(ID cepid, { ATR cepatr, 279 257 { T_IN6_ADDR myipaddr, uint16_t myportno }, 280 258 FP callback } ); 281 259 282 ãæ©è½ã283 myipaddr ã®åã T_IN6_ADDR ã«ãªã£ã以å¤ã¯ãITRON284 TCP/IP API ä»æ§ã¨åãã§ãããmyipaddr ã«ã¯IPV6_ADDRANY285 ãæå®ã§ããã286 287 (8) 3.3 ãã¼ã¿ã®éåä¿¡ããã±ããã®éä¿¡ã288 ãC è¨èª APIã260 【機能】 261 myipaddr の型が T_IN6_ADDR になった以外は、 ITRON 262 TCP/IP API 仕様と同じである。myipaddr には IPV6_ADDRANY 263 を指定できる。 264 265 (8) 3.3 データの送受信「パケットの送信」 266 【C 言語 API】 289 267 ER ercd = udp6_snd_dat(ID cepid, T_IPV6EP *p_dstaddr, 290 268 void *data, int_t len, TMO tmout); 291 269 292 ãæ©è½ã293 p_dstaddr ã®åãã T_IPV6EP* ã«ãªã£ã以å¤ã¯ãITRON294 TCP/IP API ä»æ§ã¨åãã§ããã295 296 (9) 3.4 ãã¼ã¿ã®éåä¿¡ããã±ããã®åä¿¡ã297 ãC è¨èª APIã270 【機能】 271 p_dstaddr の型が、 T_IPV6EP* になった以外は、 ITRON 272 TCP/IP API 仕様と同じである。 273 274 (9) 3.4 データの送受信「パケットの受信」 275 【C 言語 API】 298 276 ER ercd = udp6_rcv_dat(ID cepid, T_IPV6EP *p_dstaddr, 299 277 void *data, int_t len, TMO tmout); 300 278 301 ãæ©è½ã302 p_dstaddr ã®åãã T_IPV6EP* ã«ãªã£ã以å¤ã¯ãITRON303 TCP/IP API ä»æ§ã¨åãã§ããã304 305 3. 2 ãµãã¼ããããªãã¸ã§ã¯ãã®å®ç¾©306 307 ãµãã¼ããããªãã¸ã§ã¯ãã®å®ç¾©ã¯ã以ä¸ã«ç¤ºã ITRON TCP/IP API ä»æ§ã®308 éç APIã æ«å®ç㪠ITRON TCP/IPï¼ãã¼ã¸ã§ã³ 6ï¼API ä»æ§ã®éç APIã 309 TINET ç¬èªã®éç APIããã¡ã¤ã«ã®ã¤ã³ã¯ã«ã¼ãã§ããã310 311 (1) TCP åä»å£ï¼IPv4ï¼312 ãéç APIã279 【機能】 280 p_dstaddr の型が、 T_IPV6EP* になった以外は、 ITRON 281 TCP/IP API 仕様と同じである。 282 283 3. 2 サポートするオブジェクトの定義 284 285 サポートするオブジェクトの定義は、以下に示す ITRON TCP/IP API 仕様の 286 静的 API、 暫定的な ITRON TCP/IP(バージョン 6)API 仕様の静的 API、 287 TINET 独自の静的 API、ファイルのインクルードである。 288 289 (1) TCP 受付口(IPv4) 290 【静的 API】 313 291 TCP_CRE_REP(ID repid, { ATR repatr, 314 292 { uint32_t myipaddr, uint16_t myportno } } ); 315 293 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 ã«åºåãããã 294 【パラメータ】 295 パラメータについては、ITRON TCP/IP API 仕様と同じであ 296 り、実装依存の TCP 受付口属性はない。 297 【TCP 受付口数の定義】 298 TCP 受付口数を定義するプリプロセッサディレクティブで 299 あり、tinet_cfg.c に出力される。 300 #define TNUM_TCP_REPID <TCP受付口数> 301 302 【TCP 受付口 ID の最大値の変数の定義】 303 TCP 受付口 ID の最大値の変数の定義であり、tinet_cfg.c 304 に出力される。 328 305 const ID tmax_tcp_repid = 329 306 (TMIN_TCP_REPID + TNUM_TCP_REPID - 1); 330 307 331 (2) TCP é信端ç¹ï¼IPv4ï¼332 ãéç APIã308 (2) TCP 通信端点(IPv4) 309 【静的 API】 333 310 TCP_CRE_CEP(ID cepid, { ATR cepatr, void *sbuf, int_t sbufsz, 334 311 void *rbuf, int_t rbufsz, 335 312 FP callback } ); 336 313 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 ã«åºåãããã 314 【パラメータ】 315 パラメータについては、ITRON TCP/IP API 仕様と同じであ 316 り、実装依存の TCP 通信端点属性はない。 317 【TCP 通信端点数の定義】 318 TCP 通信端点数を定義するプリプロセッサディレクティブ 319 であり、tinet_cfg.c に出力される。 320 #define TNUM_TCP_CEPID <TCP通信端点数> 321 322 【TCP 通信端点 ID の最大値の変数の定義】 323 TCP 通信端点 ID の最大値の変数の定義であり、 324 tinet_cfg.c に出力される。 349 325 const ID tmax_tcp_cepid = 350 326 (TMIN_TCP_CEPID + TNUM_TCP_CEPID - 1); 351 327 352 (3) UDP é信端ç¹ï¼IPv4ï¼353 ãéç APIã328 (3) UDP 通信端点(IPv4) 329 【静的 API】 354 330 UDP_CRE_CEP(ID cepid, { ATR cepatr, 355 331 { uint32_t myipaddr, uint16_t myportno }, 356 332 FP callback } ); 357 333 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 ã«åºåãããã 334 【パラメータ】 335 パラメータについては、ITRON UDP/IP API 仕様と同じであ 336 り、実装依存の UDP 通信端点属性はない。 337 【UDP 通信端点数の定義】 338 UDP 通信端点数を定義するプリプロセッサディレクティブ 339 であり、tinet_cfg.c に出力される。 340 #define TNUM_UDP_CEPID <UDP通信端点数> 341 342 【UDP 通信端点 ID の最大値の変数の定義】 343 UDP 通信端点 ID の最大値の変数を定義であり、 344 tinet_cfg.c に出力される。 370 345 const ID tmax_udp_cepid = 371 346 (TMIN_UDP_CEPID + TNUM_UDP_CEPID - 1); 372 347 373 (4) TCP åä»å£ï¼IPv6ï¼374 ãéç APIã348 (4) TCP 受付口(IPv6) 349 【静的 API】 375 350 TCP6_CRE_REP(ID repid, { ATR repatr, 376 351 { T_IN6_ADDR myipaddr, uint16_t myportno } } ); 377 352 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 ã«åºåãããã 353 【パラメータ】 354 パラメータについては、myipaddr で指定する IP アドレス 355 は IPv6 であり、 IPv4 の IP_ADDRANY の代わりに、IPv6 で 356 は IPV6_ADDRANY を指定できる。これ以外は、 ITRON TCP/IP 357 API 仕様と同じであり、実装依存の TCP 受付口属性はない。 358 【TCP 受付口数の定義】 359 TCP 受付口数を定義するプリプロセッサディレクティブで 360 あり、tinet_cfg.c に出力される。 361 #define TNUM_TCP_REPID <TCP受付口数> 362 363 【TCP 受付口 ID の最大値の変数の定義】 364 TCP 受付口 ID の最大値の変数を定義であり、tinet_cfg.c 365 に出力される。 392 366 const ID tmax_tcp_repid = 393 367 (TMIN_TCP_REPID + TNUM_TCP_REPID - 1); 394 368 395 (5) TCP é信端ç¹ï¼IPv6ï¼396 ãéç APIã369 (5) TCP 通信端点(IPv6) 370 【静的 API】 397 371 TCP6_CRE_CEP(ID cepid, { ATR cepatr, void *sbuf, int_t sbufsz, 398 372 void *rbuf, int_t rbufsz, 399 373 FP callback } ); 400 374 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 ã«åºåãããã 375 【パラメータ】 376 パラメータについては、ITRON TCP/IP API 仕様と同じであ 377 り、実装依存の TCP 通信端点属性はない。 378 379 【TCP 通信端点数の定義】 380 TCP 通信端点数を定義するプリプロセッサディレクティブ 381 であり、tinet_cfg.c に出力される。 382 #define TNUM_TCP_CEPID <TCP通信端点数> 383 384 【TCP 通信端点 ID の最大値の変数の定義】 385 最大の TCP 通信端点 ID の最大値の変数を定義であり、 386 tinet_cfg.c に出力される。 414 387 const ID tmax_tcp_cepid = 415 388 (TMIN_TCP_CEPID + TNUM_TCP_CEPID - 1); 416 389 417 (6) UDP é信端ç¹ï¼IPv6ï¼418 ãéç APIã390 (6) UDP 通信端点(IPv6) 391 【静的 API】 419 392 UDP6_CRE_CEP(ID cepid, { ATR cepatr, 420 393 { T_IN6_ADDR myipaddr, uint16_t myportno }, 421 394 FP callback } ); 422 395 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 ã«åºåãããã 396 【パラメータ】 397 パラメータについては、myipaddr で指定する IP アドレス 398 は IPv6 であり、 IPv4 の IP_ADDRANY の代わりに、IPv6 で 399 は IPV6_ADDRANY を指定できる。これ以外は、 ITRON TCP/IP 400 API 仕様と同じであり、実装依存の TCP 受付口属性はない。 401 【UDP 通信端点数の定義】 402 UDP 通信端点数を定義するプリプロセッサディレクティブ 403 であり、tinet_cfg.c に出力される。 404 #define TNUM_UDP_CEPID <UDP通信端点数> 405 406 【UDP 通信端点 ID の最大値の変数の定義】 407 UDP 通信端点 ID の最大値の変数を定義であり、 408 tinet_cfg.c に出力される。 437 409 const ID tmax_udp_cepid = 438 410 (TMIN_UDP_CEPID + TNUM_UDP_CEPID - 1); 439 411 440 (7) TCP åä»å£ã®äºç´ IDï¼IPv4ãTINET ç¬èªï¼441 ãéç APIã412 (7) TCP 受付口の予約 ID(IPv4、TINET 独自) 413 【静的 API】 442 414 VRID_TCP_REP(ID repid); 443 415 444 ããã©ã¡ã¼ã¿ã445 ID repid äºç´ããTCPåä»å£ID446 447 (8) TCP é信端ç¹ã®äºç´ IDï¼IPv4ãTINET ç¬èªï¼448 ãéç APIã416 【パラメータ】 417 ID repid 予約するTCP受付口ID 418 419 (8) TCP 通信端点の予約 ID(IPv4、TINET 独自) 420 【静的 API】 449 421 VRID_TCP_CEP(ID cepid); 450 422 451 ããã©ã¡ã¼ã¿ã452 ID repid äºç´ããTCPé信端ç¹ID453 454 (9) UDP é信端ç¹ã®äºç´ IDï¼IPv4ãTINET ç¬èªï¼455 ãéç APIã423 【パラメータ】 424 ID repid 予約するTCP通信端点ID 425 426 (9) UDP 通信端点の予約 ID(IPv4、TINET 独自) 427 【静的 API】 456 428 VRID_UDP_CEP(ID cepid); 457 429 458 ããã©ã¡ã¼ã¿ã459 ID repid äºç´ããUDPé信端ç¹ID460 461 (10) TCP åä»å£ã®äºç´ IDï¼IPv6ãTINET ç¬èªï¼462 ãéç APIã430 【パラメータ】 431 ID repid 予約するUDP通信端点ID 432 433 (10) TCP 受付口の予約 ID(IPv6、TINET 独自) 434 【静的 API】 463 435 VRID_TCP6_REP(ID repid); 464 436 465 ããã©ã¡ã¼ã¿ã466 ID repid äºç´ããTCPåä»å£ID467 468 (11) TCP é信端ç¹ã®äºç´ IDï¼IPv6ãTINET ç¬èªï¼469 ãéç APIã437 【パラメータ】 438 ID repid 予約するTCP受付口ID 439 440 (11) TCP 通信端点の予約 ID(IPv6、TINET 独自) 441 【静的 API】 470 442 VRID_TCP6_CEP(ID cepid); 471 443 472 ããã©ã¡ã¼ã¿ã473 ID repid äºç´ããTCPé信端ç¹ID474 475 (12) UDP é信端ç¹ã®äºç´ IDï¼IPv6ãTINET ç¬èªï¼476 ãéç APIã444 【パラメータ】 445 ID repid 予約するTCP通信端点ID 446 447 (12) UDP 通信端点の予約 ID(IPv6、TINET 独自) 448 【静的 API】 477 449 VRID_UDP6_CEP(ID cepid); 478 450 479 ããã©ã¡ã¼ã¿ã480 ID repid äºç´ããUDPé信端ç¹ID481 482 4. ITRON TCP/IP API æ¡å¼µæ©è½483 484 TINET ãªãªã¼ã¹ 1.3 ã¾ã§ã¯ãITRON TCP/IP API ã®æ¨æºæ©è½ã®ã¿ã«å¯¾å¿ãã¦485 ãããã ãªãªã¼ã¹ 1.4 ããã¯ãæ¡å¼µæ©è½ã«ã対å¿ããããã ããå¿ç¨ããã° 486 ã©ã ãã使ç¨ããå ´åã¯ã以ä¸ã«ç¤ºãã³ã³ãã¤ã«æã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ã 487 ã©ã¡ã¼ã¿ãæå®ããªããã°ãªããªãã451 【パラメータ】 452 ID repid 予約するUDP通信端点ID 453 454 4. ITRON TCP/IP API 拡張機能 455 456 TINET リリース 1.3 までは、ITRON TCP/IP API の標準機能のみに対応して 457 いたが、 リリース 1.4 からは、拡張機能にも対応した。ただし、応用プログ 458 ラムから使用する場合は、以下に示すコンパイル時コンフィギュレーションパ 459 ラメータを指定しなければならない。 488 460 489 461 (1) TCP_CFG_EXTENTIONS 490 ITRON TCP/IP API ã® TCP ã®æ¡å¼µæ©è½ãæå¹ã«ããã462 ITRON TCP/IP API の TCP の拡張機能を有効にする。 491 463 492 464 (2) UDP_CFG_EXTENTIONS 493 ITRON TCP/IP API ã® UDP ã®æ¡å¼µæ©è½ãæå¹ã«ããã 494 495 4. 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 ã®æ¸å¼ã以ä¸ã«ç¤ºãã 465 ITRON TCP/IP API の UDP の拡張機能を有効にする。 466 467 4. 1 TCP の ITRON TCP/IP API 拡張機能 468 469 TCP_CFG_EXTENTIONS を指定することにより使用可能となる API を以下に示 470 す。 471 472 ・TCP 受付口の予約 ID【静的 API、VRID_TCP_REP】(IPv4、TINET 独自) 473 ・TCP 受付口の予約 ID【静的 API、VRID_TCP6_REP】(IPv6、TINET 独自) 474 ・TCP 通信端点の予約 ID【静的 API、VRID_TCP_CEP】(IPv4、TINET 独自) 475 ・TCP 通信端点の予約 ID【静的 API、 VRID_TCP6_CEP】(IPv6、TINET 独自) 476 ・TCP 受付口の生成【動的 API、tcp_cre_rep】(IPv4) 477 ・TCP 受付口の生成【動的 API、tcp6_cre_rep】(IPv6、TINET 独自) 478 ・TCP 受付口の削除【動的 API、tcp_del_rep】 479 ・TCP 通信端点の生成【動的 API、tcp_cre_cep】 480 ・TCP 通信端点の削除【動的 API、tcp_del_cep】 481 ・緊急データの送信【tcp_snd_oob】 482 ・緊急データの受信【tcp_rcv_oob】 483 ・TCP 通信端点オプションの設定【tcp_set_opt】 484 ・TCP 通信端点オプションの読出し【tcp_get_opt】 485 ・緊急データ受信【コールバック、TEV_TCP_RCV_OOB】 486 487 (1) TCP 受付口の生成と削除 488 この機能により、1 個の TCP 受付口を複数のタスクで共有するこ 489 とができる。ただし、1 回に使用できるのは 1 個のタスクに限定さ 490 れる。 以下に標準的な使用方法を述べる。 なお、 煩雑になるため 491 IPv6 に関しての説明は、一部省略している。 492 493 [1] TCP 受付口の予約 ID【静的 API、 VRID_TCP_REP、 494 VRID_TCP6_REP】により、TCP 受付口 ID を予約する。 495 496 VRID_TCP_REP の書式を以下に示す。 527 497 528 498 VRID_TCP_REP(ID repid); 529 499 530 ãã©ã¡ã¼ã¿ repid ã¯äºç´ãã TCP åä»å£ ID ã§ããã ä¸è¬531 çã«ã¯ã TINET ã³ã³ãã£ã°ã¬ã¼ã·ã§ã³ãã¡ã¤ã«ã«ä»¥ä¸ã®ãã532 ã«æå®ããã500 パラメータ repid は予約する TCP 受付口 ID であり、 一般 501 的には、 TINET コンフィグレーションファイルに以下のよう 502 に指定する。 533 503 534 504 VRID_TCP_REP (TCP_RSV_REPID1); 535 505 536 ããã«ããã TCP åä»å£ç¨ã®ã¡ã¢ãªé åã確ä¿ããã TINET 537 å 538 é¨ã§ä½¿ç¨ããã«ã¼ãã«ãªãã¸ã§ã¯ãã® ID èªåå²ä»çµæãã¡ 539 ã¤ã«ï¼TOPPERS/ASP 㯠tinet_cfg.hã TOPPERS/JSP 㯠540 tinet_id.hï¼ã«ã 対å¿ãããã¯ãå®ç¾©ã以ä¸ã®ããã«åºåãããã 506 これにより、 TCP 受付口用のメモリ領域が確保され、 TINET 507 内部で使用するカーネルオブジェクトの ID 自動割付結果ファ 508 イル(TOPPERS/ASP は tinet_cfg.h、 TOPPERS/JSP は 509 tinet_id.h)に、 対応するマクロ定義が以下のように出力される。 541 510 542 511 #define TCP_RSV_REPID1 1 543 512 544 [2] TCP åä»å£ã®çæãåç APIãtcp_cre_repãtcp6_cre_repã 545 ã«ãããTCP åä»å£ãçæããã 546 547 ã¾ããTCP åä»å£çææ 548 å ±æ§é ä½ã«æ 549 å ±ãè¨å®ãããIPv4 ã® 550 å ´åã®ä¾ã以ä¸ã«ç¤ºãã 513 [2] TCP 受付口の生成【動的 API、tcp_cre_rep、tcp6_cre_rep】 514 により、TCP 受付口を生成する。 515 516 まず、TCP 受付口生成情報構造体に情報を設定する。IPv4 の 517 場合の例を以下に示す。 551 518 552 519 T_TCP_CREP crep; … … 555 522 crep.myaddr.ipaddr = IPV4_ADDRANY; 556 523 557 ã¾ã IPv6 ã®å ´åã®ä¾ã以ä¸ã«ç¤ºãã524 また IPv6 の場合の例を以下に示す。 558 525 559 526 T_TCP6_CREP crep; … … 562 529 memcpy(&crep.myaddr.ipaddr, &ipv6_addrany, sizeof(T_IN6_ADDR)); 563 530 564 ããããã åä»ããèªåã® IP ã¢ãã¬ã¹ã¯è¦å®å¤ï¼å 565 ¨ã¦ï¼ã§ããã 566 次ã«ãtcp_cre_rep ã®æ¸å¼ã示ãã 531 いずれも、 受付ける自分の IP アドレスは規定値(全て)である。 532 次に、tcp_cre_rep の書式を示す。 567 533 568 534 ER ercd = tcp_cre_rep(ID repid, T_TCP_CREP *pk_crep); 569 535 570 ãã©ã¡ã¼ã¿ repid ã«ã¯ [1] ã§äºç´ãã TCP åä»å£ ID ãæ 571 å®ããpk_crep ã«ã¯ä¸è¨ã§è¨å®æ¸ã¿ã® TCP åä»å£çææ 572 å ±ã¸ 573 ã®ãã¤ã³ã¿ãæå®ãããä¸è¬çãªä¾ã以ä¸ã«ç¤ºãã 536 パラメータ repid には [1] で予約した TCP 受付口 ID を指 537 定し、pk_crep には上記で設定済みの TCP 受付口生成情報へ 538 のポインタを指定する。一般的な例を以下に示す。 574 539 575 540 ercd = tcp_cre_rep(TCP_RSV_REPID1, &crep); 576 541 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 ã®æ¸å¼ã示ãã 542 これにより、 VRID_TCP_REP で確保された TCP 受付口用のメ 543 モリ領域に TCP 受付口生成情報が書込まれる。 544 545 [3] 接続要求待ち(受動オープン)【tcp_acp_cep、tcp6_acp_cep】 546 により、接続要求待ち(受動オープン)する。 547 548 tcp_acp_cep の書式を示す。 587 549 588 550 ER ercd = tcp_acp_cep(ID cepid, ID repid, 589 551 T_IPV4EP *p_dstaddr, TMO tmout); 590 552 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 ã®æ¸å¼ã示ãã 553 パラメータ repid に [1] で予約した TCP 受付口 ID を指定 554 する以外は、 通常の呼び出しと同じである。 555 556 [4] TCP 受付口の削除【動的 API、tcp_del_rep】により、TCP 受 557 付口を削除する。 558 559 通常は、 接続要求待ち(受動オープン)が終了した後に、 560 TCP 受付口を削除するが、 接続要求待ち(受動オープン)中 561 に、tcp_del_cep により、 TCP 通信端点を削除することも可 562 能である。 この場合、tcp_acp_cep の戻り値には、E_DLT が 563 返される。TCP 受付口を削除すると、 他のタスクが同じ TCP 564 受付口 ID を利用できる。tcp_del_rep の書式を示す。 605 565 606 566 ER ercd = tcp_del_rep(ID cepid); 607 567 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 ã®æ¸å¼ã以ä¸ã«ç¤ºãã 568 パラメータ repid には [1] で予約した TCP 受付口 ID を指 569 定する。 570 571 (2) TCP 通信端点の生成と削除 572 この機能により、1 個の TCP 通信端点を複数のタスクで共有する 573 ことができる。ただし、1 回に使用できるのは 1 個のタスクに限定 574 される。 以下に標準的な使用方法を述べる。なお、煩雑になるため 575 IPv6 に関しての説明は、一部省略している。 576 577 [1] TCP 通信端点の予約 ID【静的 API、 VRID_TCP_CEP、 578 VRID_TCP6_CEP】により、TCP 通信端点 ID を予約する。 579 580 VRID_TCP_CEP の書式を以下に示す。 623 581 624 582 VRID_TCP_CEP(ID cepid); 625 583 626 ãã©ã¡ã¼ã¿ cepid ã¯äºç´ãã TCP éä¿¡ç«¯ç¹ ID ã§ããã ä¸627 è¬çã«ã¯ã TINET ã³ã³ãã£ã°ã¬ã¼ã·ã§ã³ãã¡ã¤ã«ã«ä»¥ä¸ã®ã628 ãã«æå®ããã584 パラメータ cepid は予約する TCP 通信端点 ID であり、 一 585 般的には、 TINET コンフィグレーションファイルに以下のよ 586 うに指定する。 629 587 630 588 VRID_TCP_CEP (TCP_RSV_CEPID1); 631 589 632 ããã«ãããTCP é信端ç¹ç¨ã®ã¡ã¢ãªé åã確ä¿ãããTINET 633 å 634 é¨ã§ä½¿ç¨ããã«ã¼ãã«ãªãã¸ã§ã¯ãã® ID èªåå²ä»çµæãã¡ 635 ã¤ã«ï¼TOPPERS/ASP 㯠tinet_cfg.hã TOPPERS/JSP 㯠636 tinet_id.hï¼ã«ã 対å¿ãããã¯ãå®ç¾©ã以ä¸ã®ããã«åºåãããã 590 これにより、TCP 通信端点用のメモリ領域が確保され、TINET 591 内部で使用するカーネルオブジェクトの ID 自動割付結果ファ 592 イル(TOPPERS/ASP は tinet_cfg.h、 TOPPERS/JSP は 593 tinet_id.h)に、 対応するマクロ定義が以下のように出力される。 637 594 638 595 #define TCP_RSV_CEPID1 1 639 596 640 [2] TCP é信端ç¹ã®çæãåç APIã tcp_cre_cepãã«ãããTCP 641 é信端ç¹ãçæããã 642 643 ã¾ããTCP é信端ç¹çææ 644 å ±æ§é ä½ã«æ 645 å ±ãè¨å®ããã ä¸è¬ 646 çãªä¾ã以ä¸ã«ç¤ºãã 597 [2] TCP 通信端点の生成【動的 API、 tcp_cre_cep】により、TCP 598 通信端点を生成する。 599 600 まず、TCP 通信端点生成情報構造体に情報を設定する。 一般 601 的な例を以下に示す。 647 602 648 603 T_TCP_CCEP ccep; … … 654 609 ccep.callback = (FP)callback_nblk_tcp_echo_srv; 655 610 656 次ã«ãtcp_cre_cep ã®æ¸å¼ã示ãã611 次に、tcp_cre_cep の書式を示す。 657 612 658 613 ER ercd = tcp_cre_cep(ID cepid, T_TCP_CCEP *pk_ccep); 659 614 660 ãã©ã¡ã¼ã¿ cepid ã«ã¯ [1] ã§äºç´ãã TCP éä¿¡ç«¯ç¹ ID ã 661 æå®ããpk_ccep ã«ã¯ä¸è¨ã§è¨å®æ¸ã¿ã® TCP é信端ç¹çææ 662 663 å ±ã¸ã®ãã¤ã³ã¿ãæå®ããã ä¸è¬çãªä¾ã以ä¸ã«ç¤ºãã 615 パラメータ cepid には [1] で予約した TCP 通信端点 ID を 616 指定し、pk_ccep には上記で設定済みの TCP 通信端点生成情 617 報へのポインタを指定する。 一般的な例を以下に示す。 664 618 665 619 ercd = tcp_cre_cep(TCP_RSV_CEPID1, &ccep); 666 620 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 ã®æ¸å¼ã示ãã 621 これにより、 VRID_TCP_CEP で確保された TCP 通信端点用の 622 メモリ領域に TCP 通信端点生成情報が書込まれる。 623 この後、TCP の各 API のパラメータ cepid に [1] で予約 624 した TCP 通信端点 ID を指定する以外は、 通常の TCP 通信 625 端点と同じように使用できる。 626 627 [3] TCP 通信端点の削除【動的 API、tcp_del_cep】により、 TCP 628 通信端点を削除する。 629 630 tcp_cls_cep を呼び出すまでは、 TCP 通信端点を削除でき 631 ないが、tcp_cls_cep の後は TCP 通信端点を削除でき、他の 632 タスクが同じ TCP 通信端点 ID を利用できる。 tcp_del_cep 633 の書式を示す。 681 634 682 635 ER ercd = tcp_del_cep(ID cepid); 683 636 684 ãã©ã¡ã¼ã¿ cepid ã«ã¯ [1] ã§äºç´ãã TCP éä¿¡ç«¯ç¹ ID ã685 æå®ããã686 687 (3) ç·æ¥ãã¼ã¿ã®éåä¿¡688 689 [1] ç·æ¥ãã¼ã¿ã®éä¿¡ãtcp_snd_oobã690 691 tcp_snd_oob ã®æ¸å¼ã以ä¸ã«ç¤ºãã637 パラメータ cepid には [1] で予約した TCP 通信端点 ID を 638 指定する。 639 640 (3) 緊急データの送受信 641 642 [1] 緊急データの送信【tcp_snd_oob】 643 644 tcp_snd_oob の書式を以下に示す。 692 645 693 646 ER_UINT ercd = tcp_snd_oob(ID cepid, void *data, int_t len, TMO tmout); 694 647 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 ã®æ¸å¼ã以ä¸ã«ç¤ºãã 648 なお、 以下に示すような制約がある。 649 650 ・緊急データだからといって、 すでに送信ウィンドバッファ 651 にある通常のデータより先に送信されるわけではない。 652 ・tcp_snd_oob で、複数バイトのデータを送信しても(len > 653 1)、受信側で受信できるのは、送信した data の最後の 1 654 バイトのみである。また、 これより前のデータは通常のデー 655 タとして受信される。 656 657 [2] 緊急データの受信【tcp_rcv_oob】 658 659 tcp_rcv_oob の書式を以下に示す。 708 660 709 661 ER_UINT ercd = tcp_rcv_oob(ID cepid, void *data, int_t len); 710 662 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] ã³ã³ãã¤ã«æã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ãã©ã¡ã¼ã¿ 663 なお、 以下に示すような制約がある。 664 665 ・緊急データ受信のコールバック関数内で呼び出すことを想 666 定している。 667 ・受信できるのは、緊急データの最後の 1 バイトのみである。 668 従って、正常に tcp_rcv_oob から戻ってきた時の戻り値は、 669 常に 1 である。 670 671 [3] 緊急データ受信【コールバック、TEV_TCP_RCV_OOB】 672 緊急データを受信した時、 TCP 通信端点に指定されている 673 コールバック関数を呼び出す。 この時の事象の種類が 674 TEV_TCP_RCV_OOB である。ただし、 TCP 通信端点にコールバッ 675 ク関数が指定されていない場合、 または、コールバック関数 676 内で tcp_rcv_oob が呼び出されなければ、受信した緊急デー 677 タは通常のデータとして受信する。 678 679 [4] コンパイル時コンフィギュレーションパラメータ 730 680 731 681 TCP_CFG_URG_OFFSET 732 682 733 ç·æ¥ãã¼ã¿ã®æå¾ã®ãã¤ãã®ãªãã»ããã å¤ã -1 ã®å ´å㯠734 BSD ã®å®è£ 735 ã¨åãã§ã ç·æ¥ãã¤ã³ã¿ã¯ãç·æ¥ãã¼ã¿ã®æå¾ã® 736 ãã¤ãã®æ¬¡ã®ãã¤ããå·®ãã å¤ã 0 ã®å ´å㯠RFC1122 ã®è¦ 737 å®ã¨åãã§ã ç·æ¥ãã¤ã³ã¿ã¯ãç·æ¥ãã¼ã¿ã®æå¾ã®ãã¤ãã 738 å·®ããæ¢å®å¤ã¯ -1 ã§ããã 739 740 (4) TCP é信端ç¹ãªãã·ã§ã³ã®è¨å®ã¨èªåºã 741 è¨å®å¯è½ãª TCP é信端ç¹ãªãã·ã§ã³ã¯ç¡ããããã©ã¡ãã®é¢æ°ã 742 æ»ãå¤ã¨ã㦠E_PAR ãè¿ãããã 743 744 4. 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 ã®æ¸å¼ã以ä¸ã«ç¤ºãã 683 緊急データの最後のバイトのオフセット、 値が -1 の場合は 684 BSD の実装と同じで、 緊急ポインタは、緊急データの最後の 685 バイトの次のバイトを差す。 値が 0 の場合は RFC1122 の規 686 定と同じで、 緊急ポインタは、緊急データの最後のバイトを 687 差す。既定値は -1 である。 688 689 (4) TCP 通信端点オプションの設定と読出し 690 設定可能な TCP 通信端点オプションは無いため、どちらの関数も 691 戻り値として E_PAR が返される。 692 693 4. 2 UDP の ITRON TCP/IP API 拡張機能 694 695 UDP_CFG_EXTENTIONS を指定することにより使用可能となる API を以下に示 696 す。 697 698 ・UDP 通信端点の予約 ID【静的 API、VRID_UDP_CEP】(IPv4、TINET 独自) 699 ・UDP 通信端点の予約 ID【静的 API、VRID_UDP6_CEP】(IPv6、TINET 独自) 700 ・UDP 通信端点の生成【動的 API、udp_cre_cep】(IPv4) 701 ・UDP 通信端点の生成【動的 API、udp6_cre_cep】(IPv6、TINET 独自) 702 ・UDP 通信端点の削除【動的 API、udp_del_cep】 703 ・UDP 通信端点オプションの設定【udp_set_opt】 704 ・UDP 通信端点オプションの読出し【udp_get_opt】 705 706 (1) UDP 通信端点の生成と削除 707 この機能により、1 個の UDP 通信端点を複数のタスクで共有する 708 ことができる。ただし、1 回に使用できるのは 1 個のタスクに限定 709 される。 以下に標準的な使用方法を述べる。なお、煩雑になるため 710 IPv6 に関しての説明は、一部省略している。 711 712 [1] UDP 通信端点の予約 ID【静的 API、 VRID_UDP_CEP、 713 VRID_UDP6_CEP】により、UDP 通信端点 ID を予約する。 714 715 VRID_UDP_CEP の書式を以下に示す。 769 716 770 717 VRID_UDP_CEP(ID cepid); 771 718 772 ãã©ã¡ã¼ã¿ cepid ã¯äºç´ãã UDP éä¿¡ç«¯ç¹ ID ã§ããã ä¸773 è¬çã«ã¯ã TINET ã³ã³ãã£ã°ã¬ã¼ã·ã§ã³ãã¡ã¤ã«ã«ä»¥ä¸ã®ã774 ãã«æå®ããã719 パラメータ cepid は予約する UDP 通信端点 ID であり、 一 720 般的には、 TINET コンフィグレーションファイルに以下のよ 721 うに指定する。 775 722 776 723 VRID_UDP_CEP (UDP_RSV_CEPID1); 777 724 778 ããã«ãããUDP é信端ç¹ç¨ã®ã¡ã¢ãªé åã確ä¿ãããTINET 779 å 780 é¨ã§ä½¿ç¨ããã«ã¼ãã«ãªãã¸ã§ã¯ãã® ID èªåå²ä»çµæãã¡ 781 ã¤ã«ï¼TOPPERS/ASP 㯠tinet_cfg.hã TOPPERS/JSP 㯠782 tinet_id.hï¼ã«ã 対å¿ãããã¯ãå®ç¾©ã以ä¸ã®ããã«åºåãããã 725 これにより、UDP 通信端点用のメモリ領域が確保され、TINET 726 内部で使用するカーネルオブジェクトの ID 自動割付結果ファ 727 イル(TOPPERS/ASP は tinet_cfg.h、 TOPPERS/JSP は 728 tinet_id.h)に、 対応するマクロ定義が以下のように出力される。 783 729 784 730 #define UDP_RSV_CEPID1 1 785 731 786 [2] UDP é信端ç¹ã®çæãåç APIã udp_cre_cepãã«ãããUDP 787 é信端ç¹ãçæããã 788 789 ã¾ããUDP é信端ç¹çææ 790 å ±æ§é ä½ã«æ 791 å ±ãè¨å®ããã éä¿¡ 792 ç¸æããã®ãã¼ã¿ã®åä¿¡ãå¾ 793 ã¤å¿ç¨ã¢ããªã±ã¼ã·ã§ã³ã§ã 794 IPv4 ã®å ´åã®ä¾ã以ä¸ã«ç¤ºãã 732 [2] UDP 通信端点の生成【動的 API、 udp_cre_cep】により、UDP 733 通信端点を生成する。 734 735 まず、UDP 通信端点生成情報構造体に情報を設定する。 通信 736 相手からのデータの受信を待つ応用アプリケーションで、 737 IPv4 の場合の例を以下に示す。 795 738 796 739 T_UDP_CCEP ccep; … … 799 742 ccep.myaddr.ipaddr = IPV4_ADDRANY; 800 743 801 ã¾ã IPv6 ã®å ´åã®ä¾ã以ä¸ã«ç¤ºãã744 また IPv6 の場合の例を以下に示す。 802 745 803 746 T_UDP_CCEP ccep; … … 806 749 memcpy(&ccep.myaddr.ipaddr, &ipv6_addrany, sizeof(T_IN6_ADDR)); 807 750 808 ããããã åä»ããèªåã® IP ã¢ãã¬ã¹ã¯è¦å®å¤ï¼å 809 ¨ã¦ï¼ã§ããã 810 次ã«ãudp_cre_cep ã®æ¸å¼ã示ãã 751 いずれも、 受付ける自分の IP アドレスは規定値(全て)である。 752 次に、udp_cre_cep の書式を示す。 811 753 812 754 ER ercd = udp_cre_cep(ID cepid, T_UDP_CCEP *pk_ccep); 813 755 814 ãã©ã¡ã¼ã¿ cepid ã«ã¯ [1] ã§äºç´ãã UDP éä¿¡ç«¯ç¹ ID ã 815 æå®ããpk_ccep ã«ã¯ä¸è¨ã§è¨å®æ¸ã¿ã® UDP é信端ç¹çææ 816 817 å ±ã¸ã®ãã¤ã³ã¿ãæå®ããã ä¸è¬çãªä¾ã以ä¸ã«ç¤ºãã 756 パラメータ cepid には [1] で予約した UDP 通信端点 ID を 757 指定し、pk_ccep には上記で設定済みの UDP 通信端点生成情 758 報へのポインタを指定する。 一般的な例を以下に示す。 818 759 819 760 ercd = udp_cre_cep(UDP_RSV_CEPID1, &ccep); 820 761 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 ã®æ¸å¼ã示ãã 762 これにより、 VRID_UDP_CEP で確保された UDP 通信端点用の 763 メモリ領域に UDP 通信端点生成情報が書込まれる。 764 この後、UDP の各 API のパラメータ cepid に [1] で予約 765 した UDP 通信端点 ID を指定する以外は、 通常の UDP 通信 766 端点と同じように使用できる。 767 768 [3] UDP 通信端点の削除【動的 API、 udp_del_cep】により、UDP 769 通信端点を削除する。 770 771 UDP 通信端点はいつでも削除でき、 他のタスクが同じ UDP 772 通信端点 ID を利用できる。 なお、udp_snd_dat で送信待ち 773 の時、または、udp_rcv_dat で受信待ちの時に、udp_del_cep 774 により、UDP 通信端点を削除すると、 それぞれの関数の戻り 775 値には、E_DLT が返される。 776 次に、udp_del_cep の書式を示す。 839 777 840 778 ER ercd = udp_del_cep(ID cepid); 841 779 842 ãã©ã¡ã¼ã¿ cepid ã«ã¯ [1] ã§äºç´ãã UDP éä¿¡ç«¯ç¹ ID ã 843 æå®ããã 844 845 (2) UDP é信端ç¹ãªãã·ã§ã³ã®è¨å®ã¨èªåºã 846 è¨å®å¯è½ãª TCP é信端ç¹ãªãã·ã§ã³ã¯ç¡ããããã©ã¡ãã®é¢æ°ã 847 æ»ãå¤ã¨ã㦠E_PAR ãè¿ãããã 848 849 5. ã«ã¼ãã£ã³ã°ã®è¨å® 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 ãã©ã¡ã¼ã¿å®ç¾©ãã¡ã¤ã«ã§å®ç¾©ããã 780 パラメータ cepid には [1] で予約した UDP 通信端点 ID を 781 指定する。 782 783 (2) UDP 通信端点オプションの設定と読出し 784 設定可能な TCP 通信端点オプションは無いため、どちらの関数も 785 戻り値として E_PAR が返される。 786 787 5. ルーティングの設定 788 789 ルーティングエントリには、静的ルーティングエントリと向け直し(ICMP) 790 によるルーティングエントリがある。 791 静的ルーティングエントリは、予め決められたルーティング情報であり、ルー 792 ティング設定ファイル route_cfg.c のルーティング表エントリ配列に設定す 793 る。なお、ディフォルトゲートウェイのみのシンプルなネットワークでは、サ 794 ンプルアプリケーション echos の route_cfg.c をそのまま流用できる。 795 向け直し(ICMP)によるルーティングエントリは、TINET コンフィギュレー 796 ション・パラメータ定義ファイルで、ルーティング表で予め確保するエントリ 797 数を定義し、 ルーティング設定ファイル route_cfg.c のルーティング表エン 798 トリ配列に、 空のエントリとして確保する。 799 800 (1) ルーティング表のエントリ数の設定 801 エントリ数の設定するマクロは、 TINET コンフィギュレーション・ 802 パラメータ定義ファイルで定義する。 868 803 869 804 [1] NUM_IN6_STATIC_ROUTE_ENTRY 870 IPv6 ç¨ã®ã«ã¼ãã£ã³ã°è¡¨ã®éçã«ã¼ãã£ã³ã°ã¨ã³ããªæ°ãæ871 å®ããã805 IPv6 用のルーティング表の静的ルーティングエントリ数を指 806 定する。 872 807 [2] NUM_IN6_REDIRECT_ROUTE_ENTRY 873 IPv6 ç¨ã®ã«ã¼ãã£ã³ã°è¡¨ã§äºã確ä¿ãããåãç´ãï¼ICMPï¼874 ã«ããã«ã¼ãã£ã³ã°ã¨ã³ããªæ°ãæå®ããã 0 ãæå®ããã¨ã875 åãç´ãï¼ICMPv6ï¼ãç¡è¦ããã808 IPv6 用のルーティング表で予め確保する、向け直し(ICMP) 809 によるルーティングエントリ数を指定する。 0 を指定すると、 810 向け直し(ICMPv6)を無視する。 876 811 [3] NUM_IN4_STATIC_ROUTE_ENTRY 877 IPv4 ç¨ã®ã«ã¼ãã£ã³ã°è¡¨ã®éçã«ã¼ãã£ã³ã°ã¨ã³ããªæ°ãæ878 å®ããã812 IPv4 用のルーティング表の静的ルーティングエントリ数を指 813 定する。 879 814 [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 ä¾ã以ä¸ã«ç¤ºãã815 IPv4 用のルーティング表で予め確保する、向け直し(ICMP) 816 によるルーティングエントリ数を指定する。 0 を指定すると、 817 向け直し(ICMP)を無視する。 818 819 (2) ルーティング表エントリ構造体(IPv6) 820 IPv6 では、#include <netinet6/in6_var.h> で定義されている。 821 各フィールドの意味を以下に示す。 822 823 T_IN6_ADDR target 目標ネットワークアドレス 824 T_IN6_ADDR gateway ゲートウェイの IP アドレス 825 uint32_t expire 有効時間が切れる時刻、0xffffffff を指定すること。 826 uint8_t flags フラグ、0x01 を指定すること。 827 uint8_t prefix_len プレフィックス長 828 829 IP アドレスは、{{{ と }}} で囲み、 1 オクテット単位で指定する。 830 例を以下に示す。 896 831 897 832 { { { 0xfe, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x41, 898 833 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } } } 899 834 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 以ä¸ã®ã¤ã³ã¯ã«ã¼ããã¡ã¤ã«ãæå®ãããã¨ã 835 (3) ルーティング表エントリ構造体(IPv4) 836 IPv4 では、#include <netinet/in_var.h> で定義されている。各 837 フィールドの意味を以下に示す。 838 839 T_IN4_ADDR targe 目標ネットワークのIPアドレス、 840 ディフォルトゲートウェイでは0を指定する。 841 T_IN4_ADDR mask 目標ネットワークのサブネットマスク、 842 ディフォルトゲートウェイでは0を指定する。 843 T_IN4_ADDR gateway ゲートウェイの IP アドレス、 844 自ネットワーク内では0を指定する。 845 846 (4) インクルードファイル 847 以下のインクルードファイルを指定すること。 914 848 915 849 [1] TOPPERS/ASP … … 930 864 #include <netinet/in_var.h> 931 865 932 (5) ã«ã¼ãã£ã³ã°è¡¨ã¨ã³ããªé 933 åï¼IPv6ï¼ 934 以ä¸ã®ããã«æå®ãããã¨ã 866 (5) ルーティング表エントリ配列(IPv6) 867 以下のように指定すること。 935 868 936 869 T_IN6_RTENTRY routing6_tbl[NUM_ROUTE_ENTRY] = { 937 < ã«ã¼ãã£ã³ã°è¡¨ã¨ã³ããªæ§é ä½1>,938 < ã«ã¼ãã£ã³ã°è¡¨ã¨ã³ããªæ§é ä½2>,870 <ルーティング表エントリ構造体 1>, 871 <ルーティング表エントリ構造体 2>, 939 872 ... 940 < ã«ã¼ãã£ã³ã°è¡¨ã¨ã³ããªæ§é ä½n>,873 <ルーティング表エントリ構造体 n>, 941 874 }; 942 875 943 (6) ã«ã¼ãã£ã³ã°è¡¨ã¨ã³ããªé 944 åï¼IPv4ï¼ 945 以ä¸ã®ããã«æå®ãããã¨ã 876 (6) ルーティング表エントリ配列(IPv4) 877 以下のように指定すること。 946 878 947 879 T_IN4_RTENTRY routing4_tbl[NUM_ROUTE_ENTRY] = { 948 < ã«ã¼ãã£ã³ã°è¡¨ã¨ã³ããªæ§é ä½1>,949 < ã«ã¼ãã£ã³ã°è¡¨ã¨ã³ããªæ§é ä½2>,880 <ルーティング表エントリ構造体 1>, 881 <ルーティング表エントリ構造体 2>, 950 882 ... 951 < ã«ã¼ãã£ã³ã°è¡¨ã¨ã³ããªæ§é ä½n>,883 <ルーティング表エントリ構造体 n>, 952 884 }; 953 885 954 (7) æ¢ç´¢é åº 955 æ¢ç´¢ã¯ãã¤ã³ããã¯ã¹ã大ããªé ãã¤ã¾ãã ã«ã¼ãã£ã³ã°è¡¨ã¨ã³ 956 ããªé 957 åã®æå¾ã® <ã«ã¼ãã£ã³ã°è¡¨ã¨ã³ããªæ§é ä½ n> ããã æå 958 ã® <ã«ã¼ãã£ã³ã°è¡¨ã¨ã³ããªæ§é ä½ 1> ã«åã£ã¦è¡ãããã 959 960 6. TINET ç¬èªæ©è½ 961 962 6. 1 ã¿ã¹ã¯ããã® Time Wait ç¶æ 963 ã® TCP é信端ç¹åé¢æ©è½ 964 965 TCP é信端ç¹ã¯ãã½ã±ããã¤ã³ã¿ãã§ã¼ã¹ã«ããããã¡ã¤ã«ãã£ã¹ã¯ãªãã¿ 966 ã¨ç°ãªãã TCP ã®æ¥ç¶ç¶æ 967 ãå®å 968 ¨ã«çµäºããã¾ã§åå©ç¨å¯è½ã¨ã¯ãªããªãã 969 TCP/IP ãããã³ã«ã®ä»æ§ã«å¾ãã¨ã æ¥ç¶ç¶æ 970 ãå®å 971 ¨ã«çµäºããã¾ã§æ°åãã 972 ãå ´åããããåé¡ã«ãªãã®ã¯ãå 973 ã«ãTCP é信端ç¹ã®ã³ãã¯ã·ã§ã³åæ API 974 ã® tcp_sht_cep ãå¼åºãã ã³ãã¯ã·ã§ã³ãåæããå ´åã§ããã ãã®æã 975 tcp_sht_cep ã§æå®ããã TCP é信端ç¹ã¯ãæçµçã« Time Wait ç¶æ 976 ã«ãªãã 977 TCP é信端ç¹ã®ã¯ãã¼ãº API ã® tcp_cls_cep ãå¼åºããã¿ã¹ã¯ããã¿ã¤ã 㢠978 ã¦ãå¾ 979 ã¡ç¶æ 980 ã«ãªããå¾ã£ã¦ããµã¼ãå´ããåæããå¿ç¨ããã°ã©ã ï¼WWW 㪠981 ã©ï¼ã®ã¿ã¹ã¯ã§ã¯ãã¿ã¤ã ã¢ã¦ãããã¾ã§ã次ã®æ¥ç¶è¦æ±ãåä¿¡ãããã¨ã㧠982 ããªãã 983 ããã«å¯¾å¿ããããã TINET ã¯ãçµäºå¾ 984 ã¡ã® TCP é信端ç¹ãã¿ã¹ã¯ããå 985 ãé¢ããã¨ã«ãããã¿ã¹ã¯ãå¾ 986 ã¡ç¶æ 987 ã«ãªããªãããã«ããæ©è½ãæã£ã¦ããã 988 æå¹ã«ããããã«ã¯ã ã³ã³ãã¤ã«æã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ãã©ã¡ã¼ã¿ 989 NUM_TCP_TW_CEP_ENTRY ã tinet_app_config.h çã«æå®ãã 確ä¿ãã TW ç¨ 990 TCP é信端ç¹ã®æ°ï¼1 以ä¸ã®å¤ï¼ãå®ç¾©ããã 991 TCP é信端ç¹ã Time Wait ã«ãªãã¨ãTCP é信端ç¹ããã Time Wait ã«å¿ 992 993 è¦ãªé信管çãã¼ã¿ã TW ç¨ TCP é信端ç¹ã«ã³ãã¼ããå 994 ã® TCP é信端ç¹ã 995 éæ¾ããã ããã«ä¼´ã£ã¦ã ã¿ã¹ã¯ãå¾ 996 ã¡ç¶æ 997 ããéæ¾ãããã ã¾ããTW ç¨ 998 TCP é信端ç¹ã«ã¯ Time Wait ã«å¿ 999 è¦ãªé信管çãã¼ã¿ã®ã¿ãã³ãã¼ããã㨠1000 ã§ãã¡ã¢ãªã®æ¶è²»ãæãã¦ããã 1001 ãã ãããã®æ©è½ãæå¹ã«ãã¦ãã¦ããã³ãã¯ã·ã§ã³ã®åæåæã®ã¿ã¤ãã³ 1002 ã°ã«ãã£ã¦ã¯ãåé¢ãããªãå ´åãããã 1003 1004 6. 2 åä¿¡ã¦ã£ã³ããããã¡ã®çã³ãã¼æ©è½ 1005 1006 ITRON TCP/IP API ä»æ§ã§ã¯ãTCP é信端ç¹ãçæããéç API ã§ãå信㦠1007 ã¤ã³ããããã¡ã®å 1008 é ã¢ãã¬ã¹ã®æå®ã«ã NADR ãæå®ããã¨ããããã³ã«ã¹ 1009 ã¿ãã¯ã§ã åä¿¡ã¦ã¤ã³ããããã¡ã確ä¿ãããã¨ã«ãªã£ã¦ããã 1010 TINET ã§ã¯ããããã¯ã¼ã¯ãããã¡ããåä¿¡ã¦ã¤ã³ããããã¡ã¨ãããã¨ã§ã 1011 NADR ã®æå®ã«å¯¾å¿ãã¦ããã ããã«ããããã¯ã¼ã¯ã¤ã³ã¿ãã§ã¼ã¹ã§åä¿¡ã 1012 ããããã«ã³ãã¼ã¿ãä¿æãããããã¯ã¼ã¯ãããã¡ãããã®ã¾ã¾åä¿¡ã¦ã¤ã³ 1013 ããããã¡ã¨ãããã¨ã§ããããã¯ã¼ã¯ã¤ã³ã¿ãã§ã¼ã¹ã¨ãTINET å 1014 é¨ã§ããã¼ 1015 ã¿ã®ã³ãã¼ãçãã¦ãããç¹ã«ã çã³ãã¼ API ã使ç¨ãããã¨ã«ããã API 1016 ã«ããããã¼ã¿ã®ã³ãã¼ãè¡ããªããã¨ãå¯è½ã§ããã 1017 ãã®æ©è½ã«é¢ä¿ããã³ã³ãã¤ã«æã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ãã©ã¡ã¼ã¿ãã以 1018 ä¸ã«ç¤ºãã 886 (7) 探索順序 887 探索は、インデックスが大きな順、つまり、 ルーティング表エン 888 トリ配列の最後の <ルーティング表エントリ構造体 n> から、 最初 889 の <ルーティング表エントリ構造体 1> に向って行われる。 890 891 6. TINET 独自機能 892 893 6. 1 タスクからの Time Wait 状態の TCP 通信端点分離機能 894 895 TCP 通信端点は、ソケットインタフェースにおけるファイルディスクリプタ 896 と異なり、 TCP の接続状態が完全に終了するまで再利用可能とはならない。 897 TCP/IP プロトコルの仕様に従うと、 接続状態が完全に終了するまで数分かか 898 る場合がある。問題になるのは、先に、TCP 通信端点のコネクション切断 API 899 の tcp_sht_cep を呼出し、 コネクションを切断する場合である。 この時、 900 tcp_sht_cep で指定された TCP 通信端点は、最終的に Time Wait 状態になり、 901 TCP 通信端点のクローズ API の tcp_cls_cep を呼出したタスクも、タイムア 902 ウト待ち状態になる。従って、サーバ側から切断する応用プログラム(WWW な 903 ど)のタスクでは、タイムアウトするまで、次の接続要求を受信することがで 904 きない。 905 これに対応するため、 TINET は、終了待ちの TCP 通信端点をタスクから切 906 り離すことにより、タスクが待ち状態にならないようにする機能を持っており、 907 有効にするためには、 コンパイル時コンフィギュレーションパラメータ 908 NUM_TCP_TW_CEP_ENTRY を tinet_app_config.h 等に指定し、 確保する TW 用 909 TCP 通信端点の数(1 以上の値)を定義する。 910 TCP 通信端点が Time Wait になると、TCP 通信端点から、 Time Wait に必 911 要な通信管理データを TW 用 TCP 通信端点にコピーし、元の TCP 通信端点を 912 開放する。 これに伴って、 タスクも待ち状態から開放される。 また、TW 用 913 TCP 通信端点には Time Wait に必要な通信管理データのみをコピーすること 914 で、メモリの消費を抑えている。 915 ただし、この機能を有効にしていても、コネクションの同時切断のタイミン 916 グによっては、分離されない場合がある。 917 918 6. 2 受信ウィンドバッファの省コピー機能 919 920 ITRON TCP/IP API 仕様では、TCP 通信端点を生成する静的 API で、受信ウ 921 インドバッファの先頭アドレスの指定に、 NADR を指定すると、プロトコルス 922 タックで、 受信ウインドバッファを確保することになっている。 923 TINET では、ネットワークバッファを、受信ウインドバッファとすることで、 924 NADR の指定に対応している。 さらに、ネットワークインタフェースで受信し 925 たプロトルコデータを保持するネットワークバッファを、そのまま受信ウイン 926 ドバッファとすることで、ネットワークインタフェースと、TINET 内部で、デー 927 タのコピーを省いている。特に、 省コピー API を使用することにより、 API 928 におけるデータのコピーも行わないことも可能である。 929 この機能に関係するコンパイル時コンフィギュレーションパラメータを、以 930 下に示す。 1019 931 1020 932 (1) TCP_CFG_RWBUF_CSAVE_ONLY 1021 TCP é信端ç¹ã®åä¿¡ã¦ã£ã³ããããã¡ã®çã³ãã¼æ©è½ãçµè¾¼ã¿ã ã 1022 ã®æ©è½ã®ã¿ä½¿ç¨ãããTCP é信端ç¹ãçæããéç API ã§ãå信㦠1023 ã¤ã³ããããã¡ã®å 1024 é ã¢ãã¬ã¹ã®æå®ã«ã å¿ç¨ããã°ã©ã ãç¨æã 1025 ããããã¡ãæå®ãã¦ãç¡è¦ããã 933 TCP 通信端点の受信ウィンドバッファの省コピー機能を組込み、 こ 934 の機能のみ使用する。TCP 通信端点を生成する静的 API で、受信ウ 935 インドバッファの先頭アドレスの指定に、 応用プログラムが用意し 936 たバッファを指定しても無視する。 1026 937 1027 938 (2) TCP_CFG_RWBUF_CSAVE 1028 TCP é信端ç¹ã®åä¿¡ã¦ã£ã³ããããã¡ã®çã³ãã¼æ©è½ãçµè¾¼ããTCP 1029 é信端ç¹ãçæããéç API ã§ãåä¿¡ã¦ã¤ã³ããããã¡ã®å 1030 é ã¢ã 1031 ã¬ã¹ã®æå®ã«ãNADR ãæå®ããå ´åã¯ãåä¿¡ã¦ã£ã³ããããã¡ã®ç 1032 ã³ãã¼æ©è½ã使ç¨ãããã å¿ç¨ããã°ã©ã ãç¨æãããããã¡ãæ 1033 å®ããå ´åã¯ã åä¿¡ã¦ã£ã³ããããã¡ã®çã³ãã¼æ©è½ã使ç¨ããªãã 939 TCP 通信端点の受信ウィンドバッファの省コピー機能を組込む。TCP 940 通信端点を生成する静的 API で、受信ウインドバッファの先頭アド 941 レスの指定に、NADR を指定した場合は、受信ウィンドバッファの省 942 コピー機能を使用するが、 応用プログラムが用意したバッファを指 943 定した場合は、 受信ウィンドバッファの省コピー機能を使用しない。 1034 944 1035 945 (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 1046 6. 3 éä¿¡ã¦ã£ã³ããããã¡ã®çã³ãã¼æ©è½ 1047 1048 ITRON TCP/IP API ä»æ§ã§ã¯ãTCP é信端ç¹ãçæããéç API ã§ãå信㦠1049 ã¤ã³ããããã¡ã¨åæ§ã«ã éä¿¡ã¦ã¤ã³ããããã¡ã®å 1050 é ã¢ãã¬ã¹ã®æå®ã«ã 1051 NADR ãæå®ããã¨ã ãããã³ã«ã¹ã¿ãã¯ã§ãéä¿¡ã¦ã¤ã³ããããã¡ã確ä¿ã 1052 ããã¨ã«ãªã£ã¦ããã 1053 TINET ã§ã¯ããããã¯ã¼ã¯ãããã¡ããéä¿¡ã¦ã¤ã³ããããã¡ã¨ãããã¨ã§ã 1054 NADR ã®æå®ã«å¯¾å¿ãã¦ãããããã«ã æ¸è¾¼ã¾ãããã¼ã¿ã®åã«å¿ 1055 è¦ãªããã 1056 ãä»å ãã¦ããã®ã¾ã¾ãããã¯ã¼ã¯ã¤ã³ã¿ãã§ã¼ã¹ã«æ¸¡ããã¨ã«ãããããã 1057 ã¯ã¼ã¯ã¤ã³ã¿ãã§ã¼ã¹ã¨ãTINET å 1058 é¨ã§ããã¼ã¿ã®ã³ãã¼ãçãã¦ãããç¹ã«ã 1059 çã³ãã¼ API ã使ç¨ãããã¨ã§ã API ã«ããããã¼ã¿ã®ã³ãã¼ãè¡ããªãã 1060 ã¨ãå¯è½ã§ããã 1061 ãã ãã ã¤ã¼ãµãããåºåæã«ã NIC ã§ãããã¯ã¼ã¯ãããã¡ãéæ¾ãã 1062 ï¼ã³ã³ãã¤ã«æã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ãã©ã¡ã¼ã¿ 1063 ETHER_NIC_CFG_RELEASE_NET_BUF ããæå®ããå¿ 1064 è¦ãããï¼ãã£ãã¤ã¹ãã©ã¤ 1065 ãã§ã¯ã ãã®éä¿¡ã¦ã£ã³ããããã¡ã®çã³ãã¼æ©è½ãå©ç¨ãããã¨ã¯ã§ããªãã 1066 ãã®æ©è½ã«é¢ä¿ããã³ã³ãã¤ã«æã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ãã©ã¡ã¼ã¿ãã以 1067 ä¸ã«ç¤ºãã 946 TCP 通信端点の受信ウィンドバッファの省コピー機能の、 受信ウィ 947 ンドバッファキューの最大エントリ数である。 ただし、正常に受信 948 したセグメントも破棄するため、再送回数が増加する。また、 指定 949 しないと制限しない。 950 951 なお、TCP_CFG_RWBUF_CSAVE_ONLY と TCP_CFG_RWBUF_CSAVE の、いずれも指定 952 しない場合は、 TCP 通信端点を生成する静的 API で、受信ウインドバッファ 953 の先頭アドレスの指定に、NADR を指定することができない。 954 955 6. 3 送信ウィンドバッファの省コピー機能 956 957 ITRON TCP/IP API 仕様では、TCP 通信端点を生成する静的 API で、受信ウ 958 インドバッファと同様に、 送信ウインドバッファの先頭アドレスの指定に、 959 NADR を指定すると、 プロトコルスタックで、送信ウインドバッファを確保す 960 ることになっている。 961 TINET では、ネットワークバッファを、送信ウインドバッファとすることで、 962 NADR の指定に対応している。さらに、 書込まれたデータの前に必要なヘッダ 963 を付加して、そのままネットワークインタフェースに渡すことにより、ネット 964 ワークインタフェースと、TINET 内部で、データのコピーを省いている。特に、 965 省コピー API を使用することで、 API におけるデータのコピーも行わないこ 966 とも可能である。 967 ただし、 イーサネット出力時に、 NIC でネットワークバッファを開放する 968 (コンパイル時コンフィギュレーションパラメータ 969 ETHER_NIC_CFG_RELEASE_NET_BUF を、指定する必要がある)ディバイスドライ 970 バでは、 この送信ウィンドバッファの省コピー機能を利用することはできない。 971 この機能に関係するコンパイル時コンフィギュレーションパラメータを、以 972 下に示す。 1068 973 1069 974 (1) TCP_CFG_SWBUF_CSAVE_ONLY 1070 TCP é信端ç¹ã®éä¿¡ã¦ã£ã³ããããã¡ã®çã³ãã¼æ©è½ãçµè¾¼ã¿ã ã 1071 ã®æ©è½ã®ã¿ä½¿ç¨ãããTCP é信端ç¹ãçæããéç API ã§ãé信㦠1072 ã¤ã³ããããã¡ã®å 1073 é ã¢ãã¬ã¹ã®æå®ã«ã å¿ç¨ããã°ã©ã ãç¨æã 1074 ããããã¡ãæå®ãã¦ãç¡è¦ããã 975 TCP 通信端点の送信ウィンドバッファの省コピー機能を組込み、 こ 976 の機能のみ使用する。TCP 通信端点を生成する静的 API で、送信ウ 977 インドバッファの先頭アドレスの指定に、 応用プログラムが用意し 978 たバッファを指定しても無視する。 1075 979 1076 980 (2) TCP_CFG_SWBUF_CSAVE 1077 TCP é信端ç¹ã®éä¿¡ã¦ã£ã³ããããã¡ã®çã³ãã¼æ©è½ãçµè¾¼ããTCP 1078 é信端ç¹ãçæããéç API ã§ãéä¿¡ã¦ã¤ã³ããããã¡ã®å 1079 é ã¢ã 1080 ã¬ã¹ã®æå®ã«ãNADR ãæå®ããå ´åã¯ãéä¿¡ã¦ã£ã³ããããã¡ã®ç 1081 ã³ãã¼æ©è½ã使ç¨ãããã å¿ç¨ããã°ã©ã ãç¨æãããããã¡ãæ 1082 å®ããå ´åã¯ã éä¿¡ã¦ã£ã³ããããã¡ã®çã³ãã¼æ©è½ã使ç¨ããªãã 981 TCP 通信端点の送信ウィンドバッファの省コピー機能を組込む。TCP 982 通信端点を生成する静的 API で、送信ウインドバッファの先頭アド 983 レスの指定に、NADR を指定した場合は、送信ウィンドバッファの省 984 コピー機能を使用するが、 応用プログラムが用意したバッファを指 985 定した場合は、 送信ウィンドバッファの省コピー機能を使用しない。 1083 986 1084 987 (3) TCP_CFG_SWBUF_CSAVE_MAX_SIZE 1085 TCP é信端ç¹ã®éä¿¡ã¦ã£ã³ããããã¡ã®çã³ãã¼æ©è½ã§ã éä¿¡ã¦ã£1086 ã³ããããã¡ã«ä½¿ç¨ãããããã¯ã¼ã¯ãããã¡ã®æ大ãµã¤ãºã§ããã1087 æ¨æºå¤ã¯ IF_PDU_SIZE ã§ããã988 TCP 通信端点の送信ウィンドバッファの省コピー機能で、 送信ウィ 989 ンドバッファに使用するネットワークバッファの最大サイズであり、 990 標準値は IF_PDU_SIZE である。 1088 991 1089 992 (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 1099 6. 4 ãã³ããããã³ã°ã³ã¼ã«ã®ç¡å¹å 1100 1101 å¿ç¨ããã¯ã©ã ã§ã ãã³ããããã³ã°ã³ã¼ã«ã使ç¨ããªãå ´åã¯ã TCP 㨠1102 UDP ã®ãã³ããããã³ã°ã³ã¼ã«æ©è½ãçµè¾¼ã¾ãªãã§ãã¡ã¢ãªãç¯ç´ãããã¨ã 1103 ã§ããã 1104 ãã®æ©è½ã«é¢ä¿ããã³ã³ãã¤ã«æã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ãã©ã¡ã¼ã¿ãã以 1105 ä¸ã«ç¤ºãã 993 TCP 通信端点の送信ウィンドバッファの省コピー機能で、 送信ウィ 994 ンドバッファに使用するネットワークバッファの最小サイズであり、 995 標準値は 0 である。 996 997 なお、TCP_CFG_SWBUF_CSAVE_ONLY と TCP_CFG_SWBUF_CSAVE の、いずれも指定 998 しない場合は、TCP 通信端点を生成する静的 API で、 送信ウインドバッファ 999 の先頭アドレスの指定に、NADR を指定することができない。 1000 1001 6. 4 ノンブロッキングコールの無効化 1002 1003 応用プロクラムで、 ノンブロッキングコールを使用しない場合は、 TCP と 1004 UDP のノンブロッキングコール機能を組込まないで、メモリを節約することが 1005 できる。 1006 この機能に関係するコンパイル時コンフィギュレーションパラメータを、以 1007 下に示す。 1106 1008 1107 1009 (1) TCP_CFG_NON_BLOCKING 1108 TCP ã®ãã³ããããã³ã°ã³ã¼ã«æ©è½ãçµè¾¼ãã1010 TCP のノンブロッキングコール機能を組込む。 1109 1011 1110 1012 (2) UDP_CFG_NON_BLOCKING 1111 UDP ã®ãã³ããããã³ã°ã³ã¼ã«æ©è½ãçµè¾¼ãã1112 1113 ãã ãã éå»ã®ãªãªã¼ã¹ã¨ã®äºææ§ã®ããã ã©ã¡ãã®ãã©ã¡ã¼ã¿ãã 1114 tinet/tinet_config.h ã«æå®ããã¦ããã æ¢å®ã§ã¯ããã³ããããã³ã°ã³ã¼1115 ã«æ©è½ãçµè¾¼ã¾ããããã«ãªã£ã¦ããã ãªãã ãµã³ãã«ã¢ããªã±ã¼ã·ã§ã³ã® 1116 tinet_app_config.h ã«ã¯ã æå®ã解é¤ãããã¯ããå®ç¾©ããã¦ãããçµè¾¼ã¾1117 ãªãå ´åã¯ã以ä¸ã®ãã¯ãã Makefile ã«å®ç¾©ããã 1013 UDP のノンブロッキングコール機能を組込む。 1014 1015 ただし、 過去のリリースとの互換性のため、 どちらのパラメータも、 1016 tinet/tinet_config.h に指定されており、 既定では、ノンブロッキングコー 1017 ル機能が組込まれるようになっている。 なお、 サンプルアプリケーションの 1018 tinet_app_config.h には、 指定を解除するマクロが定義されている。組込ま 1019 ない場合は、以下のマクロを Makefile に定義する。 1118 1020 1119 1021 UNDEF_TCP_CFG_NON_BLOCKING 1120 1022 UNDEF_UDP_CFG_NON_BLOCKING 1121 1023 1122 6. 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 1137 6. 6 TCP ãããã®ãã¬ã¼ã¹åºåæ©è½ 1138 1139 éåä¿¡ãã TCP ã»ã°ã¡ã³ãã® TCP ããã㨠TCP é信端ç¹ã®æ 1140 å ±ãåºåã 1141 ãæ©è½ã§ããããªãã CONSOLE_PORTID ã§æå®ãããã·ãªã¢ã«ãã¼ãã«ç´æ¥åº 1142 åããã®ã§ã SYSLOG åºåãä¹±ãããã¨ããããåä¿¡æã®åºåä¾ã¨æå³ãä»¥ä¸ 1143 ã«ç¤ºãã 1024 6. 5 TINETのライブラリ化 1025 1026 TINET のライブラリ化は、メモリ使用量を削減することを目的に実装してい 1027 る。このため、ライブラリ化されているのは ITRON TCP/IP API 部分のみであ 1028 り、TINET のコア部分のライブラリ化は行われていない。また、コンパイル時 1029 オプションにより、処理内容が変わるため、ライブラリも再構築する必要があ 1030 る。従って、ライブラリとアプリケーションプログラムを別々に構築しておき、 1031 後でリンクする方法はサポートしていない。 1032 ITRON TCP/IP API 部分もライブラリ化させないためには、 アプリケーショ 1033 ンの Makefile に NO_USE_TINET_LIBRARY = true を指定する。 1034 1035 6. 6 TCP ヘッダのトレース出力機能 1036 1037 送受信する TCP セグメントの TCP ヘッダと TCP 通信端点の情報を出力す 1038 る機能である。なお、 CONSOLE_PORTID で指定されるシリアルポートに直接出 1039 力するので、 SYSLOG 出力が乱れることがある。受信時の出力例と意味を以下 1040 に示す。 1144 1041 1145 1042 <I 329.599=c: 4 s:CW f:60c00:--A---- a: 74461 s: 76082 w:58400 l: 0= 1146 1043 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 éä¿¡æã®åºåä¾ã¨æå³ã以ä¸ã«ç¤ºãã 1044 329.599 受信した時間、1/1000 秒単位、または 1 秒単位 1045 c: 4 TCP 通信端点 ID 1046 s:CW TCP FSM 状態(tinet/netinet/tcp_fsm.h 参照) 1047 f:60c00 TCP 通信端点の状態フラグ(16 進数、 1048 tinet/netinet/tcp_var.h 参照) 1049 :--A---- TCP ヘッダのフラグフィールドの値(tinet/netinet/tcp.h 1050 参照) 1051 a: 74461 TCP ヘッダの確認応答番号(コネクション確立時からの相 1052 対値) 1053 s: 76082 TCP ヘッダのシーケンス番号(コネクション確立時からの 1054 相対値) 1055 w:58400 TCP ヘッダのウインドサイズ 1056 l:0 受信ペイロードデータ数 1057 1058 送信時の出力例と意味を以下に示す。 1167 1059 1168 1060 =O 329.627=c: 4 s:CW f:60d20:--AP--- s: 74461 a: 76082 w: 2920 l:1460> 1169 1061 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 ä¸ã«ç¤ºãã 1062 329.627 送信した時間、1/1000 秒単位、または 1 秒単位 1063 c: 4 TCP 通信端点 ID 1064 s:CW TCP FSM 状態(tinet/netinet/tcp_fsm.h 参照) 1065 f:60d20 TCP 通信端点の状態フラグ(16 進数、 1066 tinet/netinet/tcp_var.h 参照) 1067 :--AP--- TCP ヘッダのフラグフィールドの値(tinet/netinet/tcp.h 1068 参照) 1069 s: 74461 TCP ヘッダのシーケンス番号(コネクション確立時からの 1070 相対値) 1071 a: 76082 TCP ヘッダの確認応答番号(コネクション確立時からの相 1072 対値) 1073 w: 2920 TCP ヘッダのウインドサイズ 1074 l:1460 送信ペイロードデータ数 1075 1076 この機能に関係するコンパイル時コンフィギュレーションパラメータを、以 1077 下に示す。 1191 1078 1192 1079 (1) TCP_CFG_TRACE 1193 TCP ãããã®ãã¬ã¼ã¹åºåæ©è½ãçµè¾¼ãã1080 TCP ヘッダのトレース出力機能を組込む。 1194 1081 1195 1082 (2) TCP_CFG_TRACE_IPV4_RADDR 1196 ãã¬ã¼ã¹åºå対象ã®ãªã¢ã¼ããã¹ãã® IPv4 ã¢ãã¬ã¹ãæå®ããã 1197 IPV4_ADDRANY ãæå®ããã¨ãå 1198 ¨ã¦ã®ãã¹ãã対象ã¨ããã 1083 トレース出力対象のリモートホストの IPv4 アドレスを指定する。 1084 IPV4_ADDRANY を指定すると、全てのホストを対象とする。 1199 1085 1200 1086 (3) TCP_CFG_TRACE_LPORTNO 1201 ãã¬ã¼ã¹åºå対象ã®ãã¼ã«ã«ãã¹ãã®ãã¼ãçªå·ãæå®ããã 1202 TCP_PORTANY ãæå®ããã¨ãå 1203 ¨ã¦ã®ãã¼ãçªå·ã対象ã«ããã 1087 トレース出力対象のローカルホストのポート番号を指定する。 1088 TCP_PORTANY を指定すると、全てのポート番号を対象にする。 1204 1089 1205 1090 (4) TCP_CFG_TRACE_RPORTNO 1206 ãã¬ã¼ã¹åºå対象ã®ãªã¢ã¼ããã¹ãã®ãã¼ãçªå·ãæå®ããã 1207 TCP_PORTANY ãæå®ããã¨ãå 1208 ¨ã¦ã®ãã¼ãçªå·ã対象ã«ããã 1209 1210 6. 7 IPv6ã«ãããã¢ãã¬ã¹ç®¡çã¨Path MTUã¸ã®å¯¾å¿ 1211 1212 TINET ãªãªã¼ã¹ 1.3 ã¾ã§ãIPv6 ã«ãããã¢ãã¬ã¹ç®¡çã¯éå®çãªå¯¾å¿ã®ã¿ 1213 ã§ããã Path MTU ã«ã対å¿ãã¦ããªãã£ããããã¹ãæ 1214 å ±ã®ãã£ãã·ã¥ãå® 1215 è£ 1216 ãããã¨ã«ãããTINET ãªãªã¼ã¹ 1.4 ããã¯ãã»ã¼å®å 1217 ¨ã«å¯¾å¿ããã 1218 ãã®æ©è½ã«é¢ä¿ããã³ã³ãã¤ã«æã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ãã©ã¡ã¼ã¿ãã以 1219 ä¸ã«ç¤ºãã 1091 トレース出力対象のリモートホストのポート番号を指定する。 1092 TCP_PORTANY を指定すると、全てのポート番号を対象にする。 1093 1094 6. 7 IPv6におけるアドレス管理とPath MTUへの対応 1095 1096 TINET リリース 1.3 まで、IPv6 におけるアドレス管理は限定的な対応のみ 1097 であり、 Path MTU にも対応していなかったが、ホスト情報のキャッシュを実 1098 装することにより、TINET リリース 1.4 からは、ほぼ完全に対応した。 1099 この機能に関係するコンパイル時コンフィギュレーションパラメータを、以 1100 下に示す。 1220 1101 1221 1102 (1) NUM_IN6_IFADDR_ENTRY 1222 ã¤ã³ã¿ãã§ã¼ã¹ã®ã¢ãã¬ã¹ãªã¹ãï¼IPv6ï¼ã®ã¨ã³ããªæ°ã§ããã1103 インタフェースのアドレスリスト(IPv6)のエントリ数である。 1223 1104 1224 1105 (2) NUM_ND6_DEF_RTR_ENTRY 1225 ãã£ãã©ã«ãã«ã¼ã¿ãªã¹ãã®ã¨ã³ããªæ°ã§ãæ大å¤ã¯ 16 ã§ããã01226 ãæå®ããã¨ã«ã¼ã¿éç¥ãåä¿¡ããªãããã ããç¾å¨ã¯ã ã«ã¼ã¿é1227 ç¥ã®å信以å¤ã«ãµã¤ããã¼ã«ã«ã¢ãã¬ã¹çãè¨å®ããæ¹æ³ããªãã1106 ディフォルトルータリストのエントリ数で、最大値は 16 である。0 1107 を指定するとルータ通知を受信しない。ただし、現在は、 ルータ通 1108 知の受信以外にサイトローカルアドレス等を設定する方法がない。 1228 1109 1229 1110 (3) NUM_ND6_PREFIX_ENTRY 1230 ãã¬ãã£ãã¯ã¹ãªã¹ãã®ã¨ã³ããªæ°ã§ãæ大å¤ã¯ 16 ã§ããã1111 プレフィックスリストのエントリ数で、最大値は 16 である。 1231 1112 1232 1113 (4) NUM_IN6_HOSTCACHE_ENTRY 1233 IPv6 ç¨ãã¹ãæ 1234 å ±ãã£ãã·ã¥ã®ã¨ã³ããªæ°ã§ã 0 ãæå®ãã㨠1235 IPv6 ç¨ãã¹ãæ 1236 å ±ãã£ãã·ã¥ãçµè¾¼ã¾ãªããã¾ãããã®å ´åãPath 1237 MTU ã¸ã®å¯¾å¿ãéå®çã«ãªãã 1238 1239 6. 8 IPv6/IPv4å®å 1240 ¨ãã¥ã¢ã«ã¹ã¿ã㯠1241 1242 TINET ãªãªã¼ã¹ 1.5 ã¾ã§ã çµè¾¼ã¿å¯è½ãªãããã¯ã¼ã¯å±¤ã¯ IPv6 ã IPv4 1243 ã®ããããã§ãã£ããã TINET ãªãªã¼ã¹ 1.7 ããã¯ä¸¡æ¹ãçµè¾¼ããã¨ããå¯ 1244 è½ã«ãªã£ãã 1245 ãããã¯ã¼ã¯å±¤ã¨ã㦠IPv6 ãé¸æããå ´åã¯ã IPv6 ã® API ã«ããã 1246 IPv6 ã¢ãã¬ã¹ã¨ã㦠IPv4 å°å½±ã¢ãã¬ã¹ã使ç¨ãããã¨ãå¯è½ã§ããã 1247 ãã®æ©è½ãæå¹ã«ããã³ã³ãã¤ã«æã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ãã©ã¡ã¼ã¿ãã 1248 以ä¸ã«ç¤ºãã 1114 IPv6 用ホスト情報キャッシュのエントリ数で、 0 を指定すると 1115 IPv6 用ホスト情報キャッシュを組込まない。また、この場合、Path 1116 MTU への対応も限定的になる。 1117 1118 6. 8 IPv6/IPv4完全デュアルスタック 1119 1120 TINET リリース 1.5 まで、 組込み可能なネットワーク層は IPv6 か IPv4 1121 のいずれかであったが、 TINET リリース 1.7 からは両方を組込むことがが可 1122 能になった。 1123 ネットワーク層として IPv6 を選択した場合は、 IPv6 の API における 1124 IPv6 アドレスとして IPv4 射影アドレスを使用することが可能である。 1125 この機能を有効にするコンパイル時コンフィギュレーションパラメータを、 1126 以下に示す。 1249 1127 API_CFG_IP4MAPPED_ADDR 1250 ãã®ã³ã³ãã¤ã«æã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ãã©ã¡ã¼ã¿ãããªãæã¯ã以ä¸ã®ç¤º 1251 ã API ã®å¼æ°ã¨ã㦠IPv4 å°å½±ã¢ãã¬ã¹ãæå®ããã¨ã æ»ãå¤ã¨ãã¦E_PAR1252 ãè¿ãããã 1128 このコンパイル時コンフィギュレーションパラメータをしない時は、以下の示 1129 す API の引数として IPv4 射影アドレスを指定すると、 戻り値として E_PAR 1130 が返される。 1253 1131 1254 1132 [1] tcp_cre_rep … … 1258 1136 [5] udp_snd_dat 1259 1137 1260 7. TINET ç¬èª API 1261 1262 7. 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 ã«å®ç¾©ããã¦ããã 1138 7. TINET 独自 API 1139 1140 7. 1 ネットワーク統計情報 1141 1142 送受信オクテット数、 送受信パケット数等の統計情報のカウンタ 1143 (net_count)が、単純変数、構造体、配列により組込まれている。 1144 1145 (1) ネットワーク統計情報の有効化 1146 コンパイル時コンフィギュレーション・ファイルのいずれかで、 1147 プロトコル毎にネットワーク統計情報を有効にする事が必要である。 1148 有効にするためには、マクロ NET_COUNT_ENABLE に、 プロトコル識 1149 別フラグ(インクルードファイル net/net.h で定義されている)を 1150 ビット論理和により設定する。 1151 1152 (2) ネットワーク統計情報の標準データ型と標準構造体 1153 いずれもインクルードファイル net/net_count.h に定義されている。 1283 1154 1284 1155 typedef UD T_NET_COUNT_VAL; 1285 1156 1286 1157 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; /* éä¿¡ã¨ã©ã¼ãã±ããæ°*/1158 T_NET_COUNT_VAL in_octets; /* 受信オクテット数 */ 1159 T_NET_COUNT_VAL out_octets; /* 送信オクテット数 */ 1160 T_NET_COUNT_VAL in_packets; /* 受信バケット数 */ 1161 T_NET_COUNT_VAL out_packets; /* 送信バケット数 */ 1162 T_NET_COUNT_VAL in_err_packets; /* 受信エラーバケット数 */ 1163 T_NET_COUNT_VAL out_err_packets; /* 送信エラーバケット数 */ 1293 1164 } T_NET_COUNT; 1294 1165 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 æ¨æºãã¼ã¿åå¤æ°ã§ã å¤æ°åã¯ãåä¿¡ãªã¯ãããæ°ã 1166 (3) プロトコル毎のネットワーク統計情報 1167 以下に、 プロトコル毎のネットワーク統計情報の変数または配列 1168 を示す。()内はインクルードファイル net/net.h に定義されてい 1169 るプロトコル識別フラグである。また、配列変数の場合、 配列の内 1170 容は、インクルードファイル net/net_count.h を参照すること。 1171 1172 [1] PPP の HDLC(PROTO_FLG_PPP_HDLC) 1173 標準構造体変数で、変数名は net_count_hdlc である。 1174 1175 [2] PPP の認証プロトコル(PROTO_FLG_PPP_PAP) 1176 標準データ型変数で、 変数名は、受信オクテット数が 1314 1177 1315 1178 net_count_ppp_upap_in_octets 1316 1179 1317 éä¿¡ãªã¯ãããæ°ã1180 送信オクテット数が 1318 1181 1319 1182 net_count_ppp_upap_out_octets 1320 1183 1321 [3] PPP ã®ãªã³ã¯å¶å¾¡ãããã³ã«ï¼PROTO_FLG_PPP_LCPï¼1322 æ¨æºãã¼ã¿åå¤æ°ã§ãå¤æ°åã¯ã åä¿¡ãªã¯ãããæ°ã1184 [3] PPP のリンク制御プロトコル(PROTO_FLG_PPP_LCP) 1185 標準データ型変数で、変数名は、 受信オクテット数が 1323 1186 1324 1187 net_count_ppp_lcp_in_octets 1325 1188 1326 éä¿¡ãªã¯ãããæ°ã1189 送信オクテット数が 1327 1190 1328 1191 net_count_ppp_lcp_out_octets 1329 1192 1330 [4] PPP ã® IP ä¾åå¶å¾¡ãããã³ã«ï¼PROTO_FLG_PPP_IPCPï¼1331 æ¨æºãã¼ã¿åå¤æ°ã§ã å¤æ°åã¯ãåä¿¡ãªã¯ãããæ°ã1193 [4] PPP の IP 依存制御プロトコル(PROTO_FLG_PPP_IPCP) 1194 標準データ型変数で、 変数名は、受信オクテット数が 1332 1195 1333 1196 net_count_ppp_ipcp_in_octets 1334 1197 1335 éä¿¡ãªã¯ãããæ°ã1198 送信オクテット数が 1336 1199 1337 1200 net_count_ppp_ipcp_out_octets 1338 1201 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 1394 7. 2 SNMP ç¨ç®¡çæ 1395 å ±ãã¼ã¹ï¼MIBï¼ 1396 1397 ã³ã³ãã¤ã«æã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ã»ãã¡ã¤ã«ã®ããããã§ã ãã¯ã 1398 SUPPORT_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 1455 7. 3 TINET å 1456 é¨ã¢ã¯ã»ã¹é¢æ°ããµãã¼ãé¢æ°ãå 1457 ¨åå¤æ°ã¨ãã¯ã 1458 1459 å¿ç¨ããã°ã©ã ãã TINET å 1460 é¨ã«ã¢ã¯ã»ã¹ããããã®é¢æ°ã ãµãã¼ãé¢æ°ã 1461 å 1462 ¨åå¤æ°ã¨ãã¯ãã§ããã 1463 1464 (1) IPv6 ã¢ãã¬ã¹ããªãã©ã«è¡¨ç¾ï¼æååï¼ã«å¤æããé¢æ° 1465 ãC è¨èª APIã 1202 [5] PPP 全体(PROTO_FLG_PPP) 1203 PPP 全体のネットワーク統計情報は、 標準構造体変数で、 1204 変数名は net_count_ppp である。 また、 PPP での net_buf 1205 の割当て失敗数は、 標準データ型変数で、 変数名は 1206 net_count_ppp_no_buf である。 1207 1208 [6] ループバックインタフェース(PROTO_FLG_LOOP) 1209 標準構造体変数で、変数名は net_count_loop である。 1210 1211 [7] イーサネットディバイスドライバ NIC(PROTO_FLG_ETHER_NIC) 1212 標準データ型配列変数で、 変数名は net_count_ether_nic 1213 である。 1214 1215 [8] (PROTO_FLG_ETHER) 1216 標準構造体変数で、変数名は net_count_ether である。 1217 1218 [9] (PROTO_FLG_ARP) 1219 標準構造体変数で、変数名は net_count_arp である。 1220 1221 [10] (PROTO_FLG_IP4) 1222 標準データ型配列変数で、変数名は net_count_ip4 である。 1223 1224 [11] (PROTO_FLG_IP6) 1225 標準データ型配列変数で、変数名は net_count_ip6 である。 1226 1227 [12] (PROTO_FLG_ICMP4) 1228 標準構造体変数で、変数名は net_count_icmp4 である。 1229 1230 [13] (PROTO_FLG_ICMP6) 1231 標準データ型配列変数で、変数名は net_count_icmp6 である。 1232 1233 [14] (PROTO_FLG_ND6) 1234 標準データ型配列変数で、変数名は net_count_nd6 である。 1235 1236 [15] (PROTO_FLG_UDP) 1237 標準構造体変数で、変数名は net_count_udp である。 1238 1239 [16] (PROTO_FLG_TCP) 1240 標準データ型配列変数で、変数名は net_count_tcp である。 1241 1242 [17] (PROTO_FLG_NET_BUF) 1243 net_buf に関しては、 特殊であるためサンプルアプリケー 1244 ション nserv で使用している netapp/dbg_cons.c の関数 1245 net_count を参照すること。 1246 1247 7. 2 SNMP 用管理情報ベース(MIB) 1248 1249 コンパイル時コンフィギュレーション・ファイルのいずれかで、 マクロ 1250 SUPPORT_MIB を定義することにより、SNMP 用管理情報ベース(MIB)に準拠し 1251 たネットワーク統計の取得が可能である。ただし、TINET 自体は、管理情報ベー 1252 ス(MIB)に準拠したネットワーク統計を提供するだけで,SNMP をサポートし 1253 ていない。また、RFC1213、RFC2465、RFC2466 に定義されている全ての情報が 1254 取得できるわけではない。取得できる情報は、関係するインクルードファイル 1255 の構造体の定義を参照すること。 1256 以下に、グループ、構造体を定義しているインクルードファイル、構造体名、 1257 構造体変数名を示す。 1258 1259 (1) TCP グループ 1260 1261 インクルードファイル netinet/tcp_var.h 1262 構造体名 T_TCP_STATS 1263 変数名 tcp_stats 1264 1265 (2) UDP グループ 1266 1267 インクルードファイル netinet/udp_var.h 1268 構造体名 T_UDP_STATS 1269 変数名 udp_stats 1270 1271 (3) ICMPv4 グループ 1272 1273 インクルードファイル netinet/icmp_var.h 1274 構造体名 T_ICMP_STATS 1275 変数名 icmp_stats 1276 1277 (4) IPv4 グループ 1278 1279 インクルードファイル netinet/ip_var.h 1280 構造体名 T_IP_STATS 1281 変数名 ip_stats 1282 1283 (5) ICMPv6 グループ 1284 1285 インクルードファイル netinet/icmp6.h 1286 構造体名 T_ICMP6_IFSTAT 1287 変数名 icmp6_ifstat 1288 1289 (6) IPv6 グループ 1290 1291 インクルードファイル netinet6/ip6_var.h 1292 構造体名 T_IN6_IFSTAT 1293 変数名 in6_ifstat 1294 1295 (7) ネットワークインタフェース(イーサネット)グループ 1296 1297 インクルードファイル net/if_var.h 1298 構造体名 T_IF_STATS 1299 変数名 if_stats 1300 1301 7. 3 TINET 内部アクセス関数、サポート関数、全域変数とマクロ 1302 1303 応用プログラムから TINET 内部にアクセスするための関数、 サポート関数、 1304 全域変数とマクロである。 1305 1306 (1) IPv6 アドレスをリテラル表現(文字列)に変換する関数 1307 【C 言語 API】 1466 1308 char *p_retbuf = ipv62str (char *p_buf, const T_IN6_ADDR *p_addr); 1467 1309 1468 ããã©ã¡ã¼ã¿ã1469 char buf ãªãã©ã«è¡¨ç¾ã®IPv6ã¢ãã¬ã¹ãæ ¼ç´ãããããã¡1470 const T_IN6_ADDR addr IPv6 ã¢ãã¬ã¹1471 1472 ããªã¿ã¼ã³ãã©ã¡ã¼ã¿ã1473 char retbuf ãªãã©ã«è¡¨ç¾ã® IPv6 ã¢ãã¬ã¹ãæ ¼ç´ããããããã¡1474 1475 ãã¤ã³ã¯ã«ã¼ããã¡ã¤ã«ã1310 【パラメータ】 1311 char buf リテラル表現のIPv6アドレスを格納するバッファ 1312 const T_IN6_ADDR addr IPv6アドレス 1313 1314 【リターンパラメータ】 1315 char retbuf リテラル表現の IPv6 アドレスが格納されたバッファ 1316 1317 【インクルードファイル】 1476 1318 <netinet/in.h> 1477 1319 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ã 1320 【機能】 1321 IPv6 アドレスをリテラル表現(文字列)に変換する。パラ 1322 メータ buf には、最低 46 バイトの領域が必要である。また、 1323 パラメータ buf に、 NULL を指定すると、TINET 内部で確保 1324 してあるバッファに IPv6 アドレスをリテラル表現に変換し 1325 て書き込み、そのアドレスを返す。 コンパイル時コンフィギュ 1326 レーションパラメータ NUM_IPADDR_STR_BUFF によりバッファ 1327 数を指定することが出来る。 ただし、バッファ数を超えて連 1328 続的に呼出すとバッファを上書きする。 1329 1330 (2) 設定可能な最大 IPv6 アドレス数を返す関数 1331 【C 言語 API】 1493 1332 u_int num = in6_get_maxnum_ifaddr (void); 1494 1333 1495 ããªã¿ã¼ã³ãã©ã¡ã¼ã¿ã1496 u_int num è¨å®å¯è½ãªæ大IPv6ã¢ãã¬ã¹æ°1497 1498 ãã¤ã³ã¯ã«ã¼ããã¡ã¤ã«ã1334 【リターンパラメータ】 1335 u_int num 設定可能な最大IPv6アドレス数 1336 1337 【インクルードファイル】 1499 1338 <netinet/in.h> 1500 1339 1501 ãæ©è½ã1502 ãããã¯ã¼ã¯ã¤ã³ã¿ãã§ã¼ã¹ã«è¨å®å¯è½ãªæ大 IPv6 ã¢ã1503 ã¬ã¹æ°ãè¿ãé¢æ°ã§ããã ãªãã ç¾å¨è¨å®ããã¦ããIPv61504 ã¢ãã¬ã¹æ°ã¨ã¯ç°ãªãã1505 1506 (3) è¨å®ããã¦ãã IPv6 ã¢ãã¬ã¹ãè¿ãé¢æ°1507 ãC è¨èª APIã1340 【機能】 1341 ネットワークインタフェースに設定可能な最大 IPv6 アド 1342 レス数を返す関数である。 なお、 現在設定されている IPv6 1343 アドレス数とは異なる。 1344 1345 (3) 設定されている IPv6 アドレスを返す関数 1346 【C 言語 API】 1508 1347 const T_IN6_ADDR *p_addr = in6_get_ifaddr (int_t index); 1509 1348 1510 ããã©ã¡ã¼ã¿ã1511 int_t index IPv6 ã¢ãã¬ã¹ã®ã¤ã³ããã¯ã¹å¤1512 1513 ããªã¿ã¼ã³ãã©ã¡ã¼ã¿ã1514 T_IN6_ADDR addr è¨å®ããã¦ããIPv6ã¢ãã¬ã¹ãæ ¼ç´ããããããã¡1515 1516 ãã¤ã³ã¯ã«ã¼ããã¡ã¤ã«ã1349 【パラメータ】 1350 int_t index IPv6アドレスのインデックス値 1351 1352 【リターンパラメータ】 1353 T_IN6_ADDR addr 設定されているIPv6アドレスが格納されたバッファ 1354 1355 【インクルードファイル】 1517 1356 <netinet/in.h> 1518 1357 1519 ãæ©è½ã1520 ãããã¯ã¼ã¯ã¤ã³ã¿ãã§ã¼ã¹ã«è¨å®ããã¦ãã IPv6 ã¢ã1521 ã¬ã¹ãè¿ãé¢æ°ã§ããããã ãã æªå®ç¾©ã®å ´å㯠NULL ãè¿1522 ãã index ã«ã¯ 0 ï½ ( è¨å®å¯è½ãªæ大 IPv6 ã¢ãã¬ã¹æ°1523 -1) ãæå®ã§ããã1524 1525 (4) è¨å®ããã¦ãã IPv6 ã¢ãã¬ã¹ãæ´æ°ããé¢æ°1526 ãC è¨èª APIã1358 【機能】 1359 ネットワークインタフェースに設定されている IPv6 アド 1360 レスを返す関数である。ただし、 未定義の場合は NULL を返 1361 す。 index には 0 ~ ( 設定可能な最大 IPv6 アドレス数 1362 -1) を指定できる。 1363 1364 (4) 設定されている IPv6 アドレスを更新する関数 1365 【C 言語 API】 1527 1366 ER ercd = in6_upd_ifaddr (T_IN6_ADDR *p_addr, 1528 1367 uint_t prefixlen, … … 1530 1369 uint32_t pltime); 1531 1370 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 ãã¤ã³ã¯ã«ã¼ããã¡ã¤ã«ã1371 【パラメータ】 1372 T_IN6_ADDR addr 更新するIPv6アドレス 1373 int_t prefixlen プレフィックス長 1374 int32_t vltime 有効時間(単位は秒) 1375 int32_t pltime 推奨有効時間(単位は秒) 1376 1377 【リターンパラメータ】 1378 ER ercd エラーコード 1379 1380 【エラーコード】 1381 E_OBJ 空きがない。 1382 E_PAR パラメータエラー(p_addrがNULL等)。 1383 1384 【インクルードファイル】 1546 1385 <netinet/in.h> 1547 1386 1548 ãæ©è½ã1549 ãããã¯ã¼ã¯ã¤ã³ã¿ãã§ã¼ã¹ã«è¨å®ããã¦ãã IPv6 ã¢ã1550 ã¬ã¹ã®ãã¬ãã£ãã¯ã¹é·ãæå¹æéã æ¨å¥¨æå¹æéãæ´æ°ã1551 ãã ãã ããæªå®ç¾©ã®å ´åã¯è¿½å ããã1552 1553 (5) è¨å®ããã¦ãã IPv6 ã¢ãã¬ã¹ãåé¤ããé¢æ°1554 ãC è¨èª APIã1387 【機能】 1388 ネットワークインタフェースに設定されている IPv6 アド 1389 レスのプレフィックス長、有効時間、 推奨有効時間を更新す 1390 る。 ただし、未定義の場合は追加する。 1391 1392 (5) 設定されている IPv6 アドレスを削除する関数 1393 【C 言語 API】 1555 1394 ER ercd = in6_del_ifaddr (T_IN6_ADDR *p_addr); 1556 1395 1557 ããã©ã¡ã¼ã¿ã1558 T_IN6_ADDR addr åé¤ããIPv6ã¢ãã¬ã¹1559 1560 ããªã¿ã¼ã³ãã©ã¡ã¼ã¿ã1561 ER ercd ã¨ã©ã¼ã³ã¼ã1562 1563 ãã¨ã©ã¼ã³ã¼ãã1564 E_PAR ãã©ã¡ã¼ã¿ã¨ã©ã¼ï¼æå®ãããã¢ãã¬ã¹ããªãçï¼ã1565 1566 ãã¤ã³ã¯ã«ã¼ããã¡ã¤ã«ã1396 【パラメータ】 1397 T_IN6_ADDR addr 削除するIPv6アドレス 1398 1399 【リターンパラメータ】 1400 ER ercd エラーコード 1401 1402 【エラーコード】 1403 E_PAR パラメータエラー(指定されたアドレスがない等)。 1404 1405 【インクルードファイル】 1567 1406 <netinet/in.h> 1568 1407 1569 ãæ©è½ã1570 ãããã¯ã¼ã¯ã¤ã³ã¿ãã§ã¼ã¹ã«è¨å®ããã¦ãã IPv6 ã¢ã1571 ã¬ã¹ãåé¤ããã1572 1573 (6) è¨å®å¯è½ãªæ大 IPv4 ã¢ãã¬ã¹æ°ãè¿ãé¢æ°1574 ãC è¨èª APIã1408 【機能】 1409 ネットワークインタフェースに設定されている IPv6 アド 1410 レスを削除する。 1411 1412 (6) 設定可能な最大 IPv4 アドレス数を返す関数 1413 【C 言語 API】 1575 1414 uint_t num = in4_get_maxnum_ifaddr (void); 1576 1415 1577 1416 1578 ããªã¿ã¼ã³ãã©ã¡ã¼ã¿ã1579 uint_t num è¨å®å¯è½ãªæ大IPv4ã¢ãã¬ã¹æ°ãè¿ãé¢æ°1580 1581 ãã¤ã³ã¯ã«ã¼ããã¡ã¤ã«ã1417 【リターンパラメータ】 1418 uint_t num 設定可能な最大IPv4アドレス数を返す関数 1419 1420 【インクルードファイル】 1582 1421 <netinet/in.h> 1583 1422 1584 ãæ©è½ã1585 ãããã¯ã¼ã¯ã¤ã³ã¿ãã§ã¼ã¹ã«è¨å®å¯è½ãªæ大 IPv4 ã¢ã1586 ã¬ã¹æ°ãè¿ãé¢æ°ã§ããããªããç¾å¨ã¯å¸¸ã« 1 ãè¿ãã1587 1588 (7) ã¤ã³ã¿ãã§ã¼ã¹ã« IPv4 ã¢ãã¬ã¹ãè¨å®ããé¢æ°1589 ãC è¨èª APIã1423 【機能】 1424 ネットワークインタフェースに設定可能な最大 IPv4 アド 1425 レス数を返す関数である。なお、現在は常に 1 を返す。 1426 1427 (7) インタフェースに IPv4 アドレスを設定する関数 1428 【C 言語 API】 1590 1429 ER ercd = in4_add_ifaddr (T_IN4_ADDR addr, T_IN4_ADDR mask); 1591 1430 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_OK1601 1602 ãã¤ã³ã¯ã«ã¼ããã¡ã¤ã«ã1431 【パラメータ】 1432 T_IN4_ADDR addr IPアドレス 1433 T_IN4_ADDR mask サブネットマスク 1434 1435 【リターンパラメータ】 1436 ER ercd エラーコード(現在は常にE_OK) 1437 1438 【エラーコード】 1439 E_OK 現在は常にE_OK 1440 1441 【インクルードファイル】 1603 1442 <netinet/in.h> 1604 1443 1605 ãæ©è½ã 1606 ã¤ã³ã¿ãã§ã¼ã¹ã« IPv4 ã¢ãã¬ã¹ãè¨å®ããã 1607 1608 (8) IPv4 ç¨éççµè·¯è¡¨ã«çµè·¯æ 1609 å ±ãè¨å®ããé¢æ° 1610 ãC è¨èª APIã 1444 【機能】 1445 インタフェースに IPv4 アドレスを設定する。 1446 1447 (8) IPv4 用静的経路表に経路情報を設定する関数 1448 【C 言語 API】 1611 1449 ER ercd = in4_add_route (int index, T_IN4_ADDR target, 1612 1450 T_IN4_ADDR mask, 1613 1451 T_IN4_ADDR gateway); 1614 1452 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_PAR1627 1628 ãã¤ã³ã¯ã«ã¼ããã¡ã¤ã«ã1453 【パラメータ】 1454 int index エントリのインデックス 1455 T_IN4_ADDR target 目標ネットワークのIPアドレス 1456 T_IN4_ADDR mask 目標ネットワークのサブネットマスク 1457 T_IN4_ADDR gateway ゲートウェイのIPアドレス 1458 1459 【リターンパラメータ】 1460 ER ercd エラーコード 1461 1462 【エラーコード】 1463 E_PAR 引数indexの値が負か、コンパイル時コンフィギュレーション 1464 パラメータNUM_ROUTE_ENTRY以上のときE_PAR 1465 1466 【インクルードファイル】 1629 1467 <netinet/in.h> 1630 1468 1631 ãæ©è½ã 1632 IPv4 ç¨éççµè·¯è¡¨ã«çµè·¯æ 1633 å ±ãè¨å®ããã 1634 1635 (9) IPv4 ã¢ãã¬ã¹ããªãã©ã«è¡¨ç¾ï¼æååï¼ã«å¤æããé¢æ° 1636 ãC è¨èª APIã 1469 【機能】 1470 IPv4 用静的経路表に経路情報を設定する。 1471 1472 (9) IPv4 アドレスをリテラル表現(文字列)に変換する関数 1473 【C 言語 API】 1637 1474 char *p_retbuf = ip2str (char *p_buf, const T_IN4_ADDR *p_ipaddr); 1638 1475 1639 ããã©ã¡ã¼ã¿ã1640 char buf ãªãã©ã«è¡¨ç¾ã®IPv4ã¢ãã¬ã¹ãæ ¼ç´ãããããã¡1641 const T_IN4_ADDR ipaddr IPv4 ã¢ãã¬ã¹1642 1643 ããªã¿ã¼ã³ãã©ã¡ã¼ã¿ã1644 char retbuf ãªãã©ã«è¡¨ç¾ã® IPv4 ã¢ãã¬ã¹ãæ ¼ç´ããããããã¡1645 1646 ãã¤ã³ã¯ã«ã¼ããã¡ã¤ã«ã1476 【パラメータ】 1477 char buf リテラル表現のIPv4アドレスを格納するバッファ 1478 const T_IN4_ADDR ipaddr IPv4アドレス 1479 1480 【リターンパラメータ】 1481 char retbuf リテラル表現の IPv4 アドレスが格納されたバッファ 1482 1483 【インクルードファイル】 1647 1484 <netinet/in.h> 1648 1485 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ã 1486 【機能】 1487 IPv4 アドレスをリテラル表現(文字列)に変換する。パラ 1488 メータ buf には、最低 16 バイトの領域が必要である。また、 1489 パラメータ buf に、 NULL を指定すると、TINET 内部で確保 1490 してあるバッファに IPv4 アドレスをリテラル表現に変換し 1491 て書き込み、そのアドレスを返す。 コンパイル時コンフィギュ 1492 レーションパラメータ NUM_IPADDR_STR_BUFF によりバッファ 1493 数を指定することが出来る。 ただし、バッファ数を超えて連 1494 続的に呼出すとバッファを上書きする。 1495 1496 (10) ITRON TCP/IP API 機能コードを文字表現に変換する関数 1497 【C 言語 API】 1664 1498 const char *p_str = in_strtfn (FN fncd); 1665 1499 1666 ããã©ã¡ã¼ã¿ã1667 FN fncd ITRON TCP/IP API æ©è½ã³ã¼ã1668 1669 ããªã¿ã¼ã³ãã©ã¡ã¼ã¿ã1670 const char str ITRON TCP/IP API æ©è½ã³ã¼ãã®æå表ç¾1671 1672 ãã¤ã³ã¯ã«ã¼ããã¡ã¤ã«ã1500 【パラメータ】 1501 FN fncd ITRON TCP/IP API 機能コード 1502 1503 【リターンパラメータ】 1504 const char str ITRON TCP/IP API 機能コードの文字表現 1505 1506 【インクルードファイル】 1673 1507 <netinet/in.h> 1674 1508 1675 ãæ©è½ã1676 ITRON TCP/IP API æ©è½ã³ã¼ããæå表ç¾ã«å¤æããã1677 1678 (11) MAC ã¢ãã¬ã¹ããªãã©ã«è¡¨ç¾ï¼æååï¼ã«å¤æããé¢æ°1679 ãC è¨èª APIã1509 【機能】 1510 ITRON TCP/IP API 機能コードを文字表現に変換する。 1511 1512 (11) MAC アドレスをリテラル表現(文字列)に変換する関数 1513 【C 言語 API】 1680 1514 char *p_retbuf = mac2str (char *p_buf, uint8_t *p_macaddr); 1681 1515 1682 ããã©ã¡ã¼ã¿ã 1683 char buf ãªãã©ã«è¡¨ç¾ã®MACã¢ãã¬ã¹ãæ ¼ç´ãããããã¡ 1684 uint8_t macaddr MACã¢ãã¬ã¹ 1685 1686 ããªã¿ã¼ã³ãã©ã¡ã¼ã¿ã 1687 char retbuf ãªãã©ã«è¡¨ç¾ã® MAC ã¢ãã¬ã¹ãæ ¼ç´ããããããã¡ 1688 1689 ãã¤ã³ã¯ã«ã¼ããã¡ã¤ã«ã 1690 <sil.h> TOPPERS/ASP ã§ã¯å¿ 1691 è¦ 1516 【パラメータ】 1517 char buf リテラル表現のMACアドレスを格納するバッファ 1518 uint8_t macaddr MACアドレス 1519 1520 【リターンパラメータ】 1521 char retbuf リテラル表現の MAC アドレスが格納されたバッファ 1522 1523 【インクルードファイル】 1524 <sil.h> TOPPERS/ASP では必要 1692 1525 <net/net.h> 1693 1526 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ã 1527 【機能】 1528 MAC アドレスをリテラル表現(文字列)に変換する。 パラ 1529 メータ buf には、最低 18 バイトの領域が必要である。また、 1530 パラメータ buf に、NULL を指定すると、 TINET 内部で確保 1531 してあるバッファに MAC アドレスをリテラル表現に変換して 1532 書き込み、 そのアドレスを返す。コンパイル時コンフィギュ 1533 レーションパラメータ NUM_MACADDR_STR_BUFF によりバッファ 1534 数を指定することが出来る。ただし、 バッファ数を超えて連 1535 続的に呼出すとバッファを上書きする。 1536 1537 (12) IPv4 アドレスを IPv6 の IPv4 射影アドレスに変換する関数 1538 【C 言語 API】 1709 1539 T_IN6_ADDR *p_dstaddr = in6_make_ipv4mapped (T_IN6_ADDR *dst, 1710 1540 T_IN4_ADDR src); 1711 1541 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 ãã¤ã³ã¯ã«ã¼ããã¡ã¤ã«ã 1542 【パラメータ】 1543 T_IN6_ADDR *dst 格納先のIPv6アドレス変数へのポインタ 1544 T_IN4_ADDR src 変換するIPv4アドレス 1545 1546 【リターンパラメータ】 1547 T_IN6_ADDR *p_dstaddr 格納先のIPv6アドレス変数へのポインタ 1548 1549 【インクルードファイル】 1722 1550 <netinet/in.h> 1723 1551 1724 ãæ©è½ã1725 IPv4 ã¢ãã¬ã¹ã IPv6 ã® IPv4 å°å½±ã¢ãã¬ã¹ã«å¤æããã1726 1727 (13) æå®ãã IPv6 ã¢ãã¬ã¹ã IPv4 å°å½±ã¢ãã¬ã¹ããå¤å®ããé¢æ°1728 ãC è¨èª APIã1552 【機能】 1553 IPv4 アドレスを IPv6 の IPv4 射影アドレスに変換する。 1554 1555 (13) 指定した IPv6 アドレスが IPv4 射影アドレスかを判定する関数 1556 【C 言語 API】 1729 1557 bool_t ret = in6_is_addr_ipv4mapped (const T_IN6_ADDR *addr); 1730 1558 1731 ããã©ã¡ã¼ã¿ã1732 T_IN6_ADDR *p_dstaddr å¤å®ããIPv6ã¢ãã¬ã¹å¤æ°ã¸ã®ãã¤ã³ã¿1733 1734 ããªã¿ã¼ã³ãã©ã¡ã¼ã¿ã1735 bool_t ret IPv6 ã¢ãã¬ã¹ãIPv4å°å½±ã¢ãã¬ã¹ã§ããã°trueãè¿ãããã1736 1737 ãã¤ã³ã¯ã«ã¼ããã¡ã¤ã«ã1559 【パラメータ】 1560 T_IN6_ADDR *p_dstaddr 判定するIPv6アドレス変数へのポインタ 1561 1562 【リターンパラメータ】 1563 bool_t ret IPv6アドレスがIPv4射影アドレスであればtrueが返される。 1564 1565 【インクルードファイル】 1738 1566 <netinet/in.h> 1739 1567 1740 ãæ©è½ã 1741 æå®ãã IPv6 ã¢ãã¬ã¹ã IPv4 å°å½±ã¢ãã¬ã¹ããå¤å®ã 1742 ããIPv6 ã¢ãã¬ã¹ã IPv4 å°å½±ã¢ãã¬ã¹ã§ããã° true ãè¿ 1743 ãããã 1744 1745 (14) IPv6 ã®ç¹æ®ãªã¢ãã¬ã¹ã«å¯¾å¿ããå 1746 ¨åå¤æ° 1747 ãC è¨èª APIã 1568 【機能】 1569 指定した IPv6 アドレスが IPv4 射影アドレスかを判定す 1570 る。IPv6 アドレスが IPv4 射影アドレスであれば true が返 1571 される。 1572 1573 (14) IPv6 の特殊なアドレスに対応する全域変数 1574 【C 言語 API】 1748 1575 const T_IN6_ADDR in6_addr_unspecified; 1749 1576 const T_IN6_ADDR in6_addr_linklocal_allnodes; 1750 1577 const T_IN6_ADDR in6_addr_linklocal_allrouters; 1751 1578 1752 ãæ©è½ã 1753 IPv6 ã§ã¯ãã¢ãã¬ã¹é·ã 128 ãããï¼16 ãã¤ãï¼ã§ãå¤ 1754 ããã¯ãã§å®ç¾©ãããã¨ãã§ããªãããã«ç¨æããå 1755 ¨åå¤æ° 1756 ã§ããã以ä¸ã®ããã«ã ã¡ã¢ãªæä½é¢æ°ãå¼ã³åºãã¦ã³ãã¼ããã 1579 【機能】 1580 IPv6 では、アドレス長が 128 ビット(16 バイト)で、値 1581 をマクロで定義することができないために用意した全域変数 1582 であり、以下のように、 メモリ操作関数を呼び出してコピーする。 1757 1583 memcpy(&myaddr.ipaddr, &in6_addr_unspecified, sizeof(T_IN6_ADDR)); 1758 1584 1759 (15) IPv6 ã® IPV6_ADDRANY ã«å¯¾å¿ããå 1760 ¨åå¤æ° 1761 ãC è¨èª APIã 1585 (15) IPv6 の IPV6_ADDRANY に対応する全域変数 1586 【C 言語 API】 1762 1587 const T_IN6_ADDR ipv6_addrany; 1763 1588 1764 ãæ©è½ã 1765 T_IPV6EP ã® ipaddr ãã£ã¼ã«ãã«ãå¤ IPV4_ADDRANY ã代 1766 å 1767 ¥ããã¨ããIPv4 ã§ã¯ã 1589 【機能】 1590 T_IPV6EP の ipaddr フィールドに、値 IPV4_ADDRANY を代 1591 入するとき、IPv4 では、 1768 1592 myaddr.ipaddr = IPV4_ADDRANY; 1769 1593 1770 ã¨æå®ã§ããããIPv6 ã§ã¯ãåæ§ã®æå®ãã§ããªãããã«ç¨ 1771 æããå 1772 ¨åå¤æ°ã§ããã 以ä¸ã®ããã«ãã¡ã¢ãªæä½é¢æ°ãå¼ 1773 ã³åºãã¦ã³ãã¼ããã 1594 と指定できるが、IPv6 では、同様の指定ができないために用 1595 意した全域変数であり、 以下のように、メモリ操作関数を呼 1596 び出してコピーする。 1774 1597 memcpy(&myaddr.ipaddr, &ipv6_addrany, sizeof(T_IN6_ADDR)); 1775 1598 1776 ãªãããã®å 1777 ¨åå¤æ°ã¯ãã¯ãã§å®ç¾©ãã¦ããã 1778 1779 (16) TINET ã®ãã¼ã¸ã§ã³æ 1780 å ±ãã¯ã 1781 ãC è¨èª APIã 1599 なお、この全域変数はマクロで定義している。 1600 1601 (16) TINET のバージョン情報マクロ 1602 【C 言語 API】 1782 1603 TINET_PRVER 1783 1604 1784 ããããé 1785 åã 1786 ããã12ï½15 ã¡ã¸ã£ã¼ãªãªã¼ã¹ï¼ç¾å¨ã®å¤ã¯1ï¼ 1787 ããã4ï½11 ãã¤ãã¼ãªãªã¼ã¹ï¼ç¾å¨ã®å¤ã¯7ï¼ 1788 ããã3ï½0 ãããã¬ãã«ï¼ç¾å¨ã®å¤ã¯0ï¼ 1789 1790 ãã¤ã³ã¯ã«ã¼ããã¡ã¤ã«ã 1605 【ビット配分】 1606 ビット12~15 メジャーリリース(現在の値は1) 1607 ビット4~11 マイナーリリース(現在の値は7) 1608 ビット3~0 パッチレベル(現在の値は0) 1609 1610 【インクルードファイル】 1791 1611 <net/net.h> 1792 1612 1793 (17) 8 ãããæ¯ã«æå®ãã IPv4 ã¢ãã¬ã¹ã 32 ãããã«ãããã¯ã1794 ãC è¨èª APIã1613 (17) 8 ビット毎に指定した IPv4 アドレスを 32 ビットにするマクロ 1614 【C 言語 API】 1795 1615 T_IN4_ADDR addr = MAKE_IPV4_ADDR(uint8_t a, uint8_t b, 1796 1616 uint8_t c, uint8_t d); 1797 1617 1798 ããã©ã¡ã¼ã¿ã1799 uint8_t a IPv4 ã¢ãã¬ã¹ã®ããã24ï½311800 uint8_t b IPv4 ã¢ãã¬ã¹ã®ããã16ï½231801 uint8_t c IPv4 ã¢ãã¬ã¹ã®ããã8ï½151802 uint8_t d IPv4 ã¢ãã¬ã¹ã®ããã0ï½71803 1804 ããªã¿ã¼ã³ãã©ã¡ã¼ã¿ã1805 T_IN4_ADDR addr 32 ãããã®IPv4ã¢ãã¬ã¹1806 1807 ãã¤ã³ã¯ã«ã¼ããã¡ã¤ã«ã1618 【パラメータ】 1619 uint8_t a IPv4アドレスのビット24~31 1620 uint8_t b IPv4アドレスのビット16~23 1621 uint8_t c IPv4アドレスのビット8~15 1622 uint8_t d IPv4アドレスのビット0~7 1623 1624 【リターンパラメータ】 1625 T_IN4_ADDR addr 32ビットのIPv4アドレス 1626 1627 【インクルードファイル】 1808 1628 <netinet/in.h> 1809 1629 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 1819 7. 4 å¿ç¨ããã°ã©ã ã³ã¼ã«ããã¯é¢æ° 1820 1821 TINET ããå¼åºãããå¿ç¨ããã°ã©ã ã³ã¼ã«ããã¯é¢æ°ã§ãããå¿ç¨ããã° 1822 ã©ã å´ã§ç¨æããå¿ 1823 è¦ãããã 1824 1825 (1) IPv4 ã¢ãã¬ã¹éè¤æ¤åºæã®ã³ã¼ã«ããã¯é¢æ° 1826 ãC è¨èª APIã 1630 【機能】 1631 各オクテットの値から IPv4 アドレスを生成する。 1632 1633 (18) 一般定数マクロ 1634 1635 TCP_REP_NONE 該当する TCP 受付口が無い。値は(0)。 1636 TCP_CEP_NONE 該当する TCP 通信端点が無い。値は(0)。 1637 UDP_CEP_NONE 該当する UDP 通信端点が無い。値は(0)。 1638 1639 7. 4 応用プログラムコールバック関数 1640 1641 TINET から呼出される応用プログラムコールバック関数であり、応用プログ 1642 ラム側で用意する必要がある。 1643 1644 (1) IPv4 アドレス重複検出時のコールバック関数 1645 【C 言語 API】 1827 1646 boot_t reply = arp_callback_duplicated(uint8_t *shost); 1828 1647 1829 ããã©ã¡ã¼ã¿ã1830 uint8_t shost éè¤ç¸æã®MACã¢ãã¬ã¹1831 1832 ããªã¿ã¼ã³ãã©ã¡ã¼ã¿ã1833 bool_t reply éè¤ã®éç¥1834 1835 ãã¤ã³ã¯ã«ã¼ããã¡ã¤ã«ã1648 【パラメータ】 1649 uint8_t shost 重複相手のMACアドレス 1650 1651 【リターンパラメータ】 1652 bool_t reply 重複の通知 1653 1654 【インクルードファイル】 1836 1655 <netinet/if_ether.h> 1837 1656 1838 ãã³ã³ãã¤ã«æã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ãã©ã¡ã¼ã¿ã1657 【コンパイル時コンフィギュレーションパラメータ】 1839 1658 ARP_CFG_CALLBACK_DUPLICATED 1840 1659 1841 ãæ©è½ã 1842 æ»ãå¤ã« TRUE ãæå®ããã¨ãTINET ã§éè¤ç¸æã® MAC 㢠1843 ãã¬ã¹ã syslog ã«åºåãã éè¤ç¸æã«ãéè¤ãããã¨ãä¼ 1844 ãããFALSE ãæå®ããã¨ä½ãããªãã 1845 1846 8. è¬è¾ 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 1914 9. ã©ã¤ã»ã³ã¹ 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 ã©ï¼ã«ãã©ã¤ã»ã³ã¹è¡¨ç¤ºãè¡ãã¨ã 1660 【機能】 1661 戻り値に TRUE を指定すると、TINET で重複相手の MAC ア 1662 ドレスを syslog に出力し、 重複相手にも重複したことを伝 1663 える。FALSE を指定すると何もしない。 1664 1665 8. 謝辞 1666 1667 本 TCP/IP プロトコルスタックは、次の組織の皆様の御支援により研究・開 1668 発を行いました。関係各位に感謝いたします。 1669 1670 (1) 財団法人道央産業技術振興機構様 1671 1672 [1] 事業名(実施年度) 1673 高度技術開発委託事業(平成 12 年度) 1674 [2] テーマ名 1675 組込み型制御システム用 TCP/IP プロトコルスタックの開発 1676 1677 (2) 株式会社 NTT ドコモ北海道苫小牧支店様 1678 (3) 経済産業省東北経済産業局(委託先管理法人: 財団法人みやぎ産業 1679 振興機構)様 1680 1681 [1] 事業名(実施年度) 1682 地域新生コンソーシアム研究開発事業(平成14年度~15年度) 1683 [2] テーマ名 1684 組込みシステム・オープンプラットホームの構築とその実用化開発 1685 1686 (4) 宮城県産業技術総合センター様 1687 (5) TOPPERS プロジェクト様 1688 (6) 株式会社ヴィッツ様 1689 (7) 財団法人電気・電子情報学術振興財団様 1690 1691 [1] 第 6 回 LSI IP デザイン・アワード IP 受賞 1692 (2004 年、 平成 16 年 5 月 20 日) 1693 オープンソースの組込みシステム用 TCP/IP 1694 プロトコルスタック : TINET 1695 [2] 第 7 回 LSI IP デザイン・アワード IP 受賞 1696 (2005 年、 平成 17 年 5 月 19 日) 1697 組込みシステム用 IP バージョン 6 対応 TCP/IP 1698 プロトコルスタック : TINET-1.2 1699 1700 (8) 株式会社北斗電子様 1701 (9) 有限会社品川通信計装サービス様 1702 (10) 北海道立工業試験場様 1703 1704 [1] 事業名(実施年度) 1705 重点領域特別研究(平成 17 年度~ 18 年度) 1706 [2] テーマ名 1707 組込みシステム向けネットワーク接続ソフトウェア群の開発 1708 1709 (11) 総務省北海道総合通信局様 1710 1711 [1] 事業名(実施年度) 1712 戦略的情報通信研究開発推進制度【SCOPE】「地域 ICT 振興 1713 型研究開発」(平成 22 年度~平成 23 年度) 1714 [2] テーマ名 1715 ユビキタスサービスプラットフォームに対応した組込みシス 1716 テム用 TCP/IP プロトコルスタックとサポートシステムの研究開発 1717 1718 (12) ルネサスエレクトロニクス株式会社様 1719 1720 (13) 経済産業省北海道経済産業局様 1721 1722 [1] 事業名(実施年度) 1723 中小企業経営支援等対策費補助金「戦略的基盤技術高度化支援事業」 1724 (平成 26 年度~平成 28 年度) 1725 [2] テーマ名 1726 農業機械のさらなる高度化と海外進出に資する 1727 次世代電子制御ソフトウェア基盤の開発 1728 1729 9. ライセンス 1730 1731 TINET は FreeBSD を元に開発を行ったため、 TINET を含むソフトウェアを、 1732 他のソフトウェア開発に使用できない形で再配布する場合(TOPPERS ライセン 1733 ス (3) に規程されている形態)は、 TOPPERS ライセンス (3) の (b) の報告 1734 だけでは不十分で、(a) による方法が必要である。 1735 以下に示す TOPPERS、 FreeBSD および FreeBSD へのソフトウェアの寄贈者 1736 のライセンス規定に従って、再配布に伴うドキュメント(利用者マニュアルな 1737 ど)に、ライセンス表示を行うと。 1930 1738 1931 1739 (1)FreeBSD … … 1995 1803 */ 1996 1804 1997 (3) ã¤ã¼ãµãããã»ãã£ãã¤ã¹ãã©ã¤ã1805 (3)イーサネット・ディバイスドライバ 1998 1806 1999 1807 /* … … 2091 1899 * Graduate School of Information Science, Nagoya Univ., JAPAN 2092 1900 * 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 責ãããã¨ï¼ 1901 * 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 1902 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 1903 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 1904 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 1905 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 1906 * スコード中に含まれていること. 1907 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 1908 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 1909 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 1910 * の無保証規定を掲載すること. 1911 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 1912 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 1913 * と. 1914 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 1915 * 作権表示,この利用条件および下記の無保証規定を掲載すること. 1916 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 1917 * 報告すること. 1918 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 1919 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 1920 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 1921 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 1922 * 免責すること. 2129 1923 * 2130 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 2131 ã 2132 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 2133 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 2134 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 2135 * ã®è²¬ä»»ãè² ããªãï¼ 1924 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 1925 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 1926 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 1927 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 1928 * の責任を負わない. 2136 1929 * 2137 1930 * $Id$ … … 2150 1943 * Graduate School of Information Science, Nagoya Univ., JAPAN 2151 1944 * 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 責ãããã¨ï¼ 1945 * 上記著作権者は,以下の (1)~(4) の条件か,Free Software Foundation 1946 * によって公表されている GNU General Public License の Version 2 に記 1947 * 述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア 1948 * を改変したものを含む.以下同じ)を使用・複製・改変・再配布(以下, 1949 * 利用と呼ぶ)することを無償で許諾する. 1950 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 1951 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 1952 * スコード中に含まれていること. 1953 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 1954 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 1955 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 1956 * の無保証規定を掲載すること. 1957 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 1958 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 1959 * と. 1960 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 1961 * 作権表示,この利用条件および下記の無保証規定を掲載すること. 1962 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 1963 * 報告すること. 1964 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 1965 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 2186 1966 * 2187 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 2188 ã 2189 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ãã®é©ç¨å¯è½æ§ã 2190 * å«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´ 2191 * æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ãã®è²¬ä»»ãè² ããªãï¼ 1967 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 1968 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も 1969 * 含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直 1970 * 接的または間接的に生じたいかなる損害に関しても,その責任を負わない. 2192 1971 * 2193 1972 * @(#) $Id$ … … 2202 1981 * Copyright (C) 2007-2012 by TAKAGI Nobuhisa 2203 1982 * 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 責ãããã¨ï¼ 1983 * 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 1984 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 1985 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 1986 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 1987 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 1988 * スコード中に含まれていること. 1989 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 1990 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 1991 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 1992 * の無保証規定を掲載すること. 1993 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 1994 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 1995 * と. 1996 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 1997 * 作権表示,この利用条件および下記の無保証規定を掲載すること. 1998 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 1999 * 報告すること. 2000 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 2001 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 2002 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 2003 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 2004 * 免責すること. 2240 2005 * 2241 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 2242 ã 2243 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 2244 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 2245 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 2246 * ã®è²¬ä»»ãè² ããªãï¼ 2006 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 2007 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 2008 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 2009 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 2010 * の責任を負わない. 2247 2011 * 2248 2012 */ … … 2256 2020 * Tomakomai National College of Technology, JAPAN 2257 2021 * 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 責ãããã¨ï¼ 2022 * 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 2023 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 2024 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 2025 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 2026 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 2027 * スコード中に含まれていること. 2028 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 2029 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 2030 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 2031 * の無保証規定を掲載すること. 2032 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 2033 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 2034 * と. 2035 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 2036 * 作権表示,この利用条件および下記の無保証規定を掲載すること. 2037 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 2038 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 2039 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 2040 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 2041 * 免責すること. 2290 2042 * 2291 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 2292 ã 2293 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 2294 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 2295 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 2296 * ã®è²¬ä»»ãè² ããªãï¼ 2043 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 2044 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 2045 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 2046 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 2047 * の責任を負わない. 2297 2048 * 2298 2049 * @(#) $Id$ -
Property svn:mime-type
changed from
Note:
See TracChangeset
for help on using the changeset viewer.