📄 eth.c
字号:
#include "eth.h"
#include "arp.h"
#include "icmp.h"
static u32_t _p_ipaddr = IPADDR(192, 168, 0, 118);
static struct eth_addr _p_ethaddr = {0x11, 0x22, 0x33, 0x44, 0x55, 0x66};
u16_t DM9000DBG_SendFrame(u8_t *pbData, u8_t slen);
u16_t eth_send(u8_t *buf, u16_t len)
{
return DM9000DBG_SendFrame(buf, len);
}
u16_t eth_input(u8_t *buf, u16_t len)
{
struct eth_hdr *ethhdr = (struct eth_hdr*)buf;
if(arp_in(buf, len))
{
struct ip_hdr *iphdr;
ip_input(buf+sizeof(struct eth_hdr), len-sizeof(struct eth_hdr));
if((len = ip_getout_packet((u8_t **)&iphdr)) > 0)
{
arp_getethaddr(iphdr->destipaddr, ðhdr->dest);
ethhdr->src = getethaddr();
ethhdr->type = HTONS(ETHTYPE_IP);
eth_send(buf, len+sizeof(struct eth_hdr));
}
}
return 0;
}
/********************************/
u32_t getipaddr(void)
{
return _p_ipaddr;
}
//static struct eth_addr _p_ethaddr = {0x11, 0x22, 0x33, 0x44, 0x55, 0x66};
struct eth_addr getethaddr(void)
{
return _p_ethaddr;
}
/*******************************/
/*
u32_t eth_fillhdr(struct eth_hdr *hdr)
{
hdr->
}*/
/*******************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -