|
日照
上午看了看棧底層接口,主要有這樣幾個(gè)功能:
1:eth_input(struct pbuf *p, struct netif *inp);
2:ethernetif_output(struct netif *netif, struct pbuf *p, struct ip_addr *ipaddr)
3:rt_err_t eth_device_init(struct eth_device* dev, const char* name)
第一個(gè)是用來把網(wǎng)絡(luò)上的數(shù)據(jù)預(yù)分揀,分成IP包和ARP包,大體的步驟流程是:首先取出以太網(wǎng)層的類型數(shù)據(jù),然后判斷是IP還是ARP,然后對(duì)應(yīng)著各自的處理程序,
第二個(gè)是用來把TCP/IP的上層封裝數(shù)據(jù)加入ARP頭之后放入BUFF中,然后分揀是IP包還是ARP包然后加入各自的頭,最后通過PHY上傳到以太網(wǎng),基本上是輸入的逆運(yùn)算,
第三個(gè)是 初始化, 加載結(jié)構(gòu)類的幾個(gè)方法地址,比如說底層的收發(fā),標(biāo)志,MAC長(zhǎng)度等一堆,最后:Set a network interface as the default network interface。
|
|