Improve capsule logging This CL is a no-op apart from MASQUE CONNECT-IP code. PiperOrigin-RevId: 486469711
diff --git a/quiche/quic/core/http/capsule.cc b/quiche/quic/core/http/capsule.cc index fc062b9..6d9d5c8 100644 --- a/quiche/quic/core/http/capsule.cc +++ b/quiche/quic/core/http/capsule.cc
@@ -248,67 +248,77 @@ } } +std::string DatagramCapsule::ToString() const { + return absl::StrCat("DATAGRAM[", + absl::BytesToHexString(http_datagram_payload), "]"); +} + +std::string LegacyDatagramCapsule::ToString() const { + return absl::StrCat("LEGACY_DATAGRAM[", + absl::BytesToHexString(http_datagram_payload), "]"); +} + +std::string LegacyDatagramWithoutContextCapsule::ToString() const { + return absl::StrCat("LEGACY_DATAGRAM_WITHOUT_CONTEXT[", + absl::BytesToHexString(http_datagram_payload), "]"); +} + +std::string CloseWebTransportSessionCapsule::ToString() const { + return absl::StrCat("CLOSE_WEBTRANSPORT_SESSION(error_code=", error_code, + ",error_message=\"", error_message, "\")"); +} + +std::string AddressRequestCapsule::ToString() const { + std::string rv = "ADDRESS_REQUEST["; + for (auto requested_address : requested_addresses) { + absl::StrAppend(&rv, "(", requested_address.request_id, "-", + requested_address.ip_prefix.ToString(), ")"); + } + absl::StrAppend(&rv, "]"); + return rv; +} + +std::string AddressAssignCapsule::ToString() const { + std::string rv = "ADDRESS_ASSIGN["; + for (auto assigned_address : assigned_addresses) { + absl::StrAppend(&rv, "(", assigned_address.request_id, "-", + assigned_address.ip_prefix.ToString(), ")"); + } + absl::StrAppend(&rv, "]"); + return rv; +} + +std::string RouteAdvertisementCapsule::ToString() const { + std::string rv = "ROUTE_ADVERTISEMENT["; + for (auto ip_address_range : ip_address_ranges) { + absl::StrAppend(&rv, "(", ip_address_range.start_ip_address.ToString(), "-", + ip_address_range.end_ip_address.ToString(), "-", + static_cast<int>(ip_address_range.ip_protocol), ")"); + } + absl::StrAppend(&rv, "]"); + return rv; +} + std::string Capsule::ToString() const { - std::string rv = CapsuleTypeToString(capsule_type_); switch (capsule_type_) { case CapsuleType::DATAGRAM: - absl::StrAppend( - &rv, "[", - absl::BytesToHexString(datagram_capsule_.http_datagram_payload), "]"); - break; + return datagram_capsule_.ToString(); case CapsuleType::LEGACY_DATAGRAM: - absl::StrAppend(&rv, "[", - absl::BytesToHexString( - legacy_datagram_capsule_.http_datagram_payload), - "]"); - break; + return legacy_datagram_capsule_.ToString(); case CapsuleType::LEGACY_DATAGRAM_WITHOUT_CONTEXT: - absl::StrAppend( - &rv, "[", - absl::BytesToHexString( - legacy_datagram_without_context_capsule_.http_datagram_payload), - "]"); - break; + return legacy_datagram_without_context_capsule_.ToString(); case CapsuleType::CLOSE_WEBTRANSPORT_SESSION: - absl::StrAppend( - &rv, "(error_code=", close_web_transport_session_capsule_.error_code, - ",error_message=\"", - close_web_transport_session_capsule_.error_message, "\")"); - break; - case CapsuleType::ADDRESS_REQUEST: { - absl::StrAppend(&rv, "["); - for (auto requested_address : - address_request_capsule_->requested_addresses) { - absl::StrAppend(&rv, "(", requested_address.request_id, "-", - requested_address.ip_prefix.ToString(), ")"); - } - absl::StrAppend(&rv, "]"); - } break; - case CapsuleType::ADDRESS_ASSIGN: { - absl::StrAppend(&rv, "["); - for (auto assigned_address : - address_assign_capsule_->assigned_addresses) { - absl::StrAppend(&rv, "(", assigned_address.request_id, "-", - assigned_address.ip_prefix.ToString(), ")"); - } - absl::StrAppend(&rv, "]"); - } break; - case CapsuleType::ROUTE_ADVERTISEMENT: { - absl::StrAppend(&rv, "["); - for (auto ip_address_range : - route_advertisement_capsule_->ip_address_ranges) { - absl::StrAppend(&rv, "(", ip_address_range.start_ip_address.ToString(), - "-", ip_address_range.end_ip_address.ToString(), "-", - static_cast<int>(ip_address_range.ip_protocol), ")"); - } - absl::StrAppend(&rv, "]"); - } break; + return close_web_transport_session_capsule_.ToString(); + case CapsuleType::ADDRESS_REQUEST: + return address_request_capsule_->ToString(); + case CapsuleType::ADDRESS_ASSIGN: + return address_assign_capsule_->ToString(); + case CapsuleType::ROUTE_ADVERTISEMENT: + return route_advertisement_capsule_->ToString(); default: - absl::StrAppend(&rv, "[", absl::BytesToHexString(unknown_capsule_data_), - "]"); - break; + return absl::StrCat(CapsuleTypeToString(capsule_type_), "[", + absl::BytesToHexString(unknown_capsule_data_), "]"); } - return rv; } std::ostream& operator<<(std::ostream& os, const Capsule& capsule) {
diff --git a/quiche/quic/core/http/capsule.h b/quiche/quic/core/http/capsule.h index c7866a8..198f667 100644 --- a/quiche/quic/core/http/capsule.h +++ b/quiche/quic/core/http/capsule.h
@@ -39,16 +39,20 @@ struct QUIC_EXPORT_PRIVATE DatagramCapsule { absl::string_view http_datagram_payload; + std::string ToString() const; }; struct QUIC_EXPORT_PRIVATE LegacyDatagramCapsule { absl::string_view http_datagram_payload; + std::string ToString() const; }; struct QUIC_EXPORT_PRIVATE LegacyDatagramWithoutContextCapsule { absl::string_view http_datagram_payload; + std::string ToString() const; }; struct QUIC_EXPORT_PRIVATE CloseWebTransportSessionCapsule { WebTransportSessionError error_code; absl::string_view error_message; + std::string ToString() const; }; struct QUIC_EXPORT_PRIVATE PrefixWithId { uint64_t request_id; @@ -64,14 +68,17 @@ struct QUIC_EXPORT_PRIVATE AddressAssignCapsule { std::vector<PrefixWithId> assigned_addresses; bool operator==(const AddressAssignCapsule& other) const; + std::string ToString() const; }; struct QUIC_EXPORT_PRIVATE AddressRequestCapsule { std::vector<PrefixWithId> requested_addresses; bool operator==(const AddressRequestCapsule& other) const; + std::string ToString() const; }; struct QUIC_EXPORT_PRIVATE RouteAdvertisementCapsule { std::vector<IpAddressRange> ip_address_ranges; bool operator==(const RouteAdvertisementCapsule& other) const; + std::string ToString() const; }; // Capsule from RFC 9297.
diff --git a/quiche/quic/masque/masque_encapsulated_client_session.cc b/quiche/quic/masque/masque_encapsulated_client_session.cc index 6b76417..a4d83f6 100644 --- a/quiche/quic/masque/masque_encapsulated_client_session.cc +++ b/quiche/quic/masque/masque_encapsulated_client_session.cc
@@ -217,6 +217,7 @@ bool MasqueEncapsulatedClientSession::OnAddressAssignCapsule( const AddressAssignCapsule& capsule) { + QUIC_DLOG(INFO) << "Received capsule " << capsule.ToString(); for (auto assigned_address : capsule.assigned_addresses) { if (assigned_address.ip_prefix.address().IsIPv4() && !local_v4_address_.IsInitialized()) { @@ -236,12 +237,14 @@ } bool MasqueEncapsulatedClientSession::OnAddressRequestCapsule( - const AddressRequestCapsule& /*capsule*/) { + const AddressRequestCapsule& capsule) { + QUIC_DLOG(INFO) << "Ignoring received capsule " << capsule.ToString(); return true; } bool MasqueEncapsulatedClientSession::OnRouteAdvertisementCapsule( - const RouteAdvertisementCapsule& /*capsule*/) { + const RouteAdvertisementCapsule& capsule) { + QUIC_DLOG(INFO) << "Ignoring received capsule " << capsule.ToString(); return true; }
diff --git a/quiche/quic/masque/masque_server_session.cc b/quiche/quic/masque/masque_server_session.cc index f770b70..2feb48d 100644 --- a/quiche/quic/masque/masque_server_session.cc +++ b/quiche/quic/masque/masque_server_session.cc
@@ -594,17 +594,20 @@ } bool MasqueServerSession::ConnectIpServerState::OnAddressAssignCapsule( - const AddressAssignCapsule& /*capsule*/) { + const AddressAssignCapsule& capsule) { + QUIC_DLOG(INFO) << "Ignoring received capsule " << capsule.ToString(); return true; } bool MasqueServerSession::ConnectIpServerState::OnAddressRequestCapsule( - const AddressRequestCapsule& /*capsule*/) { + const AddressRequestCapsule& capsule) { + QUIC_DLOG(INFO) << "Ignoring received capsule " << capsule.ToString(); return true; } bool MasqueServerSession::ConnectIpServerState::OnRouteAdvertisementCapsule( - const RouteAdvertisementCapsule& /*capsule*/) { + const RouteAdvertisementCapsule& capsule) { + QUIC_DLOG(INFO) << "Ignoring received capsule " << capsule.ToString(); return true; }