【DHCPとIP Gleaning】
基本構成で動作したWeb ServerデモにDHCPかIP Gleaningの機能を
追加しましょう。
DHCP Client
LANに接続したときにDHCPサーバからIPアドレスを付与してもらうため
のプロトコルです。
IP Gleaning
これは非標準の機能なのですが、リモートのパソコンから、指定した
IPアドレスをPICNICに与えることが出来るようにするための機能です。
ARPとPINGのプロトコルを組み合わせて実現します。
【機能追加の手順】
Microchip TCP/IP Stackでは、このような機能追加は、「stacktsk.h」で
指定するだけで自動的に必要なヘッダファイルをインクルードしてくれます。
指定といっても、もともと雛形として用意されているファイル内のコメント行
になっている該当部分のコメントを外して実行文にするだけです。
変更は、「stachtsk.h」ファイルの下記2行だけです。
106行目 //#define STACK_USE_IP_GLEANING
107行目 //#define STACK_USE_DHCP
この行頭の//を削除するだけです。
次に追加が必要なモジュールのソースファイルをプロジェクトに追加します。
IP Gleaningの場合には追加モジュールはありませんが、DHCP機能を追加
する時には、「dhcp.c」と「udp.c」の2つのモジュールの追加が必要です。
この追加には、Edit Projectで、必要なcのソースファイルをProject Files
の欄にAdd Nodeボタンで追加します。
このとき、コンパイルオプションが指定されていますので、他のソースファイル
と同じように、ファイルを選択してからNode Propertiesのボタンを押して、
不要なチェックを外し、さらに最下行にあるAdding Command Line Optionsの
欄に 「 -dMPFS_USE_PGRM」 というオプションを追加します。
これだけの作業が完了したらサイドMakeを実行してコンパイルリンクをします。
エラーが無くsuccessとなればOKです。Warning Messageは無視して下さい。
《注意》 dhcp.cの修正
下記の部分のSIIPはSLIPの間違いですので修正が必要です。
58行目 #if defined(STACK_USE_SIIP)
《注意》 デバッグモードの指定
DHCPのテスト中には、デバッグモードにすることで、DHCP手順の進み
具合をパソコンでモニターすることが出来るように出来ます。
ハイパーターミナルを使えるようにしておくと、stage毎に1文字のデータ
が表示されるようになります。例えば下記のような文字になります。
D :Discoverメッセージを出力する
R :Readyになった
O :Offerメッセージを受信したのでRequestメッセージを出力する
B :DHCPが成功したのでBindする
デバッグモードを有効にするためには、dhcp.cの下記の行の//を削除します。
121行目 //#define SMTP_SERVER_DEBUG_MODE
【IP Gleaning機能の確認】
IP Gleaning機能の確認には、パソコン側で下記のようにコマンドを発行します。
いずれもコマンドプロンプトの画面から行います。
arp -s <設定するIPアドレス> <PICNICのMACアドレス>
ping <設定するIPアドレス>
《例》
arp -s 192.168.1.5 00-04-a3-00-00-00
ping 192.168.1.5
これで強制的にPICNICのIPアドレスを希望のアドレスに設定することが出来
ます。
このあとは、pingコマンドで確かに設定されたことを確認してみましょう。
【DHCP機能の確認】
DHCP機能の確認のためには、少なくともネットワーク内に1台のDHCPサーバ
が接続されていることが必要です。
最近のブロードバンドルータは大部分このDHCPサーバの機能を持っています
のでこれを使って確認しましょう。
(・・・・ DHCPの動作確認中 ちょっとおかしい ・・・・・)