pseudo_header.protocol = IPPROTO_TCP;
pseudo_header.header_length = htons( tcp_segment_size_in_bytes );
- int pseudo_header_size_in_bytes = sizeof(PseudoIpv4Header);
+ uint8_t *pseudo_header_data = (uint8_t *) &pseudo_header;
+ size_t pseudo_header_size_in_bytes = sizeof(pseudo_header);
- uint8_t tcp_buffer[65536];
- memset( tcp_buffer, 0, sizeof(tcp_buffer) );
+ uint8_t *tcp_header_data = Payload.get();
+ size_t tcp_header_size_in_bytes = TcpHeaderSizeInBytes;
- memcpy( tcp_buffer, &pseudo_header, pseudo_header_size_in_bytes );
- memcpy( tcp_buffer + pseudo_header_size_in_bytes, Payload.get(),
- TcpHeaderSizeInBytes );
- memcpy( tcp_buffer + pseudo_header_size_in_bytes + TcpHeaderSizeInBytes,
- tcp_payload_data, tcp_payload_size_in_bytes );
+ uint8_t tcp_buffer[65536];
+ size_t tcp_buffer_size_in_bytes = sizeof(tcp_buffer);
+ fill( tcp_buffer, tcp_buffer + tcp_buffer_size_in_bytes, 0 );
+
+ copy( pseudo_header_data, pseudo_header_data + pseudo_header_size_in_bytes,
+ tcp_buffer );
+ copy( tcp_header_data, tcp_header_data + tcp_header_size_in_bytes,
+ tcp_buffer + pseudo_header_size_in_bytes );
+ copy( tcp_payload_data, tcp_payload_data + tcp_payload_size_in_bytes,
+ tcp_buffer + pseudo_header_size_in_bytes + tcp_header_size_in_bytes );
uint16_t cksum = calculate_checksum(
(uint16_t *) tcp_buffer,