00001 #ifndef __IP_H__
00002
00003 #define __IP_H__
00004
00005
00006
00007 #define CALC_BROADCAST_ADDR( ip, mask ) ( ip | ~mask )
00008
00009
00010 #define IS_BROADCAST_ADDR( ip, mask ) ( ( ip & ~mask ) == ~mask)
00011
00012
00013 #define IS_ADDR_IN_MY_SUBNET( ip, mask ) ( ( ip & ~mask ) == ( myIP & ~mask ) )
00014
00015 extern unsigned long myIP;
00016
00017 extern unsigned long Netmask;
00018
00019 extern unsigned long Gateway;
00020
00021 extern unsigned long DNSserver;
00022
00023 void ip( unsigned int packet_lenght , unsigned char *buffer );
00024 void MakeIPheader( unsigned long SourceIP, unsigned char Protocoll, unsigned int Datalenght , unsigned char *ethernetbuffer );
00025
00026 #define IP_HEADER_LENGHT 20
00027
00028 union IP_ADDRESS {
00029 unsigned char IPbyte[4];
00030 unsigned long IP;
00031 };
00032
00033 struct IP_header{
00034 unsigned char IP_Version_Headerlen;
00035 unsigned char IP_TOS;
00036 unsigned int IP_Totallenght;
00037 unsigned int IP_Identification;
00038 unsigned char IP_Flags;
00039 unsigned char IP_Fragmentoffset;
00040 unsigned char IP_TTL;
00041 unsigned char IP_Protocol;
00042 unsigned int IP_Headerchecksum;
00043 unsigned long IP_SourceIP;
00044 unsigned long IP_DestinationIP;
00045 };
00046
00047 #define PROTO_ICMP 0x01
00048 #define PROTO_TCP 0x06
00049 #define PROTO_UDP 0x11
00050
00051
00052 #endif