改版履歴

Cente PPP

1tick=1msec環境で、PPPパケットの再送が5秒おきに発生する。
1tick=10msecを前提とした部分があり、0.5秒おきに発生する再送が、1tick=1msec環境では5秒おきに発生していたので修正した。

MPPEで、パケット到着順が逆になるとそれ以降の通信ができなくなる。
特にインターネット環境では、ときどきパケットの到着順が前後することがある。MPPE通信のシーケンス番号が0に戻るときに到着順が前後すると、それ以降の通信ができなくなっていたので対応した。

Cente PPP

PPP接続完了直後にIPパケットを受信できない。
PPPネゴシエーションが完了した直後に回線側から受信したパケットが破棄されてしまうことがあったので修正した。

PPP接続完了直後に送信したIPパケットの送信元IPアドレスが0.0.0.0になる。
PPPネゴシエーションが完了した直後にUDPパケット送信やTCP発信を実行すると、そのパケットの送信元IPアドレスが0.0.0.0になることがあったので修正した。

MS-CHAPv2を使用しない設定のとき、相手からMS-CHAPv2を要求されるとACKを返してしまう。
INCLUDE_MSCHAPV2を定義しない状態にしても、相手からMS-CHAPv2を要求されるとACKを返していた。そのため、MD5による認証ができずに接続が失敗してしまっていたので修正した。

モデムから不正な応答が返ると発信が終了しない。
「ATD」コマンドに対して「OK」が返った場合、その後も「CONNECT」や「NO CARRIER」を待ち続けてしまうので修正した。

モデムが応答を返さない状態で着信停止を実行しても無効となる。
モデムが応答を返さない異常状態のときに「ctrl_listen_stop」で着信停止を要求しても、着信可能状態に戻ってしまうことがあったので修正した。

発信時のエラーがクリアされない。
一旦発信を実行して認証失敗などで切断後、着信を行なうとネゴシエーションが成功してもコールバック関数に発信時のエラーが通知されてしまうので修正した。

再送間隔が設定したものより長くなることがある。
LCPの再送間隔を3秒に設定しても、4秒になることがあったので修正した。

LCPリンクアップ直後に受信したIPCPパケットを無視することがある。
相手がLCP ConfAckとIPCP ConfReqを連続して送信してきた場合、IPCP ConfReqを無視することがあったので修正した。

CodeRejの内容が間違っている。
本来CodeRejのデータ部はコード、ID、長さ、データ部と続くが、データ部しか送信していなかったので修正した。

ConfNak/ConfRejの最大送信回数が設定地より多い。
PPP_MFCの定義で設定した最大送信回数より1回多く送信していたので修正した。

ACFC/PFCの扱いが自分側と相手側で分かれていない。
ACFC/PFCは相手にフィールド圧縮して送信するよう要求するものだが、そのオプションをつけると自分からの送信パケットも圧縮していたので修正した。

自分からのConfReq内容が相手からのConfReq内容に影響される。
例えば送信するConfReqにMagicNumberのオプションがついていなくても、受信したConfReqについていた場合、次回送信するConfReqにそのオプションをつけていた。送信と受信のオプションを完全に分離するよう修正した。

ネゴシエーション中の切断理由が不正な場合がある。
ネゴシエーション中に回線が突然切れた場合や内容が不正だとして切断した場合、切断理由が0になる場合があったので修正した。

GREパケットのCallerIDが0になっている。
PPTPで使用するGREのCallerIDが、ACKパケットの場合0になっていたので修正した。

Page 2 of 2