Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
IPv4.h@0:19f5f51584de, 2011-06-12 (annotated)
- 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?
| User | Revision | Line number | New 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 |