#include <logfunc.hpp>
-#include "ip/ipversion.h"
#include "tcp/tcpsegmentfactory.h"
using namespace std;
start_receive();
}
-uint32_t TcpPinger::get_source_address()
+address TcpPinger::get_source_address()
{
- return NetInterface.get_address();
+ return NetInterface.get_address( tcp_raw_protocol::v4() );
}
-uint32_t TcpPinger::get_destination_address() const
+address TcpPinger::get_destination_address() const
{
- const sockaddr_in *destination_sockaddr = reinterpret_cast<const sockaddr_in *>( DestinationEndpoint.data() );
- uint32_t destination_ipv4_address = htonl( destination_sockaddr->sin_addr.s_addr );
-
- return destination_ipv4_address;
+ return DestinationEndpoint.address();
}
uint16_t TcpPinger::get_source_port() const
++SequenceNumber;
// Create an TCP header for an ACK request.
- uint32_t source_address = get_source_address();
- uint32_t destination_address = get_destination_address();
+ address source_address = get_source_address();
+ address destination_address = get_destination_address();
uint16_t source_port = get_source_port();
uint16_t destination_port = get_destination_port();
TcpSegmentItem tcp_segment = TcpSegmentFactory::create_tcp_segment_ack_request(
- IP_VERSION_4, source_address, destination_address,
+ tcp_raw_protocol::v4(),
+ source_address, destination_address,
source_port, destination_port, SequenceNumber );
send_ack_request( tcp_segment );
}
// Decode the reply segment.
- TcpSegmentItem tcp_segment = TcpSegmentFactory::create_tcp_segment( IP_VERSION_4, is );
+ TcpSegmentItem tcp_segment = TcpSegmentFactory::create_tcp_segment( tcp_raw_protocol::v4(), is );
// Filter out only the TCP reset (RST) replies. Note that the sequence
// number from RST does not match the sent ACK's sequence number.