Parse a TCP packet. More...

#include <senf/Packets/DefaultBundle/TCPPacket.hh>

Inheritance diagram for senf::TCPPacketParser:

Public Types

typedef UInt16Parser source_t
 
typedef UInt16Parser destination_t
 
typedef UInt32Parser sequencenumber_t
 
typedef UInt32Parser acknowledgmentnumber_t
 
typedef UInt16Parser window_t
 
typedef UInt16Parser checksum_t
 
typedef UInt16Parser urgentpointer_t
 
- Public Types inherited from senf::PacketParserBase
typedef detail::packet::iterator data_iterator
 Raw data iterator type. More...
 
typedef detail::packet::size_type size_type
 Unsigned integral type. More...
 
typedef detail::packet::difference_type difference_type
 Signed integral type. More...
 
typedef detail::packet::byte byte
 Unsigned 8bit value, the raw value type. More...
 
typedef PacketData * state_type
 Type of the 'state' parameter. More...
 
typedef PacketParserBase parser_base_type
 Base type of the next parser. More...
 

Public Member Functions

UInt16Parser source () const
 
UInt16Parser destination () const
 
UInt32Parser sequencenumber () const
 
UInt32Parser acknowledgmentnumber () const
 
senf::UIntFieldParser<?,?+4 > dataoffset () const
 
senf::FlagParser<?> urgf () const
 
senf::FlagParser<?> ackf () const
 
senf::FlagParser<?> pshf () const
 
senf::FlagParser<?> rstf () const
 
senf::FlagParser<?> synf () const
 
senf::FlagParser<?> finf () const
 
UInt16Parser window () const
 
UInt16Parser checksum () const
 
UInt16Parser urgentpointer () const
 
void init ()
 
boost::uint16_t calcChecksum () const
 calculate (pseudo-)header checksum More...
 
bool validateChecksum () const
 validate header checksum More...
 
- Public Member Functions inherited from senf::PacketParserBase
data_iterator i () const
 Return beginning of data to parse. More...
 
data_iterator i (size_type offset) const
 Return iterator offset bytes from the start. More...
 
state_type state () const
 Return state of this parser. More...
 
PacketData & data () const
 Access the packets raw data container. More...
 
void init () const
 Default implementation. More...
 

Protected Member Functions

senf::UIntFieldParser<?,?+6 > reserved () const
 
- Protected Member Functions inherited from senf::PacketParserBase
ParserProtector protect () const
 
 PacketParserBase (data_iterator i, state_type s)
 Standard constructor. More...
 
 PacketParserBase (data_iterator i, state_type s, size_type size)
 Size checking constructor. More...
 
bool check (size_type size) const
 Check size of data container. More...
 
void validate (size_type size) const
 Validate size of data container. More...
 
template<class Parser >
Parser parse (data_iterator i) const
 Create sub-parser. More...
 
template<class Parser , class Arg >
Parser parse (Arg const &arg, data_iterator i) const
 Create sub-parser. More...
 
template<class Parser >
Parser parse (size_type n) const
 Create sub-parser. More...
 
template<class Parser , class Arg >
Parser parse (Arg const &arg, size_type n) const
 Create sub-parser. More...
 
void defaultInit () const
 Default implementation. More...
 
Packet packet () const
 Get packet this parser is parsing from. More...
 
void resize (size_type oldSize, size_type newSize)
 Resize data container. More...
 

Detailed Description

Parse a TCP packet.

Parser implementing the TCP header. The fields implemented are:

TCPPacket.png
See also
TCPPacketType
RFC 793

Definition at line 36 of file TCPPacket.hh.

Member Typedef Documentation

◆ acknowledgmentnumber_t

◆ checksum_t

Definition at line 55 of file TCPPacket.hh.

◆ destination_t

◆ sequencenumber_t

◆ source_t

Definition at line 40 of file TCPPacket.hh.

◆ urgentpointer_t

◆ window_t

Definition at line 54 of file TCPPacket.hh.

Member Function Documentation

◆ ackf()

senf::FlagParser<?> senf::TCPPacketParser::ackf ( ) const

◆ acknowledgmentnumber()

UInt32Parser senf::TCPPacketParser::acknowledgmentnumber ( ) const

◆ calcChecksum()

boost::uint16_t senf::TCPPacketParser::calcChecksum ( ) const

calculate (pseudo-)header checksum

calculate and return the checksum of the (pseudo-)header

See also
senf::IpChecksum
Fix:
What about a hop-by-hop routing option? Which destination is used in IPv4 ?
Fix:
May there be another header between the IPv4 header and TCP? if so, we need to hack the correct protocol number here ...
Todo:
Implement routing header support

Definition at line 36 of file TCPPacket.cc.

◆ checksum()

UInt16Parser senf::TCPPacketParser::checksum ( ) const

◆ dataoffset()

senf::UIntFieldParser<?,?+ 4 > senf::TCPPacketParser::dataoffset ( ) const

◆ destination()

UInt16Parser senf::TCPPacketParser::destination ( ) const

◆ finf()

senf::FlagParser<?> senf::TCPPacketParser::finf ( ) const

◆ init()

void senf::TCPPacketParser::init ( )
inline

Definition at line 65 of file TCPPacket.hh.

◆ pshf()

senf::FlagParser<?> senf::TCPPacketParser::pshf ( ) const

◆ reserved()

senf::UIntFieldParser<?,?+ 6 > senf::TCPPacketParser::reserved ( ) const
protected

◆ rstf()

senf::FlagParser<?> senf::TCPPacketParser::rstf ( ) const

◆ sequencenumber()

UInt32Parser senf::TCPPacketParser::sequencenumber ( ) const

◆ source()

UInt16Parser senf::TCPPacketParser::source ( ) const

◆ synf()

senf::FlagParser<?> senf::TCPPacketParser::synf ( ) const

◆ urgentpointer()

UInt16Parser senf::TCPPacketParser::urgentpointer ( ) const

◆ urgf()

senf::FlagParser<?> senf::TCPPacketParser::urgf ( ) const

◆ validateChecksum()

bool senf::TCPPacketParser::validateChecksum ( ) const
inline

validate header checksum

return true if the checksum field is equal to the calculated checksum

Definition at line 77 of file TCPPacket.hh.

◆ window()

UInt16Parser senf::TCPPacketParser::window ( ) const

The documentation for this struct was generated from the following files: