📄 eth.c
字号:
/*********************************************************************************
* eth.c v1.00 接口程序 *
* 版权(c) 2004- 北京百科融创科技有限公司 *
* 设计者: 赵治心 *
* 邮箱: ourui.wl@263.net *
**********************************************************************************/
#include "stdio.h"
#include "tcp_ip.h"
#include "global.h"
#include "8019head.h"
void eth_send(UCHAR * outbuf, UCHAR * hwaddr, UINT ptype, UINT len)
{
int i;
ETH_HEADER * eth;
eth = (ETH_HEADER *)outbuf;
// Add 14 byte Ethernet header
for(i=0;i<6;i++)
{
eth->source_hwaddr[i]=sed_lclEthAddr[i];
eth->dest_hwaddr[i]=*(hwaddr+i);
}
eth->frame_type[0] = (ptype & 0xFF00)>>8;
eth->frame_type[1] = ptype & 0x00FF;
// We just added 14 bytes to length
SendPacket((UINT *)outbuf, len + 14);
}
UINT cksum(UCHAR *check,UINT length) //计算校验和
{
unsigned long sum=0;
UINT i;
UINT *ptr;
ptr=(UINT *)check;
for (i=0;i<(length)/2;i++)
{
sum+=(*ptr++)<<8;
sum+=*ptr++;
}
if (length&0x01)//表示长度为单数
{
sum=sum+((*ptr++)<<8);
}
sum=(sum&0xffff)+((sum>>16)&0xffff);//高16位和低16位相加
if(sum&0xffff0000)
{//表示有进位
sum++;
}
i=(UINT)((sum)&0xffff);
return i;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -