📄 llc.c
字号:
#include "string.h"
#include "net.h"
/*全局变量的定义*/
u8 host_MAC_address[6]={0x00,0xe0,0x4c,0xe5,0x39,0xd1};
u8 board_MAC_address[6]= {0x60,0x20,0x00,0x00,0x20,0x00};
struct LLC_packet
{
unsigned char destination_MAC[6];
unsigned char source_MAC[6];
unsigned char ethertype[2];
unsigned char LLC_data[600];
};
/*函数声明*/
/*加llc包函数,buf为入口数据的指针,length为数据的长度*/
s32 pack_LLC(u8 *buf ,s32 length)
{
int i;
struct LLC_packet *llc;
unsigned char data[600];
llc=(struct LLC_packet *)data;
for(i=0;i<6;i++)
llc->destination_MAC[i]=host_MAC_address[i];
for(i=0;i<6;i++)
llc->source_MAC[i]=board_MAC_address[i];
llc->ethertype[0]=0x08;
llc->ethertype[1]=0x00;
for(i=0;i<length;i++)
llc->LLC_data[i]= *(buf+i);
for(i=0;i<length+14;i++)
transmit_packet[i]=data[i];
return (length+14);
}
/*解llc包的函数*/
s32 unpack_LLC(u8 * buf,s32 length)
{ int i;
struct LLC_packet *llc;
i=memcmp(buf,board_MAC_address,6);
if(0!=i) return -2;
i=memcmp(buf+6,host_MAC_address,6);
if(0!=i) return -2;
llc=(struct LLC_packet *)buf;
if(llc->ethertype[0]!=0x08||llc->ethertype[1]!=0x00)return -2;
else return length-14;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -