Cente TCP/IPv4

最新更新日/2011.12.09 Ver1.33

Cente TCP/IPv4

製品概要

  • 組込み型TCP/IPv4プロトコルスタック
  • BSD Socket APIとITRON TCP/IP仕様のAPIの両方を装備
  • ギガビットイーサネット用のジャンボフレームに対応
  • 独自のドライバAPI(ELAP)を装備
  • TCP、UDP、ICMP、IP、ARP、IGMP(マルチキャスト)機能
  • IPフラグメント機能
  • TCP緊急データの送受信機能
  • TCPキープアライブ機能
  • TCP省コピーAPIに対応
  • マルチネットワークデバイス、マルチIPに対応
  • RIPパケットの受信と経路選択機能
  • DNSクライアント機能(フルドメイン名からIPアドレスに変換)
  • DHCPクライアント機能(IPアドレスの自動取得)
  • TELNETサーバ/クライアント機能
  • FTPサーバ/クライアント機能
  • TFTPサーバ/クライアント機能

製品詳細情報

価格

価格:84万円/プロジェクト限定ライセンス

  • 表記の価格は、1プロジェクトライセンス、税込みの定価となります。
  • 他のライセンス形態につきましては、お問い合わせください。

 

障害情報

 

改版履歴

2011.12.09  Ver1.33

IGMPパケット受信時に0除算が発生することがある

IGMPルータから、応答を送信するまでの最大待ち時間として0を指定された場合に0除算が発生していた。これを修正した。(Cente障害情報:001-0031)

UDPのチェックサムを正しく評価できないことがある

受信UDPパケットのチェックを行う際、まれにチェックサム不正を検出できない場合があったので修正した。(Cente障害情報:001-0032)

TCP着信を受けられなくなることがある

FTPdなど、TCPの着信を受けるアプリケーションで運用している場合、まれにTCP着信を受け付けなくなる状態に陥ってしまう場合があったので修正した。(Cente障害情報:001-0033)

UDP受信をctrecv()で実行中にctshutdown()でキャンセルできない

ctrecv()、ctrecvfrom()でUDPの受信待ちをしている状態で、ctshutdown()を呼んでもctrecv()、ctrecvfrom()の待ち解除ができなかったので修正した。(Cente障害情報:001-0034)

ARPキャッシュの保持時間が定義より10%長い

ARPキャッシュを保持する時間が、定義されている時間より10%長い状態だった(デフォルトでは5分なので、5分半ほど保持される状態)。これを修正した。(Cente障害情報:001-0035)

長さが不正なオプションのTCPパケットを受信すると無限ループが発生する

長さが0のオプションを含んだTCPパケットを受信すると、無限ループが発生していたため、修正した。(Cente障害情報:001-0036)

ctselect()で、受信データがないのに受信イベントありと判断される

ctselect()を使用して、受信可能ソケットデスクリプタreadfd、送信可能ソケットデスクリプタwritefdの両方を指定した場合、受信データがないにもかかわらず受信イベントが発生したように見えていた。これを修正した。(Cente障害情報:001-0037)


 

2010.09.17 Ver1.32

DHCPcでRenew時にNAKを受信するとDHCPが停止する

Ver.1.31のDHCP修正にRenew/Rebind時にNAKを受信したとき、Discover送信から再開できていなかったため修正した。(Cente障害情報:001-0012)

TCP受信スループットが低いことがある

Ver.1.31のTCP修正方法が、環境によっては正しく動作しないことがわかったため、環境に依存しない方法に再修正した。(Cente障害情報:001-0013)

TCP着信ソケットがタイムアウトしないことがある

ウインドウサイズが0になっているTCPSYNを受信すると、TCPSYNACKの再送がタイムアウトせず、再び着信待ちにならない状態だった。これを修正した。(Cente障害情報:001-0014)

DHCPcのRenew時間の誤差

DHCPでRenewまでの時間がネゴシエーションで得た時間より10%後に発生していたため、修正した。(Cente障害情報:001-0015)

DHCPcでRenewに対する応答を受信できなかった場合の挙動

Renewに対する応答を受信できなかった場合、その後Ethernetケーブルを挿しなおすなどリンクダウン、リンクアップを実行しても再取得を行わない状態になっていたため、修正した。(Cente障害情報:001-0017)

受信中にEthernetケーブルを抜くと無限ループが発生することがある

連続してパケットを受信している際にEthernetケーブルを抜くと、プロトコルスタック内で無限ループが発生することがあったため修正した。(Cente障害情報:001-0018)

tcp_can_cep()で正しくキャンセルできないことがある

TMO_NBLKを指定してtcp_acp_cep()を呼んだ後、tcp_can_cep()を呼んでも着信待ち状態を解除できていなかった。これを修正した。(Cente障害情報:001-0019)

不正なフラグメントパケット受信時にメモリ破壊が発生する

オフセットが重複している不正なIPフラグメントパケットを受信すると、正しく処理できずメモリ破壊が発生することがあったので、修正した。

DHCPcのRebind、リース時間の誤差

DHCPでRebindまでの時間がネゴシエーションで得た時間より30秒ほど後に発生し、その満了時にリース時間を待たずに再取得を実行していた。これを修正した。

tcp_con_cep()がIPv6で発信してしまうことがある

Cente IPv6を導入してIPv6が有効な状態のとき、tcp_con_cep()の第二引数にNULLを渡すと、IPv4用のAPIにもかかわらずIPv6で発信していた。これを修正した。

不正にICMPを送信してしまうことがある

IP_MULTICAST_RECVを定義してマルチキャストが有効な状態のとき、開いていないUDPポートに対するマルチキャストを受信するとICMP Port Unreachableを返送していた。これを修正した。

静的コードチェッカ対策

動作上問題はないが、静的コードチェッカで不正と判断される点について修正した。

FTPd NLST応答を修正

NLSTでディレクトリ名を返さないよう修正した。また、パスを含むよう修正した。

FTPd STOR失敗時該当ファイルを削除する

STOR失敗時、該当ファイルを削除するよう修正した。

FTPd CWDコマンドに対するリプライコードが200になっている。

FTPcからCWD(ディレクトリ移動)コマンドを受信し、成功した場合のリプライコードを200にしていたが、正しくは250だったため、修正した。

FTPd 不正なIPアドレスに発信する

PORTコマンドを受けていない状態で、FTPcから不正にコマンドを受信した場合、宛先IPアドレスが不定なまま発信していた。PORTコマンド実行前は他のコマンドを受け付けないよう修正した。

FTPc スペースを含む名称のファイルの転送ができない

スペース(ASCIIコード0x20)を含んだファイル名のファイルを転送できなかったので修正した。

FTPc データ転送失敗を検出するよう変更

データ転送中にFTPdから切断されるなどエラーが発生した場合、コマンドは正常終了していた。コマンドもエラーを返すよう変更した。

 

2009.05.08  Ver1.31

DHCPでIP取得に時間がかかることがある

プロトコルスタックのタスク優先度より高いタスクがelap_start()、elap_stop()を呼ぶ環境の場合、DHCPサーバが存在しない環境に接続し、その後DHCPサーバが存在する環境に接続しなおしたとき、IP取得に時間がかかっていた。これを修正した。

ARP Requestの送信元IPアドレスが0.0.0.0になる

ARPキープアライブ機能が送信するARP Requestの送信元IPアドレスが0.0.0.0になる場合があったので修正した。

マルチキャストPINGに対する応答が不正

マルチキャスト宛に対するPINGを受けたとき、その応答の送信元アドレスがマルチキャストアドレスになっていたので修正した。

長さが不正なTCPパケットを受信すると不正なメモリアクセスが発生する

IPヘッダの長さフィールドの値が実際の長さより短い値となっていたとき、TCPデータ長を正しく認識できず不正なメモリアクセスが発生していた。これを修正した。

TCPACKを大量に送信することがある

TCP受信バッファの空きが少ないとき、TCP受信APIで短いデータを繰り返し読み出すと、そのたびにTCPACKが送信されることがあったので修正した。

tcp_(v)cre_rep()がエラーすることがある

TCP切断後、tcp_del_cep()、tcp_del_rep()で端点を削除し、すぐにtcp_(v)cre_rep()で着信端点を作成するとE_OBJエラーが返ることがあったので修正した。

TCPデータをすべて送信しないうちに切断してしまうことがある

一度TCPFINが付加されたパケットを送信した後、その前のパケットの再送が発生した場合、その再送パケットにTCPFINが付加されていた。これによって、通信相手はデータがそこまでであると判断して全て受信しないうちに切断してしまう。これを修正した。

DNScで名前解決に失敗することがあるのを修正

ホスト名の先頭文字が数字の場合に名前解決に失敗していたのを修正しました。

FTPdにSIZEコマンドを追加

FTPdにファイルサイズを取得するコマンドであるSIZEコマンドを追加しました。

FTPdをワイルドカードに対応

FTPdをワイルドカードに対応させました。これにより、ファイル一覧でワイルドカードが使用可能となります。

FTPdでのファイル一覧表示内容の修正

FTPdでファイル一覧を表示する時に、表示されない項目があるのを修正しました。

FTPdでデータポート接続完了待ちのタイミングを修正

FTPdでデータポート接続完了待ちのタイミングを修正しました。これにより、クライアントによってはデータポート接続に時折失敗する現象が修正されました。

FTPdでデータポートクローズのエラーを検出するように修正

FTPdでデータポートクローズ時のエラーを検出していなかったため、データポートクローズ失敗を検出できず、エラーにもかかわらず正常終了応答を返していました。データポートクローズのエラーを検出するように修正し、エラー時にはエラー応答をクライアントに返すように修正しました。

FTPcの冗長な接続処理を修正

FTPcでTCP接続に失敗した場合リトライをしていましたが、本来はTCPレイヤーでリトライをするべきなので、FTPcでは接続のリトライをしないように修正しました。

TFTPdで重複したリクエストパケットを受け取ったときの処理を修正

TFTPdでクライアントからのリクエストパケットが重複した場合、エラーを返していました。重複パケットの場合はエラーを返さず、データ通信が中断されないように修正しました。

2008.08.04 Ver1.30

TCP Selective ACKオプション対応

RFC2018のTCP Selective ACK(SACK)オプションに対応した。

TCP Window Scaleオプション対応

RFC1323のTCP Window Scaleオプションに対応した。

TCP Large Initial Window対応

RFC2414のLarge Initial Window機能に対応した。

IGMP受信フィルタが宛先IPアドレスに対してかかってしまう

本来IGMP受信フィルタは受信したパケットの送信元IPアドレスに対してかかるものだが、宛先マルチキャストアドレスに対してかかっていた。これを修正した。

ctselect()がいつまでも送信可能を返さない

ctselect(_)、ctsend()を繰り返し呼んだ場合、送信バッファが一杯になった時点でctselect()で待ち状態になるが、その後送信が進んで再び送信バッファに空きができてもctselect()から返らなかった。これを修正した。

ctaccept()で着信と切断を繰り返すと着信できなくなる

システムが持つセマフォの最大数が少なく、新しいTCPセッション作成のためのセマフォ確保に失敗した場合、セッション情報をクリアしておらず、新たな着信ができない状態になっていた。セッション情報をクリアし、新たな着信が行なえるよう修正した。

TCPキープアライブパケットに応答を返さない

TCPキープアライブにはダミーデータがあるものとないものがあるが、後者に対応できていなかった。これを修正した。

TCP通信中、別タスクでtcp_cls_cep()を呼ぶと、その後着信できなくなる

tcp_acp_cep()、tcp_rcv_dat()を呼んでいるタスクより優先度が低いタスクでtcp_cls_cep()を呼ぶと、tcp_cls_cep()の処理の途中で次のtcp_acp_cep()が実行されてしまい、着信待ち状態にもかかわらずセッションがクローズ状態となり着信できなくなっていた。これを修正した。

ctselect()が指定された時間でタイムアウトしない

ctselect()で指定されたソケット以外のソケットでイベントが発生したときもタイマを再起動させてしまっていたので、他ソケットでイベントが起き続ける限りctselect()が指定された時間でタイムアウトしない、という状態になっていた。これを修正した。

送信実行中にEthernetケーブルを抜くと無限ループが発生する

連続送信中にEthernetケーブルを抜くと、Ethernetドライバのwai_snd()がエラーを返すことがあるが、その際、そのまま繰り返しwai_snd()を呼び続けて無限ループが発生していた。送信をエラー終了させるよう修正した。

udp_set_opt()でI/F IDを変更してもそのI/Fで受信できない

udp_cre_cep()で通信端点を作成した後、udp_set_opt()でI/F IDを変更しても、変更先のI/Fからパケットを受信すると破棄していた。これを修正した。

マルチIP環境で、不正なパケットを受信すると、その後受信できなくなる

複数のEthernet I/Fを使用している際、一方からLLC/SNAPヘッダの内容が不正だった場合、以後他方の受信ができなくなることがあった。これを修正した。

複数のタスクから同時にソケットを確保するとポート番号が不正になる

自ポート番号を取得する関数が排他制御されておらず、複数のタスクから同時にソケットを確保するなどした場合、正しく動作しない可能性があった。これを修正した。

マルチIP環境でDHCPcを使うと、後からリンクアップしたI/FでDHCP取得できない

複数のI/Fで同時にDHCPによるIPアドレス割り当てを実行すると、後からリンクアップを検出したI/FでDHCPが動作しない状態になっていた。これを修正した

ipapr_to_ascii()の返り値が0

本関数の返り値はIPアドレスの文字列長を返す仕様だが、誤って常に0を返していた。これを修正した。

telnetcで通信異常時に通信端点が解放されない事がある

telnetcで、通信異常時にtcp_del_cep()が呼ばれず、通信端点が解放されない事があるのを修正。

FTPcで通信に使用する自ポート番号が不正

FTPcで、変数の初期化不足のため、自ポート番号が不正な値になる点を修正。

2007.08.31 Ver1.21

自ポート番号の自動割当ルール変更

TCPまたはUDPにて通信端点の作成と解放を繰り返すと、自ポート番号が続けて同じ番号になってしまうことがあった。これを修正した。

tcp_acp_cep()後のtcp_con_cep()でリソースが減る

tcp_acp_cep()が失敗またはキャンセルした後、同じ通信端点でtcp_con_cep()を呼ぶとセッション情報を保持するリソースが解放されなかった。これを修正した。

省コピーAPI(tcp_rcv_buf)で受信するとスループットが低くなることがある

受信バッファが一旦一杯になり、その後tcp_rel_buf()を呼んで空きが出来たとき、ウインドウ更新のACKを送信していなかった。そのため、極端に受信スループットが落ちることがあった。これを修正した。

TCPゼロウインドウACK受信後の送信が最適でない

TCPゼロウインドウACKを受信するとPERSIST状態に移行し、定期的に次のデータを送信するが、ウインドウ更新ACKを受信したとき、定期的に送信しているデータの次のデータから送信していた。まだACKを受信していないパケットから送信を再開するよう変更した。

FTPdで、連続して複数のファイルを送受信すると失敗することがある

それぞれのTCP通信でポート番号20番を繰り返し使うことになるが、直前のTCPセッションがまだ残っていて通信端点を作成できず失敗していた。相手先ポート番号が違うなら自ポート番号が同じでも通信端点を作成できるよう修正した。

IGMPグループ以外のマルチキャストアドレスは受信しないように変更

IGMPでグループ登録した場合も、それ以外のマルチキャストアドレスのパケットを受信していた。グループ登録したもの以外は受信しないように修正した。

パケットバッファ枯渇でTCPパケット送信が無限ループに陥ることがある

送信パケットバッファが枯渇するような運用の環境でTCP送信を行うと無限ループに陥ることがあった。これを修正した。

UDPヘッダの長さフィールドが不正なパケットを受信すると誤動作する

UDPヘッダの長さフィールドが不正なパケットを受信したとき、正しく処理できないことがあった。これを修正した。

環境によってはctbsdapi.cがコンパイルエラーとなる

環境によってはBSDAPIのためのソースctbsdapi.cにてコンパイルエラーとなることがあった。これを修正した。

DHCPリレーエージェント経由でDHCPアドレス割り当てが行えない

Windows2003 ServerのDHCPリレーエージェントを使用すると、Cente TCP/IPv4のDHCP Discoverが破棄されていた。DHCPパケットの「システム起動からの時間」を正しく設定するようにして回避した。

送信中にリンクダウンさせると、その後リンクアップできなくなる

高トラフィックで送信実行中にLANケーブルを抜くなどリンクダウンさせると、その後リンクアップしても通信できなくなることがあった。これを修正した。

OSリソース生成失敗が検出できない

初期化関数を呼んだとき、OSリソース生成が失敗しても正常終了していた。エラーを返すよう変更した。

FTPdバグ修正

 

  • データポートセッションの開始に失敗したときにエラーを検出できなかったのを修正
  • ファイルクローズのタイミングを修正

 

FTPcバグ修正

 

  • ログイン中にセッションが切断された場合関数から戻らなくなる不具合を修正
  • FTPサーバーからPWDに対し不正な応答が返った場合アドレスエラーが生じる可能性があるのを修正

 

TFTPバグ修正

最後のファイルブロックの転送の際にエラーが生じてもそれを検出できなかった不具合を修正

2006.10.13 Ver1.20

BSDソケットAPI対応

BSDソケットに準拠したAPIに対応した。

マルチキャスト対応

IPマルチキャストパケットの送受信、IGMPクライアント機能を追加した。

ジャンボフレーム対応

ジャンボフレームの送受信が可能になった。

DNSクライアントの脆弱性対応

不正な内容のDNS応答を受信して誤動作する可能性があったので対応した。

チェックサム関数の高速化

IP、UDP、TCPのチェックサム計算を若干高速化した。

IPフラグメントを使った1パケット長以上のUDP送信に対応

IPフラグメントを使って、1パケット長より長いUDPパケット送信ができるようになった。

空いていないTCPポートへの接続応答をTCPRESETに変更

従来icmpportunreachableを返していたが、TCPRESETを返すよう変更した。

ARPキャッシュが削除される瞬間の通信が途切れる問題に対応

ARPキャッシュを削除する少し前に、事前にキャッシュを更新する機能を追加した。

TCPACKを無視することがある

次に期待する番号より以前の番号を持ったACKを受信したとき、再送せずに無視してしまうことがあったので修正した。

CIDR環境で正しく動作しない

クラスCのIPアドレスで23bit以下のサブネットマスクを使用するなどCIDR環境では、ユニキャストパケットがブロードキャストとして扱われてしまっていたので修正した。

TCPウインドウサイズ0の状態でデータパケットを受け取っても無視する

TCPウインドウサイズ0の状態でデータパケットを受信したとき、ウインドウサイズ0のACKを送信する必要があるが、送信されていなかった。これを修正した。

tcp_rcv_buf()、tcp_get_buf()を連続で呼べない

tcp_rcv_buf()やtcp_get_buf()は内部状態が変化しないので本来何度呼んでもかまわないが、2回目に呼んだときブロックされてしまっていた。これを修正した。

tcp_get_buf()が返す送信可能バッファサイズが不正

送信バッファが完全にフルのときや、送信バッファの途中から最後までにデータが入っているときにtcp_get_buf()が不正な値を返していた。これを修正した。

2回目のリンクアップ以降でtcpip_wai_rdy()が使えない

tcpip_wai_rdy()が2回目以降のリンクアップで使用できなかった(無条件に関数から返っていた)ので修正した。

DHCPでIP取得に時間がかかることがある

DHCPサーバが存在しない環境に接続し、その後DHCPサーバが存在する環境に接続しなおしても、直ちにDHCP取得を開始できていなかった。これを修正した。

TCPウインドウサイズ0のACKを受信したとき、不正な送信が発生することがある

TCPウインドウサイズ0のACKを受信したとき、まれに逆に大量にデータを送信してしまうことがあったので修正した。

FTPdバグ修正

・ログインメッセージをカスタマイズ可能にした。

・FTPクライアントからPORTコマンドを受けなかったときに不正なアドレスにアクセスする可能性があった点を修正した。

・ファイルアップロード時にエラーが生じたときに、データポートをすぐに切断するように修正した。

FTPcヘルプの拡充

FTPcのシェルコマンドで詳細なヘルプを表示できるように修正した。

TFTP修正

TFTPでサイズの大きいファイルを扱えなかった点を修正した。

2006.01.27 Ver1.13

UDPのコールバック受信に対応

UDPパケット受信をコールバックルーチンでユーザに通知する機能を追加した。

複数のI/Fに向けて、同一IPアドレスに送信すると失敗する

ARPのキャッシュが全I/Fで一つだったため、あるIPアドレスのエントリを複数のI/Fで参照してしまっていた。エントリにI/F情報を持たせて区別することで回避した。

環境によってはARPパケット送信時にメモリ破壊を起こすことがある

ELAP層のゼロコピーAPIを使用している場合、ARPパケット送信時にメモリ破壊を起こすことがあったので修正した。

TCP送信リトライが満了したときのエラーコードをE_TMOUTからE_CLSに変更した

通信相手からの応答がなくなったなどの場合、TCP送信は再送を繰り返して満了したときに以降のAPI呼び出しに対してエラーコードを返す。従来はE_TMOUTを返していたが、API自体のタイムアウトと区別するためE_CLSに変更した。

TCPのキープアライブが不正なシーケンス番号のパケットを受けたときもリセットされていた

ポート番号とチェックサムが正しいパケットを受信したときにキープアライブタイマをリセットしていたが、シーケンス番号が正しいのみリセットするよう変更した。

2005.08.12 Ver1.12

TCPで不正なIDのdel_sem()が発生することがある

TCP接続と切断を短時間に繰り返すとまれに不正なIDのdel_sem()が発生することがあったので修正した。

FIN2ステート時のRESET受信

TCPで、FIN2ステート時にRESETを受信すると、セッション情報の解放が2回発生していた。すぐに次のセッションが接続したとき、使用中にもかかわらず解放されることがあったので修正した。

UDPのディレイに即値を使っていた

udp_rxtaskで受信に失敗したときのディレイがdly_tsk(100);と即値を使っていた。dly_tsk(SEC2TICK(1));に変更した。

タイマ満了関数が一度余計に動作することがあった

内部で使用しているタイマにおいて、タイマ満了前にタイマを止めても、タイマ満了関数が呼ばれることがあったので修正した。

2005.07.15 Ver1.11

TCPで不正なIDのwai_sem()、sig_sem()が発生することがある

tcp_rcv_dat()で受信待ち状態のタスクと別のタスクでtcp_cls_cep()を呼ぶと、ID=0でwai_sem()が呼ばれる。また、SYNを受信しSYNACKを送信したがACKを受けられなかった場合、ID=0でsig_sem()が呼ばれる。この2点を修正した。

DHCPサーバからNAKを受信したときにリスタートしない

DHCPクライアントがRENEWのときにDHCPサーバからNAKを受け取る場合があるが、その際に再度取得シーケンスを実行していなかったので修正した。

REBIND時間にリクエストが送信されない

DHCPクライアントがRENEWのときに応答を得られなかった場合、REBIND時刻に再度リクエストを送信していなかったので修正した。

IPフラグメントのエイジングタイマが正常に動作しない

システム起動から65535tick以上経過すると、IPフラグメントパケットのエイジングタイマが1/10秒に一度起動するようになっていた(実動作には影響はない)。これを修正した。

デフォルトルートがなくなる

起動時にRIPを送信して応答を受信した後、ルータからRIPブロードキャストを受けられないとデフォルトルートが消失して別サブネットに送信できなくなっていた。その場合は規定したデフォルトルートに戻すようにし、またデフォルトではRIPの送受信を行わないよう変更した。

マルチIP環境での経路情報が不正になる

複数のI/Fを使用している場合、それぞれがリンクアップ・ダウンを繰り返すと経路情報が不正になりパケットが送信できなくなることがあったので修正した。

マルチIP環境でのDHCPクライアント

複数のI/FでDHCPクライアントを使用する場合、1つのタスクでシーケンシャルに取得するか複数のタスクで同時に取得するかを選択できるようにした。

TCPキープアライブをONにしたときのコンパイルエラー

Ver.1.10の修正漏れでTCPキープアライブを使用する定義に変更するとコンパイルエラーが発生していたので修正した。

2005.06.03 Ver1.10

ctkernelに対応

他OSへの移植性向上のため、iTRON4のAPI名と構造体名にプレフィックスを付加。

 

2005.05.20:Ver1.05

DNScで、複数タスクから同時に名前解決を行うと正しく動作しない

ctdnsc_res.cのTA_WSGLをTA_WMULに修正。

ロックするためのdis_dspをloc_cpuに変更

loc_cpuの方が軽いため。動作に変更は無い。(dnsc_mkquery()の変更)

DHCPサーバからのレスポンスがないとハングアップする

DHCPにてIPアドレス取得または更新中にDHCPサーバから応答が来ないとセマフォのデッドロックが発生していたので修正した。

フラグメントIPパケットのヘッダ内容をチェックしていない

フラグメントIPパケットはまず再構築してから、IPヘッダ内容についてチェックを行っていた。各々のフラグメントIPパケットのヘッダ内容もチェックするようにした。

TCPゼロウインドウ受信時もデータを送信してしまう

通信相手からウインドウサイズが0のACKを受信しても、その先のデータを送信してしまっていたので修正した。

IPリンク起動待ち関数で、全リンク指定のときに正常に動かない

IPリンク起動待ち関数tcpip_wai_rdy()で、複数リンクのうちどれか1つが起動したら返るような指定をした場合、実際に1つのIPリンクが起動しても返らない状態だったので修正した。

TCP連続送信が通信相手からのACKを待ってしまうことがある

アプリケーションが連続してtcp_snd_dat()を呼ぶような場合、通信相手のウインドウサイズが十分ある場合でも、通信相手からのACKを受けないと追加の通信を行っていなかったので修正した。

CenteFileSystem5.0対応

定数の定義や、ファイル名などをCenteFileSystem5.0に対応させた。(CenteFileSystem4.xとも使用可能)

FTPdバグ修正

タスク初期化構造体の第二メンバーがNULLとなっていると開発環境によってはWarningが出ることがあるので、0と変更した。

FTPcバグ修正

イベントフラグの使い方にミスがあったのを修正した。イベントフラグをクリアする方法を間違えていた点を修正し、不要なset_flgがあったのを削除した。

2005.01.14 Ver1.04

DHCPcのセカンダリDNS対応

DHCPサーバからセカンダリDNSを取得できるよう対応した。

経路情報のCIDR対応

設定可能なIPアドレスとサブネットマスクの制限を緩和し、CIDR環境でも運用可能にした。

FTP通信が遅い場合がある不具合修正

PCからCenteへのFTP送信をすると、CenteからのACK送信がPCが期待したタイミングと異なり、スループットが上がらないことがあったので修正した。

802.11bの受信パケットを破棄することがある不具合修正

802.11bからMTU最大のパケットを受信するとELAP層で破棄してしまっていたので修正した。

TCPキープアライブをONにしたときのコンパイルエラー

TCPキープアライブを使用する定義に変更するとコンパイルエラーが発生していたので修正した。

ブロードキャストPINGに対する応答内容の不具合修正

ブロードキャスト宛に対するPINGを受けたとき、その応答の送信元アドレスがブロードキャストになっていたので修正した。

マルチIP環境でARPが動作しないことがある不具合修正

IPのI/Fを複数使用する環境で、ネットワークデバイスドライバとの対応付けに不具合があり、IPのI/Fがオープンしているにもかかわらず、ARPではクローズしていると判断されるパターンがあったので修正した。

2004.10.15 Ver1.03

CentePPPVer.1.00に対応

CentePPPをCenteTCP/IPv4から使用するため、いくつかの変更を行った。

DNScのリクエストパラメータにDNSサーバアドレスを追加

DHCPdに対してDNSサーバアドレスを明示的にリクエストするよう変更した。

Cente共通モジュールバージョンアップ

Cente共通モジュールのバージョンアップ。

udp_rcv_dat()が正しくない長さを返すことがある不具合修正

トラフィックが高い状態でudp_rcv_dat()を呼び続けると、ときどき返り値の長さが実際の長さと異なることがあったので修正した。

長いPINGの受信で送信パケットリソースが枯渇する不具合修正

IPフラグメントを伴う長いPINGを受信したとき、その応答のための送信パケット群をARP解決できずに破棄する際、一部が破棄できていなかったので修正した。

TFTPのフェイルセーフ強化

ファイルの二重クローズを防止、udp_rcv_dat()からのエラーチェック強化などを行った。

TFTPdがクライアントから再送を受けたときに処理しない不具合修正

TFTPクライアントから再送を受けたとき、TFTPdで処理せずエラーを返していた。正しく再送パケットとして処理できるよう修正した。

TCPでWindowsサイズ0を通知されたときFIN受信についての動作修正

Windowsサイズ0が通知されたあと、相手からFINを受けても無視していた。FINは特別に直ちに処理するよう変更した。

TCPのクローズがしばらく実行できない不具合修正

あるコネクションのクローズ実行中に、他のコネクションのクローズが実行できない状態だったので、修正した。

TCPの再送が非常に短い間隔で発生する不具合修正

あるTCPパケットの送信から、数msec後に再送が発生してしまうことがあったので修正した。

TCPのFINを送信せずにクローズが終了してしまう不具合修正

相手からFINを受信したあと自分からクローズを行った場合に、自分からFINを出さずに一瞬でtcp_cls_cep()から返ることがあったので修正した。

TCPのFINを再送しない不具合修正

FINを送信し、その直後に、それ以前の再送のACKを受信した場合など、FINに対するACKでないACKを受信すると、FINの再送が発生しなくなることがあったので修正した。

MSSいっぱいにデータを送信できない不具合修正

TCP送信パケットのデータ部の最大長が、相手から通知されたMSSより常に20byte短くなっていたので修正した。

2004.07.30 Ver1.02

sys_ip_close()時にDHCP情報をリセットするよう変更

sys_ip_close()によってIPリンクを閉じても、DHCPcがRENEW時間に達するとRENEWを行おうとしていた。sys_ip_close()が呼ばれたらDHCP情報も初期化するようにした。

tcp_acp_cep()のタイムアウトと同時に着信を受けると通信不可になる不具合修正

tcp_acp_cep()のタイムアウトと同時に着信を受けてしまうと、tcp_acp_cep()からはE_TMOUTで返るが、TCPモジュール内では接続完了してしまっていた。その場合は、相手にRESETを返して初期上体に戻すようにした。

DHCPサーバからIPアドレスを取得できないことがある不具合修正

Planex社のブロードバンドルータBRL-04ARからIPアドレス割り当てを受けられなかったので修正した。

tcp_rxtaskでE_CTX発生する不具合修正

環境によっては、tcp_rxtask()のwai_sem()でE_CTXが発生することがあったので、環境依存しないコーディング方法に修正。

tcp_cre_cep()に正しくコールバック関数を指定できない不具合修正

コールバック関数のポインタを指定してもコールバック関数が呼ばれない状態だったので修正。tcp_vcre_cep()は正しく設定可能。

TCP着信が失敗することがある不具合修正

同じポート番号から何度もTCP着信を繰り返すと、そのうちにSYNACKに対するACKを受信してRSTを返してしまうことがあったので修正。FTPのデータポート(20)からの着信などで発生する。

tcp_con_cep()で接続した通信で、遅延ACKが動作していない不具合修正

着信して接続した通信では遅延ACKを使用しているが、能動的に接続した通信では未使用になっていたので修正した。

相手から通知されたMSSを正しく使用していない不具合修正

相手から通知されたTCPのMSSを内部変数に反映させる部分の不具合で、1460を通知されても送信MSSは1284になってしまっていたので修正した。

tcp_con_cep()でTMO_FEVRを指定してもE_TMOUTが返る不具合修正

TMO_FEVRを指定しても、定義されている最大回数だけSYNパケットをリトライしたあとE_TMOUTで返っていた。TMO_FEVRの場合は定義されている回数にかかわらずリトライを繰り返すようにした。

環境によっては、送信パケットが正しく構築できない不具合修正

環境によっては送信Ethernetパケットの802.3ヘッダとIPヘッダの間に2byteの空間が空いてしまうことがあったので修正

存在しない相手にパケットを送信し続けると誤動作する対策

ARPのペンディングリストに制限を設け、存在しない相手にパケットを送信し続けてもバッファが枯渇しないようにした。

起動時にRIPリクエストの送信を行うか否かの定義を追加

デフォルトで、起動時にRIPリクエストを送信してルーティングテーブルを構築する機能があるが、不要な場合は送信しないようにできるようにした。

2004.05.31 Ver1.01

DHCPcで、特定のIPアドレスをDHCPdに要求する機能追加

あらかじめパラメータで決めたIPアドレスをDHCPdに要求する機能を追加。DHCPd側でそれが受け入れられなかった場合は従来どおりの割り当てが行われる。

TCPシーケンス番号不具合修正

TCPシーケンス番号が0xffffffffから0x00000000へラウンドしたときに誤動作する環境があったので、環境依存しないようなコーディング方法に修正。

FTPcのAPPENDコマンド実行中のエラーで誤動作する不具合修正

FTPcで、APPENDコマンドを実行しているときにエラーが発生するとファイルがオープンしたままになってしまう不具合を修正

FTPcマルチセッション対応

FTPcで、同時に複数のFTPdに接続できるよう拡張。

ARPのAPI拡張

DHCPdオプション対応のため、ARPのキャッシュを削除するAPIを追加。

2004.04.16:Ver1.00

TCP省コピーAPI対応

バッファコピーを行わないTCPのAPIに対応。

TCPキープアライブ対応

RFC1122で規定されているTCPキープアライブ機能に対応。

マルチIP対応

同時に複数のI/FでTCP/IPを利用できるマルチIP機能に対応。

tcp_con_cep()不具合修正

初期化せずに使用している変数が存在したので修正。

tcp_con_cep()でRESETを受信したときの不具合修正

外部に接続を試みたときに相手からRESETを受信すると、内部状態が「接続試行中」のままになり、次回以降tcp_con_cep()を呼ぶと正しく動作しない不具合を修正。

外部からTCPSYNを受信したときの遅延修正

外部からTCP接続を受けたとき、応答のSYNACKを返すまで60msec程度ウエイトが入る不具合修正。

tcp_rcv_dat()の返り値修正

tcp_rcv_dat()でデータ待ちのとき、相手から接続されると長さ0でE_OKを返していたので、E_CLSを返すよう修正。

tcp_snd_dat()不具合修正

TCP接続完了状態でないときにtcp_snd_dat()を呼ぶと関数から戻らなくなる不具合修正。

tcp_rcv_dat()不具合修正

tcp_rcv_dat()を呼んでいるタスクが削除されると、その後tcp_cls_cep()を呼んでも受信状態から抜けられなくなる不具合修正。


TCP/IPネットワーク【TCP/IPv4】


製品マニュアルのお問い合わせ

以下のフォームに必要事項を入力し、「内容確認へ」ボタンを押してください。

印の項目は入力必須です。

個人情報

確認のためもう一度入力してください
-
市区町村名 ※[例] 立川市
町名・番地 ※[例] 錦町1-6-6
建物名 ※[例] 岩崎錦町ビル6F

マニュアルのお問い合わせ内容
製品マニュアル「Cente TCP/IPv4」

※お問合せ/ご質問の内容についてできるだけ詳しくご記入下さい。
アンケート
Centeミドルウェアシリーズ
Centeハードウェアシリーズ
ミドルウェア統合開発キット
組込みアプリケーション開発プラットフォーム
お取引なし
なし
Centeミドルウェアシリーズ
Centeハードウェアシリーズ
ミドルウェア統合開発キット
組込みアプリケーション開発プラットフォーム
認証コード

見えている文字を入力してください。


  • μITRONはMicro Industrial The Realtime Operating System Nucleusの略称です。
  • Centeはデータテクノロジー株式会社の商標登録です。
  • ESPTはビー・ユー・ジー社製のネットワーク通信機能付き小型CPU基板です。
  • その他の製品名・ブランド名は各社の商標または登録商標です。
  • 記載の仕様・価格・概観等については、予告なく変更する場合があります。

このページのトップへ