// Copyright (c) 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_QBONE_QBONE_CONSTANTS_H_
#define QUICHE_QUIC_QBONE_QBONE_CONSTANTS_H_

#include "quic/core/quic_types.h"
#include "quic/core/quic_versions.h"
#include "quic/platform/api/quic_ip_address.h"
#include "quic/qbone/platform/ip_range.h"

namespace quic {

struct QboneConstants {
  // QBONE's ALPN
  static constexpr char kQboneAlpn[] = "qbone";
  // The maximum number of bytes allowed in a QBONE packet.
  static const QuicByteCount kMaxQbonePacketBytes = 2000;
  // The table id for QBONE's routing table. 'bone' in ascii.
  static const uint32_t kQboneRouteTableId = 0x626F6E65;
  // The stream ID of the control channel.
  static QuicStreamId GetControlStreamId(QuicTransportVersion version);
  // The link-local address of the Terminator
  static const QuicIpAddress* TerminatorLocalAddress();
  // The IPRange containing the TerminatorLocalAddress
  static const IpRange* TerminatorLocalAddressRange();
  // The gateway address to provide when configuring routes to the QBONE
  // interface
  static const QuicIpAddress* GatewayAddress();
};

}  // namespace quic

#endif  // QUICHE_QUIC_QBONE_QBONE_CONSTANTS_H_
