|  | // Copyright 2023 The Chromium Authors | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | #ifndef QUICHE_QUIC_TEST_TOOLS_IP_PACKET_GENERATION_H_ | 
|  | #define QUICHE_QUIC_TEST_TOOLS_IP_PACKET_GENERATION_H_ | 
|  |  | 
|  | #include <string> | 
|  |  | 
|  | #include "absl/strings/string_view.h" | 
|  | #include "quiche/quic/platform/api/quic_socket_address.h" | 
|  | #include "quiche/common/quiche_ip_address.h" | 
|  |  | 
|  | namespace quic::test { | 
|  |  | 
|  | enum class IpPacketPayloadType { | 
|  | kUdp, | 
|  | }; | 
|  |  | 
|  | // Create an IP packet, appropriate for sending to a raw IP socket. | 
|  | std::string CreateIpPacket( | 
|  | const quiche::QuicheIpAddress& source_address, | 
|  | const quiche::QuicheIpAddress& destination_address, | 
|  | absl::string_view payload, | 
|  | IpPacketPayloadType payload_type = IpPacketPayloadType::kUdp); | 
|  |  | 
|  | // Create a UDP packet, appropriate for sending to a raw UDP socket or including | 
|  | // as the payload of an IP packet. | 
|  | std::string CreateUdpPacket(const QuicSocketAddress& source_address, | 
|  | const QuicSocketAddress& destination_address, | 
|  | absl::string_view payload); | 
|  |  | 
|  | }  // namespace quic::test | 
|  |  | 
|  | #endif  // QUICHE_QUIC_TEST_TOOLS_IP_PACKET_GENERATION_H_ |