修改bootp實驗
實驗目的:
1.修改bootp,去掉其自動獲得ip的功能
實驗原理:
1.bootp的主要功能是使開發板動態獲得宿主機分配的ip位址,所以可以設想,如果靜態設定開發板的位址資訊,就可以在bootloader中去除bootp。
2.基於bootp的實現可能牽涉到一些環境變數資訊的設定,所以我們沒有完全去除bootp的原**,只是去掉了其獲得ip的功能。
實驗內容:
1.檢視net.h檔案,可以發現以下宣告:
extern uchar clientether[6]; // our ethernet address.
extern ulong clientip; // our ip addr (0 = unknown).
extern uchar hostether[6]; // boot server enet address.
extern ulong hostip; // server ip addr (0 = unkn).
所以,我們可以在bootloader中的環境變數中設定這些引數。
2.修改command.c檔案,在命令表中增加一條設定引數的命令,這裡我們給它起名為
cmd_tbl_setenv,相應的**函式為setenv();注意command.c檔案需要增加後面提
到的標頭檔案setenv.h,因為setenv.h中宣告了cmd_tbl_setenv引數。
cmd_tbl cmdtbl = ;
3.新建 setenv.c和setenv.h檔案如下:
//setenv.h
#include net.h
#define cmd_tbl_setenv
/bool setevn(cmd_tbl *cptr, int argc, char **argv);//設定主機和開發板的ip及網絡卡位址資訊
//setenv.c
#include 「setenv.h」
bool setevn(cmd_tbl *cptr, int argc, char **argv)
if (!strcmp(argv[1], "ethaddr"))
else if (!strcmp(argv[3], "ipaddr"))
else if (!strcmp(argv[5], "serverip"))
else if(!strcmp(argv[7], "serverethaddr"))
else}}
bool bootptx(void) // bootptx.
if (clientip==0)
BOOTP 引導程式協議
1 引言 在進行系統引導時能夠通過r a r p來獲取它的 i p位址。然而使用 r a r p有兩個問題 1 i p位址是返回的唯一結果 2 既然 r a r p使用鏈路層廣播,r a r p請求就不會被路由器 迫使每個實際網路設定乙個rarp 伺服器 2 bootp 的分組格式 bootp 請求...
BOOTP引導程式協議
我們介紹了乙個無盤系統,它在不知道自身 i p位址的情況下,在進行系統引導時 能夠通過r a r p來獲取它的i p位址。然而使用r a r p有兩個問題 1 i p位址是返回的唯一結 果 2 既然r a r p使用鏈路層廣播,r a r p請求就不會被路由器 迫使每個實際網路 設定乙個rarp 伺...
dhcp和bootp協議的區別
說明 本文 與rarp類似,bootp和dhcp都是用於獲取主機ip位址的協議,三者都是基於客戶伺服器模式,但由於rarp在低層操作,使用它就必須訪問網路硬體,因此應用程式設計人員很難或者不太可能構造乙個伺服器。bootp及dhcp應運而生,bootp協議早與dhcp,但而這都是構建在傳輸層udp之...