?? ip.c
字號:
#include "eth_typedef.h"
#include "cksum.h"
#include "string.h"
#include "tcp.h"
void ip_send()
{
}
void ip_handle(unsigned char * input)
{
IP_HEADER * ip;
unsigned int header_len;
unsigned int reload_len;
ip = (IP_HEADER *)(input+14);
if(ip->dest_ip_address != my.ip_address)
{
return;
}
if((ip->ver_len >> 4) != IP_VER)
{
return;
}
header_len = 4 * (0x0f & ip->ver_len);
reload_len = ip->total_length - header_len;
if(cksum((unsigned char *)ip, header_len) != 0xffff)
{
return;
}
if((ip->fragment_info & 0x3fff) != 0)
{
return;
}
if(header_len > 20)
{
memmove((ip+20), (ip+header_len), reload_len);
header_len = 20;
ip->ver_len = 0x45;
ip->total_length = reload_len + 20;
}
switch(ip->protocol_id)
{
case TCP_TYPE:
tcp_handle((unsigned char *)ip, reload_len);
break;
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -