U boot兩個修改 ARP支援和UDP校驗支援

2021-09-19 06:48:30 字數 1378 閱讀 8569

原檔案:檔案net.cnetreceive()函式

**位置:搜尋「case arpop_reply:」行並且找到其return;語句。

修改

#ifdef config_netconsole以下修改為:

#ifdef config_netconsole

(*packethandler)(0, 0, 0, 0);

#endif

/** if arp response by tftp,

** send "tftp read request"

** packet immediately */

extern int tftpstarted;

if (1 == tftpstarted)

else if (netarpwaittxpacketsize)

else

注:netarpwaitdportnetarpwaitsport都是新定義的全域性變數。當然,也需要在netsendu***acket將這兩個值賦值。

u-boot預設不用udp校驗和(置零)。但是在os x中,udp校驗和不正確的話,udp包將會被系統丟棄。所以需要新增如下:

位置:檔案net.c中的netsetip()函式

修改

首先,在netsetip()中的「ip->udp_xsum = 0;」後面加上:

unsigned int tmpsum = 0;

tmpsum = netudpcksum(ip, len);

ip->udp_xsum = htons((ushort)(~tmpsum));

然後,在前面新增cksum函式:

#define db_udp_xsum(x)

unsigned netudpcksum(ip_t *ip, int len)

if (len) /* 1 == len */

xsum = (xsum & 0x0000ffff) + (xsum >> 16);

xsum = (xsum & 0x0000ffff) + (xsum >> 16);

return (xsum & 0x0000ffff);

}

SQL 支援兩個分格符

use alisoft go object userdefinedfunction dbo split script date 09 22 2011 08 49 26 set ansi nulls on goset quoted identifier on go 呼叫 select from spl...

兩個網絡卡的預設閘道器修改。

同事電腦裝了2個網絡卡,擬乙個上外網,乙個上內網。內網ip為192.168.1.5,閘道器 dns置空 外網ip為192.168.16.5,閘道器192.168.16.1,設定dns。本以為這樣就沒問題了,可結果是內網連線伺服器沒問題,瀏覽器開啟外網提示連線不上。檢視下內網的ip配置,沒錯啊,再看內...

兩個佇列實現棧和兩個棧實現佇列

棧 先進後出 佇列 先進先出 1 兩個佇列實現棧 佇列a 佇列b 入棧 入佇列a,1,2,3,4 入棧,在佇列a裡為 a 1,2,3,4 出棧,將佇列a中的元素入佇列b直到佇列a裡的元素只剩下乙個,則隊a為4,隊b為1,2,3,a 4,b 1,2,3,輸出a隊頭4 include include u...