Benoît Locher / mbedNet
Committer:
Benoit
Date:
Sun Jun 12 11:23:03 2011 +0000
Revision:
0:19f5f51584de
Child:
1:f4040665bc61
Initial release (alpha quality)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Benoit 0:19f5f51584de 1 /*
Benoit 0:19f5f51584de 2 * $Id: IPv4.h 27 2011-06-09 12:55:57Z benoit $
Benoit 0:19f5f51584de 3 * $Author: benoit $
Benoit 0:19f5f51584de 4 * $Date: 2011-06-09 14:55:57 +0200 (jeu., 09 juin 2011) $
Benoit 0:19f5f51584de 5 * $Rev: 27 $
Benoit 0:19f5f51584de 6 *
Benoit 0:19f5f51584de 7 *
Benoit 0:19f5f51584de 8 *
Benoit 0:19f5f51584de 9 *
Benoit 0:19f5f51584de 10 *
Benoit 0:19f5f51584de 11 */
Benoit 0:19f5f51584de 12
Benoit 0:19f5f51584de 13 #ifndef __IPV4_H__
Benoit 0:19f5f51584de 14 #define __IPV4_H__
Benoit 0:19f5f51584de 15
Benoit 0:19f5f51584de 16 #include "NetIF.h"
Benoit 0:19f5f51584de 17
Benoit 0:19f5f51584de 18
Benoit 0:19f5f51584de 19 #define IPV4_PROTO_ICMPV4 1
Benoit 0:19f5f51584de 20 #define IPV4_PROTO_TCPV4 6
Benoit 0:19f5f51584de 21 #define IPV4_PROTO_UDPV4 17
Benoit 0:19f5f51584de 22
Benoit 0:19f5f51584de 23
Benoit 0:19f5f51584de 24 #define IPV4_VERSION 4
Benoit 0:19f5f51584de 25 #define IPV4_FLAG_DF 0x02
Benoit 0:19f5f51584de 26 #define IPV4_FLAG_MF 0x04
Benoit 0:19f5f51584de 27
Benoit 0:19f5f51584de 28 typedef uint16_t IPv4_Proto_t;
Benoit 0:19f5f51584de 29
Benoit 0:19f5f51584de 30
Benoit 0:19f5f51584de 31 #pragma push
Benoit 0:19f5f51584de 32 #pragma pack(1)
Benoit 0:19f5f51584de 33 struct IPv4_Header
Benoit 0:19f5f51584de 34 {
Benoit 0:19f5f51584de 35 uint8_t ihl :4;
Benoit 0:19f5f51584de 36 uint8_t version :4;
Benoit 0:19f5f51584de 37 uint8_t tos;
Benoit 0:19f5f51584de 38 uint16_t totalLength;
Benoit 0:19f5f51584de 39 uint16_t id;
Benoit 0:19f5f51584de 40 uint16_t fragmentFlags;
Benoit 0:19f5f51584de 41 uint8_t ttl;
Benoit 0:19f5f51584de 42 uint8_t protocol;
Benoit 0:19f5f51584de 43 uint16_t crc;
Benoit 0:19f5f51584de 44 IPv4_Addr_t source,
Benoit 0:19f5f51584de 45 dest;
Benoit 0:19f5f51584de 46 };
Benoit 0:19f5f51584de 47 #pragma pop
Benoit 0:19f5f51584de 48 typedef struct IPv4_Header IPv4_Header_t;
Benoit 0:19f5f51584de 49
Benoit 0:19f5f51584de 50
Benoit 0:19f5f51584de 51 extern Protocol_Handler_t ipv4;
Benoit 0:19f5f51584de 52
Benoit 0:19f5f51584de 53
Benoit 0:19f5f51584de 54 CAPI void IPv4_DumpIPv4Header(const char *prefix, IPv4_Header_t *ipv4Packet);
Benoit 0:19f5f51584de 55 CAPI uint16_t IPv4_ComputeCRC(IPv4_Header_t *ipv4Header);
Benoit 0:19f5f51584de 56
Benoit 0:19f5f51584de 57
Benoit 0:19f5f51584de 58 #endif /* __IPV4_H__ */
Benoit 0:19f5f51584de 59