| // Copyright 2019 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef QUICHE_QUIC_MASQUE_MASQUE_UTILS_H_ |
| #define QUICHE_QUIC_MASQUE_MASQUE_UTILS_H_ |
| |
| #include "quic/core/quic_config.h" |
| #include "quic/core/quic_types.h" |
| #include "quic/core/quic_versions.h" |
| |
| namespace quic { |
| |
| // List of QUIC versions that support MASQUE. Currently restricted to IETF QUIC. |
| QUIC_NO_EXPORT ParsedQuicVersionVector MasqueSupportedVersions(); |
| |
| // Default QuicConfig for use with MASQUE. Sets a custom max_packet_size. |
| QUIC_NO_EXPORT QuicConfig MasqueEncapsulatedConfig(); |
| |
| // Maximum packet size for encapsulated connections. |
| enum : QuicByteCount { |
| kMasqueMaxEncapsulatedPacketSize = 1300, |
| kMasqueMaxOuterPacketSize = 1350, |
| }; |
| |
| // Mode that MASQUE is operating in. |
| enum class MasqueMode : uint8_t { |
| kInvalid = 0, // Should never be used. |
| kLegacy = 1, // Legacy mode uses the legacy MASQUE protocol as documented in |
| // <https://tools.ietf.org/html/draft-schinazi-masque-protocol>. That version |
| // of MASQUE uses a custom application-protocol over HTTP/3, and also allows |
| // unauthenticated clients. |
| kOpen = 2, // Open mode uses the MASQUE HTTP CONNECT-UDP method as documented |
| // in <https://tools.ietf.org/html/draft-ietf-masque-connect-udp>. This mode |
| // allows unauthenticated clients (a more restricted mode will be added to |
| // this enum at a later date). |
| }; |
| |
| QUIC_NO_EXPORT std::string MasqueModeToString(MasqueMode masque_mode); |
| QUIC_NO_EXPORT std::ostream& operator<<(std::ostream& os, |
| const MasqueMode& masque_mode); |
| |
| } // namespace quic |
| |
| #endif // QUICHE_QUIC_MASQUE_MASQUE_UTILS_H_ |