DHCP要求送信
【機能】
ダイナミック・ホスト・コンフィグレーション・プロトコル(DHCP)のリクエストを送信し、IPアドレスを取得します。
【関数】
int DhcpReq( unsigned long *ipinf, int tmout, int retry )
|
{
|
return trapa_svc( 0x65, pid, ipinf, tmout, retry );
|
}
|
【入力】
ipinf
| アドレス情報
| アドレス情報を格納する領域の先頭アドレス
|
tmout
| タイムアウト時間
| DHCP-DISCOVER/DHCP-REQUEST
の応答時間タイムアウト時間(ms)
|
retry
| リトライ回数
| DHCP-DISCOVER/DHCP-REQUEST
のりトライアウト回数
|
【出力】
| +0
+1
+2
+3
| | | |
ipinf+00
取得IPアドレス
| |
ipinf+04
デフォルトゲートウェイ
| |
ipinf+08
サブネットマスク
| |
| ERR_PARAM
| パラメータエラー
|
| ERR_LANCLOSED
| LAN未オープン
|
| ERR_DP_DISOUT
| DHCPサーバが応答しない
|
| ERR_DP_RQOUT
| 応答タイムアウト
|
【解説】
DHCP要求を送信して、応答ぱパケットからIPアドレス情報を取得します。
正常に応答を受信した場合、自IPアドレスを動作パラメータの自IPアドレス領域にセットすると共に、本ファンクションの出力パラメータにセットして返します。
また、サブネットマスクおよびデフォルトゲートウェイが応答パケットに設定されている場合、これらを動作パラメータに設定すると共に、本ファンクションの出力パラメータにセットして返します。
取得したIPアドレスを格納する領域のポインタがNULLの場合、取得したIPアドレス情報は動作パラメータへのセットにみ行います。
正常に応答を受信し、自IPアドレスが変更される場合、本装置内でオープンされている(バインド済み)ソケットは全て強制的にクローズされます。
指定されたタイムアウト時間内に応答を受信できなかった場合、指定されたリトライ回数だけリトライします。リトライアウトした場合、DHCPサーバが存在しないか、応答タイムアウトのいずれかのエラーを返します。この時、動作パラメータの自IPアドレス、デフォルトゲートウェイ、サブネットマスクの各設定値は元の値が保持されます。
取得したIPアドレスを格納する領域のアドレスが4バイト境界にない場合、タイムアウト時間が0以下の場合、リトライ回数が0以下の場合、パラメータエラーを返します。
本ファンクションはブロッキングで処理を行います。