[qbone] Return vector of connection IDs when `QboneSessionGetIpRangeRequest.num_preallocated_cids` is set. PiperOrigin-RevId: 995880201
diff --git a/quiche/quic/core/connection_id_generator.h b/quiche/quic/core/connection_id_generator.h index 33ecedc..fc58c05 100644 --- a/quiche/quic/core/connection_id_generator.h +++ b/quiche/quic/core/connection_id_generator.h
@@ -5,6 +5,10 @@ #ifndef QUICHE_QUIC_CORE_CONNECTION_ID_GENERATOR_H_ #define QUICHE_QUIC_CORE_CONNECTION_ID_GENERATOR_H_ +#include <cstdint> +#include <optional> +#include <vector> + #include "quiche/quic/core/quic_connection_id.h" #include "quiche/quic/core/quic_versions.h" @@ -23,6 +27,12 @@ // and consider replacing it. Returns empty if not replaced. virtual std::optional<QuicConnectionId> MaybeReplaceConnectionId( const QuicConnectionId& original, const ParsedQuicVersion& version) = 0; + // Generate a vector of |num_connection_ids| connection IDs from an existing + // connection ID. Returns empty vector on failure or if unsupported. + virtual std::vector<QuicConnectionId> GenerateNextConnectionIds( + const QuicConnectionId& /*original*/, int /*num_connection_ids*/) { + return {}; + } // Returns the length of a connection ID generated by this generator with the // specified first byte. virtual uint8_t ConnectionIdLength(uint8_t first_byte) const = 0;
diff --git a/quiche/quic/core/quic_connection.h b/quiche/quic/core/quic_connection.h index 1bbb824..e778916 100644 --- a/quiche/quic/core/quic_connection.h +++ b/quiche/quic/core/quic_connection.h
@@ -1540,6 +1540,10 @@ // participation guidance. bool ShouldEnableSpinBit() const; + ConnectionIdGeneratorInterface& connection_id_generator() const { + return connection_id_generator_; + } + protected: // Calls cancel() on all the alarms owned by this connection. void CancelAllAlarms(); @@ -1598,10 +1602,6 @@ return defer_send_in_response_to_packets_; } - ConnectionIdGeneratorInterface& connection_id_generator() const { - return connection_id_generator_; - } - private: friend class test::QuicConnectionPeer;
diff --git a/quiche/quic/test_tools/mock_connection_id_generator.h b/quiche/quic/test_tools/mock_connection_id_generator.h index 4ea34b9..17d5c77 100644 --- a/quiche/quic/test_tools/mock_connection_id_generator.h +++ b/quiche/quic/test_tools/mock_connection_id_generator.h
@@ -5,6 +5,10 @@ #ifndef QUICHE_QUIC_TEST_TOOLS_MOCK_CONNECTION_ID_GENERATOR_H_ #define QUICHE_QUIC_TEST_TOOLS_MOCK_CONNECTION_ID_GENERATOR_H_ +#include <cstdint> +#include <optional> +#include <vector> + #include "quiche/quic/core/connection_id_generator.h" #include "quiche/quic/platform/api/quic_test.h" @@ -21,6 +25,10 @@ const quic::ParsedQuicVersion& version), (override)); + MOCK_METHOD(std::vector<quic::QuicConnectionId>, GenerateNextConnectionIds, + (const quic::QuicConnectionId& original, int num_connection_ids), + (override)); + MOCK_METHOD(uint8_t, ConnectionIdLength, (uint8_t first_byte), (const, override)); };