Cente TCP/IPv4

Cente TCP/IPv4

・FTPcのFTPS対応
FTPcをFTPS対応にした。Implicitモード、Explicitモードが使用可能。
・DHCPのOfferを受信できないことがある(Cente障害情報:001-0045)
同一LAN上の複数のDHCPクライアントが同じタイミングでDHCPのリクエストを送信する環境で、一部のCenteミドルウエア搭載機器でDHCPによるIPアドレス取得が失敗することがあった。これを修正した。
・不正な内容のTCPパケット受信によってメモリ破壊が発生する(Cente障害情報:001-0046)
ある特定のパターンを持った不正なTCPパケットを受信した場合、機器のハングアップが発生するなどして一切通信できない状態となる可能性があった。これを修正した。
・FTPdで、パッシブモードへの変更に失敗することがある(Cente障害情報:001-0048)

Cente TCP/IPv4

・I/F IDを取得する機能を追加
tcp_get_opt()、udp_get_opt()にて、TCP/UDPの通信端点に設定されているI/F IDを取得する機能を追加した。
・FTPdで、データポート接続に失敗すると以後該当ファイルへのアクセスができなくなる
FTPdから発信するデータポートのTCP接続がなんらかの理由で失敗した場合、以後アクセスしようとしていたファイルの上書き・削除ができない状態になっていた。これを修正した。(Cente障害情報:001-0038)
・FTPcでsystemコマンドの実行結果に不要な文字列が付加されてしまう
FTPcで、システムの種別を取得するsystemコマンドを実行した際、ユーザバッファに格納される実行結果(文字列)の後ろに不要な文字列が付加されていた。これを修正した。(Cente障害情報:001-0039)
・Cente Shellでftpcコマンドが終了しなくなる場合がある

Cente TCP/IPv4

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を受けたとき、その応答の送信元アドレスがマルチキャストアドレスになっていたので修正した。
 

Cente TCP/IPv4

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()がいつまでも送信可能を返さない

Cente TCP/IPv4

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

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

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

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

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

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

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

Cente TCP/IPv4

BSDソケットAPI対応

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

マルチキャスト対応

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

ジャンボフレーム対応

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

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

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

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

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

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

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

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

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

Cente TCP/IPv4

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に変更した。

Cente TCP/IPv4

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

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

FIN2ステート時のRESET受信

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

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

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

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

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

Cente TCP/IPv4

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フラグメントのエイジングタイマが正常に動作しない

Page 1 of 2

Social Media