⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 etherif.h

📁 实现在ARM上的ICP/IP功能的源代码。
💻 H
字号:
/*这份代码经源码格式软件格式化过
     yang_hx@neusoft.com      */
/* net interface. fetch packet and send packet */
#define ETHER_TYPE_IP 0x0800 
#define ETHER_TYPE_ARP 0x0806 

#define ETHER_ADDR_LEN 6 


/* the header of Ethernet packet */
__packed struct SEtherHead 
{
    BYTE DestAddr[ETHER_ADDR_LEN];
    BYTE ScrAddr[ETHER_ADDR_LEN];
    
    /* 16 bits.0800H IP, 0806H ARP, value less than 0x0600 used in
    	IEEE802 to indicate the length of the packet*/
    WORD type ;
    
}
;

/* struct for every ethernet device */
struct SEtherDevice 
{
    BYTE Addr[ETHER_ADDR_LEN];
    
    /* send by this device */
    BOOL(*send)(BYTE*buf,WORD size);
    
    /* get a packet from device buffer. returned packet is sorted
    	in buffer pointed by SMemHead. If no packet return NULL */
    struct SMemHead * (*recv)();
}
;

//BOOL EtherOutput(struct SMemHead *MemHead,struct SNetIf*NetIf,IP_ADDR DestIP)  ;
//void EtherInput(struct SNetIf* NetIf)  ;

//void EtherDevInit(struct SEtherDevice*pDevice,BYTE EtherAddr[],BOOL(*send)(void*buf,WORD size),struct SMemHead* (*recv)());
void EtherDevInit(struct SEtherDevice   * pDevice, BYTE EtherAddr[],
				  BOOL ( * send)(BYTE *buf, WORD size)   ,
				  struct SMemHead   *( * recv)()   )  ;
//{
//void EtherDevInit(void *pDevice,void *EtherAddr,void *send,void *recv) ;
void EtherInput(struct SNetIf*NetIf);
BOOL EtherOutput(struct SMemHead*MemHead,struct SNetIf*NetIf,IP_ADDR DestIP);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -