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 PacketDatastate_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...
 
PacketDatadata () 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: