OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef NET_QUIC_QUIC_PROTOCOL_H_ | 5 #ifndef NET_QUIC_QUIC_PROTOCOL_H_ |
6 #define NET_QUIC_QUIC_PROTOCOL_H_ | 6 #define NET_QUIC_QUIC_PROTOCOL_H_ |
7 | 7 |
8 #include <stddef.h> | 8 #include <stddef.h> |
9 #include <stdint.h> | 9 #include <stdint.h> |
10 | 10 |
(...skipping 357 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
368 QUIC_VERSION_UNSUPPORTED = 0, | 368 QUIC_VERSION_UNSUPPORTED = 0, |
369 | 369 |
370 QUIC_VERSION_30 = 30, // Add server side support of cert transparency. | 370 QUIC_VERSION_30 = 30, // Add server side support of cert transparency. |
371 QUIC_VERSION_31 = 31, // Adds a hash of the client hello to crypto proof. | 371 QUIC_VERSION_31 = 31, // Adds a hash of the client hello to crypto proof. |
372 QUIC_VERSION_32 = 32, // FEC related fields are removed from wire format. | 372 QUIC_VERSION_32 = 32, // FEC related fields are removed from wire format. |
373 QUIC_VERSION_33 = 33, // Adds diversification nonces. | 373 QUIC_VERSION_33 = 33, // Adds diversification nonces. |
374 QUIC_VERSION_34 = 34, // Deprecates entropy, removes private flag from packet | 374 QUIC_VERSION_34 = 34, // Deprecates entropy, removes private flag from packet |
375 // header, uses new ack and stop waiting wire format. | 375 // header, uses new ack and stop waiting wire format. |
376 QUIC_VERSION_35 = 35, // Allows endpoints to independently set stream limit. | 376 QUIC_VERSION_35 = 35, // Allows endpoints to independently set stream limit. |
377 QUIC_VERSION_36 = 36, // Add support to force HOL blocking. | 377 QUIC_VERSION_36 = 36, // Add support to force HOL blocking. |
| 378 |
| 379 // IMPORTANT: if you are adding to this std::list, follow the instructions at |
| 380 // http://sites/quic/adding-and-removing-versions |
378 }; | 381 }; |
379 | 382 |
380 // This vector contains QUIC versions which we currently support. | 383 // This vector contains QUIC versions which we currently support. |
381 // This should be ordered such that the highest supported version is the first | 384 // This should be ordered such that the highest supported version is the first |
382 // element, with subsequent elements in descending order (versions can be | 385 // element, with subsequent elements in descending order (versions can be |
383 // skipped as necessary). | 386 // skipped as necessary). |
384 // | 387 // |
385 // IMPORTANT: if you are adding to this list, follow the instructions at | 388 // IMPORTANT: if you are adding to this list, follow the instructions at |
386 // http://sites/quic/adding-and-removing-versions | 389 // http://sites/quic/adding-and-removing-versions |
387 static const QuicVersion kSupportedQuicVersions[] = { | 390 static const QuicVersion kSupportedQuicVersions[] = { |
(...skipping 786 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1174 NUM_ENCRYPTION_LEVELS, | 1177 NUM_ENCRYPTION_LEVELS, |
1175 }; | 1178 }; |
1176 | 1179 |
1177 enum PeerAddressChangeType { | 1180 enum PeerAddressChangeType { |
1178 // IP address and port remain unchanged. | 1181 // IP address and port remain unchanged. |
1179 NO_CHANGE, | 1182 NO_CHANGE, |
1180 // Port changed, but IP address remains unchanged. | 1183 // Port changed, but IP address remains unchanged. |
1181 PORT_CHANGE, | 1184 PORT_CHANGE, |
1182 // IPv4 address changed, but within the /24 subnet (port may have changed.) | 1185 // IPv4 address changed, but within the /24 subnet (port may have changed.) |
1183 IPV4_SUBNET_CHANGE, | 1186 IPV4_SUBNET_CHANGE, |
| 1187 // IPv4 address changed, excluding /24 subnet change (port may have changed.) |
| 1188 IPV4_TO_IPV4_CHANGE, |
1184 // IP address change from an IPv4 to an IPv6 address (port may have changed.) | 1189 // IP address change from an IPv4 to an IPv6 address (port may have changed.) |
1185 IPV4_TO_IPV6_CHANGE, | 1190 IPV4_TO_IPV6_CHANGE, |
1186 // IP address change from an IPv6 to an IPv4 address (port may have changed.) | 1191 // IP address change from an IPv6 to an IPv4 address (port may have changed.) |
1187 IPV6_TO_IPV4_CHANGE, | 1192 IPV6_TO_IPV4_CHANGE, |
1188 // IP address change from an IPv6 to an IPv6 address (port may have changed.) | 1193 // IP address change from an IPv6 to an IPv6 address (port may have changed.) |
1189 IPV6_TO_IPV6_CHANGE, | 1194 IPV6_TO_IPV6_CHANGE, |
1190 // All other peer address changes. | |
1191 UNSPECIFIED_CHANGE, | |
1192 }; | 1195 }; |
1193 | 1196 |
1194 struct NET_EXPORT_PRIVATE QuicFrame { | 1197 struct NET_EXPORT_PRIVATE QuicFrame { |
1195 QuicFrame(); | 1198 QuicFrame(); |
1196 explicit QuicFrame(QuicPaddingFrame padding_frame); | 1199 explicit QuicFrame(QuicPaddingFrame padding_frame); |
1197 explicit QuicFrame(QuicMtuDiscoveryFrame frame); | 1200 explicit QuicFrame(QuicMtuDiscoveryFrame frame); |
1198 explicit QuicFrame(QuicPingFrame frame); | 1201 explicit QuicFrame(QuicPingFrame frame); |
1199 | 1202 |
1200 explicit QuicFrame(QuicStreamFrame* stream_frame); | 1203 explicit QuicFrame(QuicStreamFrame* stream_frame); |
1201 explicit QuicFrame(QuicAckFrame* frame); | 1204 explicit QuicFrame(QuicAckFrame* frame); |
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1388 public: | 1391 public: |
1389 explicit QuicVersionManager(QuicVersionVector supported_versions); | 1392 explicit QuicVersionManager(QuicVersionVector supported_versions); |
1390 ~QuicVersionManager(); | 1393 ~QuicVersionManager(); |
1391 | 1394 |
1392 // Returns supported versions based on flags. | 1395 // Returns supported versions based on flags. |
1393 const QuicVersionVector& GetSupportedVersions(); | 1396 const QuicVersionVector& GetSupportedVersions(); |
1394 | 1397 |
1395 private: | 1398 private: |
1396 // FLAGS_quic_disable_pre_32 | 1399 // FLAGS_quic_disable_pre_32 |
1397 bool disable_pre_32_; | 1400 bool disable_pre_32_; |
| 1401 // FLAGS_quic_disable_pre_34 |
| 1402 bool disable_pre_34_; |
1398 // FLAGS_quic_enable_version_35 | 1403 // FLAGS_quic_enable_version_35 |
1399 bool enable_version_35_; | 1404 bool enable_version_35_; |
1400 // FLAGS_quic_enable_version_36_v2 | 1405 // FLAGS_quic_enable_version_36_v2 |
1401 bool enable_version_36_; | 1406 bool enable_version_36_; |
1402 // The list of versions that may be supported. | 1407 // The list of versions that may be supported. |
1403 QuicVersionVector allowed_supported_versions_; | 1408 QuicVersionVector allowed_supported_versions_; |
1404 // This vector contains QUIC versions which are currently supported based | 1409 // This vector contains QUIC versions which are currently supported based |
1405 // on flags. | 1410 // on flags. |
1406 QuicVersionVector filtered_supported_versions_; | 1411 QuicVersionVector filtered_supported_versions_; |
1407 }; | 1412 }; |
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1530 : iov(iov), iov_count(iov_count), total_length(total_length) {} | 1535 : iov(iov), iov_count(iov_count), total_length(total_length) {} |
1531 | 1536 |
1532 const struct iovec* iov; | 1537 const struct iovec* iov; |
1533 const int iov_count; | 1538 const int iov_count; |
1534 const size_t total_length; | 1539 const size_t total_length; |
1535 }; | 1540 }; |
1536 | 1541 |
1537 } // namespace net | 1542 } // namespace net |
1538 | 1543 |
1539 #endif // NET_QUIC_QUIC_PROTOCOL_H_ | 1544 #endif // NET_QUIC_QUIC_PROTOCOL_H_ |
OLD | NEW |