Add an QUIC version reserved for negotiation to help test negotiation

gfe-relnote: n/a, test-only changes
PiperOrigin-RevId: 247473641
Change-Id: If063e6cc1f833f865a400298d8ade5bbe2c6ec42
diff --git a/quic/core/quic_versions.cc b/quic/core/quic_versions.cc
index 01e08d2..c5c63ca 100644
--- a/quic/core/quic_versions.cc
+++ b/quic/core/quic_versions.cc
@@ -98,9 +98,12 @@
     case QUIC_VERSION_99:
       if (parsed_version.handshake_protocol == PROTOCOL_TLS1_3 &&
           GetQuicFlag(FLAGS_quic_ietf_draft_version) != 0) {
-        return 0xff000000 + GetQuicFlag(FLAGS_quic_ietf_draft_version);
+        return MakeVersionLabel(0xff, 0x00, 0x00,
+                                GetQuicFlag(FLAGS_quic_ietf_draft_version));
       }
       return MakeVersionLabel(proto, '0', '9', '9');
+    case QUIC_VERSION_RESERVED_FOR_NEGOTIATION:
+      return MakeVersionLabel(0xda, 0x5a, 0x3a, 0x3a);
     default:
       // This shold be an ERROR because we should never attempt to convert an
       // invalid QuicTransportVersion to be written to the wire.
@@ -404,6 +407,11 @@
   return ParsedQuicVersion(PROTOCOL_UNSUPPORTED, QUIC_VERSION_UNSUPPORTED);
 }
 
+ParsedQuicVersion QuicVersionReservedForNegotiation() {
+  return ParsedQuicVersion(PROTOCOL_QUIC_CRYPTO,
+                           QUIC_VERSION_RESERVED_FOR_NEGOTIATION);
+}
+
 std::string AlpnForVersion(ParsedQuicVersion parsed_version) {
   if (parsed_version.handshake_protocol == PROTOCOL_TLS1_3 &&
       parsed_version.transport_version == QUIC_VERSION_99 &&
@@ -435,6 +443,8 @@
   SetQuicReloadableFlag(quic_validate_packet_number_post_decryption, true);
   SetQuicReloadableFlag(quic_print_tag_hex, true);
   SetQuicReloadableFlag(quic_send_version_negotiation_fixed_bit, true);
+  SetQuicReloadableFlag(quic_no_client_conn_ver_negotiation, true);
+  SetQuicRestartFlag(quic_no_server_conn_ver_negotiation2, true);
   SetQuicRestartFlag(quic_server_drop_version_negotiation, true);
   SetQuicRestartFlag(quic_enable_accept_random_ipn, true);
 }