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;
}