Subversion Repositories HelenOS

Compare Revisions

Ignore whitespace Rev 4755 → Rev 4756

/branches/network/uspace/srv/net/il/ip/ip_header.h
41,43 → 41,43
#include <byteorder.h>
#include <sys/types.h>
 
/** Returns the actual IP header length.
* @param header The IP packet header. Input parameter.
/** Returns the actual IP header length in bytes.
* @param[in] header The IP packet header.
*/
#define IP_HEADER_LENGTH( header ) (( header )->header_length * 4u )
 
/** Returns the actual IP header length.
* @param header The IP packet header. Input parameter.
/** Returns the IP header length.
* @param[in] length The IP header length in bytes.
*/
#define IP_COMPUTE_HEADER_LENGTH( length ) (( uint8_t ) (( length ) / 4u ))
 
/** Returns the actual IP packet total length.
* @param header The IP packet header. Input parameter.
* @param[in] header The IP packet header.
*/
#define IP_TOTAL_LENGTH( header ) ntohs(( header )->total_length )
 
/** Returns the actual IP packet data length.
* @param header The IP packet header. Input parameter.
* @param[in] header The IP packet header.
*/
#define IP_HEADER_DATA_LENGTH( header ) ( IP_TOTAL_LENGTH( header ) - IP_HEADER_LENGTH( header ))
 
/** Returns the IP packet header checksum.
* @param header The IP packet header. Input parameter.
* @param[in] header The IP packet header.
*/
#define IP_HEADER_CHECKSUM( header ) ( htons( ip_checksum(( uint8_t * )( header ), IP_HEADER_LENGTH( header ))))
 
/** Returns the fragment offest.
* @param header The IP packet header. Input parameter.
* @param[in] header The IP packet header.
*/
#define IP_FRAGMENT_OFFSET( header ) (((( header )->fragment_offset_high << 8 ) + ( header )->fragment_offset_low ) * 8u )
 
/** Returns the fragment offest high bits.
* @param length The prefixed data total length. Input parameter.
* @param[in] length The prefixed data total length.
*/
#define IP_COMPUTE_FRAGMENT_OFFSET_HIGH( length ) (((( length ) / 8u ) & 0x1F00 ) >> 8 )
 
/** Returns the fragment offest low bits.
* @param length The prefixed data total length. Input parameter.
* @param[in] length The prefixed data total length.
*/
#define IP_COMPUTE_FRAGMENT_OFFSET_LOW( length ) ((( length ) / 8u ) & 0xFF )