Network 0x65


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
のりトライアウト回数

【出力】

 リターンコード OK 正常終了
+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以下の場合、パラメータエラーを返します。

 本ファンクションはブロッキングで処理を行います。