std::fill( Rep, Rep + sizeof(Rep), 0 );
}
-unsigned char IcmpHeader::get_type() const
+uint8_t IcmpHeader::get_type() const
{
return Rep[ 0 ];
}
-void IcmpHeader::set_type( unsigned char n )
+void IcmpHeader::set_type( uint8_t n )
{
Rep[ 0 ] = n;
}
-unsigned char IcmpHeader::get_code() const
+uint8_t IcmpHeader::get_code() const
{
return Rep[ 1 ];
}
-void IcmpHeader::set_code( unsigned char n )
+void IcmpHeader::set_code( uint8_t n )
{
Rep[ 1 ] = n;
}
-unsigned short IcmpHeader::get_checksum() const
+uint16_t IcmpHeader::get_checksum() const
{
return decode( 2, 3 );
}
-void IcmpHeader::set_checksum( unsigned short n )
+void IcmpHeader::set_checksum( uint16_t n )
{
encode( 2, 3, n );
}
-unsigned short IcmpHeader::get_identifier() const
+uint16_t IcmpHeader::get_identifier() const
{
return decode( 4, 5 );
}
-void IcmpHeader::set_identifier( unsigned short n )
+void IcmpHeader::set_identifier( uint16_t n )
{
encode( 4, 5, n );
}
-unsigned short IcmpHeader::get_sequence_number() const
+uint16_t IcmpHeader::get_sequence_number() const
{
return decode( 6, 7 );
}
-void IcmpHeader::set_sequence_number( unsigned short n )
+void IcmpHeader::set_sequence_number( uint16_t n )
{
encode( 6, 7, n );
}
return os.write( reinterpret_cast<const char*> ( header.Rep ), 8 );
}
-unsigned short IcmpHeader::decode( int a, int b ) const
+uint16_t IcmpHeader::decode( int a, int b ) const
{
return (Rep[ a ] << 8) + Rep[ b ];
}
-void IcmpHeader::encode( int a, int b, unsigned short n )
+void IcmpHeader::encode( int a, int b, uint16_t n )
{
- Rep[ a ] = static_cast<unsigned char> ( n >> 8 );
- Rep[ b ] = static_cast<unsigned char> ( n & 0xFF );
+ Rep[ a ] = static_cast<uint8_t> ( n >> 8 );
+ Rep[ b ] = static_cast<uint8_t> ( n & 0xFF );
}
#ifndef ICMP_HEADER_HPP
#define ICMP_HEADER_HPP
+#include <algorithm>
#include <istream>
#include <ostream>
-#include <algorithm>
+#include <stdint.h>
//-----------------------------------------------------------------------------
// IcmpHeader
IcmpHeader();
- unsigned char get_type() const;
- void set_type( const unsigned char n );
+ uint8_t get_type() const;
+ void set_type( const uint8_t n );
- unsigned char get_code() const;
- void set_code( const unsigned char n );
+ uint8_t get_code() const;
+ void set_code( const uint8_t n );
- unsigned short get_checksum() const;
- void set_checksum( const unsigned short n );
+ uint16_t get_checksum() const;
+ void set_checksum( const uint16_t n );
- unsigned short get_identifier() const;
- void set_identifier( const unsigned short n );
+ uint16_t get_identifier() const;
+ void set_identifier( const uint16_t n );
- unsigned short get_sequence_number() const;
- void set_sequence_number( const unsigned short n );
+ uint16_t get_sequence_number() const;
+ void set_sequence_number( const uint16_t n );
friend std::istream& operator>>(
std::istream& is,
const IcmpHeader& header );
private:
- unsigned short decode( int a, int b ) const;
- void encode( int a, int b, unsigned short n );
+ uint16_t decode( int a, int b ) const;
+ void encode( int a, int b, uint16_t n );
- unsigned char Rep[ 8 ];
+ uint8_t Rep[ 8 ];
};
//-----------------------------------------------------------------------------
Iterator body_iter = body_begin;
while ( body_iter != body_end )
{
- sum += (static_cast<unsigned char> ( *body_iter++ ) << 8);
+ sum += (static_cast<uint8_t> ( *body_iter++ ) << 8);
if (body_iter != body_end)
- sum += static_cast<unsigned char> ( *body_iter++ );
+ sum += static_cast<uint8_t> ( *body_iter++ );
}
sum = (sum >> 16) + (sum & 0xFFFF);
sum += (sum >> 16);
- header.set_checksum( static_cast<unsigned short> ( ~sum ) );
+ header.set_checksum( static_cast<uint16_t> ( ~sum ) );
}
#endif // ICMP_HEADER_H
std::fill( Rep, Rep + sizeof(Rep), 0 );
}
-unsigned char Ipv4Header::get_version() const
+uint8_t Ipv4Header::get_version() const
{
return (Rep[ 0 ] >> 4) & 0xF;
}
-unsigned short Ipv4Header::get_header_length() const
+uint16_t Ipv4Header::get_header_length() const
{
return (Rep[ 0 ] & 0xF) * 4;
}
-unsigned char Ipv4Header::get_type_of_service() const
+uint8_t Ipv4Header::get_type_of_service() const
{
return Rep[ 1 ];
}
-unsigned short Ipv4Header::get_total_length() const
+uint16_t Ipv4Header::get_total_length() const
{
return decode( 2, 3 );
}
-unsigned short Ipv4Header::get_identification() const
+uint16_t Ipv4Header::get_identification() const
{
return decode( 4, 5 );
}
return (Rep[ 6 ] & 0x20) != 0;
}
-unsigned short Ipv4Header::get_fragment_offset() const
+uint16_t Ipv4Header::get_fragment_offset() const
{
return decode( 6, 7 ) & 0x1FFF;
}
return Rep[ 8 ];
}
-unsigned char Ipv4Header::get_protocol() const
+uint8_t Ipv4Header::get_protocol() const
{
return Rep[ 9 ];
}
-unsigned short Ipv4Header::get_header_checksum() const
+uint16_t Ipv4Header::get_header_checksum() const
{
return decode( 10, 11 );
}
return is;
}
-unsigned short Ipv4Header::decode( int a, int b ) const
+uint16_t Ipv4Header::decode( int a, int b ) const
{
return ((Rep[ a ] << 8) + Rep[ b ]);
}
#include <algorithm>
#include <boost/asio/ip/address_v4.hpp>
+#include <stdint.h>
//-----------------------------------------------------------------------------
// Ipv4Header
public:
Ipv4Header();
- unsigned char get_version() const;
- unsigned short get_header_length() const;
- unsigned char get_type_of_service() const;
- unsigned short get_total_length() const;
- unsigned short get_identification() const;
+ uint8_t get_version() const;
+ uint16_t get_header_length() const;
+ uint8_t get_type_of_service() const;
+ uint16_t get_total_length() const;
+ uint16_t get_identification() const;
bool dont_fragment() const;
bool have_more_fragments() const;
- unsigned short get_fragment_offset() const;
+ uint16_t get_fragment_offset() const;
unsigned int get_time_to_live() const;
- unsigned char get_protocol() const;
- unsigned short get_header_checksum() const;
+ uint8_t get_protocol() const;
+ uint16_t get_header_checksum() const;
boost::asio::ip::address_v4 get_source_address() const;
boost::asio::ip::address_v4 get_destination_address() const;
friend std::istream& operator>>( std::istream& is, Ipv4Header& header );
private:
- unsigned short decode( int a, int b ) const;
+ uint16_t decode( int a, int b ) const;
- unsigned char Rep[ 60 ];
+ uint8_t Rep[ 60 ];
};
#endif // IPV4_HEADER_H