Ignore:
Timestamp:
Jul 23, 2017, 2:29:40 PM (7 years ago)
Author:
coas-nagasima
Message:

SVNプロパティを設定

File:
1 edited

Legend:

Unmodified
Added
Removed
  • rubycfg_asp/trunk/asp_dcre/tinet/doc/tinet.txt

    • Property svn:mime-type changed from text/plain to text/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
     41.  TCP/IP プロトコルスタック(TINET)の概要
     5
     6  TINET は、TOPPERS/ASP と TOPPERS/JSP 用の IPv6/IPv4 デュアルスタック
     7の TCP/IP プロトコルスタックである。
     8
     91. 1  機能一覧
     10
     11  以下に、TINET リリース 1.7 の機能一覧を示す。
    1212
    1313   (1)   API
    1414
    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 仕様の拡張機能
    1818
    1919   (2)   TCP
    2020
    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 ヘッダのトレース出力機能(組込み選択可)
    3029
    3130   (3)   UDP
    3231
    33          ãƒ»ãƒŽãƒ³ãƒ–ロッキングコール(組込み選択可)
    34 
    35    (4)   è¿‘隣探索
    36 
    37          ãƒ»è¿‘隣探索要請の送受信
    38          ãƒ»è¿‘隣探索通知の送受信
    39          ãƒ»ãƒ«ãƒ¼ã‚¿é€šçŸ¥ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã®å—ä¿¡
    40          ãƒ»ãƒ«ãƒ¼ã‚¿è¦è«‹ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã®é€ä¿¡
    41          ãƒ»ã‚¢ãƒ‰ãƒ¬ã‚¹é‡è¤‡æ¤œå‡ºæ©Ÿèƒ½
     32         ・ノンブロッキングコール(組込み選択可)
     33
     34   (4)   近隣探索
     35
     36         ・近隣探索要請の送受信
     37         ・近隣探索通知の送受信
     38         ・ルータ通知メッセージの受信
     39         ・ルータ要請メッセージの送信
     40         ・アドレス重複検出機能
    4241
    4342   (5)   ICMPv6
    4443
    45          ãƒ»ã‚¨ã‚³ãƒ¼è¦æ±‚・応答の送受信
    46          ãƒ»ã‚¨ãƒ©ãƒ¼ã®é€ä¿¡ï¼ˆçµ„込み選択可)
    47          ãƒ»å‘け直しメッセージの受信(組込み選択可)
    48          ãƒ»Path MTU
     44         ・エコー要求・応答の送受信
     45         ・エラーの送信(組込み選択可)
     46         ・向け直しメッセージの受信(組込み選択可)
     47         Path MTU
    4948
    5049   (6)   ICMPv4
    5150
    52          ãƒ»ã‚¨ã‚³ãƒ¼è¦æ±‚・応答の送受信
    53          ãƒ»ã‚¨ãƒ©ãƒ¼ã®é€ä¿¡ï¼ˆçµ„込み選択可)
    54          ãƒ»å‘け直しメッセージの受信(組込み選択可)
     51         ・エコー要求・応答の送受信
     52         ・エラーの送信(組込み選択可)
     53         ・向け直しメッセージの受信(組込み選択可)
    5554
    5655   (7)   IPv6
    5756
    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 新規】
    6966
    7067   (8)   IPv4
    7168
    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
     801. 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
     1011. 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            ネットワークインタフェースのドライバ
    122113   tinet/netinet           IPv4/TCP/UDP/ICMP
    123114   tinet/netinet6          IPv6/ICMPv6/NDP
    124115
    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 コンフィグレーションファイル
     1161. 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
     136TINET ユーザズマニュアル                          1. 4  ドキュメント類
     137
     138   tinet_chg.txt           変更メモ
     139   tinet_ether.pdf         TINET-1.4 におけるイーサネットの実装(PDFのみ)
     140
     1412.  TINET コンフィギュレータと TINET コンフィグレーションファイル
    154142
    1551432. 1  TOPPERS/ASP
    156144
    157   TOPPERS/ASP では、 TOPPERS/ASP 用コンフィギュレータを流用するため、
    158 TINET 独自のコンフィギュレータはない。
    159   TOPPERS/ASP 用コンフィギュレータを流用して、TINET コンフィギュレーショ
    160 ãƒ³ãƒ•ã‚¡ã‚¤ãƒ«ï¼ˆæ¨™æº–は tinet_$(APPLNAME).cfg)から以下のファイルを生成する。
     145  TOPPERS/ASP では、 TOPPERS/ASP 用コンフィギュレータを流用するため、
     146TINET 独自のコンフィギュレータはない。
     147  TOPPERS/ASP 用コンフィギュレータを流用して、TINET コンフィギュレーショ
     148ンファイル(標準は tinet_$(APPLNAME).cfg)から以下のファイルを生成する。
    161149
    162150   (1)   tinet_cfg.c
    163          TINET カーネル構成ファイルで、 アプリケーションプログラム、
    164          TINET とå
    165 ±ã«ã‚³ãƒ³ãƒ‘イルしてリンクする。
     151         TINET カーネル構成ファイルで、 アプリケーションプログラム、
     152         TINET と共にコンパイルしてリンクする。
    166153
    167154   (2)   tinet_kern.cfg
    168          TINET å†
    169 éƒ¨ã§ä½¿ç”¨ã™ã‚‹ã‚«ãƒ¼ãƒãƒ«ã‚ªãƒ–ジェクトの静的 API が生成され、
    170          TOPPERS/ASP システムコンフィギュレーションファイル(標準は
    171          $(APPLNAME).cfg)にインクルードする。
     155         TINET 内部で使用するカーネルオブジェクトの静的 API が生成され、
     156         TOPPERS/ASP システムコンフィギュレーションファイル(標準は
     157         $(APPLNAME).cfg)にインクルードする。
    172158
    173159   (3)   tinet_cfg.h
    174          TINET å†
    175 éƒ¨ã§ä½¿ç”¨ã™ã‚‹ã‚«ãƒ¼ãƒãƒ«ã‚ªãƒ–ジェクトの ID 自動割付結果ファ
    176          ã‚¤ãƒ«ã§ã‚る。
     160         TINET 内部で使用するカーネルオブジェクトの ID 自動割付結果ファ
     161         イルである。
    177162
    1781632. 2  TOPPERS/JSP
    179164
    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 では
     166tinet_cfg.exe) であり、ターゲットには依存していない。 TINET コンフィグ
     167レータの生成については「8. TOPPERS/JSP 環境におけるインストールとファ
     168イルの作成・変更 」を参照すること。
     169  TOPPERS/JSP 用 TINET コンフィギュレータは TINET コンフィギュレーショ
     170ンファイル(標準は tinet_$(UNAME).cfg)から以下のファイルを生成する。
    187171
    188172   (1)   tinet_cfg.c
    189          TINET カーネル構成ファイルで、 アプリケーションプログラム、
    190          TINET とå
    191 ±ã«ã‚³ãƒ³ãƒ‘イルしてリンクする。
     173         TINET カーネル構成ファイルで、 アプリケーションプログラム、
     174         TINET と共にコンパイルしてリンクする。
    192175
    193176   (2)   tinet_kern.cfg
    194          TINET å†
    195 éƒ¨ã§ä½¿ç”¨ã™ã‚‹ã‚«ãƒ¼ãƒãƒ«ã‚ªãƒ–ジェクトの静的 API が生成され、
    196          TOPPERS/JSP システムコンフィギュレーションファイル(標準は
    197          $(UNAME).cfg)にインクルードする。
     177         TINET 内部で使用するカーネルオブジェクトの静的 API が生成され、
     178         TOPPERS/JSP システムコンフィギュレーションファイル(標準は
     179         $(UNAME).cfg)にインクルードする。
    198180
    199181   (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
     1853.  ITRON TCP/IP API仕様
     186
     1873. 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 アドレス */
    217197            struct t_in6_addr {
    218198                union {
     
    224204           
    225205            typedef struct t_ipv6ep {
    226                 T_IN6_ADDR    ipaddr;        /* IPv6 アドレス */
    227                 uint16_t      portno;        /* ポート番号    */
     206                T_IN6_ADDR    ipaddr;        /* IPv6 アドレス */
     207                uint16_t      portno;        /* ポート番号    */
    228208                } T_IPV6EP;
    229209
    230    (2)   1.5.1 データ構造/データ型 (2) オブジェクト生成用のデータ構造
     210   (2)   1.5.1 データ構造/データ型 (2) オブジェクト生成用のデータ構造
    231211
    232212            typedef struct t_tcp6_crep {
    233                 /* 標準 */
    234                 ATR         repatr;        /* 受付口属性        */
    235                 T_IPV6EP    myaddr;        /* 自分のアドレス    */
    236                 /* 実è£
    237 ä¾å­˜ */
     213                /* 標準 */
     214                ATR         repatr;        /* 受付口属性        */
     215                T_IPV6EP    myaddr;        /* 自分のアドレス    */
     216                /* 実装依存 */
    238217                } T_TCP6_CREP;
    239218
    240    (3)   1.5.1 データ構造/データ型 (5) 特殊な IP アドレスとポート番号
     219   (3)   1.5.1 データ構造/データ型 (5) 特殊な IP アドレスとポート番号
    241220
    242221            #define IPV6_ADDR_UNSPECIFIED_INIT    \
     
    245224            #define IPV6_ADDRANY        IPV6_ADDR_UNSPECIFIED_INIT
    246225
    247    (4)   2.2 TCP 受付口の生成/削除
    248          ã€é™çš„ API】
     226   (4)   2.2 TCP 受付口の生成/削除
     227         【静的 API】
    249228               TCP6_CRE_REP(ID repid, { ATR repatr,
    250229                                      { T_IN6_ADDR myipaddr, uint16_t myportno } } );
    251230
    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】
    260238               ER ercd = tcp6_acp_cep(ID cepid, ID repid,
    261239                                      T_IPV6EP *p_dstaddr, TMO tmout);
    262240
    263          ã€API の機能】
    264                  p_dstaddr の型が、 T_IPV6EP* になった以外は、 ITRON
    265                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】
    269247               ER ercd = tcp6_con_cep(ID cepid, T_IPV6EP *p_myaddr,
    270248                                      T_IPV6EP *p_dstaddr, TMO tmout);
    271249
    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】
    278256               UDP6_CRE_CEP(ID cepid, { ATR cepatr,
    279257                                      { T_IN6_ADDR myipaddr, uint16_t myportno },
    280258                                        FP callback } );
    281259
    282          ã€æ©Ÿèƒ½ã€‘
    283                  myipaddr の型が T_IN6_ADDR になった以外は、 ITRON
    284                TCP/IP API 仕様と同じである。myipaddr には IPV6_ADDRANY
    285                ã‚’指定できる。
    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】
    289267               ER ercd = udp6_snd_dat(ID cepid, T_IPV6EP *p_dstaddr,
    290268                                      void *data, int_t len, TMO tmout);
    291269
    292          ã€æ©Ÿèƒ½ã€‘
    293                  p_dstaddr の型が、 T_IPV6EP* になった以外は、 ITRON
    294                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】
    298276               ER ercd = udp6_rcv_dat(ID cepid, T_IPV6EP *p_dstaddr,
    299277                                      void *data, int_t len, TMO tmout);
    300278
    301          ã€æ©Ÿèƒ½ã€‘
    302                  p_dstaddr の型が、 T_IPV6EP* になった以外は、 ITRON
    303                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
     2833. 2  サポートするオブジェクトの定義
     284
     285  サポートするオブジェクトの定義は、以下に示す ITRON TCP/IP API 仕様の
     286静的 API、 暫定的な ITRON TCP/IP(バージョン 6)API 仕様の静的 API、
     287TINET 独自の静的 API、ファイルのインクルードである。
     288
     289   (1)   TCP 受付口(IPv4)
     290         【静的 API】
    313291               TCP_CRE_REP(ID repid, { ATR repatr,
    314292                                     { uint32_t myipaddr, uint16_t myportno } } );
    315293
    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               に出力される。
    328305                     const ID tmax_tcp_repid =
    329306                              (TMIN_TCP_REPID + TNUM_TCP_REPID - 1);
    330307
    331    (2)   TCP 通信端点(IPv4)
    332          ã€é™çš„ API】
     308   (2)   TCP 通信端点(IPv4)
     309         【静的 API】
    333310               TCP_CRE_CEP(ID cepid, { ATR cepatr, void *sbuf, int_t sbufsz,
    334311                                                   void *rbuf, int_t rbufsz,
    335312                                                   FP callback } );
    336313
    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 に出力される。
    349325                     const ID tmax_tcp_cepid =
    350326                              (TMIN_TCP_CEPID + TNUM_TCP_CEPID - 1);
    351327
    352    (3)   UDP 通信端点(IPv4)
    353          ã€é™çš„ API】
     328   (3)   UDP 通信端点(IPv4)
     329         【静的 API】
    354330               UDP_CRE_CEP(ID cepid, { ATR cepatr,
    355331                                     { uint32_t myipaddr, uint16_t myportno },
    356332                                       FP callback } );
    357333
    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 に出力される。
    370345                     const ID tmax_udp_cepid =
    371346                              (TMIN_UDP_CEPID + TNUM_UDP_CEPID - 1);
    372347
    373    (4)   TCP 受付口(IPv6)
    374          ã€é™çš„ API】
     348   (4)   TCP 受付口(IPv6)
     349         【静的 API】
    375350               TCP6_CRE_REP(ID repid, { ATR repatr,
    376351                                      { T_IN6_ADDR myipaddr, uint16_t myportno } } );
    377352
    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               に出力される。
    392366                     const ID tmax_tcp_repid =
    393367                              (TMIN_TCP_REPID + TNUM_TCP_REPID - 1);
    394368
    395    (5)   TCP 通信端点(IPv6)
    396          ã€é™çš„ API】
     369   (5)   TCP 通信端点(IPv6)
     370         【静的 API】
    397371               TCP6_CRE_CEP(ID cepid, { ATR cepatr, void *sbuf, int_t sbufsz,
    398372                                                    void *rbuf, int_t rbufsz,
    399373                                                    FP callback } );
    400374
    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 に出力される。
    414387                     const ID tmax_tcp_cepid =
    415388                              (TMIN_TCP_CEPID + TNUM_TCP_CEPID - 1);
    416389
    417    (6)   UDP 通信端点(IPv6)
    418          ã€é™çš„ API】
     390   (6)   UDP 通信端点(IPv6)
     391         【静的 API】
    419392               UDP6_CRE_CEP(ID cepid, { ATR cepatr,
    420393                                      { T_IN6_ADDR myipaddr, uint16_t myportno },
    421394                                        FP callback } );
    422395
    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 に出力される。
    437409                     const ID tmax_udp_cepid =
    438410                              (TMIN_UDP_CEPID + TNUM_UDP_CEPID - 1);
    439411
    440    (7)   TCP 受付口の予約 ID(IPv4、TINET 独自)
    441          ã€é™çš„ API】
     412   (7)   TCP 受付口の予約 ID(IPv4、TINET 独自)
     413         【静的 API】
    442414               VRID_TCP_REP(ID repid);
    443415
    444          ã€ãƒ‘ラメータ】
    445                ID        repid     äºˆç´„するTCP受付口ID
    446 
    447    (8)   TCP 通信端点の予約 ID(IPv4、TINET 独自)
    448          ã€é™çš„ API】
     416         【パラメータ】
     417               ID        repid     予約するTCP受付口ID
     418
     419   (8)   TCP 通信端点の予約 ID(IPv4、TINET 独自)
     420         【静的 API】
    449421               VRID_TCP_CEP(ID cepid);
    450422
    451          ã€ãƒ‘ラメータ】
    452                ID        repid     äºˆç´„するTCP通信端点ID
    453 
    454    (9)   UDP 通信端点の予約 ID(IPv4、TINET 独自)
    455          ã€é™çš„ API】
     423         【パラメータ】
     424               ID        repid     予約するTCP通信端点ID
     425
     426   (9)   UDP 通信端点の予約 ID(IPv4、TINET 独自)
     427         【静的 API】
    456428               VRID_UDP_CEP(ID cepid);
    457429
    458          ã€ãƒ‘ラメータ】
    459                ID        repid     äºˆç´„するUDP通信端点ID
    460 
    461    (10)  TCP 受付口の予約 ID(IPv6、TINET 独自)
    462          ã€é™çš„ API】
     430         【パラメータ】
     431               ID        repid     予約するUDP通信端点ID
     432
     433   (10)  TCP 受付口の予約 ID(IPv6、TINET 独自)
     434         【静的 API】
    463435               VRID_TCP6_REP(ID repid);
    464436
    465          ã€ãƒ‘ラメータ】
    466                ID        repid     äºˆç´„するTCP受付口ID
    467 
    468    (11)  TCP 通信端点の予約 ID(IPv6、TINET 独自)
    469          ã€é™çš„ API】
     437         【パラメータ】
     438               ID        repid     予約するTCP受付口ID
     439
     440   (11)  TCP 通信端点の予約 ID(IPv6、TINET 独自)
     441         【静的 API】
    470442               VRID_TCP6_CEP(ID cepid);
    471443
    472          ã€ãƒ‘ラメータ】
    473                ID        repid     äºˆç´„するTCP通信端点ID
    474 
    475    (12)  UDP 通信端点の予約 ID(IPv6、TINET 独自)
    476          ã€é™çš„ API】
     444         【パラメータ】
     445               ID        repid     予約するTCP通信端点ID
     446
     447   (12)  UDP 通信端点の予約 ID(IPv6、TINET 独自)
     448         【静的 API】
    477449               VRID_UDP6_CEP(ID cepid);
    478450
    479          ã€ãƒ‘ラメータ】
    480                ID        repid     äºˆç´„するUDP通信端点ID
    481 
    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
     4544.  ITRON TCP/IP API 拡張機能
     455
     456  TINET リリース 1.3 までは、ITRON TCP/IP API の標準機能のみに対応して
     457いたが、 リリース 1.4 からは、拡張機能にも対応した。ただし、応用プログ
     458ラムから使用する場合は、以下に示すコンパイル時コンフィギュレーションパ
     459ラメータを指定しなければならない。
    488460
    489461   (1)   TCP_CFG_EXTENTIONS
    490          ITRON TCP/IP API の TCP の拡張機能を有効にする。
     462         ITRON TCP/IP API の TCP の拡張機能を有効にする。
    491463
    492464   (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
     4674. 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 の書式を以下に示す。
    527497
    528498                  VRID_TCP_REP(ID repid);
    529499
    530                ãƒ‘ラメータ repid は予約する TCP 受付口 ID であり、 一般
    531                çš„には、 TINET コンフィグレーションファイルに以下のよう
    532                ã«æŒ‡å®šã™ã‚‹ã€‚
     500               パラメータ repid は予約する TCP 受付口 ID であり、 一般
     501               的には、 TINET コンフィグレーションファイルに以下のよう
     502               に指定する。
    533503
    534504                  VRID_TCP_REP (TCP_RSV_REPID1);
    535505
    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)に、 対応するマクロ定義が以下のように出力される。
    541510
    542511                  #define TCP_RSV_REPID1  1
    543512
    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               場合の例を以下に示す。
    551518
    552519                  T_TCP_CREP crep;
     
    555522                  crep.myaddr.ipaddr = IPV4_ADDRANY;
    556523
    557                ã¾ãŸ IPv6 の場合の例を以下に示す。
     524               また IPv6 の場合の例を以下に示す。
    558525
    559526                  T_TCP6_CREP crep;
     
    562529                  memcpy(&crep.myaddr.ipaddr, &ipv6_addrany, sizeof(T_IN6_ADDR));
    563530
    564                ã„ずれも、 受付ける自分の IP アドレスは規定値(å
    565 ¨ã¦ï¼‰ã§ã‚る。
    566                  æ¬¡ã«ã€tcp_cre_rep の書式を示す。
     531               いずれも、 受付ける自分の IP アドレスは規定値(全て)である。
     532                 次に、tcp_cre_rep の書式を示す。
    567533
    568534                  ER ercd = tcp_cre_rep(ID repid, T_TCP_CREP *pk_crep);
    569535
    570                ãƒ‘ラメータ repid には [1] で予約した TCP 受付口 ID を指
    571                å®šã—、pk_crep には上記で設定済みの TCP 受付口生成æƒ
    572 å ±ã¸
    573                ã®ãƒã‚¤ãƒ³ã‚¿ã‚’指定する。一般的な例を以下に示す。
     536               パラメータ repid には [1] で予約した TCP 受付口 ID を指
     537               定し、pk_crep には上記で設定済みの TCP 受付口生成情報へ
     538               のポインタを指定する。一般的な例を以下に示す。
    574539
    575540                  ercd = tcp_cre_rep(TCP_RSV_REPID1, &crep);
    576541
    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 の書式を示す。
    587549
    588550                  ER ercd = tcp_acp_cep(ID cepid, ID repid,
    589551                                        T_IPV4EP *p_dstaddr, TMO tmout);
    590552
    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 の書式を示す。
    605565
    606566                  ER ercd = tcp_del_rep(ID cepid);
    607567
    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 の書式を以下に示す。
    623581
    624582                  VRID_TCP_CEP(ID cepid);
    625583
    626                ãƒ‘ラメータ cepid は予約する TCP 通信端点 ID であり、 一
    627                èˆ¬çš„には、 TINET コンフィグレーションファイルに以下のよ
    628                ã†ã«æŒ‡å®šã™ã‚‹ã€‚
     584               パラメータ cepid は予約する TCP 通信端点 ID であり、 一
     585               般的には、 TINET コンフィグレーションファイルに以下のよ
     586               うに指定する。
    629587
    630588                  VRID_TCP_CEP (TCP_RSV_CEPID1);
    631589
    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)に、 対応するマクロ定義が以下のように出力される。
    637594
    638595                  #define TCP_RSV_CEPID1  1
    639596
    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               的な例を以下に示す。
    647602
    648603                  T_TCP_CCEP ccep;
     
    654609                  ccep.callback = (FP)callback_nblk_tcp_echo_srv;
    655610
    656                æ¬¡ã«ã€tcp_cre_cep の書式を示す。
     611               次に、tcp_cre_cep の書式を示す。
    657612
    658613                  ER ercd = tcp_cre_cep(ID cepid, T_TCP_CCEP *pk_ccep);
    659614
    660                ãƒ‘ラメータ cepid には [1] で予約した TCP 通信端点 ID を
    661                æŒ‡å®šã—、pk_ccep には上記で設定済みの TCP 通信端点生成æƒ
    662 
    663                å ±ã¸ã®ãƒã‚¤ãƒ³ã‚¿ã‚’指定する。 一般的な例を以下に示す。
     615               パラメータ cepid には [1] で予約した TCP 通信端点 ID を
     616               指定し、pk_ccep には上記で設定済みの TCP 通信端点生成情
     617               報へのポインタを指定する。 一般的な例を以下に示す。
    664618
    665619                  ercd = tcp_cre_cep(TCP_RSV_CEPID1, &ccep);
    666620
    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               の書式を示す。
    681634
    682635                  ER ercd = tcp_del_cep(ID cepid);
    683636
    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 の書式を以下に示す。
    692645
    693646                  ER_UINT ercd = tcp_snd_oob(ID cepid, void *data, int_t len, TMO tmout);
    694647
    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 の書式を以下に示す。
    708660
    709661                  ER_UINT ercd = tcp_rcv_oob(ID cepid, void *data, int_t len);
    710662
    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]   コンパイル時コンフィギュレーションパラメータ
    730680
    731681                  TCP_CFG_URG_OFFSET
    732682
    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
     6934. 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 の書式を以下に示す。
    769716
    770717                  VRID_UDP_CEP(ID cepid);
    771718
    772                ãƒ‘ラメータ cepid は予約する UDP 通信端点 ID であり、 一
    773                èˆ¬çš„には、 TINET コンフィグレーションファイルに以下のよ
    774                ã†ã«æŒ‡å®šã™ã‚‹ã€‚
     719               パラメータ cepid は予約する UDP 通信端点 ID であり、 一
     720               般的には、 TINET コンフィグレーションファイルに以下のよ
     721               うに指定する。
    775722
    776723                  VRID_UDP_CEP (UDP_RSV_CEPID1);
    777724
    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)に、 対応するマクロ定義が以下のように出力される。
    783729
    784730                  #define UDP_RSV_CEPID1  1
    785731
    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 の場合の例を以下に示す。
    795738
    796739                  T_UDP_CCEP ccep;
     
    799742                  ccep.myaddr.ipaddr = IPV4_ADDRANY;
    800743
    801                ã¾ãŸ IPv6 の場合の例を以下に示す。
     744               また IPv6 の場合の例を以下に示す。
    802745
    803746                  T_UDP_CCEP ccep;
     
    806749                  memcpy(&ccep.myaddr.ipaddr, &ipv6_addrany, sizeof(T_IN6_ADDR));
    807750
    808                ã„ずれも、 受付ける自分の IP アドレスは規定値(å
    809 ¨ã¦ï¼‰ã§ã‚る。
    810                  æ¬¡ã«ã€udp_cre_cep の書式を示す。
     751               いずれも、 受付ける自分の IP アドレスは規定値(全て)である。
     752                 次に、udp_cre_cep の書式を示す。
    811753
    812754                  ER ercd = udp_cre_cep(ID cepid, T_UDP_CCEP *pk_ccep);
    813755
    814                ãƒ‘ラメータ cepid には [1] で予約した UDP 通信端点 ID を
    815                æŒ‡å®šã—、pk_ccep には上記で設定済みの UDP 通信端点生成æƒ
    816 
    817                å ±ã¸ã®ãƒã‚¤ãƒ³ã‚¿ã‚’指定する。 一般的な例を以下に示す。
     756               パラメータ cepid には [1] で予約した UDP 通信端点 ID を
     757               指定し、pk_ccep には上記で設定済みの UDP 通信端点生成情
     758               報へのポインタを指定する。 一般的な例を以下に示す。
    818759
    819760                  ercd = udp_cre_cep(UDP_RSV_CEPID1, &ccep);
    820761
    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 の書式を示す。
    839777
    840778                  ER ercd = udp_del_cep(ID cepid);
    841779
    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
     7875.  ルーティングの設定
     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         パラメータ定義ファイルで定義する。
    868803
    869804         [1]   NUM_IN6_STATIC_ROUTE_ENTRY
    870                IPv6 用のルーティング表の静的ルーティングエントリ数を指
    871                å®šã™ã‚‹ã€‚
     805               IPv6 用のルーティング表の静的ルーティングエントリ数を指
     806               定する。
    872807         [2]   NUM_IN6_REDIRECT_ROUTE_ENTRY
    873                IPv6 用のルーティング表で予め確保する、向け直し(ICMP)
    874                ã«ã‚ˆã‚‹ãƒ«ãƒ¼ãƒ†ã‚£ãƒ³ã‚°ã‚¨ãƒ³ãƒˆãƒªæ•°ã‚’指定する。 0 を指定すると、
    875                å‘け直し(ICMPv6)を無視する。
     808               IPv6 用のルーティング表で予め確保する、向け直し(ICMP)
     809               によるルーティングエントリ数を指定する。 0 を指定すると、
     810               向け直し(ICMPv6)を無視する。
    876811         [3]   NUM_IN4_STATIC_ROUTE_ENTRY
    877                IPv4 用のルーティング表の静的ルーティングエントリ数を指
    878                å®šã™ã‚‹ã€‚
     812               IPv4 用のルーティング表の静的ルーティングエントリ数を指
     813               定する。
    879814         [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         例を以下に示す。
    896831
    897832            { { { 0xfe, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x41,
    898833                  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } } }
    899834
    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           以下のインクルードファイルを指定すること。
    914848
    915849         [1]   TOPPERS/ASP
     
    930864                  #include <netinet/in_var.h>
    931865
    932    (5)   ãƒ«ãƒ¼ãƒ†ã‚£ãƒ³ã‚°è¡¨ã‚¨ãƒ³ãƒˆãƒªé
    933 åˆ—(IPv6)
    934            ä»¥ä¸‹ã®ã‚ˆã†ã«æŒ‡å®šã™ã‚‹ã“と。
     866   (5)   ルーティング表エントリ配列(IPv6)
     867           以下のように指定すること。
    935868
    936869            T_IN6_RTENTRY routing6_tbl[NUM_ROUTE_ENTRY] = {
    937                 <ルーティング表エントリ構造体 1>,
    938                 <ルーティング表エントリ構造体 2>,
     870                <ルーティング表エントリ構造体 1>,
     871                <ルーティング表エントリ構造体 2>,
    939872                ...
    940                 <ルーティング表エントリ構造体 n>,
     873                <ルーティング表エントリ構造体 n>,
    941874                };
    942875
    943    (6)   ãƒ«ãƒ¼ãƒ†ã‚£ãƒ³ã‚°è¡¨ã‚¨ãƒ³ãƒˆãƒªé
    944 åˆ—(IPv4)
    945            ä»¥ä¸‹ã®ã‚ˆã†ã«æŒ‡å®šã™ã‚‹ã“と。
     876   (6)   ルーティング表エントリ配列(IPv4)
     877           以下のように指定すること。
    946878
    947879            T_IN4_RTENTRY routing4_tbl[NUM_ROUTE_ENTRY] = {
    948                 <ルーティング表エントリ構造体 1>,
    949                 <ルーティング表エントリ構造体 2>,
     880                <ルーティング表エントリ構造体 1>,
     881                <ルーティング表エントリ構造体 2>,
    950882                ...
    951                 <ルーティング表エントリ構造体 n>,
     883                <ルーティング表エントリ構造体 n>,
    952884                };
    953885
    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
     8916.  TINET 独自機能
     892
     8936. 1  タスクからの Time Wait 状態の TCP 通信端点分離機能
     894
     895  TCP 通信端点は、ソケットインタフェースにおけるファイルディスクリプタ
     896と異なり、 TCP の接続状態が完全に終了するまで再利用可能とはならない。
     897TCP/IP プロトコルの仕様に従うと、 接続状態が完全に終了するまで数分かか
     898る場合がある。問題になるのは、先に、TCP 通信端点のコネクション切断 API
     899の tcp_sht_cep を呼出し、 コネクションを切断する場合である。 この時、
     900tcp_sht_cep で指定された TCP 通信端点は、最終的に Time Wait 状態になり、
     901TCP 通信端点のクローズ API の tcp_cls_cep を呼出したタスクも、タイムア
     902ウト待ち状態になる。従って、サーバ側から切断する応用プログラム(WWW な
     903ど)のタスクでは、タイムアウトするまで、次の接続要求を受信することがで
     904きない。
     905  これに対応するため、 TINET は、終了待ちの TCP 通信端点をタスクから切
     906り離すことにより、タスクが待ち状態にならないようにする機能を持っており、
     907有効にするためには、 コンパイル時コンフィギュレーションパラメータ
     908NUM_TCP_TW_CEP_ENTRY を tinet_app_config.h 等に指定し、 確保する TW 用
     909TCP 通信端点の数(1 以上の値)を定義する。
     910  TCP 通信端点が Time Wait になると、TCP 通信端点から、 Time Wait に必
     911要な通信管理データを TW 用 TCP 通信端点にコピーし、元の TCP 通信端点を
     912開放する。 これに伴って、 タスクも待ち状態から開放される。 また、TW 用
     913TCP 通信端点には Time Wait に必要な通信管理データのみをコピーすること
     914で、メモリの消費を抑えている。
     915  ただし、この機能を有効にしていても、コネクションの同時切断のタイミン
     916グによっては、分離されない場合がある。
     917
     9186. 2  受信ウィンドバッファの省コピー機能
     919
     920  ITRON TCP/IP API 仕様では、TCP 通信端点を生成する静的 API で、受信ウ
     921インドバッファの先頭アドレスの指定に、 NADR を指定すると、プロトコルス
     922タックで、 受信ウインドバッファを確保することになっている。
     923  TINET では、ネットワークバッファを、受信ウインドバッファとすることで、
     924NADR の指定に対応している。 さらに、ネットワークインタフェースで受信し
     925たプロトルコデータを保持するネットワークバッファを、そのまま受信ウイン
     926ドバッファとすることで、ネットワークインタフェースと、TINET 内部で、デー
     927タのコピーを省いている。特に、 省コピー API を使用することにより、 API
     928におけるデータのコピーも行わないことも可能である。
     929  この機能に関係するコンパイル時コンフィギュレーションパラメータを、以
     930下に示す。
    1019931
    1020932   (1)   TCP_CFG_RWBUF_CSAVE_ONLY
    1021          TCP 通信端点の受信ウィンドバッファの省コピー機能を組込み、 こ
    1022          ã®æ©Ÿèƒ½ã®ã¿ä½¿ç”¨ã™ã‚‹ã€‚TCP 通信端点を生成する静的 API で、受信ウ
    1023          ã‚¤ãƒ³ãƒ‰ãƒãƒƒãƒ•ã‚¡ã®å
    1024 ˆé ­ã‚¢ãƒ‰ãƒ¬ã‚¹ã®æŒ‡å®šã«ã€ 応用プログラムが用意し
    1025          ãŸãƒãƒƒãƒ•ã‚¡ã‚’指定しても無視する。
     933         TCP 通信端点の受信ウィンドバッファの省コピー機能を組込み、 こ
     934         の機能のみ使用する。TCP 通信端点を生成する静的 API で、受信ウ
     935         インドバッファの先頭アドレスの指定に、 応用プログラムが用意し
     936         たバッファを指定しても無視する。
    1026937
    1027938   (2)   TCP_CFG_RWBUF_CSAVE
    1028          TCP 通信端点の受信ウィンドバッファの省コピー機能を組込む。TCP
    1029          é€šä¿¡ç«¯ç‚¹ã‚’生成する静的 API で、受信ウインドバッファのå
    1030 ˆé ­ã‚¢ãƒ‰
    1031          ãƒ¬ã‚¹ã®æŒ‡å®šã«ã€NADR を指定した場合は、受信ウィンドバッファの省
    1032          ã‚³ãƒ”ー機能を使用するが、 応用プログラムが用意したバッファを指
    1033          å®šã—た場合は、 受信ウィンドバッファの省コピー機能を使用しない。
     939         TCP 通信端点の受信ウィンドバッファの省コピー機能を組込む。TCP
     940         通信端点を生成する静的 API で、受信ウインドバッファの先頭アド
     941         レスの指定に、NADR を指定した場合は、受信ウィンドバッファの省
     942         コピー機能を使用するが、 応用プログラムが用意したバッファを指
     943         定した場合は、 受信ウィンドバッファの省コピー機能を使用しない。
    1034944
    1035945   (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
     9556. 3  送信ウィンドバッファの省コピー機能
     956
     957  ITRON TCP/IP API 仕様では、TCP 通信端点を生成する静的 API で、受信ウ
     958インドバッファと同様に、 送信ウインドバッファの先頭アドレスの指定に、
     959NADR を指定すると、 プロトコルスタックで、送信ウインドバッファを確保す
     960ることになっている。
     961  TINET では、ネットワークバッファを、送信ウインドバッファとすることで、
     962NADR の指定に対応している。さらに、 書込まれたデータの前に必要なヘッダ
     963を付加して、そのままネットワークインタフェースに渡すことにより、ネット
     964ワークインタフェースと、TINET 内部で、データのコピーを省いている。特に、
     965省コピー API を使用することで、 API におけるデータのコピーも行わないこ
     966とも可能である。
     967  ただし、 イーサネット出力時に、 NIC でネットワークバッファを開放する
     968(コンパイル時コンフィギュレーションパラメータ
     969ETHER_NIC_CFG_RELEASE_NET_BUF を、指定する必要がある)ディバイスドライ
     970バでは、 この送信ウィンドバッファの省コピー機能を利用することはできない。
     971  この機能に関係するコンパイル時コンフィギュレーションパラメータを、以
     972下に示す。
    1068973
    1069974   (1)   TCP_CFG_SWBUF_CSAVE_ONLY
    1070          TCP 通信端点の送信ウィンドバッファの省コピー機能を組込み、 こ
    1071          ã®æ©Ÿèƒ½ã®ã¿ä½¿ç”¨ã™ã‚‹ã€‚TCP 通信端点を生成する静的 API で、送信ウ
    1072          ã‚¤ãƒ³ãƒ‰ãƒãƒƒãƒ•ã‚¡ã®å
    1073 ˆé ­ã‚¢ãƒ‰ãƒ¬ã‚¹ã®æŒ‡å®šã«ã€ 応用プログラムが用意し
    1074          ãŸãƒãƒƒãƒ•ã‚¡ã‚’指定しても無視する。
     975         TCP 通信端点の送信ウィンドバッファの省コピー機能を組込み、 こ
     976         の機能のみ使用する。TCP 通信端点を生成する静的 API で、送信ウ
     977         インドバッファの先頭アドレスの指定に、 応用プログラムが用意し
     978         たバッファを指定しても無視する。
    1075979
    1076980   (2)   TCP_CFG_SWBUF_CSAVE
    1077          TCP 通信端点の送信ウィンドバッファの省コピー機能を組込む。TCP
    1078          é€šä¿¡ç«¯ç‚¹ã‚’生成する静的 API で、送信ウインドバッファのå
    1079 ˆé ­ã‚¢ãƒ‰
    1080          ãƒ¬ã‚¹ã®æŒ‡å®šã«ã€NADR を指定した場合は、送信ウィンドバッファの省
    1081          ã‚³ãƒ”ー機能を使用するが、 応用プログラムが用意したバッファを指
    1082          å®šã—た場合は、 送信ウィンドバッファの省コピー機能を使用しない。
     981         TCP 通信端点の送信ウィンドバッファの省コピー機能を組込む。TCP
     982         通信端点を生成する静的 API で、送信ウインドバッファの先頭アド
     983         レスの指定に、NADR を指定した場合は、送信ウィンドバッファの省
     984         コピー機能を使用するが、 応用プログラムが用意したバッファを指
     985         定した場合は、 送信ウィンドバッファの省コピー機能を使用しない。
    1083986
    1084987   (3)   TCP_CFG_SWBUF_CSAVE_MAX_SIZE
    1085          TCP 通信端点の送信ウィンドバッファの省コピー機能で、 送信ウィ
    1086          ãƒ³ãƒ‰ãƒãƒƒãƒ•ã‚¡ã«ä½¿ç”¨ã™ã‚‹ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ãƒãƒƒãƒ•ã‚¡ã®æœ€å¤§ã‚µã‚¤ã‚ºã§ã‚り、
    1087          æ¨™æº–値は IF_PDU_SIZE である。
     988         TCP 通信端点の送信ウィンドバッファの省コピー機能で、 送信ウィ
     989         ンドバッファに使用するネットワークバッファの最大サイズであり、
     990         標準値は IF_PDU_SIZE である。
    1088991
    1089992   (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
     10016. 4  ノンブロッキングコールの無効化
     1002
     1003  応用プロクラムで、 ノンブロッキングコールを使用しない場合は、 TCP と
     1004UDP のノンブロッキングコール機能を組込まないで、メモリを節約することが
     1005できる。
     1006  この機能に関係するコンパイル時コンフィギュレーションパラメータを、以
     1007下に示す。
    11061008
    11071009   (1)   TCP_CFG_NON_BLOCKING
    1108          TCP のノンブロッキングコール機能を組込む。
     1010         TCP のノンブロッキングコール機能を組込む。
    11091011
    11101012   (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ただし、 過去のリリースとの互換性のため、 どちらのパラメータも、
     1016tinet/tinet_config.h に指定されており、 既定では、ノンブロッキングコー
     1017ル機能が組込まれるようになっている。 なお、 サンプルアプリケーションの
     1018tinet_app_config.h には、 指定を解除するマクロが定義されている。組込ま
     1019ない場合は、以下のマクロを Makefile に定義する。
    11181020
    11191021   UNDEF_TCP_CFG_NON_BLOCKING
    11201022   UNDEF_UDP_CFG_NON_BLOCKING
    11211023
    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 ã«ç¤ºã™ã€‚
     10246. 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
     10356. 6  TCP ヘッダのトレース出力機能
     1036
     1037  送受信する TCP セグメントの TCP ヘッダと TCP 通信端点の情報を出力す
     1038る機能である。なお、 CONSOLE_PORTID で指定されるシリアルポートに直接出
     1039力するので、 SYSLOG 出力が乱れることがある。受信時の出力例と意味を以下
     1040に示す。
    11441041
    11451042   <I 329.599=c: 4 s:CW f:60c00:--A---- a: 74461 s: 76082 w:58400 l:   0=
    11461043
    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  送信時の出力例と意味を以下に示す。
    11671059
    11681060   =O 329.627=c: 4 s:CW f:60d20:--AP--- s: 74461 a: 76082 w: 2920 l:1460>
    11691061
    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下に示す。
    11911078
    11921079   (1)   TCP_CFG_TRACE
    1193          TCP ヘッダのトレース出力機能を組込む。
     1080         TCP ヘッダのトレース出力機能を組込む。
    11941081
    11951082   (2)   TCP_CFG_TRACE_IPV4_RADDR
    1196          ãƒˆãƒ¬ãƒ¼ã‚¹å‡ºåŠ›å¯¾è±¡ã®ãƒªãƒ¢ãƒ¼ãƒˆãƒ›ã‚¹ãƒˆã® IPv4 アドレスを指定する。
    1197          IPV4_ADDRANY を指定すると、å
    1198 ¨ã¦ã®ãƒ›ã‚¹ãƒˆã‚’対象とする。
     1083         トレース出力対象のリモートホストの IPv4 アドレスを指定する。
     1084         IPV4_ADDRANY を指定すると、全てのホストを対象とする。
    11991085
    12001086   (3)   TCP_CFG_TRACE_LPORTNO
    1201          ãƒˆãƒ¬ãƒ¼ã‚¹å‡ºåŠ›å¯¾è±¡ã®ãƒ­ãƒ¼ã‚«ãƒ«ãƒ›ã‚¹ãƒˆã®ãƒãƒ¼ãƒˆç•ªå·ã‚’指定する。
    1202          TCP_PORTANY を指定すると、å
    1203 ¨ã¦ã®ãƒãƒ¼ãƒˆç•ªå·ã‚’対象にする。
     1087         トレース出力対象のローカルホストのポート番号を指定する。
     1088         TCP_PORTANY を指定すると、全てのポート番号を対象にする。
    12041089
    12051090   (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
     10946. 7  IPv6におけるアドレス管理とPath MTUへの対応
     1095
     1096  TINET リリース 1.3 まで、IPv6 におけるアドレス管理は限定的な対応のみ
     1097であり、 Path MTU にも対応していなかったが、ホスト情報のキャッシュを実
     1098装することにより、TINET リリース 1.4 からは、ほぼ完全に対応した。
     1099  この機能に関係するコンパイル時コンフィギュレーションパラメータを、以
     1100下に示す。
    12201101
    12211102   (1)   NUM_IN6_IFADDR_ENTRY
    1222          ã‚¤ãƒ³ã‚¿ãƒ•ã‚§ãƒ¼ã‚¹ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ãƒªã‚¹ãƒˆï¼ˆIPv6)のエントリ数である。
     1103         インタフェースのアドレスリスト(IPv6)のエントリ数である。
    12231104
    12241105   (2)   NUM_ND6_DEF_RTR_ENTRY
    1225          ãƒ‡ã‚£ãƒ•ã‚©ãƒ«ãƒˆãƒ«ãƒ¼ã‚¿ãƒªã‚¹ãƒˆã®ã‚¨ãƒ³ãƒˆãƒªæ•°ã§ã€æœ€å¤§å€¤ã¯ 16 である。0
    1226          ã‚’指定するとルータ通知を受信しない。ただし、現在は、 ルータ通
    1227          çŸ¥ã®å—信以外にサイトローカルアドレス等を設定する方法がない。
     1106         ディフォルトルータリストのエントリ数で、最大値は 16 である。0
     1107         を指定するとルータ通知を受信しない。ただし、現在は、 ルータ通
     1108         知の受信以外にサイトローカルアドレス等を設定する方法がない。
    12281109
    12291110   (3)   NUM_ND6_PREFIX_ENTRY
    1230          ãƒ—レフィックスリストのエントリ数で、最大値は 16 である。
     1111         プレフィックスリストのエントリ数で、最大値は 16 である。
    12311112
    12321113   (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
     11186. 8  IPv6/IPv4完全デュアルスタック
     1119
     1120  TINET リリース 1.5 まで、 組込み可能なネットワーク層は IPv6 か IPv4
     1121のいずれかであったが、 TINET リリース 1.7 からは両方を組込むことがが可
     1122能になった。
     1123  ネットワーク層として IPv6 を選択した場合は、 IPv6 の API における
     1124IPv6 アドレスとして IPv4 射影アドレスを使用することが可能である。
     1125  この機能を有効にするコンパイル時コンフィギュレーションパラメータを、
     1126以下に示す。
    12491127   API_CFG_IP4MAPPED_ADDR
    1250 ã“のコンパイル時コンフィギュレーションパラメータをしない時は、以下の示
    1251 ã™ API の引数として IPv4 射影アドレスを指定すると、 戻り値として E_PAR
    1252 ãŒè¿”される。
     1128このコンパイル時コンフィギュレーションパラメータをしない時は、以下の示
     1129す API の引数として IPv4 射影アドレスを指定すると、 戻り値として E_PAR
     1130が返される。
    12531131
    12541132   [1]   tcp_cre_rep
     
    12581136   [5]   udp_snd_dat
    12591137
    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 に定義されている。
     11387.  TINET 独自 API
     1139
     11407. 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 に定義されている。
    12831154
    12841155            typedef UD T_NET_COUNT_VAL;
    12851156           
    12861157            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;  /* 送信エラーバケット数 */
    12931164                  } T_NET_COUNT;
    12941165
    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                 標準データ型変数で、 変数名は、受信オクテット数が
    13141177
    13151178                  net_count_ppp_upap_in_octets
    13161179
    1317                é€ä¿¡ã‚ªã‚¯ãƒ†ãƒƒãƒˆæ•°ãŒ
     1180               送信オクテット数が
    13181181
    13191182                  net_count_ppp_upap_out_octets
    13201183
    1321          [3]   PPP のリンク制御プロトコル(PROTO_FLG_PPP_LCP)
    1322                  æ¨™æº–データ型変数で、変数名は、 受信オクテット数が
     1184         [3]   PPP のリンク制御プロトコル(PROTO_FLG_PPP_LCP)
     1185                 標準データ型変数で、変数名は、 受信オクテット数が
    13231186
    13241187                  net_count_ppp_lcp_in_octets
    13251188
    1326                é€ä¿¡ã‚ªã‚¯ãƒ†ãƒƒãƒˆæ•°ãŒ
     1189               送信オクテット数が
    13271190
    13281191                  net_count_ppp_lcp_out_octets
    13291192
    1330          [4]   PPP の IP 依存制御プロトコル(PROTO_FLG_PPP_IPCP)
    1331                  æ¨™æº–データ型変数で、 変数名は、受信オクテット数が
     1193         [4]   PPP の IP 依存制御プロトコル(PROTO_FLG_PPP_IPCP)
     1194                 標準データ型変数で、 変数名は、受信オクテット数が
    13321195
    13331196                  net_count_ppp_ipcp_in_octets
    13341197
    1335                é€ä¿¡ã‚ªã‚¯ãƒ†ãƒƒãƒˆæ•°ãŒ
     1198               送信オクテット数が
    13361199
    13371200                  net_count_ppp_ipcp_out_octets
    13381201
    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
     12477. 2  SNMP 用管理情報ベース(MIB)
     1248
     1249  コンパイル時コンフィギュレーション・ファイルのいずれかで、 マクロ
     1250SUPPORT_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
     13017. 3  TINET 内部アクセス関数、サポート関数、全域変数とマクロ
     1302
     1303  応用プログラムから TINET 内部にアクセスするための関数、 サポート関数、
     1304全域変数とマクロである。
     1305
     1306   (1)   IPv6 アドレスをリテラル表現(文字列)に変換する関数
     1307         【C 言語 API】
    14661308               char *p_retbuf = ipv62str (char *p_buf, const T_IN6_ADDR *p_addr);
    14671309
    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         【インクルードファイル】
    14761318               <netinet/in.h>
    14771319
    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】
    14931332               u_int num = in6_get_maxnum_ifaddr (void);
    14941333
    1495          ã€ãƒªã‚¿ãƒ¼ãƒ³ãƒ‘ラメータ】
    1496                u_int          num       è¨­å®šå¯èƒ½ãªæœ€å¤§IPv6アドレス数
    1497 
    1498          ã€ã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰ãƒ•ã‚¡ã‚¤ãƒ«ã€‘
     1334         【リターンパラメータ】
     1335               u_int          num       設定可能な最大IPv6アドレス数
     1336
     1337         【インクルードファイル】
    14991338               <netinet/in.h>
    15001339
    1501          ã€æ©Ÿèƒ½ã€‘
    1502                  ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã‚¤ãƒ³ã‚¿ãƒ•ã‚§ãƒ¼ã‚¹ã«è¨­å®šå¯èƒ½ãªæœ€å¤§ IPv6 アド
    1503                ãƒ¬ã‚¹æ•°ã‚’返す関数である。 なお、 現在設定されている IPv6
    1504                ã‚¢ãƒ‰ãƒ¬ã‚¹æ•°ã¨ã¯ç•°ãªã‚‹ã€‚
    1505 
    1506    (3)   è¨­å®šã•ã‚Œã¦ã„ã‚‹ IPv6 アドレスを返す関数
    1507          ã€C 言語 API】
     1340         【機能】
     1341                 ネットワークインタフェースに設定可能な最大 IPv6 アド
     1342               レス数を返す関数である。 なお、 現在設定されている IPv6
     1343               アドレス数とは異なる。
     1344
     1345   (3)   設定されている IPv6 アドレスを返す関数
     1346         【C 言語 API】
    15081347               const T_IN6_ADDR *p_addr = in6_get_ifaddr (int_t index);
    15091348
    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         【インクルードファイル】
    15171356               <netinet/in.h>
    15181357
    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】
    15271366               ER ercd = in6_upd_ifaddr (T_IN6_ADDR *p_addr,
    15281367                                         uint_t prefixlen,
     
    15301369                                         uint32_t pltime);
    15311370
    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         【インクルードファイル】
    15461385               <netinet/in.h>
    15471386
    1548          ã€æ©Ÿèƒ½ã€‘
    1549                  ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã‚¤ãƒ³ã‚¿ãƒ•ã‚§ãƒ¼ã‚¹ã«è¨­å®šã•ã‚Œã¦ã„ã‚‹ IPv6 アド
    1550                ãƒ¬ã‚¹ã®ãƒ—レフィックス長、有効時間、 推奨有効時間を更新す
    1551                ã‚‹ã€‚ ただし、未定義の場合は追加する。
    1552 
    1553    (5)   è¨­å®šã•ã‚Œã¦ã„ã‚‹ IPv6 アドレスを削除する関数
    1554          ã€C 言語 API】
     1387         【機能】
     1388                 ネットワークインタフェースに設定されている IPv6 アド
     1389               レスのプレフィックス長、有効時間、 推奨有効時間を更新す
     1390               る。 ただし、未定義の場合は追加する。
     1391
     1392   (5)   設定されている IPv6 アドレスを削除する関数
     1393         【C 言語 API】
    15551394               ER ercd = in6_del_ifaddr (T_IN6_ADDR *p_addr);
    15561395
    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         【インクルードファイル】
    15671406               <netinet/in.h>
    15681407
    1569          ã€æ©Ÿèƒ½ã€‘
    1570                  ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã‚¤ãƒ³ã‚¿ãƒ•ã‚§ãƒ¼ã‚¹ã«è¨­å®šã•ã‚Œã¦ã„ã‚‹ IPv6 アド
    1571                ãƒ¬ã‚¹ã‚’削除する。
    1572 
    1573    (6)   è¨­å®šå¯èƒ½ãªæœ€å¤§ IPv4 アドレス数を返す関数
    1574          ã€C 言語 API】
     1408         【機能】
     1409                 ネットワークインタフェースに設定されている IPv6 アド
     1410               レスを削除する。
     1411
     1412   (6)   設定可能な最大 IPv4 アドレス数を返す関数
     1413         【C 言語 API】
    15751414               uint_t num = in4_get_maxnum_ifaddr (void);
    15761415
    15771416
    1578          ã€ãƒªã‚¿ãƒ¼ãƒ³ãƒ‘ラメータ】
    1579                uint_t         num       è¨­å®šå¯èƒ½ãªæœ€å¤§IPv4アドレス数を返す関数
    1580 
    1581          ã€ã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰ãƒ•ã‚¡ã‚¤ãƒ«ã€‘
     1417         【リターンパラメータ】
     1418               uint_t         num       設定可能な最大IPv4アドレス数を返す関数
     1419
     1420         【インクルードファイル】
    15821421               <netinet/in.h>
    15831422
    1584          ã€æ©Ÿèƒ½ã€‘
    1585                  ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã‚¤ãƒ³ã‚¿ãƒ•ã‚§ãƒ¼ã‚¹ã«è¨­å®šå¯èƒ½ãªæœ€å¤§ IPv4 アド
    1586                ãƒ¬ã‚¹æ•°ã‚’返す関数である。なお、現在は常に 1 を返す。
    1587 
    1588    (7)   ã‚¤ãƒ³ã‚¿ãƒ•ã‚§ãƒ¼ã‚¹ã« IPv4 アドレスを設定する関数
    1589          ã€C 言語 API】
     1423         【機能】
     1424                 ネットワークインタフェースに設定可能な最大 IPv4 アド
     1425               レス数を返す関数である。なお、現在は常に 1 を返す。
     1426
     1427   (7)   インタフェースに IPv4 アドレスを設定する関数
     1428         【C 言語 API】
    15901429               ER ercd = in4_add_ifaddr (T_IN4_ADDR addr, T_IN4_ADDR mask);
    15911430
    1592          ã€ãƒ‘ラメータ】
    1593                T_IN4_ADDR          addr      IPアドレス
    1594                T_IN4_ADDR          mask      サブネットマスク
    1595 
    1596          ã€ãƒªã‚¿ãƒ¼ãƒ³ãƒ‘ラメータ】
    1597                ER        ercd      エラーコード(現在は常にE_OK)
    1598 
    1599          ã€ã‚¨ãƒ©ãƒ¼ã‚³ãƒ¼ãƒ‰ã€‘
    1600                E_OK                現在は常にE_OK
    1601 
    1602          ã€ã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰ãƒ•ã‚¡ã‚¤ãƒ«ã€‘
     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         【インクルードファイル】
    16031442               <netinet/in.h>
    16041443
    1605          ã€æ©Ÿèƒ½ã€‘
    1606                  ã‚¤ãƒ³ã‚¿ãƒ•ã‚§ãƒ¼ã‚¹ã« IPv4 アドレスを設定する。
    1607 
    1608    (8)   IPv4 用静的経路表に経路æƒ
    1609 å ±ã‚’設定する関数
    1610          ã€C 言語 API】
     1444         【機能】
     1445                 インタフェースに IPv4 アドレスを設定する。
     1446
     1447   (8)   IPv4 用静的経路表に経路情報を設定する関数
     1448         【C 言語 API】
    16111449               ER ercd = in4_add_route (int index, T_IN4_ADDR target,
    16121450                                                   T_IN4_ADDR mask,
    16131451                                                   T_IN4_ADDR gateway);
    16141452
    1615          ã€ãƒ‘ラメータ】
    1616                int       index     ã‚¨ãƒ³ãƒˆãƒªã®ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹
    1617                T_IN4_ADDR          target    目標ネットワークのIPアドレス
    1618                T_IN4_ADDR          mask      目標ネットワークのサブネットマスク
    1619                T_IN4_ADDR          gateway   ã‚²ãƒ¼ãƒˆã‚¦ã‚§ã‚¤ã®IPアドレス
    1620 
    1621          ã€ãƒªã‚¿ãƒ¼ãƒ³ãƒ‘ラメータ】
    1622                ER        ercd      エラーコード
    1623 
    1624          ã€ã‚¨ãƒ©ãƒ¼ã‚³ãƒ¼ãƒ‰ã€‘
    1625                E_PAR               å¼•æ•°indexの値が負か、コンパイル時コンフィギュレーション
    1626                                    ãƒ‘ラメータNUM_ROUTE_ENTRY以上のときE_PAR
    1627 
    1628          ã€ã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰ãƒ•ã‚¡ã‚¤ãƒ«ã€‘
     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         【インクルードファイル】
    16291467               <netinet/in.h>
    16301468
    1631          ã€æ©Ÿèƒ½ã€‘
    1632                  IPv4 用静的経路表に経路æƒ
    1633 å ±ã‚’設定する。
    1634 
    1635    (9)   IPv4 アドレスをリテラル表現(文字列)に変換する関数
    1636          ã€C 言語 API】
     1469         【機能】
     1470                 IPv4 用静的経路表に経路情報を設定する。
     1471
     1472   (9)   IPv4 アドレスをリテラル表現(文字列)に変換する関数
     1473         【C 言語 API】
    16371474               char *p_retbuf = ip2str (char *p_buf, const T_IN4_ADDR *p_ipaddr);
    16381475
    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         【インクルードファイル】
    16471484               <netinet/in.h>
    16481485
    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】
    16641498               const char *p_str = in_strtfn (FN fncd);
    16651499
    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         【インクルードファイル】
    16731507               <netinet/in.h>
    16741508
    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】
    16801514               char *p_retbuf = mac2str (char *p_buf, uint8_t *p_macaddr);
    16811515
    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 では必要
    16921525               <net/net.h>
    16931526
    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】
    17091539               T_IN6_ADDR *p_dstaddr = in6_make_ipv4mapped (T_IN6_ADDR *dst,
    17101540                                                            T_IN4_ADDR src);
    17111541
    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         【インクルードファイル】
    17221550               <netinet/in.h>
    17231551
    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】
    17291557               bool_t ret = in6_is_addr_ipv4mapped (const T_IN6_ADDR *addr);
    17301558
    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         【インクルードファイル】
    17381566               <netinet/in.h>
    17391567
    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】
    17481575               const T_IN6_ADDR in6_addr_unspecified;
    17491576               const T_IN6_ADDR in6_addr_linklocal_allnodes;
    17501577               const T_IN6_ADDR in6_addr_linklocal_allrouters;
    17511578
    1752          ã€æ©Ÿèƒ½ã€‘
    1753                  IPv6 では、アドレス長が 128 ビット(16 バイト)で、値
    1754                ã‚’マクロで定義することができないために用意したå
    1755 ¨åŸŸå¤‰æ•°
    1756                ã§ã‚り、以下のように、 メモリ操作関数を呼び出してコピーする。
     1579         【機能】
     1580                 IPv6 では、アドレス長が 128 ビット(16 バイト)で、値
     1581               をマクロで定義することができないために用意した全域変数
     1582               であり、以下のように、 メモリ操作関数を呼び出してコピーする。
    17571583                  memcpy(&myaddr.ipaddr, &in6_addr_unspecified, sizeof(T_IN6_ADDR));
    17581584
    1759    (15)  IPv6 の IPV6_ADDRANY に対応するå
    1760 ¨åŸŸå¤‰æ•°
    1761          ã€C 言語 API】
     1585   (15)  IPv6 の IPV6_ADDRANY に対応する全域変数
     1586         【C 言語 API】
    17621587               const T_IN6_ADDR ipv6_addrany;
    17631588
    1764          ã€æ©Ÿèƒ½ã€‘
    1765                  T_IPV6EP の ipaddr フィールドに、値 IPV4_ADDRANY を代
    1766                å
    1767 ¥ã™ã‚‹ã¨ãã€IPv4 では、
     1589         【機能】
     1590                 T_IPV6EP の ipaddr フィールドに、値 IPV4_ADDRANY を代
     1591               入するとき、IPv4 では、
    17681592                  myaddr.ipaddr = IPV4_ADDRANY;
    17691593
    1770                ã¨æŒ‡å®šã§ãã‚‹ãŒã€IPv6 では、同様の指定ができないために用
    1771                æ„ã—たå
    1772 ¨åŸŸå¤‰æ•°ã§ã‚り、 以下のように、メモリ操作関数を呼
    1773                ã³å‡ºã—てコピーする。
     1594               と指定できるが、IPv6 では、同様の指定ができないために用
     1595               意した全域変数であり、 以下のように、メモリ操作関数を呼
     1596               び出してコピーする。
    17741597                  memcpy(&myaddr.ipaddr, &ipv6_addrany, sizeof(T_IN6_ADDR));
    17751598
    1776                ãªãŠã€ã“のå
    1777 ¨åŸŸå¤‰æ•°ã¯ãƒžã‚¯ãƒ­ã§å®šç¾©ã—ている。
    1778 
    1779    (16)  TINET のバージョンæƒ
    1780 å ±ãƒžã‚¯ãƒ­
    1781          ã€C 言語 API】
     1599               なお、この全域変数はマクロで定義している。
     1600
     1601   (16)  TINET のバージョン情報マクロ
     1602         【C 言語 API】
    17821603               TINET_PRVER
    17831604
    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         【インクルードファイル】
    17911611               <net/net.h>
    17921612
    1793    (17)  8 ビット毎に指定した IPv4 アドレスを 32 ビットにするマクロ
    1794          ã€C 言語 API】
     1613   (17)  8 ビット毎に指定した IPv4 アドレスを 32 ビットにするマクロ
     1614         【C 言語 API】
    17951615               T_IN4_ADDR addr = MAKE_IPV4_ADDR(uint8_t a, uint8_t b,
    17961616                                                uint8_t c, uint8_t d);
    17971617
    1798          ã€ãƒ‘ラメータ】
    1799                uint8_t   a         IPv4アドレスのビット24~31
    1800                uint8_t   b         IPv4アドレスのビット16~23
    1801                uint8_t   c         IPv4アドレスのビット8~15
    1802                uint8_t   d         IPv4アドレスのビット0~7
    1803 
    1804          ã€ãƒªã‚¿ãƒ¼ãƒ³ãƒ‘ラメータ】
    1805                T_IN4_ADDR          addr      32ビットのIPv4アドレス
    1806 
    1807          ã€ã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰ãƒ•ã‚¡ã‚¤ãƒ«ã€‘
     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         【インクルードファイル】
    18081628               <netinet/in.h>
    18091629
    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
     16397. 4  応用プログラムコールバック関数
     1640
     1641  TINET から呼出される応用プログラムコールバック関数であり、応用プログ
     1642ラム側で用意する必要がある。
     1643
     1644   (1)   IPv4 アドレス重複検出時のコールバック関数
     1645         【C 言語 API】
    18271646               boot_t reply = arp_callback_duplicated(uint8_t *shost);
    18281647
    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         【インクルードファイル】
    18361655               <netinet/if_ether.h>
    18371656
    1838          ã€ã‚³ãƒ³ãƒ‘イル時コンフィギュレーションパラメータ】
     1657         【コンパイル時コンフィギュレーションパラメータ】
    18391658               ARP_CFG_CALLBACK_DUPLICATED
    18401659
    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
     16658.  謝辞
     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
     17299.  ライセンス
     1730
     1731  TINET は FreeBSD を元に開発を行ったため、 TINET を含むソフトウェアを、
     1732他のソフトウェア開発に使用できない形で再配布する場合(TOPPERS ライセン
     1733ス (3) に規程されている形態)は、 TOPPERS ライセンス (3) の (b) の報告
     1734だけでは不十分で、(a) による方法が必要である。
     1735  以下に示す TOPPERS、 FreeBSD および FreeBSD へのソフトウェアの寄贈者
     1736のライセンス規定に従って、再配布に伴うドキュメント(利用者マニュアルな
     1737ど)に、ライセンス表示を行うと。
    19301738
    19311739(1)FreeBSD
     
    19951803    */
    19961804
    1997 (3)イーサネット・ディバイスドライバ
     1805(3)イーサネット・ディバイスドライバ
    19981806
    19991807   /*
     
    20911899    *              Graduate School of Information Science, Nagoya Univ., JAPAN
    20921900    *
    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    *      免責すること.
    21291923    *
    2130     *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    2131 ãŠ
    2132     *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    2133     *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    2134     *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    2135     *  の責任を負わない.
     1924    *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     1925    *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     1926    *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     1927    *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     1928    *  の責任を負わない.
    21361929    *
    21371930    *  $Id$
     
    21501943    *              Graduate School of Information Science, Nagoya Univ., JAPAN
    21511944    *
    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プロジェクトを免責すること.
    21861966    *
    2187     *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    2188 ãŠ
    2189     *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
    2190     *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
    2191     *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
     1967    *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     1968    *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
     1969    *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
     1970    *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
    21921971    *
    21931972    *  @(#) $Id$
     
    22021981    *  Copyright (C) 2007-2012 by TAKAGI Nobuhisa
    22031982    *
    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    *      免責すること.
    22402005    *
    2241     *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    2242 ãŠ
    2243     *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    2244     *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    2245     *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    2246     *  の責任を負わない.
     2006    *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     2007    *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     2008    *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     2009    *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     2010    *  の責任を負わない.
    22472011    *
    22482012    */
     
    22562020    *                   Tomakomai National College of Technology, JAPAN
    22572021    *
    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    *      免責すること.
    22902042    *
    2291     *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    2292 ãŠ
    2293     *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    2294     *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    2295     *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    2296     *  の責任を負わない.
     2043    *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     2044    *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     2045    *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     2046    *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     2047    *  の責任を負わない.
    22972048    *
    22982049    *  @(#) $Id$
Note: See TracChangeset for help on using the changeset viewer.