Streamline the use of QUICHE_EXPORT macros in quic/core.

Previously, we had files that were in core/ that were not compiled in Chromium quiche component since they were not used there; because of that, those had to be manually tagged as QUIC_NO_EXPORT and be kept in sync with the structure of Chromium build files.

This CL changes this to a much simpler approach of "everything in quic/core except for I/O directories uses QUICHE_EXPORT".  This works because:
(1) The linker will remove unused code anyways, so binary size should not be a concern.
(2) We already build all of this code for tests, so it is neutral in terms of build time.
(3) All of this code is already either cross-platform, or does not build for Windows (which is the only platform where QUICHE_EXPORT can cause things to fail to compile).

This CL is a google3 counterpart of build file refactor in https://chromium-review.googlesource.com/c/chromium/src/+/4848368

PiperOrigin-RevId: 563502086
diff --git a/quiche/quic/core/batch_writer/quic_batch_writer_base.h b/quiche/quic/core/batch_writer/quic_batch_writer_base.h
index 9f9f226..69cefba 100644
--- a/quiche/quic/core/batch_writer/quic_batch_writer_base.h
+++ b/quiche/quic/core/batch_writer/quic_batch_writer_base.h
@@ -21,7 +21,7 @@
 // A derived batch writer must override the FlushImpl() function to send all
 // buffered writes in a batch. It must also override the CanBatch() function
 // to control whether/when a WritePacket() call should flush.
-class QUIC_EXPORT_PRIVATE QuicBatchWriterBase : public QuicPacketWriter {
+class QUICHE_EXPORT QuicBatchWriterBase : public QuicPacketWriter {
  public:
   explicit QuicBatchWriterBase(
       std::unique_ptr<QuicBatchWriterBuffer> batch_buffer);
@@ -73,7 +73,7 @@
 
   // Given the release delay in |options| and the state of |batch_buffer_|, get
   // the absolute release time.
-  struct QUIC_NO_EXPORT ReleaseTime {
+  struct QUICHE_EXPORT ReleaseTime {
     // The actual (absolute) release time.
     uint64_t actual_release_time = 0;
     // The difference between |actual_release_time| and ideal release time,
@@ -87,7 +87,7 @@
     return ReleaseTime{0, QuicTime::Delta::Zero()};
   }
 
-  struct QUIC_EXPORT_PRIVATE CanBatchResult {
+  struct QUICHE_EXPORT CanBatchResult {
     CanBatchResult(bool can_batch, bool must_flush)
         : can_batch(can_batch), must_flush(must_flush) {}
     // Whether this write can be batched with existing buffered writes.
@@ -107,7 +107,7 @@
                                   const QuicPacketWriterParams& params,
                                   uint64_t release_time) const = 0;
 
-  struct QUIC_EXPORT_PRIVATE FlushImplResult {
+  struct QUICHE_EXPORT FlushImplResult {
     // The return value of the Flush() interface, which is:
     // - WriteResult(WRITE_STATUS_OK, <bytes_flushed>) if all buffered writes
     //   were sent successfully.
@@ -144,7 +144,7 @@
 };
 
 // QuicUdpBatchWriter is a batch writer backed by a UDP socket.
-class QUIC_EXPORT_PRIVATE QuicUdpBatchWriter : public QuicBatchWriterBase {
+class QUICHE_EXPORT QuicUdpBatchWriter : public QuicBatchWriterBase {
  public:
   QuicUdpBatchWriter(std::unique_ptr<QuicBatchWriterBuffer> batch_buffer,
                      int fd)
diff --git a/quiche/quic/core/batch_writer/quic_batch_writer_buffer.h b/quiche/quic/core/batch_writer/quic_batch_writer_buffer.h
index 369ecff..2d25157 100644
--- a/quiche/quic/core/batch_writer/quic_batch_writer_buffer.h
+++ b/quiche/quic/core/batch_writer/quic_batch_writer_buffer.h
@@ -19,7 +19,7 @@
 // that they can be sent by a QuicGsoBatchWriter.
 // This class can also be used by a QuicBatchWriter which uses sendmmsg,
 // although it is not optimized for that use case.
-class QUIC_EXPORT_PRIVATE QuicBatchWriterBuffer {
+class QUICHE_EXPORT QuicBatchWriterBuffer {
  public:
   QuicBatchWriterBuffer();
 
@@ -29,7 +29,7 @@
   char* GetNextWriteLocation() const;
 
   // Push a buffered write to the back.
-  struct QUIC_EXPORT_PRIVATE PushResult {
+  struct QUICHE_EXPORT PushResult {
     bool succeeded;
     // True in one of the following cases:
     // 1) The packet buffer is external and copied to the internal buffer, or
@@ -54,7 +54,7 @@
   // Pop |num_buffered_writes| buffered writes from the front.
   // |num_buffered_writes| will be capped to [0, buffered_writes().size()]
   // before it is used.
-  struct QUIC_EXPORT_PRIVATE PopResult {
+  struct QUICHE_EXPORT PopResult {
     int32_t num_buffers_popped;
     // True if after |num_buffers_popped| buffers are popped from front, the
     // remaining buffers are moved to the beginning of the internal buffer.
diff --git a/quiche/quic/core/batch_writer/quic_batch_writer_buffer_test.cc b/quiche/quic/core/batch_writer/quic_batch_writer_buffer_test.cc
index 747ff1f..63ff5a2 100644
--- a/quiche/quic/core/batch_writer/quic_batch_writer_buffer_test.cc
+++ b/quiche/quic/core/batch_writer/quic_batch_writer_buffer_test.cc
@@ -16,8 +16,7 @@
 namespace test {
 namespace {
 
-class QUIC_EXPORT_PRIVATE TestQuicBatchWriterBuffer
-    : public QuicBatchWriterBuffer {
+class QUICHE_EXPORT TestQuicBatchWriterBuffer : public QuicBatchWriterBuffer {
  public:
   using QuicBatchWriterBuffer::buffer_;
   using QuicBatchWriterBuffer::buffered_writes_;
diff --git a/quiche/quic/core/batch_writer/quic_batch_writer_test.h b/quiche/quic/core/batch_writer/quic_batch_writer_test.h
index 08610f0..7fa200d 100644
--- a/quiche/quic/core/batch_writer/quic_batch_writer_test.h
+++ b/quiche/quic/core/batch_writer/quic_batch_writer_test.h
@@ -74,7 +74,7 @@
 }
 
 struct QuicUdpBatchWriterIOTestParams;
-class QUIC_EXPORT_PRIVATE QuicUdpBatchWriterIOTestDelegate {
+class QUICHE_EXPORT QuicUdpBatchWriterIOTestDelegate {
  public:
   virtual ~QuicUdpBatchWriterIOTestDelegate() {}
 
@@ -87,14 +87,14 @@
   virtual QuicUdpBatchWriter* GetWriter() = 0;
 };
 
-struct QUIC_EXPORT_PRIVATE QuicUdpBatchWriterIOTestParams {
+struct QUICHE_EXPORT QuicUdpBatchWriterIOTestParams {
   // Use shared_ptr because gtest makes copies of test params.
   std::shared_ptr<QuicUdpBatchWriterIOTestDelegate> delegate;
   int address_family;
   int data_size;
   int packet_size;
 
-  QUIC_EXPORT_PRIVATE friend std::ostream& operator<<(
+  QUICHE_EXPORT friend std::ostream& operator<<(
       std::ostream& os, const QuicUdpBatchWriterIOTestParams& p) {
     os << "{ address_family: " << p.address_family
        << " data_size: " << p.data_size << " packet_size: " << p.packet_size
@@ -129,7 +129,7 @@
 // QuicUdpBatchWriterIOTest is a value parameterized test fixture that can be
 // used by tests of derived classes of QuicUdpBatchWriter, to verify basic
 // packet IO capabilities.
-class QUIC_EXPORT_PRIVATE QuicUdpBatchWriterIOTest
+class QUICHE_EXPORT QuicUdpBatchWriterIOTest
     : public QuicTestWithParam<QuicUdpBatchWriterIOTestParams> {
  protected:
   QuicUdpBatchWriterIOTest()
diff --git a/quiche/quic/core/batch_writer/quic_gso_batch_writer.h b/quiche/quic/core/batch_writer/quic_gso_batch_writer.h
index 492e446..4ca18e4 100644
--- a/quiche/quic/core/batch_writer/quic_gso_batch_writer.h
+++ b/quiche/quic/core/batch_writer/quic_gso_batch_writer.h
@@ -11,7 +11,7 @@
 
 // QuicGsoBatchWriter sends QUIC packets in batches, using UDP socket's generic
 // segmentation offload(GSO) capability.
-class QUIC_EXPORT_PRIVATE QuicGsoBatchWriter : public QuicUdpBatchWriter {
+class QUICHE_EXPORT QuicGsoBatchWriter : public QuicUdpBatchWriter {
  public:
   explicit QuicGsoBatchWriter(int fd);
 
@@ -36,7 +36,7 @@
 
  protected:
   // Test only constructor to forcefully enable release time.
-  struct QUIC_EXPORT_PRIVATE ReleaseTimeForceEnabler {};
+  struct QUICHE_EXPORT ReleaseTimeForceEnabler {};
   QuicGsoBatchWriter(std::unique_ptr<QuicBatchWriterBuffer> batch_buffer,
                      int fd, clockid_t clockid_for_release_time,
                      ReleaseTimeForceEnabler enabler);
diff --git a/quiche/quic/core/batch_writer/quic_gso_batch_writer_test.cc b/quiche/quic/core/batch_writer/quic_gso_batch_writer_test.cc
index 35c48c1..ecb4c81 100644
--- a/quiche/quic/core/batch_writer/quic_gso_batch_writer_test.cc
+++ b/quiche/quic/core/batch_writer/quic_gso_batch_writer_test.cc
@@ -33,7 +33,7 @@
 
 uint64_t MillisToNanos(uint64_t milliseconds) { return milliseconds * 1000000; }
 
-class QUIC_EXPORT_PRIVATE TestQuicGsoBatchWriter : public QuicGsoBatchWriter {
+class QUICHE_EXPORT TestQuicGsoBatchWriter : public QuicGsoBatchWriter {
  public:
   using QuicGsoBatchWriter::batch_buffer;
   using QuicGsoBatchWriter::buffered_writes;
@@ -64,7 +64,7 @@
 };
 
 // TestBufferedWrite is a copy-constructible BufferedWrite.
-struct QUIC_EXPORT_PRIVATE TestBufferedWrite : public BufferedWrite {
+struct QUICHE_EXPORT TestBufferedWrite : public BufferedWrite {
   using BufferedWrite::BufferedWrite;
   TestBufferedWrite(const TestBufferedWrite& other)
       : BufferedWrite(other.buffer, other.buf_len, other.self_address,
@@ -77,7 +77,7 @@
 // Pointed to by all instances of |BatchCriteriaTestData|. Content not used.
 static char unused_packet_buffer[kMaxOutgoingPacketSize];
 
-struct QUIC_EXPORT_PRIVATE BatchCriteriaTestData {
+struct QUICHE_EXPORT BatchCriteriaTestData {
   BatchCriteriaTestData(size_t buf_len, const QuicIpAddress& self_address,
                         const QuicSocketAddress& peer_address,
                         uint64_t release_time, bool can_batch, bool must_flush)
diff --git a/quiche/quic/core/batch_writer/quic_sendmmsg_batch_writer.h b/quiche/quic/core/batch_writer/quic_sendmmsg_batch_writer.h
index 9dda5dd..cbb936c 100644
--- a/quiche/quic/core/batch_writer/quic_sendmmsg_batch_writer.h
+++ b/quiche/quic/core/batch_writer/quic_sendmmsg_batch_writer.h
@@ -10,7 +10,7 @@
 
 namespace quic {
 
-class QUIC_EXPORT_PRIVATE QuicSendmmsgBatchWriter : public QuicUdpBatchWriter {
+class QUICHE_EXPORT QuicSendmmsgBatchWriter : public QuicUdpBatchWriter {
  public:
   QuicSendmmsgBatchWriter(std::unique_ptr<QuicBatchWriterBuffer> batch_buffer,
                           int fd);
diff --git a/quiche/quic/core/chlo_extractor.h b/quiche/quic/core/chlo_extractor.h
index fd83233..80c265c 100644
--- a/quiche/quic/core/chlo_extractor.h
+++ b/quiche/quic/core/chlo_extractor.h
@@ -12,9 +12,9 @@
 
 // A utility for extracting QUIC Client Hello messages from packets,
 // without needing to spin up a full QuicSession.
-class QUIC_NO_EXPORT ChloExtractor {
+class QUICHE_EXPORT ChloExtractor {
  public:
-  class QUIC_NO_EXPORT Delegate {
+  class QUICHE_EXPORT Delegate {
    public:
     virtual ~Delegate() {}
 
diff --git a/quiche/quic/core/congestion_control/bandwidth_sampler.h b/quiche/quic/core/congestion_control/bandwidth_sampler.h
index 3ca09d1..87989dc 100644
--- a/quiche/quic/core/congestion_control/bandwidth_sampler.h
+++ b/quiche/quic/core/congestion_control/bandwidth_sampler.h
@@ -26,7 +26,7 @@
 
 // A subset of BandwidthSampler::ConnectionStateOnSentPacket which is returned
 // to the caller when the packet is acked or lost.
-struct QUIC_EXPORT_PRIVATE SendTimeState {
+struct QUICHE_EXPORT SendTimeState {
   SendTimeState()
       : is_valid(false),
         is_app_limited(false),
@@ -48,8 +48,8 @@
   SendTimeState(const SendTimeState& other) = default;
   SendTimeState& operator=(const SendTimeState& other) = default;
 
-  friend QUIC_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& os,
-                                                      const SendTimeState& s);
+  friend QUICHE_EXPORT std::ostream& operator<<(std::ostream& os,
+                                                const SendTimeState& s);
 
   // Whether other states in this object is valid.
   bool is_valid;
@@ -76,7 +76,7 @@
   QuicByteCount bytes_in_flight;
 };
 
-struct QUIC_NO_EXPORT ExtraAckedEvent {
+struct QUICHE_EXPORT ExtraAckedEvent {
   // The excess bytes acknowlwedged in the time delta for this event.
   QuicByteCount extra_acked = 0;
 
@@ -94,7 +94,7 @@
   }
 };
 
-struct QUIC_EXPORT_PRIVATE BandwidthSample {
+struct QUICHE_EXPORT BandwidthSample {
   // The bandwidth at that particular sample. Zero if no valid bandwidth sample
   // is available.
   QuicBandwidth bandwidth = QuicBandwidth::Zero();
@@ -113,7 +113,7 @@
 
 // MaxAckHeightTracker is part of the BandwidthSampler. It is called after every
 // ack event to keep track the degree of ack aggregation(a.k.a "ack height").
-class QUIC_EXPORT_PRIVATE MaxAckHeightTracker {
+class QUICHE_EXPORT MaxAckHeightTracker {
  public:
   explicit MaxAckHeightTracker(QuicRoundTripCount initial_filter_window)
       : max_ack_height_filter_(initial_filter_window, ExtraAckedEvent(), 0) {}
@@ -184,7 +184,7 @@
 
 // An interface common to any class that can provide bandwidth samples from the
 // information per individual acknowledged packet.
-class QUIC_EXPORT_PRIVATE BandwidthSamplerInterface {
+class QUICHE_EXPORT BandwidthSamplerInterface {
  public:
   virtual ~BandwidthSamplerInterface() {}
 
@@ -199,7 +199,7 @@
 
   virtual void OnPacketNeutered(QuicPacketNumber packet_number) = 0;
 
-  struct QUIC_NO_EXPORT CongestionEventSample {
+  struct QUICHE_EXPORT CongestionEventSample {
     // The maximum bandwidth sample from all acked packets.
     // QuicBandwidth::Zero() if no samples are available.
     QuicBandwidth sample_max_bandwidth = QuicBandwidth::Zero();
@@ -332,7 +332,7 @@
 // up until an ack for a packet that was sent after OnAppLimited() was called.
 // Note that while the scenario above is not the only scenario when the
 // connection is app-limited, the approach works in other cases too.
-class QUIC_EXPORT_PRIVATE BandwidthSampler : public BandwidthSamplerInterface {
+class QUICHE_EXPORT BandwidthSampler : public BandwidthSamplerInterface {
  public:
   BandwidthSampler(const QuicUnackedPacketMap* unacked_packet_map,
                    QuicRoundTripCount max_height_tracker_window_length);
@@ -397,18 +397,18 @@
   }
 
   // AckPoint represents a point on the ack line.
-  struct QUIC_NO_EXPORT AckPoint {
+  struct QUICHE_EXPORT AckPoint {
     QuicTime ack_time = QuicTime::Zero();
     QuicByteCount total_bytes_acked = 0;
 
-    friend QUIC_NO_EXPORT std::ostream& operator<<(std::ostream& os,
-                                                   const AckPoint& ack_point) {
+    friend QUICHE_EXPORT std::ostream& operator<<(std::ostream& os,
+                                                  const AckPoint& ack_point) {
       return os << ack_point.ack_time << ":" << ack_point.total_bytes_acked;
     }
   };
 
   // RecentAckPoints maintains the most recent 2 ack points at distinct times.
-  class QUIC_NO_EXPORT RecentAckPoints {
+  class QUICHE_EXPORT RecentAckPoints {
    public:
     void Update(QuicTime ack_time, QuicByteCount total_bytes_acked) {
       QUICHE_DCHECK_GE(total_bytes_acked, ack_points_[1].total_bytes_acked);
@@ -454,7 +454,7 @@
   // and the state of the connection at the moment the packet was sent,
   // specifically the information about the most recently acknowledged packet at
   // that moment.
-  struct QUIC_EXPORT_PRIVATE ConnectionStateOnSentPacket {
+  struct QUICHE_EXPORT ConnectionStateOnSentPacket {
     // Time at which the packet is sent.
     QuicTime sent_time;
 
@@ -502,7 +502,7 @@
           last_acked_packet_sent_time(QuicTime::Zero()),
           last_acked_packet_ack_time(QuicTime::Zero()) {}
 
-    friend QUIC_EXPORT_PRIVATE std::ostream& operator<<(
+    friend QUICHE_EXPORT std::ostream& operator<<(
         std::ostream& os, const ConnectionStateOnSentPacket& p) {
       os << "{sent_time:" << p.sent_time << ", size:" << p.size
          << ", total_bytes_sent_at_last_acked_packet:"
diff --git a/quiche/quic/core/congestion_control/bbr2_drain.h b/quiche/quic/core/congestion_control/bbr2_drain.h
index 1d61a41..7741f53 100644
--- a/quiche/quic/core/congestion_control/bbr2_drain.h
+++ b/quiche/quic/core/congestion_control/bbr2_drain.h
@@ -13,7 +13,7 @@
 namespace quic {
 
 class Bbr2Sender;
-class QUIC_EXPORT_PRIVATE Bbr2DrainMode final : public Bbr2ModeBase {
+class QUICHE_EXPORT Bbr2DrainMode final : public Bbr2ModeBase {
  public:
   using Bbr2ModeBase::Bbr2ModeBase;
 
@@ -39,7 +39,7 @@
     return Bbr2Mode::DRAIN;
   }
 
-  struct QUIC_EXPORT_PRIVATE DebugState {
+  struct QUICHE_EXPORT DebugState {
     QuicByteCount drain_target;
   };
 
@@ -51,8 +51,8 @@
   QuicByteCount DrainTarget() const;
 };
 
-QUIC_EXPORT_PRIVATE std::ostream& operator<<(
-    std::ostream& os, const Bbr2DrainMode::DebugState& state);
+QUICHE_EXPORT std::ostream& operator<<(std::ostream& os,
+                                       const Bbr2DrainMode::DebugState& state);
 
 }  // namespace quic
 
diff --git a/quiche/quic/core/congestion_control/bbr2_misc.h b/quiche/quic/core/congestion_control/bbr2_misc.h
index 8f0f8f6..c621983 100644
--- a/quiche/quic/core/congestion_control/bbr2_misc.h
+++ b/quiche/quic/core/congestion_control/bbr2_misc.h
@@ -21,7 +21,7 @@
 namespace quic {
 
 template <typename T>
-class QUIC_EXPORT_PRIVATE Limits {
+class QUICHE_EXPORT Limits {
  public:
   Limits(T min, T max) : min_(min), max_(max) {}
 
@@ -40,34 +40,34 @@
 };
 
 template <typename T>
-QUIC_EXPORT_PRIVATE inline Limits<T> MinMax(T min, T max) {
+QUICHE_EXPORT inline Limits<T> MinMax(T min, T max) {
   return Limits<T>(min, max);
 }
 
 template <typename T>
-QUIC_EXPORT_PRIVATE inline Limits<T> NoLessThan(T min) {
+QUICHE_EXPORT inline Limits<T> NoLessThan(T min) {
   return Limits<T>(min, std::numeric_limits<T>::max());
 }
 
 template <typename T>
-QUIC_EXPORT_PRIVATE inline Limits<T> NoGreaterThan(T max) {
+QUICHE_EXPORT inline Limits<T> NoGreaterThan(T max) {
   return Limits<T>(std::numeric_limits<T>::min(), max);
 }
 
 template <typename T>
-QUIC_EXPORT_PRIVATE inline Limits<T> Unlimited() {
+QUICHE_EXPORT inline Limits<T> Unlimited() {
   return Limits<T>(std::numeric_limits<T>::min(),
                    std::numeric_limits<T>::max());
 }
 
 template <typename T>
-QUIC_EXPORT_PRIVATE inline std::ostream& operator<<(std::ostream& os,
-                                                    const Limits<T>& limits) {
+QUICHE_EXPORT inline std::ostream& operator<<(std::ostream& os,
+                                              const Limits<T>& limits) {
   return os << "[" << limits.Min() << ", " << limits.Max() << "]";
 }
 
 // Bbr2Params contains all parameters of a Bbr2Sender.
-struct QUIC_EXPORT_PRIVATE Bbr2Params {
+struct QUICHE_EXPORT Bbr2Params {
   Bbr2Params(QuicByteCount cwnd_min, QuicByteCount cwnd_max)
       : cwnd_limits(cwnd_min, cwnd_max) {}
 
@@ -224,7 +224,7 @@
   bool decrease_startup_pacing_at_end_of_round = false;
 };
 
-class QUIC_EXPORT_PRIVATE RoundTripCounter {
+class QUICHE_EXPORT RoundTripCounter {
  public:
   RoundTripCounter();
 
@@ -247,7 +247,7 @@
   QuicPacketNumber end_of_round_trip_;
 };
 
-class QUIC_EXPORT_PRIVATE MinRttFilter {
+class QUICHE_EXPORT MinRttFilter {
  public:
   MinRttFilter(QuicTime::Delta initial_min_rtt,
                QuicTime initial_min_rtt_timestamp);
@@ -266,7 +266,7 @@
   QuicTime min_rtt_timestamp_;
 };
 
-class QUIC_EXPORT_PRIVATE Bbr2MaxBandwidthFilter {
+class QUICHE_EXPORT Bbr2MaxBandwidthFilter {
  public:
   void Update(QuicBandwidth sample) {
     max_bandwidth_[1] = std::max(sample, max_bandwidth_[1]);
@@ -292,7 +292,7 @@
 
 // Information that are meaningful only when Bbr2Sender::OnCongestionEvent is
 // running.
-struct QUIC_EXPORT_PRIVATE Bbr2CongestionEvent {
+struct QUICHE_EXPORT Bbr2CongestionEvent {
   QuicTime event_time = QuicTime::Zero();
 
   // The congestion window prior to the processing of the ack/loss events.
@@ -334,7 +334,7 @@
 // Bbr2NetworkModel takes low level congestion signals(packets sent/acked/lost)
 // as input and produces BBRv2 model parameters like inflight_(hi|lo),
 // bandwidth_(hi|lo), bandwidth and rtt estimates, etc.
-class QUIC_EXPORT_PRIVATE Bbr2NetworkModel {
+class QUICHE_EXPORT Bbr2NetworkModel {
  public:
   Bbr2NetworkModel(const Bbr2Params* params, QuicTime::Delta initial_rtt,
                    QuicTime initial_rtt_timestamp, float cwnd_gain,
@@ -613,8 +613,8 @@
   PROBE_RTT,
 };
 
-QUIC_EXPORT_PRIVATE inline std::ostream& operator<<(std::ostream& os,
-                                                    const Bbr2Mode& mode) {
+QUICHE_EXPORT inline std::ostream& operator<<(std::ostream& os,
+                                              const Bbr2Mode& mode) {
   switch (mode) {
     case Bbr2Mode::STARTUP:
       return os << "STARTUP";
@@ -631,7 +631,7 @@
 // The base class for all BBRv2 modes. A Bbr2Sender is in one mode at a time,
 // this interface is used to implement mode-specific behaviors.
 class Bbr2Sender;
-class QUIC_EXPORT_PRIVATE Bbr2ModeBase {
+class QUICHE_EXPORT Bbr2ModeBase {
  public:
   Bbr2ModeBase(const Bbr2Sender* sender, Bbr2NetworkModel* model)
       : sender_(sender), model_(model) {}
@@ -664,7 +664,7 @@
   Bbr2NetworkModel* model_;
 };
 
-QUIC_EXPORT_PRIVATE inline QuicByteCount BytesInFlight(
+QUICHE_EXPORT inline QuicByteCount BytesInFlight(
     const SendTimeState& send_state) {
   QUICHE_DCHECK(send_state.is_valid);
   if (send_state.bytes_in_flight != 0) {
diff --git a/quiche/quic/core/congestion_control/bbr2_probe_bw.h b/quiche/quic/core/congestion_control/bbr2_probe_bw.h
index 7a2448d..b5a1703 100644
--- a/quiche/quic/core/congestion_control/bbr2_probe_bw.h
+++ b/quiche/quic/core/congestion_control/bbr2_probe_bw.h
@@ -16,7 +16,7 @@
 namespace quic {
 
 class Bbr2Sender;
-class QUIC_EXPORT_PRIVATE Bbr2ProbeBwMode final : public Bbr2ModeBase {
+class QUICHE_EXPORT Bbr2ProbeBwMode final : public Bbr2ModeBase {
  public:
   using Bbr2ModeBase::Bbr2ModeBase;
 
@@ -48,7 +48,7 @@
 
   static const char* CyclePhaseToString(CyclePhase phase);
 
-  struct QUIC_EXPORT_PRIVATE DebugState {
+  struct QUICHE_EXPORT DebugState {
     CyclePhase phase;
     QuicTime cycle_start_time = QuicTime::Zero();
     QuicTime phase_start_time = QuicTime::Zero();
@@ -106,7 +106,7 @@
   void RaiseInflightHighSlope();
   void ProbeInflightHighUpward(const Bbr2CongestionEvent& congestion_event);
 
-  struct QUIC_EXPORT_PRIVATE Cycle {
+  struct QUICHE_EXPORT Cycle {
     QuicTime cycle_start_time = QuicTime::Zero();
     CyclePhase phase = CyclePhase::PROBE_NOT_STARTED;
     uint64_t rounds_in_phase = 0;
@@ -127,11 +127,11 @@
   bool last_cycle_stopped_risky_probe_;
 };
 
-QUIC_EXPORT_PRIVATE std::ostream& operator<<(
+QUICHE_EXPORT std::ostream& operator<<(
     std::ostream& os, const Bbr2ProbeBwMode::DebugState& state);
 
-QUIC_EXPORT_PRIVATE std::ostream& operator<<(
-    std::ostream& os, const Bbr2ProbeBwMode::CyclePhase phase);
+QUICHE_EXPORT std::ostream& operator<<(std::ostream& os,
+                                       const Bbr2ProbeBwMode::CyclePhase phase);
 
 }  // namespace quic
 
diff --git a/quiche/quic/core/congestion_control/bbr2_probe_rtt.h b/quiche/quic/core/congestion_control/bbr2_probe_rtt.h
index a6edbb3..f832476 100644
--- a/quiche/quic/core/congestion_control/bbr2_probe_rtt.h
+++ b/quiche/quic/core/congestion_control/bbr2_probe_rtt.h
@@ -13,7 +13,7 @@
 namespace quic {
 
 class Bbr2Sender;
-class QUIC_EXPORT_PRIVATE Bbr2ProbeRttMode final : public Bbr2ModeBase {
+class QUICHE_EXPORT Bbr2ProbeRttMode final : public Bbr2ModeBase {
  public:
   using Bbr2ModeBase::Bbr2ModeBase;
 
@@ -35,7 +35,7 @@
   Bbr2Mode OnExitQuiescence(QuicTime now,
                             QuicTime quiescence_start_time) override;
 
-  struct QUIC_EXPORT_PRIVATE DebugState {
+  struct QUICHE_EXPORT DebugState {
     QuicByteCount inflight_target;
     QuicTime exit_time = QuicTime::Zero();
   };
@@ -50,7 +50,7 @@
   QuicTime exit_time_ = QuicTime::Zero();
 };
 
-QUIC_EXPORT_PRIVATE std::ostream& operator<<(
+QUICHE_EXPORT std::ostream& operator<<(
     std::ostream& os, const Bbr2ProbeRttMode::DebugState& state);
 
 }  // namespace quic
diff --git a/quiche/quic/core/congestion_control/bbr2_sender.h b/quiche/quic/core/congestion_control/bbr2_sender.h
index 171028a..a49cda1 100644
--- a/quiche/quic/core/congestion_control/bbr2_sender.h
+++ b/quiche/quic/core/congestion_control/bbr2_sender.h
@@ -24,7 +24,7 @@
 
 namespace quic {
 
-class QUIC_EXPORT_PRIVATE Bbr2Sender final : public SendAlgorithmInterface {
+class QUICHE_EXPORT Bbr2Sender final : public SendAlgorithmInterface {
  public:
   Bbr2Sender(QuicTime now, const RttStats* rtt_stats,
              const QuicUnackedPacketMap* unacked_packets,
@@ -112,7 +112,7 @@
     return model_.IsBandwidthOverestimateAvoidanceEnabled();
   }
 
-  struct QUIC_EXPORT_PRIVATE DebugState {
+  struct QUICHE_EXPORT DebugState {
     Bbr2Mode mode;
 
     // Shared states.
@@ -210,8 +210,8 @@
   friend class Bbr2ProbeRttMode;
 };
 
-QUIC_EXPORT_PRIVATE std::ostream& operator<<(
-    std::ostream& os, const Bbr2Sender::DebugState& state);
+QUICHE_EXPORT std::ostream& operator<<(std::ostream& os,
+                                       const Bbr2Sender::DebugState& state);
 
 }  // namespace quic
 
diff --git a/quiche/quic/core/congestion_control/bbr2_startup.h b/quiche/quic/core/congestion_control/bbr2_startup.h
index b246b3c..64fa5b0 100644
--- a/quiche/quic/core/congestion_control/bbr2_startup.h
+++ b/quiche/quic/core/congestion_control/bbr2_startup.h
@@ -14,7 +14,7 @@
 namespace quic {
 
 class Bbr2Sender;
-class QUIC_EXPORT_PRIVATE Bbr2StartupMode final : public Bbr2ModeBase {
+class QUICHE_EXPORT Bbr2StartupMode final : public Bbr2ModeBase {
  public:
   Bbr2StartupMode(const Bbr2Sender* sender, Bbr2NetworkModel* model,
                   QuicTime now);
@@ -44,7 +44,7 @@
     return Bbr2Mode::STARTUP;
   }
 
-  struct QUIC_EXPORT_PRIVATE DebugState {
+  struct QUICHE_EXPORT DebugState {
     bool full_bandwidth_reached;
     QuicBandwidth full_bandwidth_baseline = QuicBandwidth::Zero();
     QuicRoundTripCount round_trips_without_bandwidth_growth;
@@ -60,7 +60,7 @@
   QuicBandwidth max_bw_at_round_beginning_ = QuicBandwidth::Zero();
 };
 
-QUIC_EXPORT_PRIVATE std::ostream& operator<<(
+QUICHE_EXPORT std::ostream& operator<<(
     std::ostream& os, const Bbr2StartupMode::DebugState& state);
 
 }  // namespace quic
diff --git a/quiche/quic/core/congestion_control/bbr_sender.h b/quiche/quic/core/congestion_control/bbr_sender.h
index 1504004..61ad946 100644
--- a/quiche/quic/core/congestion_control/bbr_sender.h
+++ b/quiche/quic/core/congestion_control/bbr_sender.h
@@ -36,7 +36,7 @@
 // pacing is disabled.
 //
 // TODO(vasilvv): implement traffic policer (long-term sampling) mode.
-class QUIC_EXPORT_PRIVATE BbrSender : public SendAlgorithmInterface {
+class QUICHE_EXPORT BbrSender : public SendAlgorithmInterface {
  public:
   enum Mode {
     // Startup phase of the connection.
@@ -64,7 +64,7 @@
 
   // Debug state can be exported in order to troubleshoot potential congestion
   // control issues.
-  struct QUIC_EXPORT_PRIVATE DebugState {
+  struct QUICHE_EXPORT DebugState {
     explicit DebugState(const BbrSender& sender);
     DebugState(const DebugState& state);
 
@@ -381,10 +381,10 @@
   QuicByteCount max_congestion_window_with_network_parameters_adjusted_;
 };
 
-QUIC_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& os,
-                                             const BbrSender::Mode& mode);
-QUIC_EXPORT_PRIVATE std::ostream& operator<<(
-    std::ostream& os, const BbrSender::DebugState& state);
+QUICHE_EXPORT std::ostream& operator<<(std::ostream& os,
+                                       const BbrSender::Mode& mode);
+QUICHE_EXPORT std::ostream& operator<<(std::ostream& os,
+                                       const BbrSender::DebugState& state);
 
 }  // namespace quic
 
diff --git a/quiche/quic/core/congestion_control/cubic_bytes.h b/quiche/quic/core/congestion_control/cubic_bytes.h
index 6eb43ab..b580bcb 100644
--- a/quiche/quic/core/congestion_control/cubic_bytes.h
+++ b/quiche/quic/core/congestion_control/cubic_bytes.h
@@ -22,7 +22,7 @@
 class CubicBytesTest;
 }  // namespace test
 
-class QUIC_EXPORT_PRIVATE CubicBytes {
+class QUICHE_EXPORT CubicBytes {
  public:
   explicit CubicBytes(const QuicClock* clock);
   CubicBytes(const CubicBytes&) = delete;
diff --git a/quiche/quic/core/congestion_control/general_loss_algorithm.h b/quiche/quic/core/congestion_control/general_loss_algorithm.h
index 7e58616..875047f 100644
--- a/quiche/quic/core/congestion_control/general_loss_algorithm.h
+++ b/quiche/quic/core/congestion_control/general_loss_algorithm.h
@@ -20,7 +20,7 @@
 // Class which can be configured to implement's TCP's approach of detecting loss
 // when 3 nacks have been received for a packet or with a time threshold.
 // Also implements TCP's early retransmit(RFC5827).
-class QUIC_EXPORT_PRIVATE GeneralLossAlgorithm : public LossDetectionInterface {
+class QUICHE_EXPORT GeneralLossAlgorithm : public LossDetectionInterface {
  public:
   GeneralLossAlgorithm() = default;
   GeneralLossAlgorithm(const GeneralLossAlgorithm&) = delete;
diff --git a/quiche/quic/core/congestion_control/hybrid_slow_start.h b/quiche/quic/core/congestion_control/hybrid_slow_start.h
index 73c7670..5ba7599 100644
--- a/quiche/quic/core/congestion_control/hybrid_slow_start.h
+++ b/quiche/quic/core/congestion_control/hybrid_slow_start.h
@@ -24,7 +24,7 @@
 
 namespace quic {
 
-class QUIC_EXPORT_PRIVATE HybridSlowStart {
+class QUICHE_EXPORT HybridSlowStart {
  public:
   HybridSlowStart();
   HybridSlowStart(const HybridSlowStart&) = delete;
diff --git a/quiche/quic/core/congestion_control/loss_detection_interface.h b/quiche/quic/core/congestion_control/loss_detection_interface.h
index c81702e..9b61698 100644
--- a/quiche/quic/core/congestion_control/loss_detection_interface.h
+++ b/quiche/quic/core/congestion_control/loss_detection_interface.h
@@ -19,14 +19,14 @@
 class QuicUnackedPacketMap;
 class RttStats;
 
-class QUIC_EXPORT_PRIVATE LossDetectionInterface {
+class QUICHE_EXPORT LossDetectionInterface {
  public:
   virtual ~LossDetectionInterface() {}
 
   virtual void SetFromConfig(const QuicConfig& config,
                              Perspective perspective) = 0;
 
-  struct QUIC_NO_EXPORT DetectionStats {
+  struct QUICHE_EXPORT DetectionStats {
     // Maximum sequence reordering observed in newly acked packets.
     QuicPacketCount sent_packets_max_sequence_reordering = 0;
     QuicPacketCount sent_packets_num_borderline_time_reorderings = 0;
diff --git a/quiche/quic/core/congestion_control/pacing_sender.h b/quiche/quic/core/congestion_control/pacing_sender.h
index 73c08d4..239f745 100644
--- a/quiche/quic/core/congestion_control/pacing_sender.h
+++ b/quiche/quic/core/congestion_control/pacing_sender.h
@@ -28,7 +28,7 @@
 class QuicSentPacketManagerPeer;
 }  // namespace test
 
-class QUIC_EXPORT_PRIVATE PacingSender {
+class QUICHE_EXPORT PacingSender {
  public:
   PacingSender();
   PacingSender(const PacingSender&) = delete;
diff --git a/quiche/quic/core/congestion_control/prr_sender.h b/quiche/quic/core/congestion_control/prr_sender.h
index 4e17840..ae84fee 100644
--- a/quiche/quic/core/congestion_control/prr_sender.h
+++ b/quiche/quic/core/congestion_control/prr_sender.h
@@ -13,7 +13,7 @@
 
 namespace quic {
 
-class QUIC_EXPORT_PRIVATE PrrSender {
+class QUICHE_EXPORT PrrSender {
  public:
   PrrSender();
   // OnPacketLost should be called on the first loss that triggers a recovery
diff --git a/quiche/quic/core/congestion_control/rtt_stats.h b/quiche/quic/core/congestion_control/rtt_stats.h
index 04a0148..1dc6708 100644
--- a/quiche/quic/core/congestion_control/rtt_stats.h
+++ b/quiche/quic/core/congestion_control/rtt_stats.h
@@ -21,12 +21,12 @@
 class RttStatsPeer;
 }  // namespace test
 
-class QUIC_EXPORT_PRIVATE RttStats {
+class QUICHE_EXPORT RttStats {
  public:
   // Calculates running standard-deviation using Welford's algorithm:
   // https://en.wikipedia.org/wiki/Algorithms_for_calculating_variance#
   // Welford's_Online_algorithm.
-  struct QUIC_EXPORT_PRIVATE StandardDeviationCaculator {
+  struct QUICHE_EXPORT StandardDeviationCaculator {
     StandardDeviationCaculator() {}
 
     // Called when a new RTT sample is available.
diff --git a/quiche/quic/core/congestion_control/send_algorithm_interface.h b/quiche/quic/core/congestion_control/send_algorithm_interface.h
index e5e8d58..ba471ba 100644
--- a/quiche/quic/core/congestion_control/send_algorithm_interface.h
+++ b/quiche/quic/core/congestion_control/send_algorithm_interface.h
@@ -29,10 +29,10 @@
 class CachedNetworkParameters;
 class RttStats;
 
-class QUIC_EXPORT_PRIVATE SendAlgorithmInterface {
+class QUICHE_EXPORT SendAlgorithmInterface {
  public:
   // Network Params for AdjustNetworkParameters.
-  struct QUIC_NO_EXPORT NetworkParams {
+  struct QUICHE_EXPORT NetworkParams {
     NetworkParams() = default;
     NetworkParams(const QuicBandwidth& bandwidth, const QuicTime::Delta& rtt,
                   bool allow_cwnd_to_decrease)
diff --git a/quiche/quic/core/congestion_control/tcp_cubic_sender_bytes.h b/quiche/quic/core/congestion_control/tcp_cubic_sender_bytes.h
index 184357d..cc6aa4e 100644
--- a/quiche/quic/core/congestion_control/tcp_cubic_sender_bytes.h
+++ b/quiche/quic/core/congestion_control/tcp_cubic_sender_bytes.h
@@ -31,7 +31,7 @@
 class TcpCubicSenderBytesPeer;
 }  // namespace test
 
-class QUIC_EXPORT_PRIVATE TcpCubicSenderBytes : public SendAlgorithmInterface {
+class QUICHE_EXPORT TcpCubicSenderBytes : public SendAlgorithmInterface {
  public:
   TcpCubicSenderBytes(const QuicClock* clock, const RttStats* rtt_stats,
                       bool reno, QuicPacketCount initial_tcp_congestion_window,
diff --git a/quiche/quic/core/congestion_control/uber_loss_algorithm.h b/quiche/quic/core/congestion_control/uber_loss_algorithm.h
index febea73..19e3d9c 100644
--- a/quiche/quic/core/congestion_control/uber_loss_algorithm.h
+++ b/quiche/quic/core/congestion_control/uber_loss_algorithm.h
@@ -18,13 +18,13 @@
 
 }  // namespace test
 
-struct QUIC_EXPORT_PRIVATE LossDetectionParameters {
+struct QUICHE_EXPORT LossDetectionParameters {
   // See GeneralLossAlgorithm for the meaning of reordering_(shift|threshold).
   absl::optional<int> reordering_shift;
   absl::optional<QuicPacketCount> reordering_threshold;
 };
 
-class QUIC_EXPORT_PRIVATE LossDetectionTunerInterface {
+class QUICHE_EXPORT LossDetectionTunerInterface {
  public:
   virtual ~LossDetectionTunerInterface() {}
 
@@ -41,7 +41,7 @@
 };
 
 // This class comprises multiple loss algorithms, each per packet number space.
-class QUIC_EXPORT_PRIVATE UberLossAlgorithm : public LossDetectionInterface {
+class QUICHE_EXPORT UberLossAlgorithm : public LossDetectionInterface {
  public:
   UberLossAlgorithm();
   UberLossAlgorithm(const UberLossAlgorithm&) = delete;
diff --git a/quiche/quic/core/congestion_control/windowed_filter.h b/quiche/quic/core/congestion_control/windowed_filter.h
index 9326a08..6309d93 100644
--- a/quiche/quic/core/congestion_control/windowed_filter.h
+++ b/quiche/quic/core/congestion_control/windowed_filter.h
@@ -38,14 +38,14 @@
 // Compares two values and returns true if the first is less than or equal
 // to the second.
 template <class T>
-struct QUIC_EXPORT_PRIVATE MinFilter {
+struct QUICHE_EXPORT MinFilter {
   bool operator()(const T& lhs, const T& rhs) const { return lhs <= rhs; }
 };
 
 // Compares two values and returns true if the first is greater than or equal
 // to the second.
 template <class T>
-struct QUIC_EXPORT_PRIVATE MaxFilter {
+struct QUICHE_EXPORT MaxFilter {
   bool operator()(const T& lhs, const T& rhs) const { return lhs >= rhs; }
 };
 
@@ -63,7 +63,7 @@
 //    two timestamps.  Has to be the type of (a - b) if both |a| and |b| are
 //    of type TimeT.
 template <class T, class Compare, typename TimeT, typename TimeDeltaT>
-class QUIC_EXPORT_PRIVATE WindowedFilter {
+class QUICHE_EXPORT WindowedFilter {
  public:
   // |window_length| is the period after which a best estimate expires.
   // |zero_value| is used as the uninitialized value for objects of T.
@@ -146,7 +146,7 @@
   T GetThirdBest() const { return estimates_[2].sample; }
 
  private:
-  struct QUIC_EXPORT_PRIVATE Sample {
+  struct QUICHE_EXPORT Sample {
     T sample;
     TimeT time;
     Sample(T init_sample, TimeT init_time)
diff --git a/quiche/quic/core/connection_id_generator.h b/quiche/quic/core/connection_id_generator.h
index d27b44f..3e46a9e 100644
--- a/quiche/quic/core/connection_id_generator.h
+++ b/quiche/quic/core/connection_id_generator.h
@@ -10,7 +10,7 @@
 
 namespace quic {
 
-class QUIC_EXPORT_PRIVATE ConnectionIdGeneratorInterface {
+class QUICHE_EXPORT ConnectionIdGeneratorInterface {
   // Interface which is responsible for generating new connection IDs from an
   // existing connection ID.
  public:
diff --git a/quiche/quic/core/crypto/aead_base_decrypter.h b/quiche/quic/core/crypto/aead_base_decrypter.h
index b123b13..0454919 100644
--- a/quiche/quic/core/crypto/aead_base_decrypter.h
+++ b/quiche/quic/core/crypto/aead_base_decrypter.h
@@ -15,7 +15,7 @@
 namespace quic {
 
 // AeadBaseDecrypter is the base class of AEAD QuicDecrypter subclasses.
-class QUIC_EXPORT_PRIVATE AeadBaseDecrypter : public QuicDecrypter {
+class QUICHE_EXPORT AeadBaseDecrypter : public QuicDecrypter {
  public:
   // This takes the function pointer rather than the EVP_AEAD itself so
   // subclasses do not need to call CRYPTO_library_init.
diff --git a/quiche/quic/core/crypto/aead_base_encrypter.h b/quiche/quic/core/crypto/aead_base_encrypter.h
index 205b232..cf2c8cd 100644
--- a/quiche/quic/core/crypto/aead_base_encrypter.h
+++ b/quiche/quic/core/crypto/aead_base_encrypter.h
@@ -15,7 +15,7 @@
 namespace quic {
 
 // AeadBaseEncrypter is the base class of AEAD QuicEncrypter subclasses.
-class QUIC_EXPORT_PRIVATE AeadBaseEncrypter : public QuicEncrypter {
+class QUICHE_EXPORT AeadBaseEncrypter : public QuicEncrypter {
  public:
   // This takes the function pointer rather than the EVP_AEAD itself so
   // subclasses do not need to call CRYPTO_library_init.
diff --git a/quiche/quic/core/crypto/aes_128_gcm_12_decrypter.h b/quiche/quic/core/crypto/aes_128_gcm_12_decrypter.h
index 38a9419..ec2afdb 100644
--- a/quiche/quic/core/crypto/aes_128_gcm_12_decrypter.h
+++ b/quiche/quic/core/crypto/aes_128_gcm_12_decrypter.h
@@ -18,7 +18,7 @@
 //
 // It uses an authentication tag of 12 bytes (96 bits). The fixed prefix
 // of the nonce is four bytes.
-class QUIC_EXPORT_PRIVATE Aes128Gcm12Decrypter : public AesBaseDecrypter {
+class QUICHE_EXPORT Aes128Gcm12Decrypter : public AesBaseDecrypter {
  public:
   enum {
     // Authentication tags are truncated to 96 bits.
diff --git a/quiche/quic/core/crypto/aes_128_gcm_12_encrypter.h b/quiche/quic/core/crypto/aes_128_gcm_12_encrypter.h
index 64f0292..16112e2 100644
--- a/quiche/quic/core/crypto/aes_128_gcm_12_encrypter.h
+++ b/quiche/quic/core/crypto/aes_128_gcm_12_encrypter.h
@@ -16,7 +16,7 @@
 //
 // It uses an authentication tag of 12 bytes (96 bits). The fixed prefix
 // of the nonce is four bytes.
-class QUIC_EXPORT_PRIVATE Aes128Gcm12Encrypter : public AesBaseEncrypter {
+class QUICHE_EXPORT Aes128Gcm12Encrypter : public AesBaseEncrypter {
  public:
   enum {
     // Authentication tags are truncated to 96 bits.
diff --git a/quiche/quic/core/crypto/aes_128_gcm_decrypter.h b/quiche/quic/core/crypto/aes_128_gcm_decrypter.h
index c5f4d17..754d25d 100644
--- a/quiche/quic/core/crypto/aes_128_gcm_decrypter.h
+++ b/quiche/quic/core/crypto/aes_128_gcm_decrypter.h
@@ -17,7 +17,7 @@
 //
 // It uses an authentication tag of 16 bytes (128 bits). It uses a 12 byte IV
 // that is XOR'd with the packet number to compute the nonce.
-class QUIC_EXPORT_PRIVATE Aes128GcmDecrypter : public AesBaseDecrypter {
+class QUICHE_EXPORT Aes128GcmDecrypter : public AesBaseDecrypter {
  public:
   enum {
     kAuthTagSize = 16,
diff --git a/quiche/quic/core/crypto/aes_128_gcm_encrypter.h b/quiche/quic/core/crypto/aes_128_gcm_encrypter.h
index a40735c..d36e0ea 100644
--- a/quiche/quic/core/crypto/aes_128_gcm_encrypter.h
+++ b/quiche/quic/core/crypto/aes_128_gcm_encrypter.h
@@ -15,7 +15,7 @@
 //
 // It uses an authentication tag of 16 bytes (128 bits). It uses a 12 byte IV
 // that is XOR'd with the packet number to compute the nonce.
-class QUIC_EXPORT_PRIVATE Aes128GcmEncrypter : public AesBaseEncrypter {
+class QUICHE_EXPORT Aes128GcmEncrypter : public AesBaseEncrypter {
  public:
   enum {
     kAuthTagSize = 16,
diff --git a/quiche/quic/core/crypto/aes_256_gcm_decrypter.h b/quiche/quic/core/crypto/aes_256_gcm_decrypter.h
index dc4f8c0..77aca53 100644
--- a/quiche/quic/core/crypto/aes_256_gcm_decrypter.h
+++ b/quiche/quic/core/crypto/aes_256_gcm_decrypter.h
@@ -17,7 +17,7 @@
 //
 // It uses an authentication tag of 16 bytes (128 bits). It uses a 12 byte IV
 // that is XOR'd with the packet number to compute the nonce.
-class QUIC_EXPORT_PRIVATE Aes256GcmDecrypter : public AesBaseDecrypter {
+class QUICHE_EXPORT Aes256GcmDecrypter : public AesBaseDecrypter {
  public:
   enum {
     kAuthTagSize = 16,
diff --git a/quiche/quic/core/crypto/aes_256_gcm_encrypter.h b/quiche/quic/core/crypto/aes_256_gcm_encrypter.h
index 9ba47f1..0718077 100644
--- a/quiche/quic/core/crypto/aes_256_gcm_encrypter.h
+++ b/quiche/quic/core/crypto/aes_256_gcm_encrypter.h
@@ -15,7 +15,7 @@
 //
 // It uses an authentication tag of 16 bytes (128 bits). It uses a 12 byte IV
 // that is XOR'd with the packet number to compute the nonce.
-class QUIC_EXPORT_PRIVATE Aes256GcmEncrypter : public AesBaseEncrypter {
+class QUICHE_EXPORT Aes256GcmEncrypter : public AesBaseEncrypter {
  public:
   enum {
     kAuthTagSize = 16,
diff --git a/quiche/quic/core/crypto/aes_base_decrypter.h b/quiche/quic/core/crypto/aes_base_decrypter.h
index 9fa35cf..17296a9 100644
--- a/quiche/quic/core/crypto/aes_base_decrypter.h
+++ b/quiche/quic/core/crypto/aes_base_decrypter.h
@@ -14,7 +14,7 @@
 
 namespace quic {
 
-class QUIC_EXPORT_PRIVATE AesBaseDecrypter : public AeadBaseDecrypter {
+class QUICHE_EXPORT AesBaseDecrypter : public AeadBaseDecrypter {
  public:
   using AeadBaseDecrypter::AeadBaseDecrypter;
 
diff --git a/quiche/quic/core/crypto/aes_base_encrypter.h b/quiche/quic/core/crypto/aes_base_encrypter.h
index c4fdb86..d596579 100644
--- a/quiche/quic/core/crypto/aes_base_encrypter.h
+++ b/quiche/quic/core/crypto/aes_base_encrypter.h
@@ -14,7 +14,7 @@
 
 namespace quic {
 
-class QUIC_EXPORT_PRIVATE AesBaseEncrypter : public AeadBaseEncrypter {
+class QUICHE_EXPORT AesBaseEncrypter : public AeadBaseEncrypter {
  public:
   using AeadBaseEncrypter::AeadBaseEncrypter;
 
diff --git a/quiche/quic/core/crypto/boring_utils.h b/quiche/quic/core/crypto/boring_utils.h
index d6a1dd4..d083ab3 100644
--- a/quiche/quic/core/crypto/boring_utils.h
+++ b/quiche/quic/core/crypto/boring_utils.h
@@ -11,20 +11,19 @@
 
 namespace quic {
 
-inline QUIC_EXPORT_PRIVATE absl::string_view CbsToStringPiece(CBS cbs) {
+inline QUICHE_EXPORT absl::string_view CbsToStringPiece(CBS cbs) {
   return absl::string_view(reinterpret_cast<const char*>(CBS_data(&cbs)),
                            CBS_len(&cbs));
 }
 
-inline QUIC_EXPORT_PRIVATE CBS StringPieceToCbs(absl::string_view piece) {
+inline QUICHE_EXPORT CBS StringPieceToCbs(absl::string_view piece) {
   CBS result;
   CBS_init(&result, reinterpret_cast<const uint8_t*>(piece.data()),
            piece.size());
   return result;
 }
 
-inline QUIC_EXPORT_PRIVATE bool AddStringToCbb(CBB* cbb,
-                                               absl::string_view piece) {
+inline QUICHE_EXPORT bool AddStringToCbb(CBB* cbb, absl::string_view piece) {
   return 1 == CBB_add_bytes(cbb, reinterpret_cast<const uint8_t*>(piece.data()),
                             piece.size());
 }
diff --git a/quiche/quic/core/crypto/cert_compressor.h b/quiche/quic/core/crypto/cert_compressor.h
index 9509ccd..2e3fe42 100644
--- a/quiche/quic/core/crypto/cert_compressor.h
+++ b/quiche/quic/core/crypto/cert_compressor.h
@@ -22,7 +22,7 @@
 //   2) Otherwise the certificates are compressed with zlib using a pre-shared
 //      dictionary that consists of the certificates handled with the above
 //      methods and a small chunk of common substrings.
-class QUIC_EXPORT_PRIVATE CertCompressor {
+class QUICHE_EXPORT CertCompressor {
  public:
   CertCompressor() = delete;
 
diff --git a/quiche/quic/core/crypto/certificate_util.h b/quiche/quic/core/crypto/certificate_util.h
index 35bb561..c6593db 100644
--- a/quiche/quic/core/crypto/certificate_util.h
+++ b/quiche/quic/core/crypto/certificate_util.h
@@ -14,7 +14,7 @@
 
 namespace quic {
 
-struct QUIC_NO_EXPORT CertificateTimestamp {
+struct QUICHE_EXPORT CertificateTimestamp {
   uint16_t year;
   uint8_t month;
   uint8_t day;
@@ -23,7 +23,7 @@
   uint8_t second;
 };
 
-struct QUIC_NO_EXPORT CertificateOptions {
+struct QUICHE_EXPORT CertificateOptions {
   absl::string_view subject;
   uint64_t serial_number;
   CertificateTimestamp validity_start;  // a.k.a not_valid_before
@@ -31,14 +31,13 @@
 };
 
 // Creates a ECDSA P-256 key pair.
-QUIC_EXPORT_PRIVATE bssl::UniquePtr<EVP_PKEY>
-MakeKeyPairForSelfSignedCertificate();
+QUICHE_EXPORT bssl::UniquePtr<EVP_PKEY> MakeKeyPairForSelfSignedCertificate();
 
 // Creates a self-signed, DER-encoded X.509 certificate.
 // |key| must be a ECDSA P-256 key.
 // This is mostly stolen from Chromium's net/cert/x509_util.h, with
 // modifications to make it work in QUICHE.
-QUIC_EXPORT_PRIVATE std::string CreateSelfSignedCertificate(
+QUICHE_EXPORT std::string CreateSelfSignedCertificate(
     EVP_PKEY& key, const CertificateOptions& options);
 
 }  // namespace quic
diff --git a/quiche/quic/core/crypto/certificate_view.cc b/quiche/quic/core/crypto/certificate_view.cc
index c3b187c..b02c58c 100644
--- a/quiche/quic/core/crypto/certificate_view.cc
+++ b/quiche/quic/core/crypto/certificate_view.cc
@@ -99,7 +99,7 @@
   }
 }
 
-QUIC_EXPORT_PRIVATE QuicSignatureAlgorithmVector
+QUICHE_EXPORT QuicSignatureAlgorithmVector
 SupportedSignatureAlgorithmsForQuic() {
   // This should be kept in sync with the list in
   // PublicKeyTypeFromSignatureAlgorithm().
diff --git a/quiche/quic/core/crypto/certificate_view.h b/quiche/quic/core/crypto/certificate_view.h
index 5c2aafc..4a190a0 100644
--- a/quiche/quic/core/crypto/certificate_view.h
+++ b/quiche/quic/core/crypto/certificate_view.h
@@ -22,7 +22,7 @@
 
 namespace quic {
 
-struct QUIC_EXPORT_PRIVATE PemReadResult {
+struct QUICHE_EXPORT PemReadResult {
   enum Status { kOk, kEof, kError };
   Status status;
   std::string contents;
@@ -32,7 +32,7 @@
 };
 
 // Reads |input| line-by-line and returns the next available PEM message.
-QUIC_EXPORT_PRIVATE PemReadResult ReadNextPemMessage(std::istream* input);
+QUICHE_EXPORT PemReadResult ReadNextPemMessage(std::istream* input);
 
 // Cryptograhpic algorithms recognized in X.509.
 enum class PublicKeyType {
@@ -42,20 +42,20 @@
   kEd25519,
   kUnknown,
 };
-QUIC_EXPORT_PRIVATE std::string PublicKeyTypeToString(PublicKeyType type);
-QUIC_EXPORT_PRIVATE PublicKeyType
+QUICHE_EXPORT std::string PublicKeyTypeToString(PublicKeyType type);
+QUICHE_EXPORT PublicKeyType
 PublicKeyTypeFromSignatureAlgorithm(uint16_t signature_algorithm);
 
 // Returns the list of the signature algorithms that can be processed by
 // CertificateView::VerifySignature() and CertificatePrivateKey::Sign().
-QUIC_EXPORT_PRIVATE QuicSignatureAlgorithmVector
+QUICHE_EXPORT QuicSignatureAlgorithmVector
 SupportedSignatureAlgorithmsForQuic();
 
 // CertificateView represents a parsed version of a single X.509 certificate. As
 // the word "view" implies, it does not take ownership of the underlying strings
 // and consists primarily of pointers into the certificate that is passed into
 // the parser.
-class QUIC_EXPORT_PRIVATE CertificateView {
+class QUICHE_EXPORT CertificateView {
  public:
   // Parses a single DER-encoded X.509 certificate.  Returns nullptr on parse
   // error.
@@ -109,7 +109,7 @@
 
 // CertificatePrivateKey represents a private key that can be used with an X.509
 // certificate.
-class QUIC_EXPORT_PRIVATE CertificatePrivateKey {
+class QUICHE_EXPORT CertificatePrivateKey {
  public:
   explicit CertificatePrivateKey(bssl::UniquePtr<EVP_PKEY> private_key)
       : private_key_(std::move(private_key)) {}
@@ -143,12 +143,11 @@
 };
 
 // Parses a DER-encoded X.509 NameAttribute.  Exposed primarily for testing.
-QUIC_EXPORT_PRIVATE absl::optional<std::string> X509NameAttributeToString(
-    CBS input);
+QUICHE_EXPORT absl::optional<std::string> X509NameAttributeToString(CBS input);
 
 // Parses a DER time based on the specified ASN.1 tag.  Exposed primarily for
 // testing.
-QUIC_EXPORT_PRIVATE absl::optional<quic::QuicWallTime> ParseDerTime(
+QUICHE_EXPORT absl::optional<quic::QuicWallTime> ParseDerTime(
     unsigned tag, absl::string_view payload);
 
 }  // namespace quic
diff --git a/quiche/quic/core/crypto/chacha20_poly1305_decrypter.h b/quiche/quic/core/crypto/chacha20_poly1305_decrypter.h
index 6eb6c87..c516190 100644
--- a/quiche/quic/core/crypto/chacha20_poly1305_decrypter.h
+++ b/quiche/quic/core/crypto/chacha20_poly1305_decrypter.h
@@ -19,8 +19,7 @@
 //
 // It uses an authentication tag of 12 bytes (96 bits). The fixed prefix of the
 // nonce is four bytes.
-class QUIC_EXPORT_PRIVATE ChaCha20Poly1305Decrypter
-    : public ChaChaBaseDecrypter {
+class QUICHE_EXPORT ChaCha20Poly1305Decrypter : public ChaChaBaseDecrypter {
  public:
   enum {
     kAuthTagSize = 12,
diff --git a/quiche/quic/core/crypto/chacha20_poly1305_encrypter.h b/quiche/quic/core/crypto/chacha20_poly1305_encrypter.h
index d37f26c..9f969ab 100644
--- a/quiche/quic/core/crypto/chacha20_poly1305_encrypter.h
+++ b/quiche/quic/core/crypto/chacha20_poly1305_encrypter.h
@@ -17,8 +17,7 @@
 //
 // It uses an authentication tag of 12 bytes (96 bits). The fixed prefix of the
 // nonce is four bytes.
-class QUIC_EXPORT_PRIVATE ChaCha20Poly1305Encrypter
-    : public ChaChaBaseEncrypter {
+class QUICHE_EXPORT ChaCha20Poly1305Encrypter : public ChaChaBaseEncrypter {
  public:
   enum {
     kAuthTagSize = 12,
diff --git a/quiche/quic/core/crypto/chacha20_poly1305_tls_decrypter.h b/quiche/quic/core/crypto/chacha20_poly1305_tls_decrypter.h
index f8108f2..15a7970 100644
--- a/quiche/quic/core/crypto/chacha20_poly1305_tls_decrypter.h
+++ b/quiche/quic/core/crypto/chacha20_poly1305_tls_decrypter.h
@@ -17,8 +17,7 @@
 //
 // It uses an authentication tag of 16 bytes (128 bits). It uses a 12 bytes IV
 // that is XOR'd with the packet number to compute the nonce.
-class QUIC_EXPORT_PRIVATE ChaCha20Poly1305TlsDecrypter
-    : public ChaChaBaseDecrypter {
+class QUICHE_EXPORT ChaCha20Poly1305TlsDecrypter : public ChaChaBaseDecrypter {
  public:
   enum {
     kAuthTagSize = 16,
diff --git a/quiche/quic/core/crypto/chacha20_poly1305_tls_encrypter.h b/quiche/quic/core/crypto/chacha20_poly1305_tls_encrypter.h
index e5d8f37..2a77102 100644
--- a/quiche/quic/core/crypto/chacha20_poly1305_tls_encrypter.h
+++ b/quiche/quic/core/crypto/chacha20_poly1305_tls_encrypter.h
@@ -15,8 +15,7 @@
 //
 // It uses an authentication tag of 16 bytes (128 bits). It uses a 12 byte IV
 // that is XOR'd with the packet number to compute the nonce.
-class QUIC_EXPORT_PRIVATE ChaCha20Poly1305TlsEncrypter
-    : public ChaChaBaseEncrypter {
+class QUICHE_EXPORT ChaCha20Poly1305TlsEncrypter : public ChaChaBaseEncrypter {
  public:
   enum {
     kAuthTagSize = 16,
diff --git a/quiche/quic/core/crypto/chacha_base_decrypter.h b/quiche/quic/core/crypto/chacha_base_decrypter.h
index 5cd08c7..c33367e 100644
--- a/quiche/quic/core/crypto/chacha_base_decrypter.h
+++ b/quiche/quic/core/crypto/chacha_base_decrypter.h
@@ -13,7 +13,7 @@
 
 namespace quic {
 
-class QUIC_EXPORT_PRIVATE ChaChaBaseDecrypter : public AeadBaseDecrypter {
+class QUICHE_EXPORT ChaChaBaseDecrypter : public AeadBaseDecrypter {
  public:
   using AeadBaseDecrypter::AeadBaseDecrypter;
 
diff --git a/quiche/quic/core/crypto/chacha_base_encrypter.h b/quiche/quic/core/crypto/chacha_base_encrypter.h
index 14773ec..cd57974 100644
--- a/quiche/quic/core/crypto/chacha_base_encrypter.h
+++ b/quiche/quic/core/crypto/chacha_base_encrypter.h
@@ -13,7 +13,7 @@
 
 namespace quic {
 
-class QUIC_EXPORT_PRIVATE ChaChaBaseEncrypter : public AeadBaseEncrypter {
+class QUICHE_EXPORT ChaChaBaseEncrypter : public AeadBaseEncrypter {
  public:
   using AeadBaseEncrypter::AeadBaseEncrypter;
 
diff --git a/quiche/quic/core/crypto/channel_id.h b/quiche/quic/core/crypto/channel_id.h
index 2f8a527..a4cfa18 100644
--- a/quiche/quic/core/crypto/channel_id.h
+++ b/quiche/quic/core/crypto/channel_id.h
@@ -15,7 +15,7 @@
 namespace quic {
 
 // ChannelIDVerifier verifies ChannelID signatures.
-class QUIC_EXPORT_PRIVATE ChannelIDVerifier {
+class QUICHE_EXPORT ChannelIDVerifier {
  public:
   ChannelIDVerifier() = delete;
 
diff --git a/quiche/quic/core/crypto/client_proof_source.h b/quiche/quic/core/crypto/client_proof_source.h
index d1450f7..f2ceb12 100644
--- a/quiche/quic/core/crypto/client_proof_source.h
+++ b/quiche/quic/core/crypto/client_proof_source.h
@@ -15,13 +15,13 @@
 
 // ClientProofSource is the interface for a QUIC client to provide client certs
 // and keys based on server hostname. It is only used by TLS handshakes.
-class QUIC_EXPORT_PRIVATE ClientProofSource {
+class QUICHE_EXPORT ClientProofSource {
  public:
   using Chain = ProofSource::Chain;
 
   virtual ~ClientProofSource() {}
 
-  struct QUIC_EXPORT_PRIVATE CertAndKey {
+  struct QUICHE_EXPORT CertAndKey {
     CertAndKey(quiche::QuicheReferenceCountedPointer<Chain> chain,
                CertificatePrivateKey private_key)
         : chain(std::move(chain)), private_key(std::move(private_key)) {}
@@ -43,7 +43,7 @@
 
 // DefaultClientProofSource is an implementation that simply keeps an in memory
 // map of server hostnames to certs.
-class QUIC_EXPORT_PRIVATE DefaultClientProofSource : public ClientProofSource {
+class QUICHE_EXPORT DefaultClientProofSource : public ClientProofSource {
  public:
   ~DefaultClientProofSource() override {}
 
diff --git a/quiche/quic/core/crypto/crypto_framer.h b/quiche/quic/core/crypto/crypto_framer.h
index 8d20bdc..7bcb89e 100644
--- a/quiche/quic/core/crypto/crypto_framer.h
+++ b/quiche/quic/core/crypto/crypto_framer.h
@@ -23,7 +23,7 @@
 class QuicData;
 class QuicDataWriter;
 
-class QUIC_EXPORT_PRIVATE CryptoFramerVisitorInterface {
+class QUICHE_EXPORT CryptoFramerVisitorInterface {
  public:
   virtual ~CryptoFramerVisitorInterface() {}
 
@@ -36,7 +36,7 @@
 
 // A class for framing the crypto messages that are exchanged in a QUIC
 // session.
-class QUIC_EXPORT_PRIVATE CryptoFramer : public CryptoMessageParser {
+class QUICHE_EXPORT CryptoFramer : public CryptoMessageParser {
  public:
   CryptoFramer();
 
diff --git a/quiche/quic/core/crypto/crypto_handshake.h b/quiche/quic/core/crypto/crypto_handshake.h
index 6a4b274..89eb6fb 100644
--- a/quiche/quic/core/crypto/crypto_handshake.h
+++ b/quiche/quic/core/crypto/crypto_handshake.h
@@ -87,7 +87,7 @@
 static_assert(MAX_FAILURE_REASON <= 32, "failure reason out of sync");
 
 // A CrypterPair contains the encrypter and decrypter for an encryption level.
-struct QUIC_EXPORT_PRIVATE CrypterPair {
+struct QUICHE_EXPORT CrypterPair {
   CrypterPair();
   CrypterPair(CrypterPair&&) = default;
   ~CrypterPair();
@@ -97,7 +97,7 @@
 };
 
 // Parameters negotiated by the crypto handshake.
-struct QUIC_EXPORT_PRIVATE QuicCryptoNegotiatedParameters
+struct QUICHE_EXPORT QuicCryptoNegotiatedParameters
     : public quiche::QuicheReferenceCounted {
   // Initializes the members to 0 or empty values.
   QuicCryptoNegotiatedParameters();
@@ -157,7 +157,7 @@
 };
 
 // QuicCryptoConfig contains common configuration between clients and servers.
-class QUIC_EXPORT_PRIVATE QuicCryptoConfig {
+class QUICHE_EXPORT QuicCryptoConfig {
  public:
   // kInitialLabel is a constant that is used when deriving the initial
   // (non-forward secure) keys for the connection in order to tie the resulting
diff --git a/quiche/quic/core/crypto/crypto_handshake_message.h b/quiche/quic/core/crypto/crypto_handshake_message.h
index b50c559..cc51ce3 100644
--- a/quiche/quic/core/crypto/crypto_handshake_message.h
+++ b/quiche/quic/core/crypto/crypto_handshake_message.h
@@ -20,7 +20,7 @@
 
 // An intermediate format of a handshake message that's convenient for a
 // CryptoFramer to serialize from or parse into.
-class QUIC_EXPORT_PRIVATE CryptoHandshakeMessage {
+class QUICHE_EXPORT CryptoHandshakeMessage {
  public:
   CryptoHandshakeMessage();
   CryptoHandshakeMessage(const CryptoHandshakeMessage& other);
diff --git a/quiche/quic/core/crypto/crypto_message_parser.h b/quiche/quic/core/crypto/crypto_message_parser.h
index f819209..b24c5ad 100644
--- a/quiche/quic/core/crypto/crypto_message_parser.h
+++ b/quiche/quic/core/crypto/crypto_message_parser.h
@@ -13,7 +13,7 @@
 
 namespace quic {
 
-class QUIC_EXPORT_PRIVATE CryptoMessageParser {
+class QUICHE_EXPORT CryptoMessageParser {
  public:
   virtual ~CryptoMessageParser() {}
 
diff --git a/quiche/quic/core/crypto/crypto_secret_boxer.h b/quiche/quic/core/crypto/crypto_secret_boxer.h
index 5d334c3..964d760 100644
--- a/quiche/quic/core/crypto/crypto_secret_boxer.h
+++ b/quiche/quic/core/crypto/crypto_secret_boxer.h
@@ -20,7 +20,7 @@
 // CryptoSecretBoxer encrypts small chunks of plaintext (called 'boxing') and
 // then, later, can authenticate+decrypt the resulting boxes. This object is
 // thread-safe.
-class QUIC_EXPORT_PRIVATE CryptoSecretBoxer {
+class QUICHE_EXPORT CryptoSecretBoxer {
  public:
   CryptoSecretBoxer();
   CryptoSecretBoxer(const CryptoSecretBoxer&) = delete;
diff --git a/quiche/quic/core/crypto/crypto_utils.h b/quiche/quic/core/crypto/crypto_utils.h
index adc818d..12822aa 100644
--- a/quiche/quic/core/crypto/crypto_utils.h
+++ b/quiche/quic/core/crypto/crypto_utils.h
@@ -27,14 +27,14 @@
 
 namespace quic {
 
-class QUIC_EXPORT_PRIVATE CryptoUtils {
+class QUICHE_EXPORT CryptoUtils {
  public:
   CryptoUtils() = delete;
 
   // Diversification is a utility class that's used to act like a union type.
   // Values can be created by calling the functions like |NoDiversification|,
   // below.
-  class QUIC_EXPORT_PRIVATE Diversification {
+  class QUICHE_EXPORT Diversification {
    public:
     enum Mode {
       NEVER,  // Key diversification will never be used. Forward secure
diff --git a/quiche/quic/core/crypto/curve25519_key_exchange.h b/quiche/quic/core/crypto/curve25519_key_exchange.h
index b6e06f3..8354c1a 100644
--- a/quiche/quic/core/crypto/curve25519_key_exchange.h
+++ b/quiche/quic/core/crypto/curve25519_key_exchange.h
@@ -17,8 +17,7 @@
 
 // Curve25519KeyExchange implements a SynchronousKeyExchange using
 // elliptic-curve Diffie-Hellman on curve25519. See http://cr.yp.to/ecdh.html
-class QUIC_EXPORT_PRIVATE Curve25519KeyExchange
-    : public SynchronousKeyExchange {
+class QUICHE_EXPORT Curve25519KeyExchange : public SynchronousKeyExchange {
  public:
   ~Curve25519KeyExchange() override;
 
diff --git a/quiche/quic/core/crypto/key_exchange.h b/quiche/quic/core/crypto/key_exchange.h
index 573b289..029a283 100644
--- a/quiche/quic/core/crypto/key_exchange.h
+++ b/quiche/quic/core/crypto/key_exchange.h
@@ -18,13 +18,13 @@
 // Interface for a Diffie-Hellman key exchange with an asynchronous interface.
 // This allows for implementations which hold the private key locally, as well
 // as ones which make an RPC to an external key-exchange service.
-class QUIC_EXPORT_PRIVATE AsynchronousKeyExchange {
+class QUICHE_EXPORT AsynchronousKeyExchange {
  public:
   virtual ~AsynchronousKeyExchange() = default;
 
   // Callback base class for receiving the results of an async call to
   // CalculateSharedKeys.
-  class QUIC_EXPORT_PRIVATE Callback {
+  class QUICHE_EXPORT Callback {
    public:
     Callback() = default;
     virtual ~Callback() = default;
@@ -57,8 +57,7 @@
 // Interface for a Diffie-Hellman key exchange with both synchronous and
 // asynchronous interfaces.  Only implementations which hold the private key
 // locally should implement this interface.
-class QUIC_EXPORT_PRIVATE SynchronousKeyExchange
-    : public AsynchronousKeyExchange {
+class QUICHE_EXPORT SynchronousKeyExchange : public AsynchronousKeyExchange {
  public:
   virtual ~SynchronousKeyExchange() = default;
 
diff --git a/quiche/quic/core/crypto/null_decrypter.h b/quiche/quic/core/crypto/null_decrypter.h
index 9b6fb45..0db63df 100644
--- a/quiche/quic/core/crypto/null_decrypter.h
+++ b/quiche/quic/core/crypto/null_decrypter.h
@@ -21,7 +21,7 @@
 // A NullDecrypter is a QuicDecrypter used before a crypto negotiation
 // has occurred.  It does not actually decrypt the payload, but does
 // verify a hash (fnv128) over both the payload and associated data.
-class QUIC_EXPORT_PRIVATE NullDecrypter : public QuicDecrypter {
+class QUICHE_EXPORT NullDecrypter : public QuicDecrypter {
  public:
   explicit NullDecrypter(Perspective perspective);
   NullDecrypter(const NullDecrypter&) = delete;
diff --git a/quiche/quic/core/crypto/null_encrypter.h b/quiche/quic/core/crypto/null_encrypter.h
index c5e599f..3789623 100644
--- a/quiche/quic/core/crypto/null_encrypter.h
+++ b/quiche/quic/core/crypto/null_encrypter.h
@@ -17,7 +17,7 @@
 // A NullEncrypter is a QuicEncrypter used before a crypto negotiation
 // has occurred.  It does not actually encrypt the payload, but does
 // generate a MAC (fnv128) over both the payload and associated data.
-class QUIC_EXPORT_PRIVATE NullEncrypter : public QuicEncrypter {
+class QUICHE_EXPORT NullEncrypter : public QuicEncrypter {
  public:
   explicit NullEncrypter(Perspective perspective);
   NullEncrypter(const NullEncrypter&) = delete;
diff --git a/quiche/quic/core/crypto/p256_key_exchange.h b/quiche/quic/core/crypto/p256_key_exchange.h
index 1341331..2a3b80c 100644
--- a/quiche/quic/core/crypto/p256_key_exchange.h
+++ b/quiche/quic/core/crypto/p256_key_exchange.h
@@ -17,7 +17,7 @@
 
 // P256KeyExchange implements a SynchronousKeyExchange using elliptic-curve
 // Diffie-Hellman on NIST P-256.
-class QUIC_EXPORT_PRIVATE P256KeyExchange : public SynchronousKeyExchange {
+class QUICHE_EXPORT P256KeyExchange : public SynchronousKeyExchange {
  public:
   ~P256KeyExchange() override;
 
diff --git a/quiche/quic/core/crypto/proof_source.h b/quiche/quic/core/crypto/proof_source.h
index 7721554..01907c1 100644
--- a/quiche/quic/core/crypto/proof_source.h
+++ b/quiche/quic/core/crypto/proof_source.h
@@ -26,7 +26,7 @@
 
 // CryptoBuffers is a RAII class to own a std::vector<CRYPTO_BUFFER*> and the
 // buffers the elements point to.
-struct QUIC_EXPORT_PRIVATE CryptoBuffers {
+struct QUICHE_EXPORT CryptoBuffers {
   CryptoBuffers() = default;
   CryptoBuffers(const CryptoBuffers&) = delete;
   CryptoBuffers(CryptoBuffers&&) = default;
@@ -37,11 +37,11 @@
 
 // ProofSource is an interface by which a QUIC server can obtain certificate
 // chains and signatures that prove its identity.
-class QUIC_EXPORT_PRIVATE ProofSource {
+class QUICHE_EXPORT ProofSource {
  public:
   // Chain is a reference-counted wrapper for a vector of stringified
   // certificates.
-  struct QUIC_EXPORT_PRIVATE Chain : public quiche::QuicheReferenceCounted {
+  struct QUICHE_EXPORT Chain : public quiche::QuicheReferenceCounted {
     explicit Chain(const std::vector<std::string>& certs);
     Chain(const Chain&) = delete;
     Chain& operator=(const Chain&) = delete;
@@ -56,13 +56,13 @@
 
   // Details is an abstract class which acts as a container for any
   // implementation-specific details that a ProofSource wants to return.
-  class QUIC_EXPORT_PRIVATE Details {
+  class QUICHE_EXPORT Details {
    public:
     virtual ~Details() {}
   };
 
   // Callback base class for receiving the results of an async call to GetProof.
-  class QUIC_EXPORT_PRIVATE Callback {
+  class QUICHE_EXPORT Callback {
    public:
     Callback() {}
     virtual ~Callback() {}
@@ -93,7 +93,7 @@
   };
 
   // Base class for signalling the completion of a call to ComputeTlsSignature.
-  class QUIC_EXPORT_PRIVATE SignatureCallback {
+  class QUICHE_EXPORT SignatureCallback {
    public:
     SignatureCallback() {}
     virtual ~SignatureCallback() = default;
@@ -183,7 +183,7 @@
   virtual QuicSignatureAlgorithmVector SupportedTlsSignatureAlgorithms()
       const = 0;
 
-  class QUIC_EXPORT_PRIVATE DecryptCallback {
+  class QUICHE_EXPORT DecryptCallback {
    public:
     DecryptCallback() = default;
     virtual ~DecryptCallback() = default;
@@ -201,7 +201,7 @@
   // Encrypt/Seal operation and a potentially asynchronous Decrypt/Open
   // operation. This interface allows for ticket decryptions to be performed on
   // a remote service.
-  class QUIC_EXPORT_PRIVATE TicketCrypter {
+  class QUICHE_EXPORT TicketCrypter {
    public:
     TicketCrypter() = default;
     virtual ~TicketCrypter() = default;
@@ -241,7 +241,7 @@
 // the operations in ProofSourceHandle completes.
 // TODO(wub): Consider deprecating ProofSource by moving all functionalities of
 // ProofSource into ProofSourceHandle.
-class QUIC_EXPORT_PRIVATE ProofSourceHandleCallback {
+class QUICHE_EXPORT ProofSourceHandleCallback {
  public:
   virtual ~ProofSourceHandleCallback() = default;
 
@@ -290,7 +290,7 @@
 // be invoked.
 //
 // A handle will have at most one async operation pending at a time.
-class QUIC_EXPORT_PRIVATE ProofSourceHandle {
+class QUICHE_EXPORT ProofSourceHandle {
  public:
   virtual ~ProofSourceHandle() = default;
 
@@ -345,7 +345,7 @@
 
 // Returns true if |chain| contains a parsable DER-encoded X.509 leaf cert and
 // it matches with |key|.
-QUIC_EXPORT_PRIVATE bool ValidateCertAndKey(
+QUICHE_EXPORT bool ValidateCertAndKey(
     const quiche::QuicheReferenceCountedPointer<ProofSource::Chain>& chain,
     const CertificatePrivateKey& key);
 
diff --git a/quiche/quic/core/crypto/proof_source_x509.h b/quiche/quic/core/crypto/proof_source_x509.h
index fa62bbf..37b3246 100644
--- a/quiche/quic/core/crypto/proof_source_x509.h
+++ b/quiche/quic/core/crypto/proof_source_x509.h
@@ -19,7 +19,7 @@
 
 // ProofSourceX509 accepts X.509 certificates with private keys and picks a
 // certificate internally based on its SubjectAltName value.
-class QUIC_EXPORT_PRIVATE ProofSourceX509 : public ProofSource {
+class QUICHE_EXPORT ProofSourceX509 : public ProofSource {
  public:
   // Creates a proof source that uses |default_chain| when no SubjectAltName
   // value matches.  Returns nullptr if |default_chain| is invalid.
@@ -64,7 +64,7 @@
                                        std::string& /*leaf_cert_scts*/) {}
 
  private:
-  struct QUIC_EXPORT_PRIVATE Certificate {
+  struct QUICHE_EXPORT Certificate {
     quiche::QuicheReferenceCountedPointer<Chain> chain;
     CertificatePrivateKey key;
   };
diff --git a/quiche/quic/core/crypto/proof_verifier.h b/quiche/quic/core/crypto/proof_verifier.h
index e9c6f03..b771784 100644
--- a/quiche/quic/core/crypto/proof_verifier.h
+++ b/quiche/quic/core/crypto/proof_verifier.h
@@ -19,7 +19,7 @@
 // ProofVerifyDetails is an abstract class that acts as a container for any
 // implementation specific details that a ProofVerifier wishes to return. These
 // details are saved in the CachedState for the origin in question.
-class QUIC_EXPORT_PRIVATE ProofVerifyDetails {
+class QUICHE_EXPORT ProofVerifyDetails {
  public:
   virtual ~ProofVerifyDetails() {}
 
@@ -30,14 +30,14 @@
 
 // ProofVerifyContext is an abstract class that acts as a container for any
 // implementation specific context that a ProofVerifier needs.
-class QUIC_EXPORT_PRIVATE ProofVerifyContext {
+class QUICHE_EXPORT ProofVerifyContext {
  public:
   virtual ~ProofVerifyContext() {}
 };
 
 // ProofVerifierCallback provides a generic mechanism for a ProofVerifier to
 // call back after an asynchronous verification.
-class QUIC_EXPORT_PRIVATE ProofVerifierCallback {
+class QUICHE_EXPORT ProofVerifierCallback {
  public:
   virtual ~ProofVerifierCallback() {}
 
@@ -53,7 +53,7 @@
 
 // A ProofVerifier checks the signature on a server config, and the certificate
 // chain that backs the public key.
-class QUIC_EXPORT_PRIVATE ProofVerifier {
+class QUICHE_EXPORT ProofVerifier {
  public:
   virtual ~ProofVerifier() {}
 
diff --git a/quiche/quic/core/crypto/quic_client_session_cache.h b/quiche/quic/core/crypto/quic_client_session_cache.h
index e568db6..7ef7ed0 100644
--- a/quiche/quic/core/crypto/quic_client_session_cache.h
+++ b/quiche/quic/core/crypto/quic_client_session_cache.h
@@ -19,7 +19,7 @@
 
 // QuicClientSessionCache maps from QuicServerId to information used to resume
 // TLS sessions for that server.
-class QUIC_EXPORT_PRIVATE QuicClientSessionCache : public SessionCache {
+class QUICHE_EXPORT QuicClientSessionCache : public SessionCache {
  public:
   QuicClientSessionCache();
   explicit QuicClientSessionCache(size_t max_entries);
@@ -48,7 +48,7 @@
  private:
   friend class test::QuicClientSessionCachePeer;
 
-  struct QUIC_EXPORT_PRIVATE Entry {
+  struct QUICHE_EXPORT Entry {
     Entry();
     Entry(Entry&&);
     ~Entry();
diff --git a/quiche/quic/core/crypto/quic_compressed_certs_cache.h b/quiche/quic/core/crypto/quic_compressed_certs_cache.h
index 918981e..7c973bd 100644
--- a/quiche/quic/core/crypto/quic_compressed_certs_cache.h
+++ b/quiche/quic/core/crypto/quic_compressed_certs_cache.h
@@ -15,7 +15,7 @@
 namespace quic {
 
 // QuicCompressedCertsCache is a cache to track most recently compressed certs.
-class QUIC_EXPORT_PRIVATE QuicCompressedCertsCache {
+class QUICHE_EXPORT QuicCompressedCertsCache {
  public:
   explicit QuicCompressedCertsCache(int64_t max_num_certs);
   ~QuicCompressedCertsCache();
@@ -50,7 +50,7 @@
   // A wrapper of the tuple:
   //   |chain, client_cached_cert_hashes|
   // to identify uncompressed representation of certs.
-  struct QUIC_EXPORT_PRIVATE UncompressedCerts {
+  struct QUICHE_EXPORT UncompressedCerts {
     UncompressedCerts();
     UncompressedCerts(
         const quiche::QuicheReferenceCountedPointer<ProofSource::Chain>& chain,
@@ -64,7 +64,7 @@
   // Certs stored by QuicCompressedCertsCache where uncompressed certs data is
   // used to identify the uncompressed representation of certs and
   // |compressed_cert| is the cached compressed representation.
-  class QUIC_EXPORT_PRIVATE CachedCerts {
+  class QUICHE_EXPORT CachedCerts {
    public:
     CachedCerts();
     CachedCerts(const UncompressedCerts& uncompressed_certs,
diff --git a/quiche/quic/core/crypto/quic_crypter.h b/quiche/quic/core/crypto/quic_crypter.h
index d57a8e6..07f97bc 100644
--- a/quiche/quic/core/crypto/quic_crypter.h
+++ b/quiche/quic/core/crypto/quic_crypter.h
@@ -15,7 +15,7 @@
 // Its purpose is to provide an interface for using methods that are common to
 // both classes when operations are being done that apply to both encrypters and
 // decrypters.
-class QUIC_EXPORT_PRIVATE QuicCrypter {
+class QUICHE_EXPORT QuicCrypter {
  public:
   virtual ~QuicCrypter() {}
 
diff --git a/quiche/quic/core/crypto/quic_crypto_client_config.h b/quiche/quic/core/crypto/quic_crypto_client_config.h
index 02c3643..30cddcc 100644
--- a/quiche/quic/core/crypto/quic_crypto_client_config.h
+++ b/quiche/quic/core/crypto/quic_crypto_client_config.h
@@ -32,7 +32,7 @@
 
 // QuicResumptionState stores the state a client needs for performing connection
 // resumption.
-struct QUIC_EXPORT_PRIVATE QuicResumptionState {
+struct QUICHE_EXPORT QuicResumptionState {
   // |tls_session| holds the cryptographic state necessary for a resumption. It
   // includes the ALPN negotiated on the connection where the ticket was
   // received.
@@ -56,7 +56,7 @@
 
 // SessionCache is an interface for managing storing and retrieving
 // QuicResumptionState structs.
-class QUIC_EXPORT_PRIVATE SessionCache {
+class QUICHE_EXPORT SessionCache {
  public:
   virtual ~SessionCache() {}
 
@@ -97,12 +97,12 @@
 // QuicCryptoClientConfig contains crypto-related configuration settings for a
 // client. Note that this object isn't thread-safe. It's designed to be used on
 // a single thread at a time.
-class QUIC_EXPORT_PRIVATE QuicCryptoClientConfig : public QuicCryptoConfig {
+class QUICHE_EXPORT QuicCryptoClientConfig : public QuicCryptoConfig {
  public:
   // A CachedState contains the information that the client needs in order to
   // perform a 0-RTT handshake with a server. This information can be reused
   // over several connections to the same server.
-  class QUIC_EXPORT_PRIVATE CachedState {
+  class QUICHE_EXPORT CachedState {
    public:
     // Enum to track if the server config is valid or not. If it is not valid,
     // it specifies why it is invalid.
@@ -227,7 +227,7 @@
   };
 
   // Used to filter server ids for partial config deletion.
-  class QUIC_EXPORT_PRIVATE ServerIdFilter {
+  class QUICHE_EXPORT ServerIdFilter {
    public:
     virtual ~ServerIdFilter() {}
 
diff --git a/quiche/quic/core/crypto/quic_crypto_proof.h b/quiche/quic/core/crypto/quic_crypto_proof.h
index 579d264..f808277 100644
--- a/quiche/quic/core/crypto/quic_crypto_proof.h
+++ b/quiche/quic/core/crypto/quic_crypto_proof.h
@@ -12,7 +12,7 @@
 namespace quic {
 
 // Contains the crypto-related data provided by ProofSource
-struct QUIC_EXPORT_PRIVATE QuicCryptoProof {
+struct QUICHE_EXPORT QuicCryptoProof {
   QuicCryptoProof();
 
   // Signature generated by ProofSource
diff --git a/quiche/quic/core/crypto/quic_crypto_server_config.h b/quiche/quic/core/crypto/quic_crypto_server_config.h
index 5805c88..c9e6c13 100644
--- a/quiche/quic/core/crypto/quic_crypto_server_config.h
+++ b/quiche/quic/core/crypto/quic_crypto_server_config.h
@@ -41,7 +41,7 @@
 
 // ClientHelloInfo contains information about a client hello message that is
 // only kept for as long as it's being processed.
-struct QUIC_EXPORT_PRIVATE ClientHelloInfo {
+struct QUICHE_EXPORT ClientHelloInfo {
   ClientHelloInfo(const QuicIpAddress& in_client_ip, QuicWallTime in_now);
   ClientHelloInfo(const ClientHelloInfo& other);
   ~ClientHelloInfo();
@@ -68,7 +68,7 @@
 }  // namespace test
 
 // Hook that allows application code to subscribe to primary config changes.
-class QUIC_EXPORT_PRIVATE PrimaryConfigChangedCallback {
+class QUICHE_EXPORT PrimaryConfigChangedCallback {
  public:
   PrimaryConfigChangedCallback();
   PrimaryConfigChangedCallback(const PrimaryConfigChangedCallback&) = delete;
@@ -79,11 +79,11 @@
 };
 
 // Callback used to accept the result of the |client_hello| validation step.
-class QUIC_EXPORT_PRIVATE ValidateClientHelloResultCallback {
+class QUICHE_EXPORT ValidateClientHelloResultCallback {
  public:
   // Opaque token that holds information about the client_hello and
   // its validity.  Can be interpreted by calling ProcessClientHello.
-  struct QUIC_EXPORT_PRIVATE Result : public quiche::QuicheReferenceCounted {
+  struct QUICHE_EXPORT Result : public quiche::QuicheReferenceCounted {
     Result(const CryptoHandshakeMessage& in_client_hello,
            QuicIpAddress in_client_ip, QuicWallTime in_now);
 
@@ -110,7 +110,7 @@
 };
 
 // Callback used to accept the result of the ProcessClientHello method.
-class QUIC_EXPORT_PRIVATE ProcessClientHelloResultCallback {
+class QUICHE_EXPORT ProcessClientHelloResultCallback {
  public:
   ProcessClientHelloResultCallback();
   ProcessClientHelloResultCallback(const ProcessClientHelloResultCallback&) =
@@ -126,7 +126,7 @@
 
 // Callback used to receive the results of a call to
 // BuildServerConfigUpdateMessage.
-class QUIC_EXPORT_PRIVATE BuildServerConfigUpdateMessageResultCallback {
+class QUICHE_EXPORT BuildServerConfigUpdateMessageResultCallback {
  public:
   BuildServerConfigUpdateMessageResultCallback() = default;
   virtual ~BuildServerConfigUpdateMessageResultCallback() {}
@@ -139,7 +139,7 @@
 
 // Object that is interested in built rejections (which include REJ, SREJ and
 // cheap SREJ).
-class QUIC_EXPORT_PRIVATE RejectionObserver {
+class QUICHE_EXPORT RejectionObserver {
  public:
   RejectionObserver() = default;
   virtual ~RejectionObserver() {}
@@ -151,7 +151,7 @@
 };
 
 // Factory for creating KeyExchange objects.
-class QUIC_EXPORT_PRIVATE KeyExchangeSource {
+class QUICHE_EXPORT KeyExchangeSource {
  public:
   virtual ~KeyExchangeSource() = default;
 
@@ -173,10 +173,10 @@
 // order to support clients resuming with a previous configuration.
 // TODO(agl): when adding configurations at runtime is added, this object will
 // need to consider locking.
-class QUIC_EXPORT_PRIVATE QuicCryptoServerConfig {
+class QUICHE_EXPORT QuicCryptoServerConfig {
  public:
   // ConfigOptions contains options for generating server configs.
-  struct QUIC_EXPORT_PRIVATE ConfigOptions {
+  struct QUICHE_EXPORT ConfigOptions {
     ConfigOptions();
     ConfigOptions(const ConfigOptions& other);
     ~ConfigOptions();
@@ -473,8 +473,8 @@
 
   // Config represents a server config: a collection of preferences and
   // Diffie-Hellman public values.
-  class QUIC_EXPORT_PRIVATE Config : public QuicCryptoConfig,
-                                     public quiche::QuicheReferenceCounted {
+  class QUICHE_EXPORT Config : public QuicCryptoConfig,
+                               public quiche::QuicheReferenceCounted {
    public:
     Config();
     Config(const Config&) = delete;
@@ -540,7 +540,7 @@
       QUIC_SHARED_LOCKS_REQUIRED(configs_lock_);
 
   // A snapshot of the configs associated with an in-progress handshake.
-  struct QUIC_EXPORT_PRIVATE Configs {
+  struct QUICHE_EXPORT Configs {
     quiche::QuicheReferenceCountedPointer<Config> requested;
     quiche::QuicheReferenceCountedPointer<Config> primary;
     quiche::QuicheReferenceCountedPointer<Config> fallback;
@@ -582,7 +582,7 @@
 
   // Convenience class which carries the arguments passed to
   // |ProcessClientHellp| along.
-  class QUIC_EXPORT_PRIVATE ProcessClientHelloContext {
+  class QUICHE_EXPORT ProcessClientHelloContext {
    public:
     ProcessClientHelloContext(
         quiche::QuicheReferenceCountedPointer<
@@ -943,7 +943,7 @@
   bool validate_source_address_token_;
 };
 
-struct QUIC_EXPORT_PRIVATE QuicSignedServerConfig
+struct QUICHE_EXPORT QuicSignedServerConfig
     : public quiche::QuicheReferenceCounted {
   QuicSignedServerConfig();
 
diff --git a/quiche/quic/core/crypto/quic_decrypter.h b/quiche/quic/core/crypto/quic_decrypter.h
index 8e3c754..9f32dd0 100644
--- a/quiche/quic/core/crypto/quic_decrypter.h
+++ b/quiche/quic/core/crypto/quic_decrypter.h
@@ -18,7 +18,7 @@
 
 namespace quic {
 
-class QUIC_EXPORT_PRIVATE QuicDecrypter : public QuicCrypter {
+class QUICHE_EXPORT QuicDecrypter : public QuicCrypter {
  public:
   virtual ~QuicDecrypter() {}
 
diff --git a/quiche/quic/core/crypto/quic_encrypter.h b/quiche/quic/core/crypto/quic_encrypter.h
index 7b8c4fa..d22d166 100644
--- a/quiche/quic/core/crypto/quic_encrypter.h
+++ b/quiche/quic/core/crypto/quic_encrypter.h
@@ -15,7 +15,7 @@
 
 namespace quic {
 
-class QUIC_EXPORT_PRIVATE QuicEncrypter : public QuicCrypter {
+class QUICHE_EXPORT QuicEncrypter : public QuicCrypter {
  public:
   virtual ~QuicEncrypter() {}
 
diff --git a/quiche/quic/core/crypto/quic_hkdf.h b/quiche/quic/core/crypto/quic_hkdf.h
index 3e30f1c..36b287f 100644
--- a/quiche/quic/core/crypto/quic_hkdf.h
+++ b/quiche/quic/core/crypto/quic_hkdf.h
@@ -16,7 +16,7 @@
 // QuicHKDF implements the key derivation function specified in RFC 5869
 // (using SHA-256) and outputs key material, as needed by QUIC.
 // See https://tools.ietf.org/html/rfc5869 for details.
-class QUIC_EXPORT_PRIVATE QuicHKDF {
+class QUICHE_EXPORT QuicHKDF {
  public:
   // |secret|: the input shared secret (or, from RFC 5869, the IKM).
   // |salt|: an (optional) public salt / non-secret random value. While
diff --git a/quiche/quic/core/crypto/tls_client_connection.h b/quiche/quic/core/crypto/tls_client_connection.h
index 3bf35ce..187da35 100644
--- a/quiche/quic/core/crypto/tls_client_connection.h
+++ b/quiche/quic/core/crypto/tls_client_connection.h
@@ -11,11 +11,11 @@
 
 // TlsClientConnection receives calls for client-specific BoringSSL callbacks
 // and calls its Delegate for the implementation of those callbacks.
-class QUIC_EXPORT_PRIVATE TlsClientConnection : public TlsConnection {
+class QUICHE_EXPORT TlsClientConnection : public TlsConnection {
  public:
   // A TlsClientConnection::Delegate implements the client-specific methods that
   // are set as callbacks for an SSL object.
-  class QUIC_EXPORT_PRIVATE Delegate {
+  class QUICHE_EXPORT Delegate {
    public:
     virtual ~Delegate() {}
 
diff --git a/quiche/quic/core/crypto/tls_connection.h b/quiche/quic/core/crypto/tls_connection.h
index ca9f70b..0b39d1e 100644
--- a/quiche/quic/core/crypto/tls_connection.h
+++ b/quiche/quic/core/crypto/tls_connection.h
@@ -22,11 +22,11 @@
 // The owner of the TlsConnection is responsible for driving the TLS handshake
 // (and other interactions with the SSL*). This class only handles mapping
 // callbacks to the correct instance.
-class QUIC_EXPORT_PRIVATE TlsConnection {
+class QUICHE_EXPORT TlsConnection {
  public:
   // A TlsConnection::Delegate implements the methods that are set as callbacks
   // of TlsConnection.
-  class QUIC_EXPORT_PRIVATE Delegate {
+  class QUICHE_EXPORT Delegate {
    public:
     virtual ~Delegate() {}
 
diff --git a/quiche/quic/core/crypto/tls_server_connection.h b/quiche/quic/core/crypto/tls_server_connection.h
index 3c0eb7e..bdb58be 100644
--- a/quiche/quic/core/crypto/tls_server_connection.h
+++ b/quiche/quic/core/crypto/tls_server_connection.h
@@ -13,11 +13,11 @@
 
 // TlsServerConnection receives calls for client-specific BoringSSL callbacks
 // and calls its Delegate for the implementation of those callbacks.
-class QUIC_EXPORT_PRIVATE TlsServerConnection : public TlsConnection {
+class QUICHE_EXPORT TlsServerConnection : public TlsConnection {
  public:
   // A TlsServerConnection::Delegate implement the server-specific methods that
   // are set as callbacks for an SSL object.
-  class QUIC_EXPORT_PRIVATE Delegate {
+  class QUICHE_EXPORT Delegate {
    public:
     virtual ~Delegate() {}
 
diff --git a/quiche/quic/core/crypto/transport_parameters.h b/quiche/quic/core/crypto/transport_parameters.h
index 78c2202..ff57add 100644
--- a/quiche/quic/core/crypto/transport_parameters.h
+++ b/quiche/quic/core/crypto/transport_parameters.h
@@ -25,7 +25,7 @@
 // exchanged during the TLS handshake. This struct is a mirror of the struct in
 // the "Transport Parameter Encoding" section of draft-ietf-quic-transport.
 // This struct currently uses the values from draft 29.
-struct QUIC_EXPORT_PRIVATE TransportParameters {
+struct QUICHE_EXPORT TransportParameters {
   // The identifier used to differentiate transport parameters.
   enum TransportParameterId : uint64_t;
   // A map used to specify custom parameters.
@@ -33,7 +33,7 @@
   // Represents an individual QUIC transport parameter that only encodes a
   // variable length integer. Can only be created inside the constructor for
   // TransportParameters.
-  class QUIC_EXPORT_PRIVATE IntegerParameter {
+  class QUICHE_EXPORT IntegerParameter {
    public:
     // Forbid constructing and copying apart from TransportParameters.
     IntegerParameter() = delete;
@@ -54,7 +54,7 @@
     // |error_details|.
     bool Read(QuicDataReader* reader, std::string* error_details);
     // operator<< allows easily logging integer transport parameters.
-    friend QUIC_EXPORT_PRIVATE std::ostream& operator<<(
+    friend QUICHE_EXPORT std::ostream& operator<<(
         std::ostream& os, const IntegerParameter& param);
 
    private:
@@ -86,7 +86,7 @@
 
   // Represents the preferred_address transport parameter that a server can
   // send to clients.
-  struct QUIC_EXPORT_PRIVATE PreferredAddress {
+  struct QUICHE_EXPORT PreferredAddress {
     PreferredAddress();
     PreferredAddress(const PreferredAddress& other) = default;
     PreferredAddress(PreferredAddress&& other) = default;
@@ -101,7 +101,7 @@
 
     // Allows easily logging.
     std::string ToString() const;
-    friend QUIC_EXPORT_PRIVATE std::ostream& operator<<(
+    friend QUICHE_EXPORT std::ostream& operator<<(
         std::ostream& os, const TransportParameters& params);
   };
 
@@ -109,7 +109,7 @@
   // mechanism ported to QUIC+TLS. It is exchanged using transport parameter ID
   // 0x4752 and will eventually be deprecated in favor of
   // draft-ietf-quic-version-negotiation.
-  struct QUIC_EXPORT_PRIVATE LegacyVersionInformation {
+  struct QUICHE_EXPORT LegacyVersionInformation {
     LegacyVersionInformation();
     LegacyVersionInformation(const LegacyVersionInformation& other) = default;
     LegacyVersionInformation& operator=(const LegacyVersionInformation& other) =
@@ -132,14 +132,14 @@
 
     // Allows easily logging.
     std::string ToString() const;
-    friend QUIC_EXPORT_PRIVATE std::ostream& operator<<(
+    friend QUICHE_EXPORT std::ostream& operator<<(
         std::ostream& os,
         const LegacyVersionInformation& legacy_version_information);
   };
 
   // Version information used for version downgrade prevention and compatible
   // version negotiation. See draft-ietf-quic-version-negotiation-05.
-  struct QUIC_EXPORT_PRIVATE VersionInformation {
+  struct QUICHE_EXPORT VersionInformation {
     VersionInformation();
     VersionInformation(const VersionInformation& other) = default;
     VersionInformation& operator=(const VersionInformation& other) = default;
@@ -159,7 +159,7 @@
 
     // Allows easily logging.
     std::string ToString() const;
-    friend QUIC_EXPORT_PRIVATE std::ostream& operator<<(
+    friend QUICHE_EXPORT std::ostream& operator<<(
         std::ostream& os, const VersionInformation& version_information);
   };
 
@@ -268,15 +268,15 @@
 
   // Allows easily logging transport parameters.
   std::string ToString() const;
-  friend QUIC_EXPORT_PRIVATE std::ostream& operator<<(
+  friend QUICHE_EXPORT std::ostream& operator<<(
       std::ostream& os, const TransportParameters& params);
 };
 
 // Serializes a TransportParameters struct into the format for sending it in a
 // TLS extension. The serialized bytes are written to |*out|. Returns if the
 // parameters are valid and serialization succeeded.
-QUIC_EXPORT_PRIVATE bool SerializeTransportParameters(
-    const TransportParameters& in, std::vector<uint8_t>* out);
+QUICHE_EXPORT bool SerializeTransportParameters(const TransportParameters& in,
+                                                std::vector<uint8_t>* out);
 
 // Parses bytes from the quic_transport_parameters TLS extension and writes the
 // parsed parameters into |*out|. Input is read from |in| for |in_len| bytes.
@@ -284,9 +284,11 @@
 // This method returns true if the input was successfully parsed.
 // On failure, this method will write a human-readable error message to
 // |error_details|.
-QUIC_EXPORT_PRIVATE bool ParseTransportParameters(
-    ParsedQuicVersion version, Perspective perspective, const uint8_t* in,
-    size_t in_len, TransportParameters* out, std::string* error_details);
+QUICHE_EXPORT bool ParseTransportParameters(ParsedQuicVersion version,
+                                            Perspective perspective,
+                                            const uint8_t* in, size_t in_len,
+                                            TransportParameters* out,
+                                            std::string* error_details);
 
 // Serializes |in| and |application_data| in a deterministic format so that
 // multiple calls to SerializeTransportParametersForTicket with the same inputs
@@ -296,15 +298,14 @@
 // accepted: Early data will only be accepted if the inputs to this function
 // match what they were on the connection that issued an early data capable
 // ticket.
-QUIC_EXPORT_PRIVATE bool SerializeTransportParametersForTicket(
+QUICHE_EXPORT bool SerializeTransportParametersForTicket(
     const TransportParameters& in, const std::vector<uint8_t>& application_data,
     std::vector<uint8_t>* out);
 
 // Removes reserved values from custom_parameters and versions.
 // The resulting value can be reliably compared with an original or other
 // deserialized value.
-QUIC_EXPORT_PRIVATE void DegreaseTransportParameters(
-    TransportParameters& parameters);
+QUICHE_EXPORT void DegreaseTransportParameters(TransportParameters& parameters);
 
 }  // namespace quic
 
diff --git a/quiche/quic/core/crypto/web_transport_fingerprint_proof_verifier.h b/quiche/quic/core/crypto/web_transport_fingerprint_proof_verifier.h
index ea1908d..c995a2b 100644
--- a/quiche/quic/core/crypto/web_transport_fingerprint_proof_verifier.h
+++ b/quiche/quic/core/crypto/web_transport_fingerprint_proof_verifier.h
@@ -19,7 +19,7 @@
 // https://w3c.github.io/webrtc-pc/#dom-rtcdtlsfingerprint.
 // TODO(vasilvv): remove this once all consumers of this API use
 // WebTransportHash.
-struct QUIC_EXPORT_PRIVATE CertificateFingerprint {
+struct QUICHE_EXPORT CertificateFingerprint {
   static constexpr char kSha256[] = "sha-256";
 
   // An algorithm described by one of the names in
@@ -32,7 +32,7 @@
 
 // Represents a fingerprint of an X.509 certificate in a format based on
 // https://w3c.github.io/webtransport/#dictdef-webtransporthash.
-struct QUIC_EXPORT_PRIVATE WebTransportHash {
+struct QUICHE_EXPORT WebTransportHash {
   static constexpr char kSha256[] = "sha-256";
 
   // An algorithm described by one of the names in
@@ -49,7 +49,7 @@
 // not too long and has not expired.  Only the leaf is checked, the rest of the
 // chain is ignored. Reference specification:
 // https://wicg.github.io/web-transport/#dom-quictransportconfiguration-server_certificate_fingerprints
-class QUIC_EXPORT_PRIVATE WebTransportFingerprintProofVerifier
+class QUICHE_EXPORT WebTransportFingerprintProofVerifier
     : public ProofVerifier {
  public:
   // Note: the entries in this list may be logged into a UMA histogram, and thus
@@ -66,7 +66,7 @@
     kMaxValue = kDisallowedKeyAlgorithm,
   };
 
-  class QUIC_EXPORT_PRIVATE Details : public ProofVerifyDetails {
+  class QUICHE_EXPORT Details : public ProofVerifyDetails {
    public:
     explicit Details(Status status) : status_(status) {}
     Status status() const { return status_; }
diff --git a/quiche/quic/core/deterministic_connection_id_generator.h b/quiche/quic/core/deterministic_connection_id_generator.h
index 74d42d9..fbb9900 100644
--- a/quiche/quic/core/deterministic_connection_id_generator.h
+++ b/quiche/quic/core/deterministic_connection_id_generator.h
@@ -14,7 +14,7 @@
 
 // Generates connection IDs deterministically from the provided original
 // connection ID.
-class QUIC_EXPORT_PRIVATE DeterministicConnectionIdGenerator
+class QUICHE_EXPORT DeterministicConnectionIdGenerator
     : public ConnectionIdGeneratorInterface {
  public:
   DeterministicConnectionIdGenerator(uint8_t expected_connection_id_length);
diff --git a/quiche/quic/core/frames/quic_ack_frame.h b/quiche/quic/core/frames/quic_ack_frame.h
index 6828a8c..d0b8424 100644
--- a/quiche/quic/core/frames/quic_ack_frame.h
+++ b/quiche/quic/core/frames/quic_ack_frame.h
@@ -18,7 +18,7 @@
 // A sequence of packet numbers where each number is unique. Intended to be used
 // in a sliding window fashion, where smaller old packet numbers are removed and
 // larger new packet numbers are added, with the occasional random access.
-class QUIC_EXPORT_PRIVATE PacketNumberQueue {
+class QUICHE_EXPORT PacketNumberQueue {
  public:
   PacketNumberQueue();
   PacketNumberQueue(const PacketNumberQueue& other);
@@ -81,22 +81,22 @@
   const_reverse_iterator rbegin() const;
   const_reverse_iterator rend() const;
 
-  friend QUIC_EXPORT_PRIVATE std::ostream& operator<<(
-      std::ostream& os, const PacketNumberQueue& q);
+  friend QUICHE_EXPORT std::ostream& operator<<(std::ostream& os,
+                                                const PacketNumberQueue& q);
 
  private:
   QuicIntervalSet<QuicPacketNumber> packet_number_intervals_;
 };
 
-struct QUIC_EXPORT_PRIVATE QuicAckFrame {
+struct QUICHE_EXPORT QuicAckFrame {
   QuicAckFrame();
   QuicAckFrame(const QuicAckFrame& other);
   ~QuicAckFrame();
 
   void Clear();
 
-  friend QUIC_EXPORT_PRIVATE std::ostream& operator<<(
-      std::ostream& os, const QuicAckFrame& ack_frame);
+  friend QUICHE_EXPORT std::ostream& operator<<(std::ostream& os,
+                                                const QuicAckFrame& ack_frame);
 
   // The highest packet number we've observed from the peer. When |packets| is
   // not empty, it should always be equal to packets.Max(). The |LargestAcked|
@@ -121,8 +121,7 @@
 
 // The highest acked packet number we've observed from the peer. If no packets
 // have been observed, return 0.
-inline QUIC_EXPORT_PRIVATE QuicPacketNumber
-LargestAcked(const QuicAckFrame& frame) {
+inline QUICHE_EXPORT QuicPacketNumber LargestAcked(const QuicAckFrame& frame) {
   QUICHE_DCHECK(frame.packets.Empty() ||
                 frame.packets.Max() == frame.largest_acked);
   return frame.largest_acked;
@@ -131,7 +130,7 @@
 // True if the packet number is greater than largest_observed or is listed
 // as missing.
 // Always returns false for packet numbers less than least_unacked.
-QUIC_EXPORT_PRIVATE bool IsAwaitingPacket(
+QUICHE_EXPORT bool IsAwaitingPacket(
     const QuicAckFrame& ack_frame, QuicPacketNumber packet_number,
     QuicPacketNumber peer_least_packet_awaiting_ack);
 
diff --git a/quiche/quic/core/frames/quic_ack_frequency_frame.h b/quiche/quic/core/frames/quic_ack_frequency_frame.h
index c9b3519..03f8746 100644
--- a/quiche/quic/core/frames/quic_ack_frequency_frame.h
+++ b/quiche/quic/core/frames/quic_ack_frequency_frame.h
@@ -16,8 +16,8 @@
 namespace quic {
 
 // A frame that allows sender control of acknowledgement delays.
-struct QUIC_EXPORT_PRIVATE QuicAckFrequencyFrame {
-  friend QUIC_EXPORT_PRIVATE std::ostream& operator<<(
+struct QUICHE_EXPORT QuicAckFrequencyFrame {
+  friend QUICHE_EXPORT std::ostream& operator<<(
       std::ostream& os, const QuicAckFrequencyFrame& ack_frequency_frame);
 
   QuicAckFrequencyFrame() = default;
diff --git a/quiche/quic/core/frames/quic_blocked_frame.h b/quiche/quic/core/frames/quic_blocked_frame.h
index 982e1e8..ae8b8d0 100644
--- a/quiche/quic/core/frames/quic_blocked_frame.h
+++ b/quiche/quic/core/frames/quic_blocked_frame.h
@@ -17,14 +17,14 @@
 // endpoint believes itself to be flow-control blocked but otherwise ready to
 // send data. The BLOCKED frame is purely advisory and optional.
 // Based on SPDY's BLOCKED frame (undocumented as of 2014-01-28).
-struct QUIC_EXPORT_PRIVATE QuicBlockedFrame
+struct QUICHE_EXPORT QuicBlockedFrame
     : public QuicInlinedFrame<QuicBlockedFrame> {
   QuicBlockedFrame();
   QuicBlockedFrame(QuicControlFrameId control_frame_id, QuicStreamId stream_id,
                    QuicStreamOffset offset);
 
-  friend QUIC_EXPORT_PRIVATE std::ostream& operator<<(
-      std::ostream& os, const QuicBlockedFrame& b);
+  friend QUICHE_EXPORT std::ostream& operator<<(std::ostream& os,
+                                                const QuicBlockedFrame& b);
 
   QuicFrameType type;
 
diff --git a/quiche/quic/core/frames/quic_connection_close_frame.h b/quiche/quic/core/frames/quic_connection_close_frame.h
index cf780dd..105ebcd 100644
--- a/quiche/quic/core/frames/quic_connection_close_frame.h
+++ b/quiche/quic/core/frames/quic_connection_close_frame.h
@@ -15,7 +15,7 @@
 
 namespace quic {
 
-struct QUIC_EXPORT_PRIVATE QuicConnectionCloseFrame {
+struct QUICHE_EXPORT QuicConnectionCloseFrame {
   QuicConnectionCloseFrame() = default;
 
   // Builds a connection close frame based on the transport version
@@ -31,7 +31,7 @@
                            std::string error_phrase,
                            uint64_t transport_close_frame_type);
 
-  friend QUIC_EXPORT_PRIVATE std::ostream& operator<<(
+  friend QUICHE_EXPORT std::ostream& operator<<(
       std::ostream& os, const QuicConnectionCloseFrame& c);
 
   // Indicates whether the the frame is a Google QUIC CONNECTION_CLOSE frame,
diff --git a/quiche/quic/core/frames/quic_crypto_frame.h b/quiche/quic/core/frames/quic_crypto_frame.h
index 19fb579..243f05d 100644
--- a/quiche/quic/core/frames/quic_crypto_frame.h
+++ b/quiche/quic/core/frames/quic_crypto_frame.h
@@ -14,7 +14,7 @@
 
 namespace quic {
 
-struct QUIC_EXPORT_PRIVATE QuicCryptoFrame {
+struct QUICHE_EXPORT QuicCryptoFrame {
   QuicCryptoFrame() = default;
   QuicCryptoFrame(EncryptionLevel level, QuicStreamOffset offset,
                   QuicPacketLength data_length);
@@ -22,8 +22,8 @@
                   absl::string_view data);
   ~QuicCryptoFrame();
 
-  friend QUIC_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& os,
-                                                      const QuicCryptoFrame& s);
+  friend QUICHE_EXPORT std::ostream& operator<<(std::ostream& os,
+                                                const QuicCryptoFrame& s);
 
   // TODO(haoyuewang) Consider replace the EncryptionLevel here with
   // PacketNumberSpace.
diff --git a/quiche/quic/core/frames/quic_frame.cc b/quiche/quic/core/frames/quic_frame.cc
index 2ed0550..df4d9d3 100644
--- a/quiche/quic/core/frames/quic_frame.cc
+++ b/quiche/quic/core/frames/quic_frame.cc
@@ -514,7 +514,7 @@
   return os;
 }
 
-QUIC_EXPORT_PRIVATE std::string QuicFrameToString(const QuicFrame& frame) {
+QUICHE_EXPORT std::string QuicFrameToString(const QuicFrame& frame) {
   std::ostringstream os;
   os << frame;
   return os.str();
diff --git a/quiche/quic/core/frames/quic_frame.h b/quiche/quic/core/frames/quic_frame.h
index 3b7196e..289b08d 100644
--- a/quiche/quic/core/frames/quic_frame.h
+++ b/quiche/quic/core/frames/quic_frame.h
@@ -46,7 +46,7 @@
 
 namespace quic {
 
-struct QUIC_EXPORT_PRIVATE QuicFrame {
+struct QUICHE_EXPORT QuicFrame {
   QuicFrame();
   // Please keep the constructors in the same order as the union below.
   explicit QuicFrame(QuicPaddingFrame padding_frame);
@@ -74,8 +74,8 @@
   explicit QuicFrame(QuicCryptoFrame* crypto_frame);
   explicit QuicFrame(QuicAckFrequencyFrame* ack_frequency_frame);
 
-  QUIC_EXPORT_PRIVATE friend std::ostream& operator<<(std::ostream& os,
-                                                      const QuicFrame& frame);
+  QUICHE_EXPORT friend std::ostream& operator<<(std::ostream& os,
+                                                const QuicFrame& frame);
 
   union {
     // Inlined frames.
@@ -132,42 +132,40 @@
 using QuicFrames = absl::InlinedVector<QuicFrame, 1>;
 
 // Deletes all the sub-frames contained in |frames|.
-QUIC_EXPORT_PRIVATE void DeleteFrames(QuicFrames* frames);
+QUICHE_EXPORT void DeleteFrames(QuicFrames* frames);
 
 // Delete the sub-frame contained in |frame|.
-QUIC_EXPORT_PRIVATE void DeleteFrame(QuicFrame* frame);
+QUICHE_EXPORT void DeleteFrame(QuicFrame* frame);
 
 // Deletes all the QuicStreamFrames for the specified |stream_id|.
-QUIC_EXPORT_PRIVATE void RemoveFramesForStream(QuicFrames* frames,
-                                               QuicStreamId stream_id);
+QUICHE_EXPORT void RemoveFramesForStream(QuicFrames* frames,
+                                         QuicStreamId stream_id);
 
 // Returns true if |type| is a retransmittable control frame.
-QUIC_EXPORT_PRIVATE bool IsControlFrame(QuicFrameType type);
+QUICHE_EXPORT bool IsControlFrame(QuicFrameType type);
 
 // Returns control_frame_id of |frame|. Returns kInvalidControlFrameId if
 // |frame| does not have a valid control_frame_id.
-QUIC_EXPORT_PRIVATE QuicControlFrameId
-GetControlFrameId(const QuicFrame& frame);
+QUICHE_EXPORT QuicControlFrameId GetControlFrameId(const QuicFrame& frame);
 
 // Sets control_frame_id of |frame| to |control_frame_id|.
-QUIC_EXPORT_PRIVATE void SetControlFrameId(QuicControlFrameId control_frame_id,
-                                           QuicFrame* frame);
+QUICHE_EXPORT void SetControlFrameId(QuicControlFrameId control_frame_id,
+                                     QuicFrame* frame);
 
 // Returns a copy of |frame|.
-QUIC_EXPORT_PRIVATE QuicFrame
-CopyRetransmittableControlFrame(const QuicFrame& frame);
+QUICHE_EXPORT QuicFrame CopyRetransmittableControlFrame(const QuicFrame& frame);
 
 // Returns a copy of |frame|.
-QUIC_EXPORT_PRIVATE QuicFrame
-CopyQuicFrame(quiche::QuicheBufferAllocator* allocator, const QuicFrame& frame);
+QUICHE_EXPORT QuicFrame CopyQuicFrame(quiche::QuicheBufferAllocator* allocator,
+                                      const QuicFrame& frame);
 
 // Returns a copy of |frames|.
-QUIC_EXPORT_PRIVATE QuicFrames CopyQuicFrames(
+QUICHE_EXPORT QuicFrames CopyQuicFrames(
     quiche::QuicheBufferAllocator* allocator, const QuicFrames& frames);
 
 // Human-readable description suitable for logging.
-QUIC_EXPORT_PRIVATE std::string QuicFrameToString(const QuicFrame& frame);
-QUIC_EXPORT_PRIVATE std::string QuicFramesToString(const QuicFrames& frames);
+QUICHE_EXPORT std::string QuicFrameToString(const QuicFrame& frame);
+QUICHE_EXPORT std::string QuicFramesToString(const QuicFrames& frames);
 
 }  // namespace quic
 
diff --git a/quiche/quic/core/frames/quic_goaway_frame.h b/quiche/quic/core/frames/quic_goaway_frame.h
index c094889..f05d8bd 100644
--- a/quiche/quic/core/frames/quic_goaway_frame.h
+++ b/quiche/quic/core/frames/quic_goaway_frame.h
@@ -14,13 +14,13 @@
 
 namespace quic {
 
-struct QUIC_EXPORT_PRIVATE QuicGoAwayFrame {
+struct QUICHE_EXPORT QuicGoAwayFrame {
   QuicGoAwayFrame() = default;
   QuicGoAwayFrame(QuicControlFrameId control_frame_id, QuicErrorCode error_code,
                   QuicStreamId last_good_stream_id, const std::string& reason);
 
-  friend QUIC_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& os,
-                                                      const QuicGoAwayFrame& g);
+  friend QUICHE_EXPORT std::ostream& operator<<(std::ostream& os,
+                                                const QuicGoAwayFrame& g);
 
   // A unique identifier of this control frame. 0 when this frame is received,
   // and non-zero when sent.
diff --git a/quiche/quic/core/frames/quic_handshake_done_frame.h b/quiche/quic/core/frames/quic_handshake_done_frame.h
index aa5cbfc..59e98c8 100644
--- a/quiche/quic/core/frames/quic_handshake_done_frame.h
+++ b/quiche/quic/core/frames/quic_handshake_done_frame.h
@@ -14,12 +14,12 @@
 
 // A HANDSHAKE_DONE frame contains no payload, and it is retransmittable,
 // and ACK'd just like other normal frames.
-struct QUIC_EXPORT_PRIVATE QuicHandshakeDoneFrame
+struct QUICHE_EXPORT QuicHandshakeDoneFrame
     : public QuicInlinedFrame<QuicHandshakeDoneFrame> {
   QuicHandshakeDoneFrame();
   explicit QuicHandshakeDoneFrame(QuicControlFrameId control_frame_id);
 
-  friend QUIC_EXPORT_PRIVATE std::ostream& operator<<(
+  friend QUICHE_EXPORT std::ostream& operator<<(
       std::ostream& os, const QuicHandshakeDoneFrame& handshake_done_frame);
 
   QuicFrameType type;
diff --git a/quiche/quic/core/frames/quic_inlined_frame.h b/quiche/quic/core/frames/quic_inlined_frame.h
index 8cab158..e50e599 100644
--- a/quiche/quic/core/frames/quic_inlined_frame.h
+++ b/quiche/quic/core/frames/quic_inlined_frame.h
@@ -17,7 +17,7 @@
 // at offset 0, such that QuicFrame.type can get the correct frame type for both
 // inline and out-of-line frame types.
 template <typename DerivedT>
-struct QUIC_EXPORT_PRIVATE QuicInlinedFrame {
+struct QUICHE_EXPORT QuicInlinedFrame {
   QuicInlinedFrame(QuicFrameType type) {
     static_cast<DerivedT*>(this)->type = type;
     static_assert(std::is_standard_layout<DerivedT>::value,
diff --git a/quiche/quic/core/frames/quic_max_streams_frame.h b/quiche/quic/core/frames/quic_max_streams_frame.h
index eaee69a..de9f9bf 100644
--- a/quiche/quic/core/frames/quic_max_streams_frame.h
+++ b/quiche/quic/core/frames/quic_max_streams_frame.h
@@ -17,13 +17,13 @@
 // IETF format MAX_STREAMS frame.
 // This frame is used by the sender to inform the peer of the number of
 // streams that the peer may open and that the sender will accept.
-struct QUIC_EXPORT_PRIVATE QuicMaxStreamsFrame
+struct QUICHE_EXPORT QuicMaxStreamsFrame
     : public QuicInlinedFrame<QuicMaxStreamsFrame> {
   QuicMaxStreamsFrame();
   QuicMaxStreamsFrame(QuicControlFrameId control_frame_id,
                       QuicStreamCount stream_count, bool unidirectional);
 
-  friend QUIC_EXPORT_PRIVATE std::ostream& operator<<(
+  friend QUICHE_EXPORT std::ostream& operator<<(
       std::ostream& os, const QuicMaxStreamsFrame& frame);
 
   QuicFrameType type;
diff --git a/quiche/quic/core/frames/quic_message_frame.h b/quiche/quic/core/frames/quic_message_frame.h
index 91f7364..0bb86de 100644
--- a/quiche/quic/core/frames/quic_message_frame.h
+++ b/quiche/quic/core/frames/quic_message_frame.h
@@ -15,7 +15,7 @@
 
 using QuicMessageData = absl::InlinedVector<quiche::QuicheMemSlice, 1>;
 
-struct QUIC_EXPORT_PRIVATE QuicMessageFrame {
+struct QUICHE_EXPORT QuicMessageFrame {
   QuicMessageFrame() = default;
   explicit QuicMessageFrame(QuicMessageId message_id);
   QuicMessageFrame(QuicMessageId message_id,
@@ -31,8 +31,8 @@
 
   ~QuicMessageFrame();
 
-  friend QUIC_EXPORT_PRIVATE std::ostream& operator<<(
-      std::ostream& os, const QuicMessageFrame& s);
+  friend QUICHE_EXPORT std::ostream& operator<<(std::ostream& os,
+                                                const QuicMessageFrame& s);
 
   // message_id is only used on the sender side and does not get serialized on
   // wire.
diff --git a/quiche/quic/core/frames/quic_mtu_discovery_frame.h b/quiche/quic/core/frames/quic_mtu_discovery_frame.h
index 7189463..0f7f6c6 100644
--- a/quiche/quic/core/frames/quic_mtu_discovery_frame.h
+++ b/quiche/quic/core/frames/quic_mtu_discovery_frame.h
@@ -13,7 +13,7 @@
 
 // A path MTU discovery frame contains no payload and is serialized as a ping
 // frame.
-struct QUIC_EXPORT_PRIVATE QuicMtuDiscoveryFrame
+struct QUICHE_EXPORT QuicMtuDiscoveryFrame
     : public QuicInlinedFrame<QuicMtuDiscoveryFrame> {
   QuicMtuDiscoveryFrame() : QuicInlinedFrame(MTU_DISCOVERY_FRAME) {}
 
diff --git a/quiche/quic/core/frames/quic_new_connection_id_frame.h b/quiche/quic/core/frames/quic_new_connection_id_frame.h
index 8f5e9ba..d5efcc8 100644
--- a/quiche/quic/core/frames/quic_new_connection_id_frame.h
+++ b/quiche/quic/core/frames/quic_new_connection_id_frame.h
@@ -14,7 +14,7 @@
 
 namespace quic {
 
-struct QUIC_EXPORT_PRIVATE QuicNewConnectionIdFrame {
+struct QUICHE_EXPORT QuicNewConnectionIdFrame {
   QuicNewConnectionIdFrame() = default;
   QuicNewConnectionIdFrame(QuicControlFrameId control_frame_id,
                            QuicConnectionId connection_id,
@@ -22,7 +22,7 @@
                            StatelessResetToken stateless_reset_token,
                            uint64_t retire_prior_to);
 
-  friend QUIC_EXPORT_PRIVATE std::ostream& operator<<(
+  friend QUICHE_EXPORT std::ostream& operator<<(
       std::ostream& os, const QuicNewConnectionIdFrame& frame);
 
   // A unique identifier of this control frame. 0 when this frame is received,
diff --git a/quiche/quic/core/frames/quic_new_token_frame.h b/quiche/quic/core/frames/quic_new_token_frame.h
index 9761ed0..35b09d5 100644
--- a/quiche/quic/core/frames/quic_new_token_frame.h
+++ b/quiche/quic/core/frames/quic_new_token_frame.h
@@ -15,13 +15,13 @@
 
 namespace quic {
 
-struct QUIC_EXPORT_PRIVATE QuicNewTokenFrame {
+struct QUICHE_EXPORT QuicNewTokenFrame {
   QuicNewTokenFrame() = default;
   QuicNewTokenFrame(QuicControlFrameId control_frame_id,
                     absl::string_view token);
 
-  friend QUIC_EXPORT_PRIVATE std::ostream& operator<<(
-      std::ostream& os, const QuicNewTokenFrame& s);
+  friend QUICHE_EXPORT std::ostream& operator<<(std::ostream& os,
+                                                const QuicNewTokenFrame& s);
 
   // A unique identifier of this control frame. 0 when this frame is received,
   // and non-zero when sent.
diff --git a/quiche/quic/core/frames/quic_padding_frame.h b/quiche/quic/core/frames/quic_padding_frame.h
index a903c5d..71df7cd 100644
--- a/quiche/quic/core/frames/quic_padding_frame.h
+++ b/quiche/quic/core/frames/quic_padding_frame.h
@@ -15,13 +15,13 @@
 namespace quic {
 
 // A padding frame contains no payload.
-struct QUIC_EXPORT_PRIVATE QuicPaddingFrame
+struct QUICHE_EXPORT QuicPaddingFrame
     : public QuicInlinedFrame<QuicPaddingFrame> {
   QuicPaddingFrame() : QuicInlinedFrame(PADDING_FRAME) {}
   explicit QuicPaddingFrame(int num_padding_bytes)
       : QuicInlinedFrame(PADDING_FRAME), num_padding_bytes(num_padding_bytes) {}
 
-  friend QUIC_EXPORT_PRIVATE std::ostream& operator<<(
+  friend QUICHE_EXPORT std::ostream& operator<<(
       std::ostream& os, const QuicPaddingFrame& padding_frame);
 
   QuicFrameType type;
diff --git a/quiche/quic/core/frames/quic_path_challenge_frame.h b/quiche/quic/core/frames/quic_path_challenge_frame.h
index 34dd40b..e37f4ae 100644
--- a/quiche/quic/core/frames/quic_path_challenge_frame.h
+++ b/quiche/quic/core/frames/quic_path_challenge_frame.h
@@ -14,14 +14,14 @@
 
 namespace quic {
 
-struct QUIC_EXPORT_PRIVATE QuicPathChallengeFrame
+struct QUICHE_EXPORT QuicPathChallengeFrame
     : public QuicInlinedFrame<QuicPathChallengeFrame> {
   QuicPathChallengeFrame();
   QuicPathChallengeFrame(QuicControlFrameId control_frame_id,
                          const QuicPathFrameBuffer& data_buff);
   ~QuicPathChallengeFrame() = default;
 
-  friend QUIC_EXPORT_PRIVATE std::ostream& operator<<(
+  friend QUICHE_EXPORT std::ostream& operator<<(
       std::ostream& os, const QuicPathChallengeFrame& frame);
 
   QuicFrameType type;
diff --git a/quiche/quic/core/frames/quic_path_response_frame.h b/quiche/quic/core/frames/quic_path_response_frame.h
index 5c6a667..84e7a4e 100644
--- a/quiche/quic/core/frames/quic_path_response_frame.h
+++ b/quiche/quic/core/frames/quic_path_response_frame.h
@@ -14,14 +14,14 @@
 
 namespace quic {
 
-struct QUIC_EXPORT_PRIVATE QuicPathResponseFrame
+struct QUICHE_EXPORT QuicPathResponseFrame
     : public QuicInlinedFrame<QuicPathResponseFrame> {
   QuicPathResponseFrame();
   QuicPathResponseFrame(QuicControlFrameId control_frame_id,
                         const QuicPathFrameBuffer& data_buff);
   ~QuicPathResponseFrame() = default;
 
-  friend QUIC_EXPORT_PRIVATE std::ostream& operator<<(
+  friend QUICHE_EXPORT std::ostream& operator<<(
       std::ostream& os, const QuicPathResponseFrame& frame);
 
   QuicFrameType type;
diff --git a/quiche/quic/core/frames/quic_ping_frame.h b/quiche/quic/core/frames/quic_ping_frame.h
index 2603b65..fc5a2ee 100644
--- a/quiche/quic/core/frames/quic_ping_frame.h
+++ b/quiche/quic/core/frames/quic_ping_frame.h
@@ -14,12 +14,11 @@
 
 // A ping frame contains no payload, though it is retransmittable,
 // and ACK'd just like other normal frames.
-struct QUIC_EXPORT_PRIVATE QuicPingFrame
-    : public QuicInlinedFrame<QuicPingFrame> {
+struct QUICHE_EXPORT QuicPingFrame : public QuicInlinedFrame<QuicPingFrame> {
   QuicPingFrame();
   explicit QuicPingFrame(QuicControlFrameId control_frame_id);
 
-  friend QUIC_EXPORT_PRIVATE std::ostream& operator<<(
+  friend QUICHE_EXPORT std::ostream& operator<<(
       std::ostream& os, const QuicPingFrame& ping_frame);
 
   QuicFrameType type;
diff --git a/quiche/quic/core/frames/quic_retire_connection_id_frame.h b/quiche/quic/core/frames/quic_retire_connection_id_frame.h
index fcff696..4c7c468 100644
--- a/quiche/quic/core/frames/quic_retire_connection_id_frame.h
+++ b/quiche/quic/core/frames/quic_retire_connection_id_frame.h
@@ -13,12 +13,12 @@
 
 namespace quic {
 
-struct QUIC_EXPORT_PRIVATE QuicRetireConnectionIdFrame {
+struct QUICHE_EXPORT QuicRetireConnectionIdFrame {
   QuicRetireConnectionIdFrame() = default;
   QuicRetireConnectionIdFrame(QuicControlFrameId control_frame_id,
                               QuicConnectionIdSequenceNumber sequence_number);
 
-  friend QUIC_EXPORT_PRIVATE std::ostream& operator<<(
+  friend QUICHE_EXPORT std::ostream& operator<<(
       std::ostream& os, const QuicRetireConnectionIdFrame& frame);
 
   // A unique identifier of this control frame. 0 when this frame is received,
diff --git a/quiche/quic/core/frames/quic_rst_stream_frame.h b/quiche/quic/core/frames/quic_rst_stream_frame.h
index c346aff..30cc9d3 100644
--- a/quiche/quic/core/frames/quic_rst_stream_frame.h
+++ b/quiche/quic/core/frames/quic_rst_stream_frame.h
@@ -13,7 +13,7 @@
 
 namespace quic {
 
-struct QUIC_EXPORT_PRIVATE QuicRstStreamFrame {
+struct QUICHE_EXPORT QuicRstStreamFrame {
   QuicRstStreamFrame() = default;
   QuicRstStreamFrame(QuicControlFrameId control_frame_id,
                      QuicStreamId stream_id, QuicRstStreamErrorCode error_code,
@@ -22,8 +22,8 @@
                      QuicStreamId stream_id, QuicResetStreamError error,
                      QuicStreamOffset bytes_written);
 
-  friend QUIC_EXPORT_PRIVATE std::ostream& operator<<(
-      std::ostream& os, const QuicRstStreamFrame& r);
+  friend QUICHE_EXPORT std::ostream& operator<<(std::ostream& os,
+                                                const QuicRstStreamFrame& r);
 
   // A unique identifier of this control frame. 0 when this frame is received,
   // and non-zero when sent.
diff --git a/quiche/quic/core/frames/quic_stop_sending_frame.h b/quiche/quic/core/frames/quic_stop_sending_frame.h
index 8a7b8c6..960d234 100644
--- a/quiche/quic/core/frames/quic_stop_sending_frame.h
+++ b/quiche/quic/core/frames/quic_stop_sending_frame.h
@@ -14,7 +14,7 @@
 
 namespace quic {
 
-struct QUIC_EXPORT_PRIVATE QuicStopSendingFrame
+struct QUICHE_EXPORT QuicStopSendingFrame
     : public QuicInlinedFrame<QuicStopSendingFrame> {
   QuicStopSendingFrame();
   QuicStopSendingFrame(QuicControlFrameId control_frame_id,
@@ -23,7 +23,7 @@
   QuicStopSendingFrame(QuicControlFrameId control_frame_id,
                        QuicStreamId stream_id, QuicResetStreamError error);
 
-  friend QUIC_EXPORT_PRIVATE std::ostream& operator<<(
+  friend QUICHE_EXPORT std::ostream& operator<<(
       std::ostream& os, const QuicStopSendingFrame& frame);
 
   QuicFrameType type;
diff --git a/quiche/quic/core/frames/quic_stop_waiting_frame.h b/quiche/quic/core/frames/quic_stop_waiting_frame.h
index 526ea01..6f55c00 100644
--- a/quiche/quic/core/frames/quic_stop_waiting_frame.h
+++ b/quiche/quic/core/frames/quic_stop_waiting_frame.h
@@ -13,12 +13,12 @@
 
 namespace quic {
 
-struct QUIC_EXPORT_PRIVATE QuicStopWaitingFrame
+struct QUICHE_EXPORT QuicStopWaitingFrame
     : public QuicInlinedFrame<QuicStopWaitingFrame> {
   QuicStopWaitingFrame();
 
-  friend QUIC_EXPORT_PRIVATE std::ostream& operator<<(
-      std::ostream& os, const QuicStopWaitingFrame& s);
+  friend QUICHE_EXPORT std::ostream& operator<<(std::ostream& os,
+                                                const QuicStopWaitingFrame& s);
 
   QuicFrameType type;
 
diff --git a/quiche/quic/core/frames/quic_stream_frame.h b/quiche/quic/core/frames/quic_stream_frame.h
index a6b965a..915d967 100644
--- a/quiche/quic/core/frames/quic_stream_frame.h
+++ b/quiche/quic/core/frames/quic_stream_frame.h
@@ -15,7 +15,7 @@
 
 namespace quic {
 
-struct QUIC_EXPORT_PRIVATE QuicStreamFrame
+struct QUICHE_EXPORT QuicStreamFrame
     : public QuicInlinedFrame<QuicStreamFrame> {
   QuicStreamFrame();
   QuicStreamFrame(QuicStreamId stream_id, bool fin, QuicStreamOffset offset,
@@ -23,8 +23,8 @@
   QuicStreamFrame(QuicStreamId stream_id, bool fin, QuicStreamOffset offset,
                   QuicPacketLength data_length);
 
-  friend QUIC_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& os,
-                                                      const QuicStreamFrame& s);
+  friend QUICHE_EXPORT std::ostream& operator<<(std::ostream& os,
+                                                const QuicStreamFrame& s);
 
   bool operator==(const QuicStreamFrame& rhs) const;
 
diff --git a/quiche/quic/core/frames/quic_streams_blocked_frame.h b/quiche/quic/core/frames/quic_streams_blocked_frame.h
index cc60f31..e97dbb9 100644
--- a/quiche/quic/core/frames/quic_streams_blocked_frame.h
+++ b/quiche/quic/core/frames/quic_streams_blocked_frame.h
@@ -17,13 +17,13 @@
 // IETF format STREAMS_BLOCKED frame.
 // The sender uses this to inform the peer that the sender wished to
 // open a new stream, exceeding the limit on the number of streams.
-struct QUIC_EXPORT_PRIVATE QuicStreamsBlockedFrame
+struct QUICHE_EXPORT QuicStreamsBlockedFrame
     : public QuicInlinedFrame<QuicStreamsBlockedFrame> {
   QuicStreamsBlockedFrame();
   QuicStreamsBlockedFrame(QuicControlFrameId control_frame_id,
                           QuicStreamCount stream_count, bool unidirectional);
 
-  friend QUIC_EXPORT_PRIVATE std::ostream& operator<<(
+  friend QUICHE_EXPORT std::ostream& operator<<(
       std::ostream& os, const QuicStreamsBlockedFrame& frame);
 
   QuicFrameType type;
diff --git a/quiche/quic/core/frames/quic_window_update_frame.h b/quiche/quic/core/frames/quic_window_update_frame.h
index 1cbd7ff..893fd56 100644
--- a/quiche/quic/core/frames/quic_window_update_frame.h
+++ b/quiche/quic/core/frames/quic_window_update_frame.h
@@ -16,14 +16,14 @@
 // Flow control updates per-stream and at the connection level.
 // Based on SPDY's WINDOW_UPDATE frame, but uses an absolute max data bytes
 // rather than a window delta.
-struct QUIC_EXPORT_PRIVATE QuicWindowUpdateFrame
+struct QUICHE_EXPORT QuicWindowUpdateFrame
     : public QuicInlinedFrame<QuicWindowUpdateFrame> {
   QuicWindowUpdateFrame();
   QuicWindowUpdateFrame(QuicControlFrameId control_frame_id,
                         QuicStreamId stream_id, QuicByteCount max_data);
 
-  friend QUIC_EXPORT_PRIVATE std::ostream& operator<<(
-      std::ostream& os, const QuicWindowUpdateFrame& w);
+  friend QUICHE_EXPORT std::ostream& operator<<(std::ostream& os,
+                                                const QuicWindowUpdateFrame& w);
 
   QuicFrameType type;
 
diff --git a/quiche/quic/core/handshaker_delegate_interface.h b/quiche/quic/core/handshaker_delegate_interface.h
index 9c0adef..f10ba4a 100644
--- a/quiche/quic/core/handshaker_delegate_interface.h
+++ b/quiche/quic/core/handshaker_delegate_interface.h
@@ -15,7 +15,7 @@
 class QuicEncrypter;
 
 // Pure virtual class to get notified when particular handshake events occurred.
-class QUIC_EXPORT_PRIVATE HandshakerDelegateInterface {
+class QUICHE_EXPORT HandshakerDelegateInterface {
  public:
   virtual ~HandshakerDelegateInterface() {}
 
diff --git a/quiche/quic/core/http/http_constants.h b/quiche/quic/core/http/http_constants.h
index a8b5fd3..210fb4d 100644
--- a/quiche/quic/core/http/http_constants.h
+++ b/quiche/quic/core/http/http_constants.h
@@ -51,7 +51,7 @@
 };
 
 // Returns HTTP/3 SETTINGS identifier as a string.
-QUIC_EXPORT std::string H3SettingsToString(
+QUICHE_EXPORT std::string H3SettingsToString(
     Http3AndQpackSettingsIdentifiers identifier);
 
 // Default maximum dynamic table capacity, communicated via
@@ -70,7 +70,7 @@
 // SETTINGS_QPACK_BLOCKED_STREAMS.
 enum : uint64_t { kDefaultMaximumBlockedStreams = 100 };
 
-ABSL_CONST_INIT QUIC_EXPORT_PRIVATE extern const absl::string_view
+ABSL_CONST_INIT QUICHE_EXPORT extern const absl::string_view
     kUserAgentHeaderName;
 
 }  // namespace quic
diff --git a/quiche/quic/core/http/http_decoder.h b/quiche/quic/core/http/http_decoder.h
index d582841..d8cd6a8 100644
--- a/quiche/quic/core/http/http_decoder.h
+++ b/quiche/quic/core/http/http_decoder.h
@@ -25,9 +25,9 @@
 
 // A class for decoding the HTTP frames that are exchanged in an HTTP over QUIC
 // session.
-class QUIC_EXPORT_PRIVATE HttpDecoder {
+class QUICHE_EXPORT HttpDecoder {
  public:
-  class QUIC_EXPORT_PRIVATE Visitor {
+  class QUICHE_EXPORT Visitor {
    public:
     virtual ~Visitor() {}
 
diff --git a/quiche/quic/core/http/http_encoder.h b/quiche/quic/core/http/http_encoder.h
index 28a8a2c..d0d8408 100644
--- a/quiche/quic/core/http/http_encoder.h
+++ b/quiche/quic/core/http/http_encoder.h
@@ -19,7 +19,7 @@
 
 // A class for encoding the HTTP frames that are exchanged in an HTTP over QUIC
 // session.
-class QUIC_EXPORT_PRIVATE HttpEncoder {
+class QUICHE_EXPORT HttpEncoder {
  public:
   HttpEncoder() = delete;
 
diff --git a/quiche/quic/core/http/http_frames.h b/quiche/quic/core/http/http_frames.h
index 56caca8..874dc10 100644
--- a/quiche/quic/core/http/http_frames.h
+++ b/quiche/quic/core/http/http_frames.h
@@ -41,7 +41,7 @@
 //
 //   DATA frames (type=0x0) convey arbitrary, variable-length sequences of
 //   octets associated with an HTTP request or response payload.
-struct QUIC_EXPORT_PRIVATE DataFrame {
+struct QUICHE_EXPORT DataFrame {
   absl::string_view data;
 };
 
@@ -49,7 +49,7 @@
 //
 //   The HEADERS frame (type=0x1) is used to carry a header block,
 //   compressed using QPACK.
-struct QUIC_EXPORT_PRIVATE HeadersFrame {
+struct QUICHE_EXPORT HeadersFrame {
   absl::string_view headers;
 };
 
@@ -61,7 +61,7 @@
 
 using SettingsMap = absl::flat_hash_map<uint64_t, uint64_t>;
 
-struct QUIC_EXPORT_PRIVATE SettingsFrame {
+struct QUICHE_EXPORT SettingsFrame {
   SettingsMap values;
 
   bool operator==(const SettingsFrame& rhs) const {
@@ -79,8 +79,8 @@
     }
     return s;
   }
-  friend QUIC_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& os,
-                                                      const SettingsFrame& s) {
+  friend QUICHE_EXPORT std::ostream& operator<<(std::ostream& os,
+                                                const SettingsFrame& s) {
     os << s.ToString();
     return os;
   }
@@ -90,7 +90,7 @@
 //
 //   The GOAWAY frame (type=0x7) is used to initiate shutdown of a connection by
 //   either endpoint.
-struct QUIC_EXPORT_PRIVATE GoAwayFrame {
+struct QUICHE_EXPORT GoAwayFrame {
   // When sent from server to client, |id| is a stream ID that should refer to
   // a client-initiated bidirectional stream.
   // When sent from client to server, |id| is a push ID.
@@ -110,7 +110,7 @@
 // Length of a priority frame's first byte.
 const QuicByteCount kPriorityFirstByteLength = 1;
 
-struct QUIC_EXPORT_PRIVATE PriorityUpdateFrame {
+struct QUICHE_EXPORT PriorityUpdateFrame {
   uint64_t prioritized_element_id = 0;
   std::string priority_field_value;
 
@@ -124,8 +124,8 @@
         ", priority_field_value: ", priority_field_value, "}");
   }
 
-  friend QUIC_EXPORT_PRIVATE std::ostream& operator<<(
-      std::ostream& os, const PriorityUpdateFrame& s) {
+  friend QUICHE_EXPORT std::ostream& operator<<(std::ostream& os,
+                                                const PriorityUpdateFrame& s) {
     os << s.ToString();
     return os;
   }
@@ -134,7 +134,7 @@
 // ACCEPT_CH
 // https://tools.ietf.org/html/draft-davidben-http-client-hint-reliability-02
 //
-struct QUIC_EXPORT_PRIVATE AcceptChFrame {
+struct QUICHE_EXPORT AcceptChFrame {
   std::vector<spdy::AcceptChOriginValuePair> entries;
 
   bool operator==(const AcceptChFrame& rhs) const {
@@ -148,8 +148,8 @@
     return s.str();
   }
 
-  friend QUIC_EXPORT_PRIVATE std::ostream& operator<<(
-      std::ostream& os, const AcceptChFrame& frame) {
+  friend QUICHE_EXPORT std::ostream& operator<<(std::ostream& os,
+                                                const AcceptChFrame& frame) {
     os << "ACCEPT_CH frame with " << frame.entries.size() << " entries: ";
     for (auto& entry : frame.entries) {
       os << "origin: " << entry.origin << "; value: " << entry.value;
diff --git a/quiche/quic/core/http/quic_client_promised_info.h b/quiche/quic/core/http/quic_client_promised_info.h
index 7b4f460..84fbf4f 100644
--- a/quiche/quic/core/http/quic_client_promised_info.h
+++ b/quiche/quic/core/http/quic_client_promised_info.h
@@ -27,7 +27,7 @@
 // stream from the time a PUSH_PROMISE is received until rendezvous
 // between the promised response and the corresponding client request
 // is complete.
-class QUIC_EXPORT_PRIVATE QuicClientPromisedInfo
+class QUICHE_EXPORT QuicClientPromisedInfo
     : public QuicClientPushPromiseIndex::TryHandle {
  public:
   // Interface to QuicSpdyClientStream
@@ -84,8 +84,7 @@
  private:
   friend class test::QuicClientPromisedInfoPeer;
 
-  class QUIC_EXPORT_PRIVATE CleanupAlarm
-      : public QuicAlarm::DelegateWithoutContext {
+  class QUICHE_EXPORT CleanupAlarm : public QuicAlarm::DelegateWithoutContext {
    public:
     explicit CleanupAlarm(QuicClientPromisedInfo* promised)
         : promised_(promised) {}
diff --git a/quiche/quic/core/http/quic_client_push_promise_index.h b/quiche/quic/core/http/quic_client_push_promise_index.h
index c00a17e..2492c23 100644
--- a/quiche/quic/core/http/quic_client_push_promise_index.h
+++ b/quiche/quic/core/http/quic_client_push_promise_index.h
@@ -20,11 +20,11 @@
 // same browser users profile), since cross-origin pushes are allowed
 // (subject to authority constraints).
 
-class QUIC_EXPORT_PRIVATE QuicClientPushPromiseIndex {
+class QUICHE_EXPORT QuicClientPushPromiseIndex {
  public:
   // Delegate is used to complete the rendezvous that began with
   // |Try()|.
-  class QUIC_EXPORT_PRIVATE Delegate {
+  class QUICHE_EXPORT Delegate {
    public:
     virtual ~Delegate() {}
 
@@ -48,7 +48,7 @@
     virtual void OnRendezvousResult(QuicSpdyStream* stream) = 0;
   };
 
-  class QUIC_EXPORT_PRIVATE TryHandle {
+  class QUICHE_EXPORT TryHandle {
    public:
     // Cancel the request.
     virtual void Cancel() = 0;
diff --git a/quiche/quic/core/http/quic_header_list.h b/quiche/quic/core/http/quic_header_list.h
index ac25f89..335cf4b 100644
--- a/quiche/quic/core/http/quic_header_list.h
+++ b/quiche/quic/core/http/quic_header_list.h
@@ -19,8 +19,7 @@
 namespace quic {
 
 // A simple class that accumulates header pairs
-class QUIC_EXPORT_PRIVATE QuicHeaderList
-    : public spdy::SpdyHeadersHandlerInterface {
+class QUICHE_EXPORT QuicHeaderList : public spdy::SpdyHeadersHandlerInterface {
  public:
   using ListType =
       quiche::QuicheCircularDeque<std::pair<std::string, std::string>>;
diff --git a/quiche/quic/core/http/quic_headers_stream.h b/quiche/quic/core/http/quic_headers_stream.h
index ba3a27b..ce8010e 100644
--- a/quiche/quic/core/http/quic_headers_stream.h
+++ b/quiche/quic/core/http/quic_headers_stream.h
@@ -25,7 +25,7 @@
 // Headers in QUIC are sent as HTTP/2 HEADERS or PUSH_PROMISE frames over a
 // reserved stream with the id 3.  Each endpoint (client and server) will
 // allocate an instance of QuicHeadersStream to send and receive headers.
-class QUIC_EXPORT_PRIVATE QuicHeadersStream : public QuicStream {
+class QUICHE_EXPORT QuicHeadersStream : public QuicStream {
  public:
   explicit QuicHeadersStream(QuicSpdySession* session);
   QuicHeadersStream(const QuicHeadersStream&) = delete;
@@ -54,7 +54,7 @@
 
   // CompressedHeaderInfo includes simple information of a header, including
   // offset in headers stream, unacked length and ack listener of this header.
-  struct QUIC_EXPORT_PRIVATE CompressedHeaderInfo {
+  struct QUICHE_EXPORT CompressedHeaderInfo {
     CompressedHeaderInfo(
         QuicStreamOffset headers_stream_offset, QuicStreamOffset full_length,
         quiche::QuicheReferenceCountedPointer<QuicAckListenerInterface>
diff --git a/quiche/quic/core/http/quic_receive_control_stream.h b/quiche/quic/core/http/quic_receive_control_stream.h
index 71d0bf2..e3ad39d 100644
--- a/quiche/quic/core/http/quic_receive_control_stream.h
+++ b/quiche/quic/core/http/quic_receive_control_stream.h
@@ -16,9 +16,8 @@
 
 // 3.2.1 Control Stream.
 // The receive control stream is peer initiated and is read only.
-class QUIC_EXPORT_PRIVATE QuicReceiveControlStream
-    : public QuicStream,
-      public HttpDecoder::Visitor {
+class QUICHE_EXPORT QuicReceiveControlStream : public QuicStream,
+                                               public HttpDecoder::Visitor {
  public:
   explicit QuicReceiveControlStream(PendingStream* pending,
                                     QuicSpdySession* spdy_session);
diff --git a/quiche/quic/core/http/quic_send_control_stream.h b/quiche/quic/core/http/quic_send_control_stream.h
index fa8b96a..ea6b0f8 100644
--- a/quiche/quic/core/http/quic_send_control_stream.h
+++ b/quiche/quic/core/http/quic_send_control_stream.h
@@ -19,7 +19,7 @@
 
 // 6.2.1 Control Stream.
 // The send control stream is self initiated and is write only.
-class QUIC_EXPORT_PRIVATE QuicSendControlStream : public QuicStream {
+class QUICHE_EXPORT QuicSendControlStream : public QuicStream {
  public:
   // |session| can't be nullptr, and the ownership is not passed. The stream can
   // only be accessed through the session.
diff --git a/quiche/quic/core/http/quic_server_initiated_spdy_stream.h b/quiche/quic/core/http/quic_server_initiated_spdy_stream.h
index a47a712..ce0ba63 100644
--- a/quiche/quic/core/http/quic_server_initiated_spdy_stream.h
+++ b/quiche/quic/core/http/quic_server_initiated_spdy_stream.h
@@ -13,8 +13,7 @@
 // QuicServerInitiatedSpdyStream is a subclass of QuicSpdyStream meant to handle
 // WebTransport traffic on server-initiated bidirectional streams.  Receiving or
 // sending any other traffic on this stream will result in a CONNECTION_CLOSE.
-class QUIC_EXPORT_PRIVATE QuicServerInitiatedSpdyStream
-    : public QuicSpdyStream {
+class QUICHE_EXPORT QuicServerInitiatedSpdyStream : public QuicSpdyStream {
  public:
   using QuicSpdyStream::QuicSpdyStream;
 
diff --git a/quiche/quic/core/http/quic_server_session_base.h b/quiche/quic/core/http/quic_server_session_base.h
index fcfda0e..a06cb14 100644
--- a/quiche/quic/core/http/quic_server_session_base.h
+++ b/quiche/quic/core/http/quic_server_session_base.h
@@ -30,7 +30,7 @@
 class QuicSimpleServerSessionPeer;
 }  // namespace test
 
-class QUIC_EXPORT_PRIVATE QuicServerSessionBase : public QuicSpdySession {
+class QUICHE_EXPORT QuicServerSessionBase : public QuicSpdySession {
  public:
   // Does not take ownership of |connection|. |crypto_config| must outlive the
   // session. |helper| must outlive any created crypto streams.
diff --git a/quiche/quic/core/http/quic_spdy_client_session.h b/quiche/quic/core/http/quic_spdy_client_session.h
index 27cfb76..34d255a 100644
--- a/quiche/quic/core/http/quic_spdy_client_session.h
+++ b/quiche/quic/core/http/quic_spdy_client_session.h
@@ -20,8 +20,7 @@
 class QuicConnection;
 class QuicServerId;
 
-class QUIC_EXPORT_PRIVATE QuicSpdyClientSession
-    : public QuicSpdyClientSessionBase {
+class QUICHE_EXPORT QuicSpdyClientSession : public QuicSpdyClientSessionBase {
  public:
   // Takes ownership of |connection|. Caller retains ownership of
   // |promised_by_url|.
diff --git a/quiche/quic/core/http/quic_spdy_client_session_base.h b/quiche/quic/core/http/quic_spdy_client_session_base.h
index 39746b6..eae401e 100644
--- a/quiche/quic/core/http/quic_spdy_client_session_base.h
+++ b/quiche/quic/core/http/quic_spdy_client_session_base.h
@@ -33,7 +33,7 @@
 const int64_t kPushPromiseTimeoutSecs = 60;
 
 // Base class for all client-specific QuicSession subclasses.
-class QUIC_EXPORT_PRIVATE QuicSpdyClientSessionBase
+class QUICHE_EXPORT QuicSpdyClientSessionBase
     : public QuicSpdySession,
       public QuicCryptoClientStream::ProofHandler {
  public:
diff --git a/quiche/quic/core/http/quic_spdy_client_stream.h b/quiche/quic/core/http/quic_spdy_client_stream.h
index 3f35d7d..a5b5886 100644
--- a/quiche/quic/core/http/quic_spdy_client_stream.h
+++ b/quiche/quic/core/http/quic_spdy_client_stream.h
@@ -21,7 +21,7 @@
 
 // All this does right now is send an SPDY request, and aggregate the
 // SPDY response.
-class QUIC_EXPORT_PRIVATE QuicSpdyClientStream : public QuicSpdyStream {
+class QUICHE_EXPORT QuicSpdyClientStream : public QuicSpdyStream {
  public:
   QuicSpdyClientStream(QuicStreamId id, QuicSpdyClientSession* session,
                        StreamType type);
diff --git a/quiche/quic/core/http/quic_spdy_server_stream_base.h b/quiche/quic/core/http/quic_spdy_server_stream_base.h
index d547841..984f909 100644
--- a/quiche/quic/core/http/quic_spdy_server_stream_base.h
+++ b/quiche/quic/core/http/quic_spdy_server_stream_base.h
@@ -9,7 +9,7 @@
 
 namespace quic {
 
-class QUIC_NO_EXPORT QuicSpdyServerStreamBase : public QuicSpdyStream {
+class QUICHE_EXPORT QuicSpdyServerStreamBase : public QuicSpdyStream {
  public:
   QuicSpdyServerStreamBase(QuicStreamId id, QuicSpdySession* session,
                            StreamType type);
diff --git a/quiche/quic/core/http/quic_spdy_session.h b/quiche/quic/core/http/quic_spdy_session.h
index ddd0e5f..9863e46 100644
--- a/quiche/quic/core/http/quic_spdy_session.h
+++ b/quiche/quic/core/http/quic_spdy_session.h
@@ -43,9 +43,9 @@
 
 class WebTransportHttp3UnidirectionalStream;
 
-QUIC_EXPORT_PRIVATE extern const size_t kMaxUnassociatedWebTransportStreams;
+QUICHE_EXPORT extern const size_t kMaxUnassociatedWebTransportStreams;
 
-class QUIC_EXPORT_PRIVATE Http3DebugVisitor {
+class QUICHE_EXPORT Http3DebugVisitor {
  public:
   Http3DebugVisitor();
   Http3DebugVisitor(const Http3DebugVisitor&) = delete;
@@ -145,13 +145,13 @@
         WebTransportHttp3VersionSet({WebTransportHttp3Version::kDraft02,
                                      WebTransportHttp3Version::kDraft07});
 
-QUIC_EXPORT_PRIVATE std::string HttpDatagramSupportToString(
+QUICHE_EXPORT std::string HttpDatagramSupportToString(
     HttpDatagramSupport http_datagram_support);
-QUIC_EXPORT_PRIVATE std::ostream& operator<<(
+QUICHE_EXPORT std::ostream& operator<<(
     std::ostream& os, const HttpDatagramSupport& http_datagram_support);
 
 // A QUIC session for HTTP.
-class QUIC_EXPORT_PRIVATE QuicSpdySession
+class QUICHE_EXPORT QuicSpdySession
     : public QuicSession,
       public QpackEncoder::DecoderStreamErrorDelegate,
       public QpackDecoder::EncoderStreamErrorDelegate {
@@ -568,8 +568,7 @@
   class SpdyFramerVisitor;
 
   // Proxies OnDatagramProcessed() calls to the session.
-  class QUIC_EXPORT_PRIVATE DatagramObserver
-      : public QuicDatagramQueue::Observer {
+  class QUICHE_EXPORT DatagramObserver : public QuicDatagramQueue::Observer {
    public:
     explicit DatagramObserver(QuicSpdySession* session) : session_(session) {}
     void OnDatagramProcessed(absl::optional<MessageStatus> status) override;
@@ -578,7 +577,7 @@
     QuicSpdySession* session_;  // not owned
   };
 
-  struct QUIC_EXPORT_PRIVATE BufferedWebTransportStream {
+  struct QUICHE_EXPORT BufferedWebTransportStream {
     WebTransportSessionId session_id;
     QuicStreamId stream_id;
   };
diff --git a/quiche/quic/core/http/quic_spdy_stream.h b/quiche/quic/core/http/quic_spdy_stream.h
index a43e9fb..9c0086c 100644
--- a/quiche/quic/core/http/quic_spdy_stream.h
+++ b/quiche/quic/core/http/quic_spdy_stream.h
@@ -52,13 +52,13 @@
 class WebTransportHttp3;
 
 // A QUIC stream that can send and receive HTTP2 (SPDY) headers.
-class QUIC_EXPORT_PRIVATE QuicSpdyStream
+class QUICHE_EXPORT QuicSpdyStream
     : public QuicStream,
       public quiche::CapsuleParser::Visitor,
       public QpackDecodedHeadersAccumulator::Visitor {
  public:
   // Visitor receives callbacks from the stream.
-  class QUIC_EXPORT_PRIVATE Visitor {
+  class QUICHE_EXPORT Visitor {
    public:
     Visitor() {}
     Visitor(const Visitor&) = delete;
@@ -266,7 +266,7 @@
   // to allow mocking in tests.
   virtual MessageStatus SendHttp3Datagram(absl::string_view payload);
 
-  class QUIC_EXPORT_PRIVATE Http3DatagramVisitor {
+  class QUICHE_EXPORT Http3DatagramVisitor {
    public:
     virtual ~Http3DatagramVisitor() {}
 
@@ -293,7 +293,7 @@
   // Mainly meant to be used by the visitors' move operators.
   void ReplaceHttp3DatagramVisitor(Http3DatagramVisitor* visitor);
 
-  class QUIC_EXPORT_PRIVATE ConnectIpVisitor {
+  class QUICHE_EXPORT ConnectIpVisitor {
    public:
     virtual ~ConnectIpVisitor() {}
 
@@ -389,7 +389,7 @@
   friend class QuicStreamUtils;
   class HttpDecoderVisitor;
 
-  struct QUIC_EXPORT_PRIVATE WebTransportDataStream {
+  struct QUICHE_EXPORT WebTransportDataStream {
     WebTransportDataStream(QuicSpdyStream* stream,
                            WebTransportSessionId session_id);
 
diff --git a/quiche/quic/core/http/quic_spdy_stream_body_manager.h b/quiche/quic/core/http/quic_spdy_stream_body_manager.h
index 04c130b..f7a1ab8 100644
--- a/quiche/quic/core/http/quic_spdy_stream_body_manager.h
+++ b/quiche/quic/core/http/quic_spdy_stream_body_manager.h
@@ -26,7 +26,7 @@
 // it calculates the total number of bytes (including non-body bytes) the caller
 // needs to mark consumed (with QuicStreamSequencer) when non-body bytes are
 // received or when body is consumed.
-class QUIC_EXPORT_PRIVATE QuicSpdyStreamBodyManager {
+class QUICHE_EXPORT QuicSpdyStreamBodyManager {
  public:
   QuicSpdyStreamBodyManager();
   ~QuicSpdyStreamBodyManager() = default;
@@ -88,7 +88,7 @@
   // A Fragment instance represents a body fragment with a count of bytes
   // received afterwards but before the next body fragment that can be marked
   // consumed as soon as all of the body fragment is read.
-  struct QUIC_EXPORT_PRIVATE Fragment {
+  struct QUICHE_EXPORT Fragment {
     // |body| must not be empty.
     absl::string_view body;
     // Might be zero.
diff --git a/quiche/quic/core/http/spdy_server_push_utils.h b/quiche/quic/core/http/spdy_server_push_utils.h
index a924158..82166cd 100644
--- a/quiche/quic/core/http/spdy_server_push_utils.h
+++ b/quiche/quic/core/http/spdy_server_push_utils.h
@@ -11,7 +11,7 @@
 
 namespace quic {
 
-class QUIC_EXPORT_PRIVATE SpdyServerPushUtils {
+class QUICHE_EXPORT SpdyServerPushUtils {
  public:
   SpdyServerPushUtils() = delete;
 
diff --git a/quiche/quic/core/http/spdy_utils.h b/quiche/quic/core/http/spdy_utils.h
index 05a237d..ff93b69 100644
--- a/quiche/quic/core/http/spdy_utils.h
+++ b/quiche/quic/core/http/spdy_utils.h
@@ -19,7 +19,7 @@
 
 namespace quic {
 
-class QUIC_EXPORT_PRIVATE SpdyUtils {
+class QUICHE_EXPORT SpdyUtils {
  public:
   SpdyUtils() = delete;
 
diff --git a/quiche/quic/core/http/web_transport_http3.cc b/quiche/quic/core/http/web_transport_http3.cc
index 19e07f7..31a1a35 100644
--- a/quiche/quic/core/http/web_transport_http3.cc
+++ b/quiche/quic/core/http/web_transport_http3.cc
@@ -30,7 +30,7 @@
 namespace quic {
 
 namespace {
-class QUIC_NO_EXPORT NoopWebTransportVisitor : public WebTransportVisitor {
+class NoopWebTransportVisitor : public WebTransportVisitor {
   void OnSessionReady() override {}
   void OnSessionClosed(WebTransportSessionError /*error_code*/,
                        const std::string& /*error_message*/) override {}
diff --git a/quiche/quic/core/http/web_transport_http3.h b/quiche/quic/core/http/web_transport_http3.h
index e74335e..bb5444a 100644
--- a/quiche/quic/core/http/web_transport_http3.h
+++ b/quiche/quic/core/http/web_transport_http3.h
@@ -40,7 +40,7 @@
 //
 // WebTransport over HTTP/3 specification:
 // <https://datatracker.ietf.org/doc/html/draft-ietf-webtrans-http3>
-class QUIC_EXPORT_PRIVATE WebTransportHttp3
+class QUICHE_EXPORT WebTransportHttp3
     : public WebTransportSession,
       public QuicSpdyStream::Http3DatagramVisitor {
  public:
@@ -139,8 +139,7 @@
   std::string error_message_ = "";
 };
 
-class QUIC_EXPORT_PRIVATE WebTransportHttp3UnidirectionalStream
-    : public QuicStream {
+class QUICHE_EXPORT WebTransportHttp3UnidirectionalStream : public QuicStream {
  public:
   // Incoming stream.
   WebTransportHttp3UnidirectionalStream(PendingStream* pending,
@@ -177,16 +176,16 @@
 
 // Remaps HTTP/3 error code into a WebTransport error code.  Returns nullopt if
 // the provided code is outside of valid range.
-QUIC_EXPORT_PRIVATE absl::optional<WebTransportStreamError>
-Http3ErrorToWebTransport(uint64_t http3_error_code);
+QUICHE_EXPORT absl::optional<WebTransportStreamError> Http3ErrorToWebTransport(
+    uint64_t http3_error_code);
 
 // Same as above, but returns default error value (zero) when none could be
 // mapped.
-QUIC_EXPORT_PRIVATE WebTransportStreamError
+QUICHE_EXPORT WebTransportStreamError
 Http3ErrorToWebTransportOrDefault(uint64_t http3_error_code);
 
 // Remaps WebTransport error code into an HTTP/3 error code.
-QUIC_EXPORT_PRIVATE uint64_t
+QUICHE_EXPORT uint64_t
 WebTransportErrorToHttp3(WebTransportStreamError webtransport_error_code);
 
 }  // namespace quic
diff --git a/quiche/quic/core/http/web_transport_stream_adapter.h b/quiche/quic/core/http/web_transport_stream_adapter.h
index c664347..24c250a 100644
--- a/quiche/quic/core/http/web_transport_stream_adapter.h
+++ b/quiche/quic/core/http/web_transport_stream_adapter.h
@@ -16,8 +16,7 @@
 
 // Converts WebTransportStream API calls into QuicStream API calls.  The users
 // of this class can either subclass it, or wrap around it.
-class QUIC_EXPORT_PRIVATE WebTransportStreamAdapter
-    : public WebTransportStream {
+class QUICHE_EXPORT WebTransportStreamAdapter : public WebTransportStream {
  public:
   WebTransportStreamAdapter(QuicSession* session, QuicStream* stream,
                             QuicStreamSequencer* sequencer);
diff --git a/quiche/quic/core/io/event_loop_connecting_client_socket.h b/quiche/quic/core/io/event_loop_connecting_client_socket.h
index a7fb32c..16d4a57 100644
--- a/quiche/quic/core/io/event_loop_connecting_client_socket.h
+++ b/quiche/quic/core/io/event_loop_connecting_client_socket.h
@@ -23,9 +23,8 @@
 
 // A connection-based client socket implemented using an underlying
 // QuicEventLoop.
-class QUICHE_EXPORT EventLoopConnectingClientSocket
-    : public ConnectingClientSocket,
-      public QuicSocketEventListener {
+class EventLoopConnectingClientSocket : public ConnectingClientSocket,
+                                        public QuicSocketEventListener {
  public:
   // Will use platform default buffer size if `receive_buffer_size` or
   // `send_buffer_size` is zero. `async_visitor` may be null if no async
diff --git a/quiche/quic/core/io/event_loop_socket_factory.h b/quiche/quic/core/io/event_loop_socket_factory.h
index 8edf020..a8326c2 100644
--- a/quiche/quic/core/io/event_loop_socket_factory.h
+++ b/quiche/quic/core/io/event_loop_socket_factory.h
@@ -19,7 +19,7 @@
 
 // A socket factory that creates sockets implemented using an underlying
 // QuicEventLoop.
-class QUICHE_EXPORT EventLoopSocketFactory : public SocketFactory {
+class EventLoopSocketFactory : public SocketFactory {
  public:
   // `event_loop` and `buffer_allocator` must outlive the created factory.
   EventLoopSocketFactory(QuicEventLoop* event_loop,
diff --git a/quiche/quic/core/io/quic_default_event_loop.h b/quiche/quic/core/io/quic_default_event_loop.h
index 6073a6e..4a2c080 100644
--- a/quiche/quic/core/io/quic_default_event_loop.h
+++ b/quiche/quic/core/io/quic_default_event_loop.h
@@ -14,12 +14,12 @@
 // Returns the default implementation of QuicheEventLoop.  The embedders can
 // override this using the platform API.  The factory pointer returned is an
 // unowned static variable.
-QUICHE_NO_EXPORT QuicEventLoopFactory* GetDefaultEventLoop();
+QuicEventLoopFactory* GetDefaultEventLoop();
 
 // Returns the factory objects for all event loops.  This is particularly useful
 // for the unit tests.  The factory pointers returned are unowned static
 // variables.
-QUICHE_NO_EXPORT std::vector<QuicEventLoopFactory*> GetAllSupportedEventLoops();
+std::vector<QuicEventLoopFactory*> GetAllSupportedEventLoops();
 
 }  // namespace quic
 
diff --git a/quiche/quic/core/io/quic_event_loop.h b/quiche/quic/core/io/quic_event_loop.h
index 6a446ea..53707b4 100644
--- a/quiche/quic/core/io/quic_event_loop.h
+++ b/quiche/quic/core/io/quic_event_loop.h
@@ -24,7 +24,7 @@
 class QuicEventLoop;
 
 // A listener associated with a file descriptor.
-class QUICHE_NO_EXPORT QuicSocketEventListener {
+class QuicSocketEventListener {
  public:
   virtual ~QuicSocketEventListener() = default;
 
@@ -38,7 +38,7 @@
 // Note on error handling: while most of the methods below return a boolean to
 // indicate whether the operation has succeeded or not, some will QUIC_BUG
 // instead.
-class QUICHE_NO_EXPORT QuicEventLoop {
+class QuicEventLoop {
  public:
   virtual ~QuicEventLoop() = default;
 
@@ -83,7 +83,7 @@
 
 // A factory object for the event loop. Every implementation is expected to have
 // a static singleton instance.
-class QUICHE_NO_EXPORT QuicEventLoopFactory {
+class QuicEventLoopFactory {
  public:
   virtual ~QuicEventLoopFactory() {}
 
diff --git a/quiche/quic/core/io/quic_poll_event_loop.h b/quiche/quic/core/io/quic_poll_event_loop.h
index 7c7f4bf..db29598 100644
--- a/quiche/quic/core/io/quic_poll_event_loop.h
+++ b/quiche/quic/core/io/quic_poll_event_loop.h
@@ -39,7 +39,7 @@
 //      processing, when all of the state for the event loop is consistent.
 //   2. The callbacks are stored as weak pointers, since other callbacks can
 //      cause them to be unregistered.
-class QUICHE_NO_EXPORT QuicPollEventLoop : public QuicEventLoop {
+class QuicPollEventLoop : public QuicEventLoop {
  public:
   QuicPollEventLoop(QuicClock* clock);
 
@@ -148,7 +148,7 @@
   bool has_artificial_events_pending_ = false;
 };
 
-class QUICHE_NO_EXPORT QuicPollEventLoopFactory : public QuicEventLoopFactory {
+class QuicPollEventLoopFactory : public QuicEventLoopFactory {
  public:
   static QuicPollEventLoopFactory* Get() {
     static QuicPollEventLoopFactory* factory = new QuicPollEventLoopFactory();
diff --git a/quiche/quic/core/io/socket.h b/quiche/quic/core/io/socket.h
index 8fc7732..edff4ee 100644
--- a/quiche/quic/core/io/socket.h
+++ b/quiche/quic/core/io/socket.h
@@ -55,7 +55,7 @@
   return "unknown";
 }
 
-struct QUICHE_EXPORT AcceptResult {
+struct AcceptResult {
   // Socket for interacting with the accepted connection.
   SocketFd fd;
 
diff --git a/quiche/quic/core/legacy_quic_stream_id_manager.h b/quiche/quic/core/legacy_quic_stream_id_manager.h
index 3c67028..2d76768 100644
--- a/quiche/quic/core/legacy_quic_stream_id_manager.h
+++ b/quiche/quic/core/legacy_quic_stream_id_manager.h
@@ -20,7 +20,7 @@
 // Manages Google QUIC stream IDs. This manager is responsible for two
 // questions: 1) can next outgoing stream ID be allocated (if yes, what is the
 // next outgoing stream ID) and 2) can a new incoming stream be opened.
-class QUIC_EXPORT_PRIVATE LegacyQuicStreamIdManager {
+class QUICHE_EXPORT LegacyQuicStreamIdManager {
  public:
   LegacyQuicStreamIdManager(Perspective perspective,
                             QuicTransportVersion transport_version,
diff --git a/quiche/quic/core/packet_number_indexed_queue.h b/quiche/quic/core/packet_number_indexed_queue.h
index ef48bd1..446dea9 100644
--- a/quiche/quic/core/packet_number_indexed_queue.h
+++ b/quiche/quic/core/packet_number_indexed_queue.h
@@ -37,7 +37,7 @@
 // TODO(wub): Update the comments when deprecating
 // --quic_bw_sampler_remove_packets_once_per_congestion_event.
 template <typename T>
-class QUIC_NO_EXPORT PacketNumberIndexedQueue {
+class QUICHE_EXPORT PacketNumberIndexedQueue {
  public:
   PacketNumberIndexedQueue() : number_of_present_entries_(0) {}
 
@@ -93,7 +93,7 @@
 
  private:
   // Wrapper around T used to mark whether the entry is actually in the map.
-  struct QUIC_NO_EXPORT EntryWrapper : T {
+  struct QUICHE_EXPORT EntryWrapper : T {
     // NOTE(wub): When quic_bw_sampler_remove_packets_once_per_congestion_event
     // is enabled, |present| is false if and only if this is a placeholder entry
     // for holes in the parent's |entries|.
diff --git a/quiche/quic/core/qpack/qpack_blocking_manager.h b/quiche/quic/core/qpack/qpack_blocking_manager.h
index 46e75b8..0189ad2 100644
--- a/quiche/quic/core/qpack/qpack_blocking_manager.h
+++ b/quiche/quic/core/qpack/qpack_blocking_manager.h
@@ -24,7 +24,7 @@
 // Class to keep track of blocked streams and blocking dynamic table entries:
 // https://quicwg.org/base-drafts/draft-ietf-quic-qpack.html#blocked-decoding
 // https://quicwg.org/base-drafts/draft-ietf-quic-qpack.html#blocked-insertion
-class QUIC_EXPORT_PRIVATE QpackBlockingManager {
+class QUICHE_EXPORT QpackBlockingManager {
  public:
   using IndexSet = std::multiset<uint64_t>;
 
diff --git a/quiche/quic/core/qpack/qpack_decoded_headers_accumulator.h b/quiche/quic/core/qpack/qpack_decoded_headers_accumulator.h
index 0e6e31b..5fd00fa 100644
--- a/quiche/quic/core/qpack/qpack_decoded_headers_accumulator.h
+++ b/quiche/quic/core/qpack/qpack_decoded_headers_accumulator.h
@@ -23,7 +23,7 @@
 // decoded headers in a QuicHeaderList, and keeps track of uncompressed and
 // compressed size so that it can be passed to
 // QuicHeaderList::OnHeaderBlockEnd().
-class QUIC_EXPORT_PRIVATE QpackDecodedHeadersAccumulator
+class QUICHE_EXPORT QpackDecodedHeadersAccumulator
     : public QpackProgressiveDecoder::HeadersHandlerInterface {
  public:
   // Visitor interface to signal success or error.
@@ -31,7 +31,7 @@
   // Methods may be called synchronously from Decode() and EndHeaderBlock(),
   // or asynchronously.
   // Method implementations are allowed to destroy |this|.
-  class QUIC_EXPORT_PRIVATE Visitor {
+  class QUICHE_EXPORT Visitor {
    public:
     virtual ~Visitor() = default;
 
diff --git a/quiche/quic/core/qpack/qpack_decoder.h b/quiche/quic/core/qpack/qpack_decoder.h
index 1d12068..3dda666 100644
--- a/quiche/quic/core/qpack/qpack_decoder.h
+++ b/quiche/quic/core/qpack/qpack_decoder.h
@@ -27,7 +27,7 @@
 // are stream errors.
 // The only input of QpackDecoder is the encoder stream.  Any error QpackDecoder
 // signals is an encoder stream error, which is fatal to the connection.
-class QUIC_EXPORT_PRIVATE QpackDecoder
+class QUICHE_EXPORT QpackDecoder
     : public QpackEncoderStreamReceiver::Delegate,
       public QpackProgressiveDecoder::BlockedStreamLimitEnforcer,
       public QpackProgressiveDecoder::DecodingCompletedVisitor {
@@ -35,7 +35,7 @@
   // Interface for receiving notification that an error has occurred on the
   // encoder stream.  This MUST be treated as a connection error of type
   // HTTP_QPACK_ENCODER_STREAM_ERROR.
-  class QUIC_EXPORT_PRIVATE EncoderStreamErrorDelegate {
+  class QUICHE_EXPORT EncoderStreamErrorDelegate {
    public:
     virtual ~EncoderStreamErrorDelegate() {}
 
@@ -126,7 +126,7 @@
 };
 
 // QpackDecoder::EncoderStreamErrorDelegate implementation that does nothing.
-class QUIC_EXPORT_PRIVATE NoopEncoderStreamErrorDelegate
+class QUICHE_EXPORT NoopEncoderStreamErrorDelegate
     : public QpackDecoder::EncoderStreamErrorDelegate {
  public:
   ~NoopEncoderStreamErrorDelegate() override = default;
diff --git a/quiche/quic/core/qpack/qpack_decoder_stream_receiver.h b/quiche/quic/core/qpack/qpack_decoder_stream_receiver.h
index f78fca9..0151d5f 100644
--- a/quiche/quic/core/qpack/qpack_decoder_stream_receiver.h
+++ b/quiche/quic/core/qpack/qpack_decoder_stream_receiver.h
@@ -18,13 +18,13 @@
 
 // This class decodes data received on the decoder stream,
 // and passes it along to its Delegate.
-class QUIC_EXPORT_PRIVATE QpackDecoderStreamReceiver
+class QUICHE_EXPORT QpackDecoderStreamReceiver
     : public QpackInstructionDecoder::Delegate,
       public QpackStreamReceiver {
  public:
   // An interface for handling instructions decoded from the decoder stream, see
   // https://quicwg.org/base-drafts/draft-ietf-quic-qpack.html#rfc.section.5.3
-  class QUIC_EXPORT_PRIVATE Delegate {
+  class QUICHE_EXPORT Delegate {
    public:
     virtual ~Delegate() = default;
 
diff --git a/quiche/quic/core/qpack/qpack_decoder_stream_sender.h b/quiche/quic/core/qpack/qpack_decoder_stream_sender.h
index 443e850..32b19b3 100644
--- a/quiche/quic/core/qpack/qpack_decoder_stream_sender.h
+++ b/quiche/quic/core/qpack/qpack_decoder_stream_sender.h
@@ -16,7 +16,7 @@
 
 // This class serializes instructions for transmission on the decoder stream.
 // Serialized instructions are buffered until Flush() is called.
-class QUIC_EXPORT_PRIVATE QpackDecoderStreamSender {
+class QUICHE_EXPORT QpackDecoderStreamSender {
  public:
   QpackDecoderStreamSender();
   QpackDecoderStreamSender(const QpackDecoderStreamSender&) = delete;
diff --git a/quiche/quic/core/qpack/qpack_encoder.h b/quiche/quic/core/qpack/qpack_encoder.h
index 89d08b1..bb34b20 100644
--- a/quiche/quic/core/qpack/qpack_encoder.h
+++ b/quiche/quic/core/qpack/qpack_encoder.h
@@ -31,13 +31,12 @@
 }  // namespace test
 
 // QPACK encoder class.  Exactly one instance should exist per QUIC connection.
-class QUIC_EXPORT_PRIVATE QpackEncoder
-    : public QpackDecoderStreamReceiver::Delegate {
+class QUICHE_EXPORT QpackEncoder : public QpackDecoderStreamReceiver::Delegate {
  public:
   // Interface for receiving notification that an error has occurred on the
   // decoder stream.  This MUST be treated as a connection error of type
   // HTTP_QPACK_DECODER_STREAM_ERROR.
-  class QUIC_EXPORT_PRIVATE DecoderStreamErrorDelegate {
+  class QUICHE_EXPORT DecoderStreamErrorDelegate {
    public:
     virtual ~DecoderStreamErrorDelegate() {}
 
@@ -156,7 +155,7 @@
 };
 
 // QpackEncoder::DecoderStreamErrorDelegate implementation that does nothing.
-class QUIC_EXPORT_PRIVATE NoopDecoderStreamErrorDelegate
+class QUICHE_EXPORT NoopDecoderStreamErrorDelegate
     : public QpackEncoder::DecoderStreamErrorDelegate {
  public:
   ~NoopDecoderStreamErrorDelegate() override = default;
diff --git a/quiche/quic/core/qpack/qpack_encoder_stream_receiver.h b/quiche/quic/core/qpack/qpack_encoder_stream_receiver.h
index 6db91e1..d1b485c 100644
--- a/quiche/quic/core/qpack/qpack_encoder_stream_receiver.h
+++ b/quiche/quic/core/qpack/qpack_encoder_stream_receiver.h
@@ -17,13 +17,13 @@
 namespace quic {
 
 // This class decodes data received on the encoder stream.
-class QUIC_EXPORT_PRIVATE QpackEncoderStreamReceiver
+class QUICHE_EXPORT QpackEncoderStreamReceiver
     : public QpackInstructionDecoder::Delegate,
       public QpackStreamReceiver {
  public:
   // An interface for handling instructions decoded from the encoder stream, see
   // https://quicwg.org/base-drafts/draft-ietf-quic-qpack.html#rfc.section.5.2
-  class QUIC_EXPORT_PRIVATE Delegate {
+  class QUICHE_EXPORT Delegate {
    public:
     virtual ~Delegate() = default;
 
diff --git a/quiche/quic/core/qpack/qpack_encoder_stream_sender.h b/quiche/quic/core/qpack/qpack_encoder_stream_sender.h
index ab53a1d..a8c0bbc 100644
--- a/quiche/quic/core/qpack/qpack_encoder_stream_sender.h
+++ b/quiche/quic/core/qpack/qpack_encoder_stream_sender.h
@@ -17,7 +17,7 @@
 
 // This class serializes instructions for transmission on the encoder stream.
 // Serialized instructions are buffered until Flush() is called.
-class QUIC_EXPORT_PRIVATE QpackEncoderStreamSender {
+class QUICHE_EXPORT QpackEncoderStreamSender {
  public:
   QpackEncoderStreamSender();
   QpackEncoderStreamSender(const QpackEncoderStreamSender&) = delete;
diff --git a/quiche/quic/core/qpack/qpack_header_table.h b/quiche/quic/core/qpack/qpack_header_table.h
index f882e75..9b87fcc 100644
--- a/quiche/quic/core/qpack/qpack_header_table.h
+++ b/quiche/quic/core/qpack/qpack_header_table.h
@@ -34,7 +34,7 @@
 // absolute indices.  The caller needs to perform the necessary transformations
 // to and from relative indices and post-base indices.
 template <typename DynamicEntryTable>
-class QUIC_EXPORT_PRIVATE QpackHeaderTableBase {
+class QUICHE_EXPORT QpackHeaderTableBase {
  public:
   QpackHeaderTableBase();
   QpackHeaderTableBase(const QpackHeaderTableBase&) = delete;
@@ -155,21 +155,21 @@
 
 namespace internal {
 
-QUIC_NO_EXPORT inline size_t GetSize(const QpackEntry& entry) {
+QUICHE_EXPORT inline size_t GetSize(const QpackEntry& entry) {
   return entry.Size();
 }
 
-QUIC_NO_EXPORT inline size_t GetSize(const std::unique_ptr<QpackEntry>& entry) {
+QUICHE_EXPORT inline size_t GetSize(const std::unique_ptr<QpackEntry>& entry) {
   return entry->Size();
 }
 
-QUIC_NO_EXPORT inline std::unique_ptr<QpackEntry> NewEntry(
+QUICHE_EXPORT inline std::unique_ptr<QpackEntry> NewEntry(
     std::string name, std::string value, QpackEncoderDynamicTable& /*t*/) {
   return std::make_unique<QpackEntry>(std::move(name), std::move(value));
 }
 
-QUIC_NO_EXPORT inline QpackEntry NewEntry(std::string name, std::string value,
-                                          QpackDecoderDynamicTable& /*t*/) {
+QUICHE_EXPORT inline QpackEntry NewEntry(std::string name, std::string value,
+                                         QpackDecoderDynamicTable& /*t*/) {
   return QpackEntry{std::move(name), std::move(value)};
 }
 
@@ -242,7 +242,7 @@
   }
 }
 
-class QUIC_EXPORT_PRIVATE QpackEncoderHeaderTable
+class QUICHE_EXPORT QpackEncoderHeaderTable
     : public QpackHeaderTableBase<QpackEncoderDynamicTable> {
  public:
   // Result of header table lookup.
@@ -307,11 +307,11 @@
   NameToEntryMap dynamic_name_index_;
 };
 
-class QUIC_EXPORT_PRIVATE QpackDecoderHeaderTable
+class QUICHE_EXPORT QpackDecoderHeaderTable
     : public QpackHeaderTableBase<QpackDecoderDynamicTable> {
  public:
   // Observer interface for dynamic table insertion.
-  class QUIC_EXPORT_PRIVATE Observer {
+  class QUICHE_EXPORT Observer {
    public:
     virtual ~Observer() = default;
 
diff --git a/quiche/quic/core/qpack/qpack_index_conversions.h b/quiche/quic/core/qpack/qpack_index_conversions.h
index ddd51cf..f4987e4 100644
--- a/quiche/quic/core/qpack/qpack_index_conversions.h
+++ b/quiche/quic/core/qpack/qpack_index_conversions.h
@@ -24,28 +24,29 @@
 // 32 bytes), overflow is not possible.  The caller is responsible for providing
 // input that does not underflow.
 
-QUIC_EXPORT_PRIVATE uint64_t QpackAbsoluteIndexToEncoderStreamRelativeIndex(
+QUICHE_EXPORT uint64_t QpackAbsoluteIndexToEncoderStreamRelativeIndex(
     uint64_t absolute_index, uint64_t inserted_entry_count);
 
-QUIC_EXPORT_PRIVATE uint64_t QpackAbsoluteIndexToRequestStreamRelativeIndex(
+QUICHE_EXPORT uint64_t QpackAbsoluteIndexToRequestStreamRelativeIndex(
     uint64_t absolute_index, uint64_t base);
 
 // Conversion functions used in the decoder operate on input received from the
 // network.  These functions return false on overflow or underflow.
 
-QUIC_EXPORT_PRIVATE bool QpackEncoderStreamRelativeIndexToAbsoluteIndex(
+QUICHE_EXPORT bool QpackEncoderStreamRelativeIndexToAbsoluteIndex(
     uint64_t relative_index, uint64_t inserted_entry_count,
     uint64_t* absolute_index);
 
 // On success, |*absolute_index| is guaranteed to be strictly less than
 // std::numeric_limits<uint64_t>::max().
-QUIC_EXPORT_PRIVATE bool QpackRequestStreamRelativeIndexToAbsoluteIndex(
+QUICHE_EXPORT bool QpackRequestStreamRelativeIndexToAbsoluteIndex(
     uint64_t relative_index, uint64_t base, uint64_t* absolute_index);
 
 // On success, |*absolute_index| is guaranteed to be strictly less than
 // std::numeric_limits<uint64_t>::max().
-QUIC_EXPORT_PRIVATE bool QpackPostBaseIndexToAbsoluteIndex(
-    uint64_t post_base_index, uint64_t base, uint64_t* absolute_index);
+QUICHE_EXPORT bool QpackPostBaseIndexToAbsoluteIndex(uint64_t post_base_index,
+                                                     uint64_t base,
+                                                     uint64_t* absolute_index);
 
 }  // namespace quic
 
diff --git a/quiche/quic/core/qpack/qpack_instruction_decoder.h b/quiche/quic/core/qpack/qpack_instruction_decoder.h
index c848b3d..9b6c3f0 100644
--- a/quiche/quic/core/qpack/qpack_instruction_decoder.h
+++ b/quiche/quic/core/qpack/qpack_instruction_decoder.h
@@ -20,7 +20,7 @@
 // Generic instruction decoder class.  Takes a QpackLanguage that describes a
 // language, that is, a set of instruction opcodes together with a list of
 // fields that follow each instruction.
-class QUIC_EXPORT_PRIVATE QpackInstructionDecoder {
+class QUICHE_EXPORT QpackInstructionDecoder {
  public:
   enum class ErrorCode {
     INTEGER_TOO_LARGE,
@@ -30,7 +30,7 @@
 
   // Delegate is notified each time an instruction is decoded or when an error
   // occurs.
-  class QUIC_EXPORT_PRIVATE Delegate {
+  class QUICHE_EXPORT Delegate {
    public:
     virtual ~Delegate() = default;
 
diff --git a/quiche/quic/core/qpack/qpack_instruction_encoder.h b/quiche/quic/core/qpack/qpack_instruction_encoder.h
index 9b7551d..3d6003e 100644
--- a/quiche/quic/core/qpack/qpack_instruction_encoder.h
+++ b/quiche/quic/core/qpack/qpack_instruction_encoder.h
@@ -17,7 +17,7 @@
 // Generic instruction encoder class.  Takes a QpackLanguage that describes a
 // language, that is, a set of instruction opcodes together with a list of
 // fields that follow each instruction.
-class QUIC_EXPORT_PRIVATE QpackInstructionEncoder {
+class QUICHE_EXPORT QpackInstructionEncoder {
  public:
   QpackInstructionEncoder();
   QpackInstructionEncoder(const QpackInstructionEncoder&) = delete;
diff --git a/quiche/quic/core/qpack/qpack_instructions.h b/quiche/quic/core/qpack/qpack_instructions.h
index a964242..ab80874 100644
--- a/quiche/quic/core/qpack/qpack_instructions.h
+++ b/quiche/quic/core/qpack/qpack_instructions.h
@@ -22,7 +22,7 @@
 // Each instruction is identified with an opcode in the first byte.
 // |mask| determines which bits are part of the opcode.
 // |value| is the value of these bits.  (Other bits in value must be zero.)
-struct QUIC_EXPORT_PRIVATE QpackInstructionOpcode {
+struct QUICHE_EXPORT QpackInstructionOpcode {
   uint8_t value;
   uint8_t mask;
 };
@@ -54,7 +54,7 @@
 
 // Each instruction field has a type and a parameter.
 // The meaning of the parameter depends on the field type.
-struct QUIC_EXPORT_PRIVATE QpackInstructionField {
+struct QUICHE_EXPORT QpackInstructionField {
   QpackInstructionFieldType type;
   // For a kSbit field, |param| is a mask with exactly one bit set.
   // For kVarint fields, |param| is the prefix length of the integer encoding.
@@ -70,7 +70,7 @@
 // followed by a non-empty list of fields.  The last field must be integer or
 // string literal type to guarantee that all bytes of the instruction are
 // consumed.
-struct QUIC_EXPORT_PRIVATE QpackInstruction {
+struct QUICHE_EXPORT QpackInstruction {
   QpackInstruction(QpackInstructionOpcode opcode, QpackInstructionFields fields)
       : opcode(std::move(opcode)), fields(std::move(fields)) {}
 
@@ -148,7 +148,7 @@
 // Storage for instruction and field values to be encoded.
 // This class can only be instantiated using factory methods that take exactly
 // the arguments that the corresponding instruction needs.
-class QUIC_EXPORT_PRIVATE QpackInstructionWithValues {
+class QUICHE_EXPORT QpackInstructionWithValues {
  public:
   // 5.2 Encoder stream instructions
   static QpackInstructionWithValues InsertWithNameReference(
diff --git a/quiche/quic/core/qpack/qpack_progressive_decoder.h b/quiche/quic/core/qpack/qpack_progressive_decoder.h
index 7616376..cfca2bd 100644
--- a/quiche/quic/core/qpack/qpack_progressive_decoder.h
+++ b/quiche/quic/core/qpack/qpack_progressive_decoder.h
@@ -22,12 +22,12 @@
 class QpackDecoderHeaderTable;
 
 // Class to decode a single header block.
-class QUIC_EXPORT_PRIVATE QpackProgressiveDecoder
+class QUICHE_EXPORT QpackProgressiveDecoder
     : public QpackInstructionDecoder::Delegate,
       public QpackDecoderHeaderTable::Observer {
  public:
   // Interface for receiving decoded header block from the decoder.
-  class QUIC_EXPORT_PRIVATE HeadersHandlerInterface {
+  class QUICHE_EXPORT HeadersHandlerInterface {
    public:
     virtual ~HeadersHandlerInterface() {}
 
@@ -53,7 +53,7 @@
 
   // Interface for keeping track of blocked streams for the purpose of enforcing
   // the limit communicated to peer via QPACK_BLOCKED_STREAMS settings.
-  class QUIC_EXPORT_PRIVATE BlockedStreamLimitEnforcer {
+  class QUICHE_EXPORT BlockedStreamLimitEnforcer {
    public:
     virtual ~BlockedStreamLimitEnforcer() {}
 
@@ -69,7 +69,7 @@
   };
 
   // Visitor to be notified when decoding is completed.
-  class QUIC_EXPORT_PRIVATE DecodingCompletedVisitor {
+  class QUICHE_EXPORT DecodingCompletedVisitor {
    public:
     virtual ~DecodingCompletedVisitor() = default;
 
diff --git a/quiche/quic/core/qpack/qpack_receive_stream.h b/quiche/quic/core/qpack/qpack_receive_stream.h
index 20ad878..173d28c 100644
--- a/quiche/quic/core/qpack/qpack_receive_stream.h
+++ b/quiche/quic/core/qpack/qpack_receive_stream.h
@@ -15,7 +15,7 @@
 
 // QPACK 4.2.1 Encoder and Decoder Streams.
 // The QPACK receive stream is peer initiated and is read only.
-class QUIC_EXPORT_PRIVATE QpackReceiveStream : public QuicStream {
+class QUICHE_EXPORT QpackReceiveStream : public QuicStream {
  public:
   // Construct receive stream from pending stream, the |pending| object needs
   // to be deleted after the construction.
diff --git a/quiche/quic/core/qpack/qpack_required_insert_count.h b/quiche/quic/core/qpack/qpack_required_insert_count.h
index 762dfb1..550cf27 100644
--- a/quiche/quic/core/qpack/qpack_required_insert_count.h
+++ b/quiche/quic/core/qpack/qpack_required_insert_count.h
@@ -14,14 +14,14 @@
 // Calculate Encoded Required Insert Count from Required Insert Count and
 // MaxEntries according to
 // https://quicwg.org/base-drafts/draft-ietf-quic-qpack.html#ric.
-QUIC_EXPORT_PRIVATE uint64_t QpackEncodeRequiredInsertCount(
+QUICHE_EXPORT uint64_t QpackEncodeRequiredInsertCount(
     uint64_t required_insert_count, uint64_t max_entries);
 
 // Calculate Required Insert Count from Encoded Required Insert Count,
 // MaxEntries, and total number of dynamic table insertions according to
 // https://quicwg.org/base-drafts/draft-ietf-quic-qpack.html#ric.  Returns true
 // on success, false on invalid input or overflow/underflow.
-QUIC_EXPORT_PRIVATE bool QpackDecodeRequiredInsertCount(
+QUICHE_EXPORT bool QpackDecodeRequiredInsertCount(
     uint64_t encoded_required_insert_count, uint64_t max_entries,
     uint64_t total_number_of_inserts, uint64_t* required_insert_count);
 
diff --git a/quiche/quic/core/qpack/qpack_send_stream.h b/quiche/quic/core/qpack/qpack_send_stream.h
index 8c9a764..07e3927 100644
--- a/quiche/quic/core/qpack/qpack_send_stream.h
+++ b/quiche/quic/core/qpack/qpack_send_stream.h
@@ -19,8 +19,8 @@
 
 // QPACK 4.2.1 Encoder and Decoder Streams.
 // The QPACK send stream is self initiated and is write only.
-class QUIC_EXPORT_PRIVATE QpackSendStream : public QuicStream,
-                                            public QpackStreamSenderDelegate {
+class QUICHE_EXPORT QpackSendStream : public QuicStream,
+                                      public QpackStreamSenderDelegate {
  public:
   // |session| can't be nullptr, and the ownership is not passed. |session| owns
   // this stream.
diff --git a/quiche/quic/core/qpack/qpack_static_table.h b/quiche/quic/core/qpack/qpack_static_table.h
index 43fd297..7fc7895 100644
--- a/quiche/quic/core/qpack/qpack_static_table.h
+++ b/quiche/quic/core/qpack/qpack_static_table.h
@@ -18,13 +18,12 @@
 
 // QPACK static table defined at
 // https://quicwg.org/base-drafts/draft-ietf-quic-qpack.html#static-table.
-QUIC_EXPORT_PRIVATE const std::vector<QpackStaticEntry>&
-QpackStaticTableVector();
+QUICHE_EXPORT const std::vector<QpackStaticEntry>& QpackStaticTableVector();
 
 // Returns a QpackStaticTable instance initialized with kQpackStaticTable.
 // The instance is read-only, has static lifetime, and is safe to share amoung
 // threads. This function is thread-safe.
-QUIC_EXPORT_PRIVATE const QpackStaticTable& ObtainQpackStaticTable();
+QUICHE_EXPORT const QpackStaticTable& ObtainQpackStaticTable();
 
 }  // namespace quic
 
diff --git a/quiche/quic/core/qpack/qpack_stream_receiver.h b/quiche/quic/core/qpack/qpack_stream_receiver.h
index ad95cce..4aadf2a 100644
--- a/quiche/quic/core/qpack/qpack_stream_receiver.h
+++ b/quiche/quic/core/qpack/qpack_stream_receiver.h
@@ -11,7 +11,7 @@
 namespace quic {
 
 // This interface decodes QPACK data that are received on a QpackReceiveStream.
-class QUIC_EXPORT_PRIVATE QpackStreamReceiver {
+class QUICHE_EXPORT QpackStreamReceiver {
  public:
   virtual ~QpackStreamReceiver() = default;
 
diff --git a/quiche/quic/core/qpack/qpack_stream_sender_delegate.h b/quiche/quic/core/qpack/qpack_stream_sender_delegate.h
index 8e267db..46cac5c 100644
--- a/quiche/quic/core/qpack/qpack_stream_sender_delegate.h
+++ b/quiche/quic/core/qpack/qpack_stream_sender_delegate.h
@@ -11,7 +11,7 @@
 namespace quic {
 
 // This interface writes encoder/decoder data to peer.
-class QUIC_EXPORT_PRIVATE QpackStreamSenderDelegate {
+class QUICHE_EXPORT QpackStreamSenderDelegate {
  public:
   virtual ~QpackStreamSenderDelegate() = default;
 
diff --git a/quiche/quic/core/qpack/value_splitting_header_list.h b/quiche/quic/core/qpack/value_splitting_header_list.h
index e275033..fb8d647 100644
--- a/quiche/quic/core/qpack/value_splitting_header_list.h
+++ b/quiche/quic/core/qpack/value_splitting_header_list.h
@@ -14,11 +14,11 @@
 // A wrapper class around Http2HeaderBlock that splits header values along ';'
 // separators (while also removing optional space following separator) for
 // cookies and along '\0' separators for other header fields.
-class QUIC_EXPORT_PRIVATE ValueSplittingHeaderList {
+class QUICHE_EXPORT ValueSplittingHeaderList {
  public:
   using value_type = spdy::Http2HeaderBlock::value_type;
 
-  class QUIC_EXPORT_PRIVATE const_iterator {
+  class QUICHE_EXPORT const_iterator {
    public:
     // |header_list| must outlive this object.
     const_iterator(const spdy::Http2HeaderBlock* header_list,
diff --git a/quiche/quic/core/quic_ack_listener_interface.h b/quiche/quic/core/quic_ack_listener_interface.h
index edf4fd3..14d3773 100644
--- a/quiche/quic/core/quic_ack_listener_interface.h
+++ b/quiche/quic/core/quic_ack_listener_interface.h
@@ -13,7 +13,7 @@
 namespace quic {
 
 // Pure virtual class to listen for packet acknowledgements.
-class QUIC_EXPORT_PRIVATE QuicAckListenerInterface
+class QUICHE_EXPORT QuicAckListenerInterface
     : public quiche::QuicheReferenceCounted {
  public:
   QuicAckListenerInterface() {}
diff --git a/quiche/quic/core/quic_alarm.h b/quiche/quic/core/quic_alarm.h
index 4352a44..25551bb 100644
--- a/quiche/quic/core/quic_alarm.h
+++ b/quiche/quic/core/quic_alarm.h
@@ -17,9 +17,9 @@
 // An alarm may be cancelled, in which case it may or may not be
 // removed from the underlying scheduling system, but in either case
 // the task will not be executed.
-class QUIC_EXPORT_PRIVATE QuicAlarm {
+class QUICHE_EXPORT QuicAlarm {
  public:
-  class QUIC_EXPORT_PRIVATE Delegate {
+  class QUICHE_EXPORT Delegate {
    public:
     virtual ~Delegate() {}
 
@@ -36,7 +36,7 @@
 
   // DelegateWithContext is a Delegate with a QuicConnectionContext* stored as a
   // member variable.
-  class QUIC_EXPORT_PRIVATE DelegateWithContext : public Delegate {
+  class QUICHE_EXPORT DelegateWithContext : public Delegate {
    public:
     explicit DelegateWithContext(QuicConnectionContext* context)
         : context_(context) {}
@@ -50,7 +50,7 @@
   // DelegateWithoutContext is a Delegate that does not have a corresponding
   // context. Typically this means one object of the child class deals with many
   // connections.
-  class QUIC_EXPORT_PRIVATE DelegateWithoutContext : public Delegate {
+  class QUICHE_EXPORT DelegateWithoutContext : public Delegate {
    public:
     ~DelegateWithoutContext() override {}
     QuicConnectionContext* GetConnectionContext() override { return nullptr; }
diff --git a/quiche/quic/core/quic_alarm_factory.h b/quiche/quic/core/quic_alarm_factory.h
index b1ce54c..c6bae38 100644
--- a/quiche/quic/core/quic_alarm_factory.h
+++ b/quiche/quic/core/quic_alarm_factory.h
@@ -12,7 +12,7 @@
 namespace quic {
 
 // Creates platform-specific alarms used throughout QUIC.
-class QUIC_EXPORT_PRIVATE QuicAlarmFactory {
+class QUICHE_EXPORT QuicAlarmFactory {
  public:
   virtual ~QuicAlarmFactory() {}
 
diff --git a/quiche/quic/core/quic_arena_scoped_ptr.h b/quiche/quic/core/quic_arena_scoped_ptr.h
index a0c4ed8..79d3d2c 100644
--- a/quiche/quic/core/quic_arena_scoped_ptr.h
+++ b/quiche/quic/core/quic_arena_scoped_ptr.h
@@ -19,7 +19,7 @@
 namespace quic {
 
 template <typename T>
-class QUIC_NO_EXPORT QuicArenaScopedPtr {
+class QUICHE_EXPORT QuicArenaScopedPtr {
   static_assert(alignof(T*) > 1,
                 "QuicArenaScopedPtr can only store objects that are aligned to "
                 "greater than 1 byte.");
diff --git a/quiche/quic/core/quic_bandwidth.h b/quiche/quic/core/quic_bandwidth.h
index 33356ab..48c9eec 100644
--- a/quiche/quic/core/quic_bandwidth.h
+++ b/quiche/quic/core/quic_bandwidth.h
@@ -21,7 +21,7 @@
 
 namespace quic {
 
-class QUIC_EXPORT_PRIVATE QuicBandwidth {
+class QUICHE_EXPORT QuicBandwidth {
  public:
   // Creates a new QuicBandwidth with an internal value of 0.
   static constexpr QuicBandwidth Zero() { return QuicBandwidth(0); }
diff --git a/quiche/quic/core/quic_blocked_writer_interface.h b/quiche/quic/core/quic_blocked_writer_interface.h
index 062b5cc..c034eba 100644
--- a/quiche/quic/core/quic_blocked_writer_interface.h
+++ b/quiche/quic/core/quic_blocked_writer_interface.h
@@ -13,7 +13,7 @@
 
 namespace quic {
 
-class QUIC_EXPORT_PRIVATE QuicBlockedWriterInterface {
+class QUICHE_EXPORT QuicBlockedWriterInterface {
  public:
   virtual ~QuicBlockedWriterInterface() {}
 
diff --git a/quiche/quic/core/quic_buffered_packet_store.h b/quiche/quic/core/quic_buffered_packet_store.h
index 95bb737..734980f 100644
--- a/quiche/quic/core/quic_buffered_packet_store.h
+++ b/quiche/quic/core/quic_buffered_packet_store.h
@@ -33,7 +33,7 @@
 // of connections: connections with CHLO buffered and those without CHLO. The
 // latter has its own upper limit along with the max number of connections this
 // store can hold. The former pool can grow till this store is full.
-class QUIC_NO_EXPORT QuicBufferedPacketStore {
+class QUICHE_EXPORT QuicBufferedPacketStore {
  public:
   enum EnqueuePacketResult {
     SUCCESS = 0,
@@ -41,7 +41,7 @@
     TOO_MANY_CONNECTIONS  // Too many connections stored up in the store.
   };
 
-  struct QUIC_NO_EXPORT BufferedPacket {
+  struct QUICHE_EXPORT BufferedPacket {
     BufferedPacket(std::unique_ptr<QuicReceivedPacket> packet,
                    QuicSocketAddress self_address,
                    QuicSocketAddress peer_address);
@@ -57,7 +57,7 @@
   };
 
   // A queue of BufferedPackets for a connection.
-  struct QUIC_NO_EXPORT BufferedPacketList {
+  struct QUICHE_EXPORT BufferedPacketList {
     BufferedPacketList();
     BufferedPacketList(BufferedPacketList&& other);
 
@@ -81,7 +81,7 @@
       quiche::QuicheLinkedHashMap<QuicConnectionId, BufferedPacketList,
                                   QuicConnectionIdHash>;
 
-  class QUIC_NO_EXPORT VisitorInterface {
+  class QUICHE_EXPORT VisitorInterface {
    public:
     virtual ~VisitorInterface() {}
 
diff --git a/quiche/quic/core/quic_chaos_protector.h b/quiche/quic/core/quic_chaos_protector.h
index 6bcb335..9b7636f 100644
--- a/quiche/quic/core/quic_chaos_protector.h
+++ b/quiche/quic/core/quic_chaos_protector.h
@@ -26,8 +26,7 @@
 
 // QuicChaosProtector will take a crypto frame and an amount of padding and
 // build a data packet that will parse to something equivalent.
-class QUIC_EXPORT_PRIVATE QuicChaosProtector
-    : public QuicStreamFrameDataProducer {
+class QUICHE_EXPORT QuicChaosProtector : public QuicStreamFrameDataProducer {
  public:
   // |framer| and |random| must be valid for the lifetime of QuicChaosProtector.
   explicit QuicChaosProtector(const QuicCryptoFrame& crypto_frame,
diff --git a/quiche/quic/core/quic_clock.h b/quiche/quic/core/quic_clock.h
index 5e5fd5b..0eaf7ac 100644
--- a/quiche/quic/core/quic_clock.h
+++ b/quiche/quic/core/quic_clock.h
@@ -16,7 +16,7 @@
 namespace quic {
 
 // Interface for retrieving the current time.
-class QUIC_EXPORT_PRIVATE QuicClock {
+class QUICHE_EXPORT QuicClock {
  public:
   QuicClock() = default;
   virtual ~QuicClock() = default;
diff --git a/quiche/quic/core/quic_coalesced_packet.h b/quiche/quic/core/quic_coalesced_packet.h
index b362937..5f3a020 100644
--- a/quiche/quic/core/quic_coalesced_packet.h
+++ b/quiche/quic/core/quic_coalesced_packet.h
@@ -15,7 +15,7 @@
 
 // QuicCoalescedPacket is used to buffer multiple packets which can be coalesced
 // into the same UDP datagram.
-class QUIC_EXPORT_PRIVATE QuicCoalescedPacket {
+class QUICHE_EXPORT QuicCoalescedPacket {
  public:
   QuicCoalescedPacket();
   ~QuicCoalescedPacket();
diff --git a/quiche/quic/core/quic_config.h b/quiche/quic/core/quic_config.h
index f60b481..152994b 100644
--- a/quiche/quic/core/quic_config.h
+++ b/quiche/quic/core/quic_config.h
@@ -44,7 +44,7 @@
 
 // An abstract base class that stores a value that can be sent in CHLO/SHLO
 // message. These values can be OPTIONAL or REQUIRED, depending on |presence_|.
-class QUIC_EXPORT_PRIVATE QuicConfigValue {
+class QUICHE_EXPORT QuicConfigValue {
  public:
   QuicConfigValue(QuicTag tag, QuicConfigPresence presence);
   virtual ~QuicConfigValue();
@@ -64,7 +64,7 @@
 };
 
 // Stores uint32_t from CHLO or SHLO messages that are not negotiated.
-class QUIC_EXPORT_PRIVATE QuicFixedUint32 : public QuicConfigValue {
+class QUICHE_EXPORT QuicFixedUint32 : public QuicConfigValue {
  public:
   QuicFixedUint32(QuicTag tag, QuicConfigPresence presence);
   ~QuicFixedUint32() override;
@@ -99,7 +99,7 @@
 // Stores 62bit numbers from handshake messages that unilaterally shared by each
 // endpoint. IMPORTANT: these are serialized as 32-bit unsigned integers when
 // using QUIC_CRYPTO versions and CryptoHandshakeMessage.
-class QUIC_EXPORT_PRIVATE QuicFixedUint62 : public QuicConfigValue {
+class QUICHE_EXPORT QuicFixedUint62 : public QuicConfigValue {
  public:
   QuicFixedUint62(QuicTag name, QuicConfigPresence presence);
   ~QuicFixedUint62() override;
@@ -135,8 +135,7 @@
 
 // Stores StatelessResetToken from CHLO or SHLO messages that are not
 // negotiated.
-class QUIC_EXPORT_PRIVATE QuicFixedStatelessResetToken
-    : public QuicConfigValue {
+class QUICHE_EXPORT QuicFixedStatelessResetToken : public QuicConfigValue {
  public:
   QuicFixedStatelessResetToken(QuicTag tag, QuicConfigPresence presence);
   ~QuicFixedStatelessResetToken() override;
@@ -169,7 +168,7 @@
 };
 
 // Stores tag from CHLO or SHLO messages that are not negotiated.
-class QUIC_EXPORT_PRIVATE QuicFixedTagVector : public QuicConfigValue {
+class QUICHE_EXPORT QuicFixedTagVector : public QuicConfigValue {
  public:
   QuicFixedTagVector(QuicTag name, QuicConfigPresence presence);
   QuicFixedTagVector(const QuicFixedTagVector& other);
@@ -205,7 +204,7 @@
 };
 
 // Stores QuicSocketAddress from CHLO or SHLO messages that are not negotiated.
-class QUIC_EXPORT_PRIVATE QuicFixedSocketAddress : public QuicConfigValue {
+class QUICHE_EXPORT QuicFixedSocketAddress : public QuicConfigValue {
  public:
   QuicFixedSocketAddress(QuicTag tag, QuicConfigPresence presence);
   ~QuicFixedSocketAddress() override;
@@ -239,7 +238,7 @@
 
 // QuicConfig contains non-crypto configuration options that are negotiated in
 // the crypto handshake.
-class QUIC_EXPORT_PRIVATE QuicConfig {
+class QUICHE_EXPORT QuicConfig {
  public:
   QuicConfig();
   QuicConfig(const QuicConfig& other);
diff --git a/quiche/quic/core/quic_connection.h b/quiche/quic/core/quic_connection.h
index 60dab8c..60a3432 100644
--- a/quiche/quic/core/quic_connection.h
+++ b/quiche/quic/core/quic_connection.h
@@ -75,7 +75,7 @@
 
 // Class that receives callbacks from the connection when the path context is
 // available.
-class QUIC_EXPORT_PRIVATE MultiPortPathContextObserver {
+class QUICHE_EXPORT MultiPortPathContextObserver {
  public:
   virtual void OnMultiPortPathContextAvailable(
       std::unique_ptr<QuicPathValidationContext>) = 0;
@@ -85,7 +85,7 @@
 
 // Class that receives callbacks from the connection when frames are received
 // and when other interesting events happen.
-class QUIC_EXPORT_PRIVATE QuicConnectionVisitorInterface {
+class QUICHE_EXPORT QuicConnectionVisitorInterface {
  public:
   virtual ~QuicConnectionVisitorInterface() {}
 
@@ -271,7 +271,7 @@
 // Interface which gets callbacks from the QuicConnection at interesting
 // points.  Implementations must not mutate the state of the connection
 // as a result of these callbacks.
-class QUIC_EXPORT_PRIVATE QuicConnectionDebugVisitor
+class QUICHE_EXPORT QuicConnectionDebugVisitor
     : public QuicSentPacketManager::DebugDelegate {
  public:
   ~QuicConnectionDebugVisitor() override {}
@@ -465,7 +465,7 @@
       absl::string_view /*client_hello*/) {}
 };
 
-class QUIC_EXPORT_PRIVATE QuicConnectionHelperInterface {
+class QUICHE_EXPORT QuicConnectionHelperInterface {
  public:
   virtual ~QuicConnectionHelperInterface() {}
 
@@ -479,7 +479,7 @@
   virtual quiche::QuicheBufferAllocator* GetStreamSendBufferAllocator() = 0;
 };
 
-class QUIC_EXPORT_PRIVATE QuicConnection
+class QUICHE_EXPORT QuicConnection
     : public QuicFramerVisitorInterface,
       public QuicBlockedWriterInterface,
       public QuicPacketCreator::DelegateInterface,
@@ -963,7 +963,7 @@
   // pending.  In addition, this flusher can be configured to ensure that an ACK
   // frame is included in the first packet created, if there's new ack
   // information to be sent.
-  class QUIC_EXPORT_PRIVATE ScopedPacketFlusher {
+  class QUICHE_EXPORT ScopedPacketFlusher {
    public:
     explicit ScopedPacketFlusher(QuicConnection* connection);
     ~ScopedPacketFlusher();
@@ -977,7 +977,7 @@
     const bool handshake_packet_sent_;
   };
 
-  class QUIC_EXPORT_PRIVATE ScopedEncryptionLevelContext {
+  class QUICHE_EXPORT ScopedEncryptionLevelContext {
    public:
     ScopedEncryptionLevelContext(QuicConnection* connection,
                                  EncryptionLevel level);
@@ -1450,12 +1450,12 @@
     kMaxValue,
   };
 
-  struct QUIC_EXPORT_PRIVATE PendingPathChallenge {
+  struct QUICHE_EXPORT PendingPathChallenge {
     QuicPathFrameBuffer received_path_challenge;
     QuicSocketAddress peer_address;
   };
 
-  struct QUIC_EXPORT_PRIVATE PathState {
+  struct QUICHE_EXPORT PathState {
     PathState() = default;
 
     PathState(const QuicSocketAddress& alternative_self_address,
@@ -1509,7 +1509,7 @@
   // addresses) of those packets which are serialized but failed to send because
   // socket is blocked. From unacked packet map and send algorithm's
   // perspective, buffered packets are treated as sent.
-  struct QUIC_EXPORT_PRIVATE BufferedPacket {
+  struct QUICHE_EXPORT BufferedPacket {
     BufferedPacket(const SerializedPacket& packet,
                    const QuicSocketAddress& self_address,
                    const QuicSocketAddress& peer_address,
@@ -1539,7 +1539,7 @@
 
   // ReceivedPacketInfo comprises the received packet information.
   // TODO(fayang): move more fields to ReceivedPacketInfo.
-  struct QUIC_EXPORT_PRIVATE ReceivedPacketInfo {
+  struct QUICHE_EXPORT ReceivedPacketInfo {
     explicit ReceivedPacketInfo(QuicTime receipt_time);
     ReceivedPacketInfo(const QuicSocketAddress& destination_address,
                        const QuicSocketAddress& source_address,
@@ -1565,12 +1565,12 @@
     QuicSocketAddress actual_destination_address;
   };
 
-  QUIC_EXPORT_PRIVATE friend std::ostream& operator<<(
+  QUICHE_EXPORT friend std::ostream& operator<<(
       std::ostream& os, const QuicConnection::ReceivedPacketInfo& info);
 
   // UndecrytablePacket comprises a undecryptable packet and related
   // information.
-  struct QUIC_EXPORT_PRIVATE UndecryptablePacket {
+  struct QUICHE_EXPORT UndecryptablePacket {
     UndecryptablePacket(const QuicEncryptedPacket& packet,
                         EncryptionLevel encryption_level,
                         const ReceivedPacketInfo& packet_info)
@@ -1642,7 +1642,7 @@
 
   // A class which sets and clears in_probe_time_out_ when entering
   // and exiting OnRetransmissionTimeout, respectively.
-  class QUIC_EXPORT_PRIVATE ScopedRetransmissionTimeoutIndicator {
+  class QUICHE_EXPORT ScopedRetransmissionTimeoutIndicator {
    public:
     // |connection| must outlive this indicator.
     explicit ScopedRetransmissionTimeoutIndicator(QuicConnection* connection);
diff --git a/quiche/quic/core/quic_connection_context.h b/quiche/quic/core/quic_connection_context.h
index 72d6b66..e5b2a4d 100644
--- a/quiche/quic/core/quic_connection_context.h
+++ b/quiche/quic/core/quic_connection_context.h
@@ -15,7 +15,7 @@
 // QuicConnectionTracer is responsible for emit trace messages for a single
 // QuicConnection.
 // QuicConnectionTracer is part of the QuicConnectionContext.
-class QUIC_EXPORT_PRIVATE QuicConnectionTracer {
+class QUICHE_EXPORT QuicConnectionTracer {
  public:
   virtual ~QuicConnectionTracer() = default;
 
@@ -54,7 +54,7 @@
 
 // QuicBugListener is a helper class for implementing QUIC_BUG. The QUIC_BUG
 // implementation can send the bug information into quic::CurrentBugListener().
-class QUIC_EXPORT_PRIVATE QuicBugListener {
+class QUICHE_EXPORT QuicBugListener {
  public:
   virtual ~QuicBugListener() = default;
   virtual void OnQuicBug(const char* bug_id, const char* file, int line,
@@ -64,7 +64,7 @@
 // QuicConnectionProcessPacketContext is a member of QuicConnectionContext that
 // contains information of the packet currently being processed by the owning
 // QuicConnection.
-struct QUIC_EXPORT_PRIVATE QuicConnectionProcessPacketContext final {
+struct QUICHE_EXPORT QuicConnectionProcessPacketContext final {
   // If !empty(), the decrypted payload of the packet currently being processed.
   absl::string_view decrypted_payload;
 
@@ -88,7 +88,7 @@
 //
 // Like QuicConnection, all facilities in QuicConnectionContext are assumed to
 // be called from a single thread at a time, they are NOT thread-safe.
-struct QUIC_EXPORT_PRIVATE QuicConnectionContext final {
+struct QUICHE_EXPORT QuicConnectionContext final {
   // Get the context on the current executing thread. nullptr if the current
   // function is not called from a 'top-level' QuicConnection function.
   static QuicConnectionContext* Current();
@@ -102,7 +102,7 @@
 
 // QuicConnectionContextSwitcher is a RAII object used for maintaining the
 // thread-local QuicConnectionContext pointer.
-class QUIC_EXPORT_PRIVATE QuicConnectionContextSwitcher final {
+class QUICHE_EXPORT QuicConnectionContextSwitcher final {
  public:
   // The constructor switches from QuicConnectionContext::Current() to
   // |new_context|.
diff --git a/quiche/quic/core/quic_connection_id.h b/quiche/quic/core/quic_connection_id.h
index b4e25fe..2e6e035 100644
--- a/quiche/quic/core/quic_connection_id.h
+++ b/quiche/quic/core/quic_connection_id.h
@@ -37,7 +37,7 @@
 // the client must be at least this long.
 const uint8_t kQuicMinimumInitialConnectionIdLength = 8;
 
-class QUIC_EXPORT_PRIVATE QuicConnectionId {
+class QUICHE_EXPORT QuicConnectionId {
  public:
   // Creates a connection ID of length zero.
   QuicConnectionId();
@@ -86,8 +86,8 @@
   std::string ToString() const;
 
   // operator<< allows easily logging connection IDs.
-  friend QUIC_EXPORT_PRIVATE std::ostream& operator<<(
-      std::ostream& os, const QuicConnectionId& v);
+  friend QUICHE_EXPORT std::ostream& operator<<(std::ostream& os,
+                                                const QuicConnectionId& v);
 
   bool operator==(const QuicConnectionId& v) const;
   bool operator!=(const QuicConnectionId& v) const;
@@ -118,7 +118,7 @@
 // Creates a connection ID of length zero, unless the restart flag
 // quic_connection_ids_network_byte_order is false in which case
 // it returns an 8-byte all-zeroes connection ID.
-QUIC_EXPORT_PRIVATE QuicConnectionId EmptyQuicConnectionId();
+QUICHE_EXPORT QuicConnectionId EmptyQuicConnectionId();
 
 // QuicConnectionIdHash can be passed as hash argument to hash tables.
 // During the lifetime of a process, the output of QuicConnectionIdHash is
@@ -126,7 +126,7 @@
 // Note however that this property is not guaranteed across process lifetimes.
 // This makes QuicConnectionIdHash suitable for data structures such as hash
 // tables but not for sending a hash over the network.
-class QUIC_EXPORT_PRIVATE QuicConnectionIdHash {
+class QUICHE_EXPORT QuicConnectionIdHash {
  public:
   size_t operator()(QuicConnectionId const& connection_id) const noexcept {
     return connection_id.Hash();
diff --git a/quiche/quic/core/quic_connection_id_manager.h b/quiche/quic/core/quic_connection_id_manager.h
index dfc7e11..96c4c97 100644
--- a/quiche/quic/core/quic_connection_id_manager.h
+++ b/quiche/quic/core/quic_connection_id_manager.h
@@ -31,7 +31,7 @@
 class QuicConnectionIdManagerPeer;
 }  // namespace test
 
-struct QUIC_EXPORT_PRIVATE QuicConnectionIdData {
+struct QUICHE_EXPORT QuicConnectionIdData {
   QuicConnectionIdData(const QuicConnectionId& connection_id,
                        uint64_t sequence_number,
                        const StatelessResetToken& stateless_reset_token);
@@ -43,7 +43,7 @@
 
 // Used by QuicSelfIssuedConnectionIdManager
 // and QuicPeerIssuedConnectionIdManager.
-class QUIC_EXPORT_PRIVATE QuicConnectionIdManagerVisitorInterface {
+class QUICHE_EXPORT QuicConnectionIdManagerVisitorInterface {
  public:
   virtual ~QuicConnectionIdManagerVisitorInterface() = default;
   virtual void OnPeerIssuedConnectionIdRetired() = 0;
@@ -54,7 +54,7 @@
       const QuicConnectionId& connection_id) = 0;
 };
 
-class QUIC_EXPORT_PRIVATE QuicPeerIssuedConnectionIdManager {
+class QUICHE_EXPORT QuicPeerIssuedConnectionIdManager {
  public:
   // QuicPeerIssuedConnectionIdManager should be instantiated only when a peer
   // issued-non empty connection ID is received.
@@ -121,7 +121,7 @@
   uint64_t max_new_connection_id_frame_retire_prior_to_ = 0u;
 };
 
-class QUIC_EXPORT_PRIVATE QuicSelfIssuedConnectionIdManager {
+class QUICHE_EXPORT QuicSelfIssuedConnectionIdManager {
  public:
   QuicSelfIssuedConnectionIdManager(
       size_t active_connection_id_limit,
diff --git a/quiche/quic/core/quic_connection_stats.h b/quiche/quic/core/quic_connection_stats.h
index 1088e81..5551659 100644
--- a/quiche/quic/core/quic_connection_stats.h
+++ b/quiche/quic/core/quic_connection_stats.h
@@ -17,9 +17,9 @@
 namespace quic {
 
 // Structure to hold stats for a QuicConnection.
-struct QUIC_EXPORT_PRIVATE QuicConnectionStats {
-  QUIC_EXPORT_PRIVATE friend std::ostream& operator<<(
-      std::ostream& os, const QuicConnectionStats& s);
+struct QUICHE_EXPORT QuicConnectionStats {
+  QUICHE_EXPORT friend std::ostream& operator<<(std::ostream& os,
+                                                const QuicConnectionStats& s);
 
   QuicByteCount bytes_sent = 0;  // Includes retransmissions.
   QuicPacketCount packets_sent = 0;
@@ -236,7 +236,7 @@
   // address while the validation is pending.
   size_t num_duplicated_packets_sent_to_server_preferred_address = 0;
 
-  struct QUIC_NO_EXPORT TlsServerOperationStats {
+  struct QUICHE_EXPORT TlsServerOperationStats {
     bool success = false;
     // If the operation is performed asynchronously, how long did it take.
     // Zero() for synchronous operations.
diff --git a/quiche/quic/core/quic_constants.h b/quiche/quic/core/quic_constants.h
index dfd908e..aa73535 100644
--- a/quiche/quic/core/quic_constants.h
+++ b/quiche/quic/core/quic_constants.h
@@ -129,7 +129,7 @@
 
 // Header key used to identify final offset on data stream when sending HTTP/2
 // trailing headers over QUIC.
-QUIC_EXPORT_PRIVATE extern const char* const kFinalOffsetHeaderKey;
+QUICHE_EXPORT extern const char* const kFinalOffsetHeaderKey;
 
 // Default maximum delayed ack time, in ms.
 // Uses a 25ms delayed ack timer. Helps with better signaling
@@ -247,7 +247,7 @@
 
 // For When using Random Initial Packet Numbers, they can start
 // anyplace in the range 1...((2^31)-1) or 0x7fffffff
-QUIC_EXPORT_PRIVATE QuicPacketNumber MaxRandomInitialPacketNumber();
+QUICHE_EXPORT QuicPacketNumber MaxRandomInitialPacketNumber();
 
 // Used to represent an invalid or no control frame id.
 inline constexpr QuicControlFrameId kInvalidControlFrameId = 0;
@@ -313,11 +313,11 @@
 // Packet number of first sending packet of a connection. Please note, this
 // cannot be used as first received packet because peer can choose its starting
 // packet number.
-QUIC_EXPORT_PRIVATE QuicPacketNumber FirstSendingPacketNumber();
+QUICHE_EXPORT QuicPacketNumber FirstSendingPacketNumber();
 
 // Used by clients to tell if a public reset is sent from a Google frontend.
-QUIC_EXPORT_PRIVATE extern const char* const kEPIDGoogleFrontEnd;
-QUIC_EXPORT_PRIVATE extern const char* const kEPIDGoogleFrontEnd0;
+QUICHE_EXPORT extern const char* const kEPIDGoogleFrontEnd;
+QUICHE_EXPORT extern const char* const kEPIDGoogleFrontEnd0;
 
 inline constexpr uint64_t kHttpDatagramStreamIdDivisor = 4;
 
diff --git a/quiche/quic/core/quic_control_frame_manager.h b/quiche/quic/core/quic_control_frame_manager.h
index 46a0f47..0a40b20 100644
--- a/quiche/quic/core/quic_control_frame_manager.h
+++ b/quiche/quic/core/quic_control_frame_manager.h
@@ -33,9 +33,9 @@
 // the generator. Control frames are removed from the head of the list when they
 // get acked. Control frame manager also keeps track of lost control frames
 // which need to be retransmitted.
-class QUIC_EXPORT_PRIVATE QuicControlFrameManager {
+class QUICHE_EXPORT QuicControlFrameManager {
  public:
-  class QUIC_EXPORT_PRIVATE DelegateInterface {
+  class QUICHE_EXPORT DelegateInterface {
    public:
     virtual ~DelegateInterface() = default;
 
diff --git a/quiche/quic/core/quic_crypto_client_handshaker.h b/quiche/quic/core/quic_crypto_client_handshaker.h
index b046405..8e9ef05 100644
--- a/quiche/quic/core/quic_crypto_client_handshaker.h
+++ b/quiche/quic/core/quic_crypto_client_handshaker.h
@@ -19,7 +19,7 @@
 
 // An implementation of QuicCryptoClientStream::HandshakerInterface which uses
 // QUIC crypto as the crypto handshake protocol.
-class QUIC_EXPORT_PRIVATE QuicCryptoClientHandshaker
+class QUICHE_EXPORT QuicCryptoClientHandshaker
     : public QuicCryptoClientStream::HandshakerInterface,
       public QuicCryptoHandshaker {
  public:
@@ -90,8 +90,7 @@
   // ProofVerifierCallbackImpl is passed as the callback method to VerifyProof.
   // The ProofVerifier calls this class with the result of proof verification
   // when verification is performed asynchronously.
-  class QUIC_EXPORT_PRIVATE ProofVerifierCallbackImpl
-      : public ProofVerifierCallback {
+  class QUICHE_EXPORT ProofVerifierCallbackImpl : public ProofVerifierCallback {
    public:
     explicit ProofVerifierCallbackImpl(QuicCryptoClientHandshaker* parent);
     ~ProofVerifierCallbackImpl() override;
diff --git a/quiche/quic/core/quic_crypto_client_stream.h b/quiche/quic/core/quic_crypto_client_stream.h
index ab62b35..1805289 100644
--- a/quiche/quic/core/quic_crypto_client_stream.h
+++ b/quiche/quic/core/quic_crypto_client_stream.h
@@ -29,7 +29,7 @@
 
 class TlsClientHandshaker;
 
-class QUIC_EXPORT_PRIVATE QuicCryptoClientStreamBase : public QuicCryptoStream {
+class QUICHE_EXPORT QuicCryptoClientStreamBase : public QuicCryptoStream {
  public:
   explicit QuicCryptoClientStreamBase(QuicSession* session);
 
@@ -101,8 +101,7 @@
   }
 };
 
-class QUIC_EXPORT_PRIVATE QuicCryptoClientStream
-    : public QuicCryptoClientStreamBase {
+class QUICHE_EXPORT QuicCryptoClientStream : public QuicCryptoClientStreamBase {
  public:
   // kMaxClientHellos is the maximum number of times that we'll send a client
   // hello. The value 4 accounts for:
@@ -126,7 +125,7 @@
   // This setup of the crypto stream delegating its implementation to the
   // handshaker results in the handshaker reading and writing bytes on the
   // crypto stream, instead of the handshaker passing the stream bytes to send.
-  class QUIC_EXPORT_PRIVATE HandshakerInterface {
+  class QUICHE_EXPORT HandshakerInterface {
    public:
     virtual ~HandshakerInterface() {}
 
@@ -240,7 +239,7 @@
 
   // ProofHandler is an interface that handles callbacks from the crypto
   // stream when the client has proof verification details of the server.
-  class QUIC_EXPORT_PRIVATE ProofHandler {
+  class QUICHE_EXPORT ProofHandler {
    public:
     virtual ~ProofHandler() {}
 
diff --git a/quiche/quic/core/quic_crypto_handshaker.h b/quiche/quic/core/quic_crypto_handshaker.h
index 526dbd5..f13c574 100644
--- a/quiche/quic/core/quic_crypto_handshaker.h
+++ b/quiche/quic/core/quic_crypto_handshaker.h
@@ -10,8 +10,7 @@
 
 namespace quic {
 
-class QUIC_EXPORT_PRIVATE QuicCryptoHandshaker
-    : public CryptoFramerVisitorInterface {
+class QUICHE_EXPORT QuicCryptoHandshaker : public CryptoFramerVisitorInterface {
  public:
   QuicCryptoHandshaker(QuicCryptoStream* stream, QuicSession* session);
   QuicCryptoHandshaker(const QuicCryptoHandshaker&) = delete;
diff --git a/quiche/quic/core/quic_crypto_server_stream.h b/quiche/quic/core/quic_crypto_server_stream.h
index 665d071..49c9cc2 100644
--- a/quiche/quic/core/quic_crypto_server_stream.h
+++ b/quiche/quic/core/quic_crypto_server_stream.h
@@ -21,9 +21,8 @@
 class QuicCryptoServerStreamPeer;
 }  // namespace test
 
-class QUIC_EXPORT_PRIVATE QuicCryptoServerStream
-    : public QuicCryptoServerStreamBase,
-      public QuicCryptoHandshaker {
+class QUICHE_EXPORT QuicCryptoServerStream : public QuicCryptoServerStreamBase,
+                                             public QuicCryptoHandshaker {
  public:
   QuicCryptoServerStream(const QuicCryptoServerStream&) = delete;
   QuicCryptoServerStream& operator=(const QuicCryptoServerStream&) = delete;
@@ -82,7 +81,7 @@
   void OnHandshakeMessage(const CryptoHandshakeMessage& message) override;
 
  protected:
-  QUIC_EXPORT_PRIVATE friend std::unique_ptr<QuicCryptoServerStreamBase>
+  QUICHE_EXPORT friend std::unique_ptr<QuicCryptoServerStreamBase>
   CreateCryptoServerStream(const QuicCryptoServerConfig* crypto_config,
                            QuicCompressedCertsCache* compressed_certs_cache,
                            QuicSession* session,
@@ -124,7 +123,7 @@
  private:
   friend class test::QuicCryptoServerStreamPeer;
 
-  class QUIC_EXPORT_PRIVATE ValidateCallback
+  class QUICHE_EXPORT ValidateCallback
       : public ValidateClientHelloResultCallback {
    public:
     explicit ValidateCallback(QuicCryptoServerStream* parent);
diff --git a/quiche/quic/core/quic_crypto_server_stream_base.h b/quiche/quic/core/quic_crypto_server_stream_base.h
index 84d6190..a388f38 100644
--- a/quiche/quic/core/quic_crypto_server_stream_base.h
+++ b/quiche/quic/core/quic_crypto_server_stream_base.h
@@ -27,11 +27,11 @@
 
 // TODO(alyssar) see what can be moved out of QuicCryptoServerStream with
 // various code and test refactoring.
-class QUIC_EXPORT_PRIVATE QuicCryptoServerStreamBase : public QuicCryptoStream {
+class QUICHE_EXPORT QuicCryptoServerStreamBase : public QuicCryptoStream {
  public:
   explicit QuicCryptoServerStreamBase(QuicSession* session);
 
-  class QUIC_EXPORT_PRIVATE Helper {
+  class QUICHE_EXPORT Helper {
    public:
     virtual ~Helper() {}
 
@@ -111,7 +111,7 @@
 // including the version used by |session|. |crypto_config|, |session|, and
 // |helper| must all outlive the stream. The caller takes ownership of the
 // returned object.
-QUIC_EXPORT_PRIVATE std::unique_ptr<QuicCryptoServerStreamBase>
+QUICHE_EXPORT std::unique_ptr<QuicCryptoServerStreamBase>
 CreateCryptoServerStream(const QuicCryptoServerConfig* crypto_config,
                          QuicCompressedCertsCache* compressed_certs_cache,
                          QuicSession* session,
diff --git a/quiche/quic/core/quic_crypto_stream.h b/quiche/quic/core/quic_crypto_stream.h
index 0be3185..191aa57 100644
--- a/quiche/quic/core/quic_crypto_stream.h
+++ b/quiche/quic/core/quic_crypto_stream.h
@@ -35,7 +35,7 @@
 //
 // For more details:
 // https://docs.google.com/document/d/1g5nIXAIkN_Y-7XJW5K45IblHd_L2f5LTaDUDwvZ5L6g/edit?usp=sharing
-class QUIC_EXPORT_PRIVATE QuicCryptoStream : public QuicStream {
+class QUICHE_EXPORT QuicCryptoStream : public QuicStream {
  public:
   explicit QuicCryptoStream(QuicSession* session);
   QuicCryptoStream(const QuicCryptoStream&) = delete;
@@ -259,7 +259,7 @@
   // spaces. Some of the state for the single logical crypto stream is split
   // across packet number spaces, and a CryptoSubstream is used to manage that
   // state for a particular packet number space.
-  struct QUIC_EXPORT_PRIVATE CryptoSubstream {
+  struct QUICHE_EXPORT CryptoSubstream {
     CryptoSubstream(QuicCryptoStream* crypto_stream);
 
     QuicStreamSequencer sequencer;
diff --git a/quiche/quic/core/quic_data_reader.h b/quiche/quic/core/quic_data_reader.h
index 0a907e0..8a20681 100644
--- a/quiche/quic/core/quic_data_reader.h
+++ b/quiche/quic/core/quic_data_reader.h
@@ -30,7 +30,7 @@
 // trusted and it is up to the caller to throw away the failed instance and
 // handle the error as appropriate. None of the Read*() methods should ever be
 // called after failure, as they will also fail immediately.
-class QUIC_EXPORT_PRIVATE QuicDataReader : public quiche::QuicheDataReader {
+class QUICHE_EXPORT QuicDataReader : public quiche::QuicheDataReader {
  public:
   // Constructs a reader using NETWORK_BYTE_ORDER endianness.
   // Caller must provide an underlying buffer to work on.
diff --git a/quiche/quic/core/quic_data_writer.h b/quiche/quic/core/quic_data_writer.h
index cd2486a..555ba98 100644
--- a/quiche/quic/core/quic_data_writer.h
+++ b/quiche/quic/core/quic_data_writer.h
@@ -22,7 +22,7 @@
 // The QuicDataWriter supports appending primitive values (int, string, etc)
 // to a frame instance.  The internal memory buffer is exposed as the "data"
 // of the QuicDataWriter.
-class QUIC_EXPORT_PRIVATE QuicDataWriter : public quiche::QuicheDataWriter {
+class QUICHE_EXPORT QuicDataWriter : public quiche::QuicheDataWriter {
  public:
   // Creates a QuicDataWriter where |buffer| is not owned
   // using NETWORK_BYTE_ORDER endianness.
diff --git a/quiche/quic/core/quic_datagram_queue.h b/quiche/quic/core/quic_datagram_queue.h
index 851cd0a..834ae54 100644
--- a/quiche/quic/core/quic_datagram_queue.h
+++ b/quiche/quic/core/quic_datagram_queue.h
@@ -20,10 +20,10 @@
 // Provides a way to buffer QUIC datagrams (messages) in case they cannot
 // be sent due to congestion control.  Datagrams are buffered for a limited
 // amount of time, and deleted after that time passes.
-class QUIC_EXPORT_PRIVATE QuicDatagramQueue {
+class QUICHE_EXPORT QuicDatagramQueue {
  public:
   // An interface used to monitor events on the associated `QuicDatagramQueue`.
-  class QUIC_EXPORT_PRIVATE Observer {
+  class QUICHE_EXPORT Observer {
    public:
     virtual ~Observer() = default;
 
@@ -73,7 +73,7 @@
   bool empty() { return queue_.empty(); }
 
  private:
-  struct QUIC_EXPORT_PRIVATE Datagram {
+  struct QUICHE_EXPORT Datagram {
     quiche::QuicheMemSlice datagram;
     QuicTime expiry;
   };
diff --git a/quiche/quic/core/quic_default_clock.h b/quiche/quic/core/quic_default_clock.h
index 64b89dd..967ef8e 100644
--- a/quiche/quic/core/quic_default_clock.h
+++ b/quiche/quic/core/quic_default_clock.h
@@ -12,7 +12,7 @@
 namespace quic {
 
 // A QuicClock based on Abseil time API.  Thread-safe.
-class QUIC_EXPORT_PRIVATE QuicDefaultClock : public QuicClock {
+class QUICHE_EXPORT QuicDefaultClock : public QuicClock {
  public:
   // Provides a single default stateless instance of QuicDefaultClock.
   static QuicDefaultClock* Get();
diff --git a/quiche/quic/core/quic_default_connection_helper.h b/quiche/quic/core/quic_default_connection_helper.h
index 3a10b43..c8ce689 100644
--- a/quiche/quic/core/quic_default_connection_helper.h
+++ b/quiche/quic/core/quic_default_connection_helper.h
@@ -13,7 +13,7 @@
 namespace quic {
 
 // A default implementation of QuicConnectionHelperInterface.  Thread-safe.
-class QUIC_EXPORT_PRIVATE QuicDefaultConnectionHelper
+class QUICHE_EXPORT QuicDefaultConnectionHelper
     : public QuicConnectionHelperInterface {
  public:
   static QuicDefaultConnectionHelper* Get() {
diff --git a/quiche/quic/core/quic_default_packet_writer.h b/quiche/quic/core/quic_default_packet_writer.h
index 1235e49..ab41c91 100644
--- a/quiche/quic/core/quic_default_packet_writer.h
+++ b/quiche/quic/core/quic_default_packet_writer.h
@@ -17,7 +17,7 @@
 struct WriteResult;
 
 // Default packet writer which wraps QuicSocketUtils WritePacket.
-class QUIC_EXPORT_PRIVATE QuicDefaultPacketWriter : public QuicPacketWriter {
+class QUICHE_EXPORT QuicDefaultPacketWriter : public QuicPacketWriter {
  public:
   explicit QuicDefaultPacketWriter(SocketFd fd);
   QuicDefaultPacketWriter(const QuicDefaultPacketWriter&) = delete;
diff --git a/quiche/quic/core/quic_dispatcher.h b/quiche/quic/core/quic_dispatcher.h
index 0c0fa9d..7f06b78 100644
--- a/quiche/quic/core/quic_dispatcher.h
+++ b/quiche/quic/core/quic_dispatcher.h
@@ -52,7 +52,7 @@
 class QuicConfig;
 class QuicCryptoServerConfig;
 
-class QUIC_NO_EXPORT QuicDispatcher
+class QUICHE_EXPORT QuicDispatcher
     : public QuicTimeWaitListManager::Visitor,
       public ProcessPacketInterface,
       public QuicBufferedPacketStore::VisitorInterface {
diff --git a/quiche/quic/core/quic_error_codes.h b/quiche/quic/core/quic_error_codes.h
index 2db245e..6f94da5 100644
--- a/quiche/quic/core/quic_error_codes.h
+++ b/quiche/quic/core/quic_error_codes.h
@@ -665,7 +665,7 @@
 
 // Represents a reason for resetting a stream in both gQUIC and IETF error code
 // space.  Both error codes have to be present.
-class QUIC_EXPORT_PRIVATE QuicResetStreamError {
+class QUICHE_EXPORT QuicResetStreamError {
  public:
   // Constructs a QuicResetStreamError from QuicRstStreamErrorCode; the IETF
   // error code is inferred.
@@ -705,14 +705,14 @@
 };
 
 // Convert TLS alert code to QuicErrorCode.
-QUIC_EXPORT_PRIVATE QuicErrorCode TlsAlertToQuicErrorCode(uint8_t desc);
+QUICHE_EXPORT QuicErrorCode TlsAlertToQuicErrorCode(uint8_t desc);
 
 // Returns the name of the QuicRstStreamErrorCode as a char*
-QUIC_EXPORT_PRIVATE const char* QuicRstStreamErrorCodeToString(
+QUICHE_EXPORT const char* QuicRstStreamErrorCodeToString(
     QuicRstStreamErrorCode error);
 
 // Returns the name of the QuicErrorCode as a char*
-QUIC_EXPORT_PRIVATE const char* QuicErrorCodeToString(QuicErrorCode error);
+QUICHE_EXPORT const char* QuicErrorCodeToString(QuicErrorCode error);
 
 // Wire values for QUIC transport errors.
 // https://quicwg.org/base-drafts/draft-ietf-quic-transport.html#name-transport-error-codes
@@ -736,40 +736,39 @@
   CRYPTO_ERROR_LAST = 0x1FF,
 };
 
-QUIC_EXPORT_PRIVATE std::string QuicIetfTransportErrorCodeString(
+QUICHE_EXPORT std::string QuicIetfTransportErrorCodeString(
     QuicIetfTransportErrorCodes c);
 
-QUIC_EXPORT_PRIVATE std::ostream& operator<<(
-    std::ostream& os, const QuicIetfTransportErrorCodes& c);
+QUICHE_EXPORT std::ostream& operator<<(std::ostream& os,
+                                       const QuicIetfTransportErrorCodes& c);
 
 // A transport error code (if is_transport_close is true) or application error
 // code (if is_transport_close is false) to be used in CONNECTION_CLOSE frames.
-struct QUIC_EXPORT_PRIVATE QuicErrorCodeToIetfMapping {
+struct QUICHE_EXPORT QuicErrorCodeToIetfMapping {
   bool is_transport_close;
   uint64_t error_code;
 };
 
 // Convert QuicErrorCode to transport or application IETF error code
 // to be used in CONNECTION_CLOSE frames.
-QUIC_EXPORT_PRIVATE QuicErrorCodeToIetfMapping
+QUICHE_EXPORT QuicErrorCodeToIetfMapping
 QuicErrorCodeToTransportErrorCode(QuicErrorCode error);
 
 // Convert a QuicRstStreamErrorCode to an application error code to be used in
 // an IETF QUIC RESET_STREAM frame
-QUIC_EXPORT_PRIVATE uint64_t RstStreamErrorCodeToIetfResetStreamErrorCode(
+QUICHE_EXPORT uint64_t RstStreamErrorCodeToIetfResetStreamErrorCode(
     QuicRstStreamErrorCode rst_stream_error_code);
 
 // Convert the application error code of an IETF QUIC RESET_STREAM frame
 // to QuicRstStreamErrorCode.
-QUIC_EXPORT_PRIVATE QuicRstStreamErrorCode
+QUICHE_EXPORT QuicRstStreamErrorCode
 IetfResetStreamErrorCodeToRstStreamErrorCode(uint64_t ietf_error_code);
 
-QUIC_EXPORT_PRIVATE inline std::string HistogramEnumString(
-    QuicErrorCode enum_value) {
+QUICHE_EXPORT inline std::string HistogramEnumString(QuicErrorCode enum_value) {
   return QuicErrorCodeToString(enum_value);
 }
 
-QUIC_EXPORT_PRIVATE inline std::string HistogramEnumDescription(
+QUICHE_EXPORT inline std::string HistogramEnumDescription(
     QuicErrorCode /*dummy*/) {
   return "cause";
 }
diff --git a/quiche/quic/core/quic_flow_controller.h b/quiche/quic/core/quic_flow_controller.h
index eaf660a..8bd43c2 100644
--- a/quiche/quic/core/quic_flow_controller.h
+++ b/quiche/quic/core/quic_flow_controller.h
@@ -21,7 +21,7 @@
 // stream's flow control window.
 const float kSessionFlowControlMultiplier = 1.5;
 
-class QUIC_EXPORT_PRIVATE QuicFlowControllerInterface {
+class QUICHE_EXPORT QuicFlowControllerInterface {
  public:
   virtual ~QuicFlowControllerInterface() {}
 
@@ -34,8 +34,7 @@
 // control. The stream/connection owns a QuicFlowController which keeps track of
 // bytes sent/received, can tell the owner if it is flow control blocked, and
 // can send WINDOW_UPDATE or BLOCKED frames when needed.
-class QUIC_EXPORT_PRIVATE QuicFlowController
-    : public QuicFlowControllerInterface {
+class QUICHE_EXPORT QuicFlowController : public QuicFlowControllerInterface {
  public:
   QuicFlowController(QuicSession* session, QuicStreamId id,
                      bool is_connection_flow_controller,
diff --git a/quiche/quic/core/quic_framer.h b/quiche/quic/core/quic_framer.h
index bf73ac8..c173925 100644
--- a/quiche/quic/core/quic_framer.h
+++ b/quiche/quic/core/quic_framer.h
@@ -66,7 +66,7 @@
 
 // This class receives callbacks from the framer when packets
 // are processed.
-class QUIC_EXPORT_PRIVATE QuicFramerVisitorInterface {
+class QUICHE_EXPORT QuicFramerVisitorInterface {
  public:
   virtual ~QuicFramerVisitorInterface() {}
 
@@ -261,7 +261,7 @@
 
 // Class for parsing and constructing QUIC packets.  It has a
 // QuicFramerVisitorInterface that is called when packets are parsed.
-class QUIC_EXPORT_PRIVATE QuicFramer {
+class QUICHE_EXPORT QuicFramer {
  public:
   // Constructs a new framer that installs a kNULL QuicEncrypter and
   // QuicDecrypter for level ENCRYPTION_INITIAL. |supported_versions| specifies
@@ -731,7 +731,7 @@
 
   // AckTimestampRange is a data structure derived from a QuicAckFrame. It is
   // used to serialize timestamps in a IETF_ACK_RECEIVE_TIMESTAMPS frame.
-  struct QUIC_EXPORT_PRIVATE AckTimestampRange {
+  struct QUICHE_EXPORT AckTimestampRange {
     QuicPacketCount gap;
     // |range_begin| and |range_end| are index(es) in
     // QuicAckFrame.received_packet_times, representing a continuous range of
@@ -746,7 +746,7 @@
       const absl::InlinedVector<AckTimestampRange, 2>& timestamp_ranges,
       QuicDataWriter* writer) const;
 
-  struct QUIC_EXPORT_PRIVATE AckFrameInfo {
+  struct QUICHE_EXPORT AckFrameInfo {
     AckFrameInfo();
     AckFrameInfo(const AckFrameInfo& other);
     ~AckFrameInfo();
@@ -1198,8 +1198,7 @@
 // frame->quic_error_code is set to
 // QuicErrorCode::QUIC_IETF_GQUIC_ERROR_MISSING.  If there is an error code in
 // the string then it is removed from the string.
-QUIC_EXPORT_PRIVATE void MaybeExtractQuicErrorCode(
-    QuicConnectionCloseFrame* frame);
+QUICHE_EXPORT void MaybeExtractQuicErrorCode(QuicConnectionCloseFrame* frame);
 
 }  // namespace quic
 
diff --git a/quiche/quic/core/quic_generic_session.cc b/quiche/quic/core/quic_generic_session.cc
index 5b603c3..64e469c 100644
--- a/quiche/quic/core/quic_generic_session.cc
+++ b/quiche/quic/core/quic_generic_session.cc
@@ -50,7 +50,7 @@
 
 // QuicGenericStream is a stream that provides a general-purpose implementation
 // of a webtransport::Stream interface.
-class QUIC_EXPORT_PRIVATE QuicGenericStream : public QuicStream {
+class QUICHE_EXPORT QuicGenericStream : public QuicStream {
  public:
   QuicGenericStream(QuicStreamId id, QuicSession* session)
       : QuicStream(id, session, /*is_static=*/false,
diff --git a/quiche/quic/core/quic_idle_network_detector.h b/quiche/quic/core/quic_idle_network_detector.h
index ca43148..bf13d62 100644
--- a/quiche/quic/core/quic_idle_network_detector.h
+++ b/quiche/quic/core/quic_idle_network_detector.h
@@ -23,9 +23,9 @@
 // Handshake timeout detection is disabled after handshake completes. Idle
 // network deadline is extended by network activity (e.g., sending or receiving
 // packets).
-class QUIC_EXPORT_PRIVATE QuicIdleNetworkDetector {
+class QUICHE_EXPORT QuicIdleNetworkDetector {
  public:
-  class QUIC_EXPORT_PRIVATE Delegate {
+  class QUICHE_EXPORT Delegate {
    public:
     virtual ~Delegate() {}
 
diff --git a/quiche/quic/core/quic_interval.h b/quiche/quic/core/quic_interval.h
index e291c53..3ce58a9 100644
--- a/quiche/quic/core/quic_interval.h
+++ b/quiche/quic/core/quic_interval.h
@@ -69,14 +69,14 @@
 namespace quic {
 
 template <typename T>
-class QUIC_NO_EXPORT QuicInterval {
+class QUICHE_EXPORT QuicInterval {
  private:
   // Type trait for deriving the return type for QuicInterval::Length.  If
   // operator-() is not defined for T, then the return type is void.  This makes
   // the signature for Length compile so that the class can be used for such T,
   // but code that calls Length would still generate a compilation error.
   template <typename U>
-  class QUIC_NO_EXPORT DiffTypeOrVoid {
+  class QUICHE_EXPORT DiffTypeOrVoid {
    private:
     template <typename V>
     static auto f(const V* v) -> decltype(*v - *v);
diff --git a/quiche/quic/core/quic_interval_deque.h b/quiche/quic/core/quic_interval_deque.h
index ed13e7a..45b3bcb 100644
--- a/quiche/quic/core/quic_interval_deque.h
+++ b/quiche/quic/core/quic_interval_deque.h
@@ -138,9 +138,9 @@
 //   //   container -> {{2, [25, 30)}, {3, [35, 50)}}
 
 template <class T, class C = quiche::QuicheCircularDeque<T>>
-class QUIC_NO_EXPORT QuicIntervalDeque {
+class QUICHE_EXPORT QuicIntervalDeque {
  public:
-  class QUIC_NO_EXPORT Iterator {
+  class QUICHE_EXPORT Iterator {
    public:
     // Used by |std::lower_bound|
     using iterator_category = std::forward_iterator_tag;
@@ -243,7 +243,7 @@
   bool Empty() const;
 
  private:
-  struct QUIC_NO_EXPORT IntervalCompare {
+  struct QUICHE_EXPORT IntervalCompare {
     bool operator()(const T& item, std::size_t interval_begin) const {
       return item.interval().max() <= interval_begin;
     }
diff --git a/quiche/quic/core/quic_interval_set.h b/quiche/quic/core/quic_interval_set.h
index 11d0270..723d106 100644
--- a/quiche/quic/core/quic_interval_set.h
+++ b/quiche/quic/core/quic_interval_set.h
@@ -68,12 +68,12 @@
 namespace quic {
 
 template <typename T>
-class QUIC_NO_EXPORT QuicIntervalSet {
+class QUICHE_EXPORT QuicIntervalSet {
  public:
   using value_type = QuicInterval<T>;
 
  private:
-  struct QUIC_NO_EXPORT IntervalLess {
+  struct QUICHE_EXPORT IntervalLess {
     using is_transparent = void;
     bool operator()(const value_type& a, const value_type& b) const;
     // These transparent overloads are used when we do all of our searches (via
@@ -386,7 +386,7 @@
 
  private:
   // Simple member-wise equality, since all intervals are non-empty.
-  struct QUIC_NO_EXPORT NonemptyIntervalEq {
+  struct QUICHE_EXPORT NonemptyIntervalEq {
     bool operator()(const value_type& a, const value_type& b) const {
       return a.min() == b.min() && a.max() == b.max();
     }
diff --git a/quiche/quic/core/quic_linux_socket_utils.h b/quiche/quic/core/quic_linux_socket_utils.h
index 36c2dd7..a1e725b 100644
--- a/quiche/quic/core/quic_linux_socket_utils.h
+++ b/quiche/quic/core/quic_linux_socket_utils.h
@@ -75,7 +75,7 @@
 //   *hdr.GetNextCmsgData<uint16_t>(SOL_UDP, UDP_SEGMENT) = 1200;
 //
 //   QuicLinuxSocketUtils::WritePacket(fd, hdr);
-class QUIC_EXPORT_PRIVATE QuicMsgHdr {
+class QUICHE_EXPORT QuicMsgHdr {
  public:
   QuicMsgHdr(const char* buffer, size_t buf_len,
              const QuicSocketAddress& peer_address, char* cbuf,
@@ -106,7 +106,7 @@
 };
 
 // BufferedWrite holds all information needed to send a packet.
-struct QUIC_EXPORT_PRIVATE BufferedWrite {
+struct QUICHE_EXPORT BufferedWrite {
   BufferedWrite(const char* buffer, size_t buf_len,
                 const QuicIpAddress& self_address,
                 const QuicSocketAddress& peer_address)
@@ -157,7 +157,7 @@
 //
 //   int num_packets_sent;
 //   QuicSocketUtils::WriteMultiplePackets(fd, &mhdr, &num_packets_sent);
-class QUIC_EXPORT_PRIVATE QuicMMsgHdr {
+class QUICHE_EXPORT QuicMMsgHdr {
  public:
   using ControlBufferInitializer = quiche::UnretainedCallback<void(
       QuicMMsgHdr* mhdr, int i, const BufferedWrite& buffered_write)>;
@@ -253,7 +253,7 @@
   std::unique_ptr<char[]> storage_;
 };
 
-class QUIC_EXPORT_PRIVATE QuicLinuxSocketUtils {
+class QUICHE_EXPORT QuicLinuxSocketUtils {
  public:
   // Return the UDP segment size of |fd|, 0 means segment size has not been set
   // on this socket. If GSO is not supported, return -1.
diff --git a/quiche/quic/core/quic_lru_cache.h b/quiche/quic/core/quic_lru_cache.h
index d1c010e..13616a3 100644
--- a/quiche/quic/core/quic_lru_cache.h
+++ b/quiche/quic/core/quic_lru_cache.h
@@ -21,7 +21,7 @@
 // threads.
 template <class K, class V, class Hash = std::hash<K>,
           class Eq = std::equal_to<K>>
-class QUIC_NO_EXPORT QuicLRUCache {
+class QUICHE_EXPORT QuicLRUCache {
  private:
   using HashMapType =
       typename quiche::QuicheLinkedHashMap<K, std::unique_ptr<V>, Hash, Eq>;
diff --git a/quiche/quic/core/quic_mtu_discovery.h b/quiche/quic/core/quic_mtu_discovery.h
index c44894f..68fbc6d 100644
--- a/quiche/quic/core/quic_mtu_discovery.h
+++ b/quiche/quic/core/quic_mtu_discovery.h
@@ -50,7 +50,7 @@
 // Note the discoverer does not actually send or process probing packets.
 //
 // Unit tests are in QuicConnectionTest.MtuDiscovery*.
-class QUIC_EXPORT_PRIVATE QuicConnectionMtuDiscoverer {
+class QUICHE_EXPORT QuicConnectionMtuDiscoverer {
  public:
   // Construct a discoverer in the disabled state.
   QuicConnectionMtuDiscoverer() = default;
@@ -88,7 +88,7 @@
 
   QuicPacketNumber next_probe_at() const { return next_probe_at_; }
 
-  QUIC_EXPORT_PRIVATE friend std::ostream& operator<<(
+  QUICHE_EXPORT friend std::ostream& operator<<(
       std::ostream& os, const QuicConnectionMtuDiscoverer& d);
 
  private:
diff --git a/quiche/quic/core/quic_network_blackhole_detector.h b/quiche/quic/core/quic_network_blackhole_detector.h
index 7defc47..5f7ab87 100644
--- a/quiche/quic/core/quic_network_blackhole_detector.h
+++ b/quiche/quic/core/quic_network_blackhole_detector.h
@@ -24,9 +24,9 @@
 // degrading detection mode. After reporting path degrading detected, detector
 // switches to blackhole detection mode. So blackhole detection deadline must
 // be later than path degrading deadline.
-class QUIC_EXPORT_PRIVATE QuicNetworkBlackholeDetector {
+class QUICHE_EXPORT QuicNetworkBlackholeDetector {
  public:
-  class QUIC_EXPORT_PRIVATE Delegate {
+  class QUICHE_EXPORT Delegate {
    public:
     virtual ~Delegate() {}
 
diff --git a/quiche/quic/core/quic_one_block_arena.h b/quiche/quic/core/quic_one_block_arena.h
index b416254..4dd9ba3 100644
--- a/quiche/quic/core/quic_one_block_arena.h
+++ b/quiche/quic/core/quic_one_block_arena.h
@@ -21,7 +21,7 @@
 namespace quic {
 
 template <uint32_t ArenaSize>
-class QUIC_EXPORT_PRIVATE QuicOneBlockArena {
+class QUICHE_EXPORT QuicOneBlockArena {
   static const uint32_t kMaxAlign = 8;
 
  public:
diff --git a/quiche/quic/core/quic_packet_creator.h b/quiche/quic/core/quic_packet_creator.h
index a4af3f6..fcabc9a 100644
--- a/quiche/quic/core/quic_packet_creator.h
+++ b/quiche/quic/core/quic_packet_creator.h
@@ -39,10 +39,10 @@
 class QuicPacketCreatorPeer;
 }
 
-class QUIC_EXPORT_PRIVATE QuicPacketCreator {
+class QUICHE_EXPORT QuicPacketCreator {
  public:
   // A delegate interface for further processing serialized packet.
-  class QUIC_EXPORT_PRIVATE DelegateInterface {
+  class QUICHE_EXPORT DelegateInterface {
    public:
     virtual ~DelegateInterface() {}
     // Get a buffer of kMaxOutgoingPacketSize bytes to serialize the next
@@ -74,7 +74,7 @@
   // Interface which gets callbacks from the QuicPacketCreator at interesting
   // points.  Implementations must not mutate the state of the creator
   // as a result of these callbacks.
-  class QUIC_EXPORT_PRIVATE DebugDelegate {
+  class QUICHE_EXPORT DebugDelegate {
    public:
     virtual ~DebugDelegate() {}
 
@@ -89,7 +89,7 @@
   // Set the peer address and connection IDs with which the serialized packet
   // will be sent to during the scope of this object. Upon exiting the scope,
   // the original peer address and connection IDs are restored.
-  class QUIC_EXPORT_PRIVATE ScopedPeerAddressContext {
+  class QUICHE_EXPORT ScopedPeerAddressContext {
    public:
     ScopedPeerAddressContext(QuicPacketCreator* creator,
                              QuicSocketAddress address,
@@ -484,7 +484,7 @@
 
   // Used to 1) clear queued_frames_, 2) report unrecoverable error (if
   // serialization fails) upon exiting the scope.
-  class QUIC_EXPORT_PRIVATE ScopedSerializationFailureHandler {
+  class QUICHE_EXPORT ScopedSerializationFailureHandler {
    public:
     explicit ScopedSerializationFailureHandler(QuicPacketCreator* creator);
     ~ScopedSerializationFailureHandler();
diff --git a/quiche/quic/core/quic_packet_number.h b/quiche/quic/core/quic_packet_number.h
index 8d6b1b6..04e7804 100644
--- a/quiche/quic/core/quic_packet_number.h
+++ b/quiche/quic/core/quic_packet_number.h
@@ -17,7 +17,7 @@
 // QuicPacketNumber can either initialized or uninitialized. An initialized
 // packet number is simply an ordinal number. A sentinel value is used to
 // represent an uninitialized packet number.
-class QUIC_EXPORT_PRIVATE QuicPacketNumber {
+class QUICHE_EXPORT QuicPacketNumber {
  public:
   // Construct an uninitialized packet number.
   constexpr QuicPacketNumber() : packet_number_(UninitializedPacketNumber()) {}
@@ -69,8 +69,8 @@
   // Human-readable representation suitable for logging.
   std::string ToString() const;
 
-  QUIC_EXPORT_PRIVATE friend std::ostream& operator<<(
-      std::ostream& os, const QuicPacketNumber& p);
+  QUICHE_EXPORT friend std::ostream& operator<<(std::ostream& os,
+                                                const QuicPacketNumber& p);
 
  private:
   // All following operators REQUIRE operands.Initialized() == true.
@@ -93,7 +93,7 @@
   uint64_t packet_number_;
 };
 
-class QUIC_EXPORT_PRIVATE QuicPacketNumberHash {
+class QUICHE_EXPORT QuicPacketNumberHash {
  public:
   uint64_t operator()(QuicPacketNumber packet_number) const noexcept {
     return packet_number.Hash();
diff --git a/quiche/quic/core/quic_packet_reader.h b/quiche/quic/core/quic_packet_reader.h
index 6ec2682..c994557 100644
--- a/quiche/quic/core/quic_packet_reader.h
+++ b/quiche/quic/core/quic_packet_reader.h
@@ -20,7 +20,7 @@
 // Read in larger batches to minimize recvmmsg overhead.
 const int kNumPacketsPerReadMmsgCall = 16;
 
-class QUIC_EXPORT_PRIVATE QuicPacketReader {
+class QUICHE_EXPORT QuicPacketReader {
  public:
   QuicPacketReader();
   QuicPacketReader(const QuicPacketReader&) = delete;
@@ -47,7 +47,7 @@
   static QuicIpAddress GetSelfIpFromPacketInfo(
       const QuicUdpPacketInfo& packet_info, bool prefer_v6_ip);
 
-  struct QUIC_EXPORT_PRIVATE ReadBuffer {
+  struct QUICHE_EXPORT ReadBuffer {
     ABSL_CACHELINE_ALIGNED char
         control_buffer[kDefaultUdpPacketControlBufferSize];  // For ancillary
                                                              // data.
diff --git a/quiche/quic/core/quic_packet_writer.h b/quiche/quic/core/quic_packet_writer.h
index c684656..dfca5a8 100644
--- a/quiche/quic/core/quic_packet_writer.h
+++ b/quiche/quic/core/quic_packet_writer.h
@@ -21,7 +21,7 @@
 // This class allows a platform to pass instructions to an associated child of
 // QuicWriter without intervening QUIC code understanding anything about its
 // contents.
-class QUIC_EXPORT_PRIVATE PerPacketOptions {
+class QUICHE_EXPORT PerPacketOptions {
  public:
   virtual ~PerPacketOptions() {}
 
@@ -36,7 +36,7 @@
 };
 
 // The owner of QuicPacketWriter can pass control information via this struct.
-struct QUIC_EXPORT_PRIVATE QuicPacketWriterParams {
+struct QUICHE_EXPORT QuicPacketWriterParams {
   // Specifies ideal release time delay for this packet.
   QuicTime::Delta release_time_delay = QuicTime::Delta::Zero();
   // Whether it is allowed to send this packet without |release_time_delay|.
@@ -67,7 +67,7 @@
 // 1. Call GetNextWriteLocation to get a pointer P into the internal buffer.
 // 2. Serialize the packet directly to P.
 // 3. Call WritePacket with P as the |buffer|.
-class QUIC_EXPORT_PRIVATE QuicPacketWriter {
+class QUICHE_EXPORT QuicPacketWriter {
  public:
   virtual ~QuicPacketWriter() {}
 
diff --git a/quiche/quic/core/quic_packet_writer_wrapper.h b/quiche/quic/core/quic_packet_writer_wrapper.h
index 6bbf7fe..901aa6c 100644
--- a/quiche/quic/core/quic_packet_writer_wrapper.h
+++ b/quiche/quic/core/quic_packet_writer_wrapper.h
@@ -15,7 +15,7 @@
 // Wraps a writer object to allow dynamically extending functionality. Use
 // cases: replace writer while dispatcher and connections hold on to the
 // wrapper; mix in monitoring; mix in mocks in unit tests.
-class QUIC_NO_EXPORT QuicPacketWriterWrapper : public QuicPacketWriter {
+class QUICHE_EXPORT QuicPacketWriterWrapper : public QuicPacketWriter {
  public:
   QuicPacketWriterWrapper();
   QuicPacketWriterWrapper(const QuicPacketWriterWrapper&) = delete;
diff --git a/quiche/quic/core/quic_packets.h b/quiche/quic/core/quic_packets.h
index d1eb52b..9bd17f9 100644
--- a/quiche/quic/core/quic_packets.h
+++ b/quiche/quic/core/quic_packets.h
@@ -33,58 +33,56 @@
 
 // Returns the destination connection ID of |header| when |perspective| is
 // server, and the source connection ID when |perspective| is client.
-QUIC_EXPORT_PRIVATE QuicConnectionId GetServerConnectionIdAsRecipient(
+QUICHE_EXPORT QuicConnectionId GetServerConnectionIdAsRecipient(
     const QuicPacketHeader& header, Perspective perspective);
 
 // Returns the destination connection ID of |header| when |perspective| is
 // client, and the source connection ID when |perspective| is server.
-QUIC_EXPORT_PRIVATE QuicConnectionId GetClientConnectionIdAsRecipient(
+QUICHE_EXPORT QuicConnectionId GetClientConnectionIdAsRecipient(
     const QuicPacketHeader& header, Perspective perspective);
 
 // Returns the destination connection ID of |header| when |perspective| is
 // client, and the source connection ID when |perspective| is server.
-QUIC_EXPORT_PRIVATE QuicConnectionId GetServerConnectionIdAsSender(
+QUICHE_EXPORT QuicConnectionId GetServerConnectionIdAsSender(
     const QuicPacketHeader& header, Perspective perspective);
 
 // Returns the destination connection ID included of |header| when |perspective|
 // is client, and the source connection ID included when |perspective| is
 // server.
-QUIC_EXPORT_PRIVATE QuicConnectionIdIncluded
-GetServerConnectionIdIncludedAsSender(const QuicPacketHeader& header,
-                                      Perspective perspective);
+QUICHE_EXPORT QuicConnectionIdIncluded GetServerConnectionIdIncludedAsSender(
+    const QuicPacketHeader& header, Perspective perspective);
 
 // Returns the destination connection ID of |header| when |perspective| is
 // server, and the source connection ID when |perspective| is client.
-QUIC_EXPORT_PRIVATE QuicConnectionId GetClientConnectionIdAsSender(
+QUICHE_EXPORT QuicConnectionId GetClientConnectionIdAsSender(
     const QuicPacketHeader& header, Perspective perspective);
 
 // Returns the destination connection ID included of |header| when |perspective|
 // is server, and the source connection ID included when |perspective| is
 // client.
-QUIC_EXPORT_PRIVATE QuicConnectionIdIncluded
-GetClientConnectionIdIncludedAsSender(const QuicPacketHeader& header,
-                                      Perspective perspective);
+QUICHE_EXPORT QuicConnectionIdIncluded GetClientConnectionIdIncludedAsSender(
+    const QuicPacketHeader& header, Perspective perspective);
 
 // Number of connection ID bytes that are actually included over the wire.
-QUIC_EXPORT_PRIVATE uint8_t
+QUICHE_EXPORT uint8_t
 GetIncludedConnectionIdLength(QuicConnectionId connection_id,
                               QuicConnectionIdIncluded connection_id_included);
 
 // Number of destination connection ID bytes that are actually included over the
 // wire for this particular header.
-QUIC_EXPORT_PRIVATE uint8_t
+QUICHE_EXPORT uint8_t
 GetIncludedDestinationConnectionIdLength(const QuicPacketHeader& header);
 
 // Number of source connection ID bytes that are actually included over the
 // wire for this particular header.
-QUIC_EXPORT_PRIVATE uint8_t
+QUICHE_EXPORT uint8_t
 GetIncludedSourceConnectionIdLength(const QuicPacketHeader& header);
 
 // Size in bytes of the data packet header.
-QUIC_EXPORT_PRIVATE size_t GetPacketHeaderSize(QuicTransportVersion version,
-                                               const QuicPacketHeader& header);
+QUICHE_EXPORT size_t GetPacketHeaderSize(QuicTransportVersion version,
+                                         const QuicPacketHeader& header);
 
-QUIC_EXPORT_PRIVATE size_t GetPacketHeaderSize(
+QUICHE_EXPORT size_t GetPacketHeaderSize(
     QuicTransportVersion version, uint8_t destination_connection_id_length,
     uint8_t source_connection_id_length, bool include_version,
     bool include_diversification_nonce,
@@ -94,10 +92,10 @@
     quiche::QuicheVariableLengthIntegerLength length_length);
 
 // Index of the first byte in a QUIC packet of encrypted data.
-QUIC_EXPORT_PRIVATE size_t GetStartOfEncryptedData(
-    QuicTransportVersion version, const QuicPacketHeader& header);
+QUICHE_EXPORT size_t GetStartOfEncryptedData(QuicTransportVersion version,
+                                             const QuicPacketHeader& header);
 
-QUIC_EXPORT_PRIVATE size_t GetStartOfEncryptedData(
+QUICHE_EXPORT size_t GetStartOfEncryptedData(
     QuicTransportVersion version, uint8_t destination_connection_id_length,
     uint8_t source_connection_id_length, bool include_version,
     bool include_diversification_nonce,
@@ -106,15 +104,15 @@
     QuicByteCount retry_token_length,
     quiche::QuicheVariableLengthIntegerLength length_length);
 
-struct QUIC_EXPORT_PRIVATE QuicPacketHeader {
+struct QUICHE_EXPORT QuicPacketHeader {
   QuicPacketHeader();
   QuicPacketHeader(const QuicPacketHeader& other);
   ~QuicPacketHeader();
 
   QuicPacketHeader& operator=(const QuicPacketHeader& other);
 
-  QUIC_EXPORT_PRIVATE friend std::ostream& operator<<(
-      std::ostream& os, const QuicPacketHeader& header);
+  QUICHE_EXPORT friend std::ostream& operator<<(std::ostream& os,
+                                                const QuicPacketHeader& header);
 
   // Universal header. All QuicPacket headers will have a connection_id and
   // public flags.
@@ -162,7 +160,7 @@
   bool operator!=(const QuicPacketHeader& other) const;
 };
 
-struct QUIC_EXPORT_PRIVATE QuicPublicResetPacket {
+struct QUICHE_EXPORT QuicPublicResetPacket {
   QuicPublicResetPacket();
   explicit QuicPublicResetPacket(QuicConnectionId connection_id);
 
@@ -175,7 +173,7 @@
   std::string endpoint_id;
 };
 
-struct QUIC_EXPORT_PRIVATE QuicVersionNegotiationPacket {
+struct QUICHE_EXPORT QuicVersionNegotiationPacket {
   QuicVersionNegotiationPacket();
   explicit QuicVersionNegotiationPacket(QuicConnectionId connection_id);
   QuicVersionNegotiationPacket(const QuicVersionNegotiationPacket& other);
@@ -185,7 +183,7 @@
   ParsedQuicVersionVector versions;
 };
 
-struct QUIC_EXPORT_PRIVATE QuicIetfStatelessResetPacket {
+struct QUICHE_EXPORT QuicIetfStatelessResetPacket {
   QuicIetfStatelessResetPacket();
   QuicIetfStatelessResetPacket(const QuicPacketHeader& header,
                                StatelessResetToken token);
@@ -196,7 +194,7 @@
   StatelessResetToken stateless_reset_token;
 };
 
-class QUIC_EXPORT_PRIVATE QuicData {
+class QUICHE_EXPORT QuicData {
  public:
   // Creates a QuicData from a buffer and length. Does not own the buffer.
   QuicData(const char* buffer, size_t length);
@@ -223,7 +221,7 @@
   bool owns_buffer_;
 };
 
-class QUIC_EXPORT_PRIVATE QuicPacket : public QuicData {
+class QUICHE_EXPORT QuicPacket : public QuicData {
  public:
   QuicPacket(
       char* buffer, size_t length, bool owns_buffer,
@@ -256,7 +254,7 @@
   const quiche::QuicheVariableLengthIntegerLength length_length_;
 };
 
-class QUIC_EXPORT_PRIVATE QuicEncryptedPacket : public QuicData {
+class QUICHE_EXPORT QuicEncryptedPacket : public QuicData {
  public:
   // Creates a QuicEncryptedPacket from a buffer and length.
   // Does not own the buffer.
@@ -278,12 +276,12 @@
   // member (in the base class QuicData) causes this object to have padding
   // bytes, which causes the default gtest object printer to read
   // uninitialize memory. So we need to teach gtest how to print this object.
-  QUIC_EXPORT_PRIVATE friend std::ostream& operator<<(
-      std::ostream& os, const QuicEncryptedPacket& s);
+  QUICHE_EXPORT friend std::ostream& operator<<(std::ostream& os,
+                                                const QuicEncryptedPacket& s);
 };
 
 // A received encrypted QUIC packet, with a recorded time of receipt.
-class QUIC_EXPORT_PRIVATE QuicReceivedPacket : public QuicEncryptedPacket {
+class QUICHE_EXPORT QuicReceivedPacket : public QuicEncryptedPacket {
  public:
   QuicReceivedPacket(const char* buffer, size_t length, QuicTime receipt_time);
   QuicReceivedPacket(const char* buffer, size_t length, QuicTime receipt_time,
@@ -321,8 +319,8 @@
   // member (in the base class QuicData) causes this object to have padding
   // bytes, which causes the default gtest object printer to read
   // uninitialize memory. So we need to teach gtest how to print this object.
-  QUIC_EXPORT_PRIVATE friend std::ostream& operator<<(
-      std::ostream& os, const QuicReceivedPacket& s);
+  QUICHE_EXPORT friend std::ostream& operator<<(std::ostream& os,
+                                                const QuicReceivedPacket& s);
 
   QuicEcnCodepoint ecn_codepoint() const { return ecn_codepoint_; }
 
@@ -345,7 +343,7 @@
 //   If you add a member field to this class, please make sure it is properly
 //   copied in |CopySerializedPacket|.
 //
-struct QUIC_EXPORT_PRIVATE SerializedPacket {
+struct QUICHE_EXPORT SerializedPacket {
   SerializedPacket(QuicPacketNumber packet_number,
                    QuicPacketNumberLength packet_number_length,
                    const char* encrypted_buffer,
@@ -399,26 +397,26 @@
 
 // Make a copy of |serialized| (including the underlying frames). |copy_buffer|
 // indicates whether the encrypted buffer should be copied.
-QUIC_EXPORT_PRIVATE SerializedPacket* CopySerializedPacket(
+QUICHE_EXPORT SerializedPacket* CopySerializedPacket(
     const SerializedPacket& serialized,
     quiche::QuicheBufferAllocator* allocator, bool copy_buffer);
 
 // Allocates a new char[] of size |packet.encrypted_length| and copies in
 // |packet.encrypted_buffer|.
-QUIC_EXPORT_PRIVATE char* CopyBuffer(const SerializedPacket& packet);
+QUICHE_EXPORT char* CopyBuffer(const SerializedPacket& packet);
 // Allocates a new char[] of size |encrypted_length| and copies in
 // |encrypted_buffer|.
-QUIC_EXPORT_PRIVATE char* CopyBuffer(const char* encrypted_buffer,
-                                     QuicPacketLength encrypted_length);
+QUICHE_EXPORT char* CopyBuffer(const char* encrypted_buffer,
+                               QuicPacketLength encrypted_length);
 
 // Context for an incoming packet.
-struct QUIC_EXPORT_PRIVATE QuicPerPacketContext {
+struct QUICHE_EXPORT QuicPerPacketContext {
   virtual ~QuicPerPacketContext() {}
 };
 
 // ReceivedPacketInfo comprises information obtained by parsing the unencrypted
 // bytes of a received packet.
-struct QUIC_EXPORT_PRIVATE ReceivedPacketInfo {
+struct QUICHE_EXPORT ReceivedPacketInfo {
   ReceivedPacketInfo(const QuicSocketAddress& self_address,
                      const QuicSocketAddress& peer_address,
                      const QuicReceivedPacket& packet);
@@ -428,7 +426,7 @@
 
   std::string ToString() const;
 
-  QUIC_EXPORT_PRIVATE friend std::ostream& operator<<(
+  QUICHE_EXPORT friend std::ostream& operator<<(
       std::ostream& os, const ReceivedPacketInfo& packet_info);
 
   const QuicSocketAddress& self_address;
diff --git a/quiche/quic/core/quic_path_validator.h b/quiche/quic/core/quic_path_validator.h
index 1079f21..37faca3 100644
--- a/quiche/quic/core/quic_path_validator.h
+++ b/quiche/quic/core/quic_path_validator.h
@@ -41,7 +41,7 @@
 };
 
 // Interface to provide the information of the path to be validated.
-class QUIC_EXPORT_PRIVATE QuicPathValidationContext {
+class QUICHE_EXPORT QuicPathValidationContext {
  public:
   QuicPathValidationContext(const QuicSocketAddress& self_address,
                             const QuicSocketAddress& peer_address)
@@ -67,7 +67,7 @@
   }
 
  private:
-  QUIC_EXPORT_PRIVATE friend std::ostream& operator<<(
+  QUICHE_EXPORT friend std::ostream& operator<<(
       std::ostream& os, const QuicPathValidationContext& context);
 
   QuicSocketAddress self_address_;
@@ -80,13 +80,13 @@
 
 // Used to validate a path by sending up to 3 PATH_CHALLENGE frames before
 // declaring a path validation failure.
-class QUIC_EXPORT_PRIVATE QuicPathValidator {
+class QUICHE_EXPORT QuicPathValidator {
  public:
   static const uint16_t kMaxRetryTimes = 2;
 
   // Used to write PATH_CHALLENGE on the path to be validated and to get retry
   // timeout.
-  class QUIC_EXPORT_PRIVATE SendDelegate {
+  class QUICHE_EXPORT SendDelegate {
    public:
     virtual ~SendDelegate() = default;
 
@@ -108,7 +108,7 @@
   // Handles the validation result.
   // TODO(danzh) consider to simplify this interface and its life time to
   // outlive a validation.
-  class QUIC_EXPORT_PRIVATE ResultDelegate {
+  class QUICHE_EXPORT ResultDelegate {
    public:
     virtual ~ResultDelegate() = default;
 
@@ -171,7 +171,7 @@
 
   void ResetPathValidation();
 
-  struct QUIC_NO_EXPORT ProbingData {
+  struct QUICHE_EXPORT ProbingData {
     explicit ProbingData(QuicTime send_time) : send_time(send_time) {}
     QuicPathFrameBuffer frame_buffer;
     QuicTime send_time;
diff --git a/quiche/quic/core/quic_ping_manager.h b/quiche/quic/core/quic_ping_manager.h
index d88dac2..4b9b536 100644
--- a/quiche/quic/core/quic_ping_manager.h
+++ b/quiche/quic/core/quic_ping_manager.h
@@ -24,10 +24,10 @@
 // connection alive.
 // 2) retransmittable-on-wire. When alarm fires, send packets to detect path
 // degrading (used in IP/port migrations).
-class QUIC_EXPORT_PRIVATE QuicPingManager {
+class QUICHE_EXPORT QuicPingManager {
  public:
   // Interface that get notified when |alarm_| fires.
-  class QUIC_EXPORT_PRIVATE Delegate {
+  class QUICHE_EXPORT Delegate {
    public:
     virtual ~Delegate() {}
 
diff --git a/quiche/quic/core/quic_process_packet_interface.h b/quiche/quic/core/quic_process_packet_interface.h
index 30bd071..e2c4136 100644
--- a/quiche/quic/core/quic_process_packet_interface.h
+++ b/quiche/quic/core/quic_process_packet_interface.h
@@ -11,7 +11,7 @@
 namespace quic {
 
 // A class to process each incoming packet.
-class QUIC_NO_EXPORT ProcessPacketInterface {
+class QUICHE_EXPORT ProcessPacketInterface {
  public:
   virtual ~ProcessPacketInterface() {}
   virtual void ProcessPacket(const QuicSocketAddress& self_address,
diff --git a/quiche/quic/core/quic_received_packet_manager.h b/quiche/quic/core/quic_received_packet_manager.h
index d16d37d..1d24651 100644
--- a/quiche/quic/core/quic_received_packet_manager.h
+++ b/quiche/quic/core/quic_received_packet_manager.h
@@ -27,7 +27,7 @@
 struct QuicConnectionStats;
 
 // Records all received packets by a connection.
-class QUIC_EXPORT_PRIVATE QuicReceivedPacketManager {
+class QUICHE_EXPORT QuicReceivedPacketManager {
  public:
   QuicReceivedPacketManager();
   explicit QuicReceivedPacketManager(QuicConnectionStats* stats);
diff --git a/quiche/quic/core/quic_sent_packet_manager.h b/quiche/quic/core/quic_sent_packet_manager.h
index c96d260..133b7ae 100644
--- a/quiche/quic/core/quic_sent_packet_manager.h
+++ b/quiche/quic/core/quic_sent_packet_manager.h
@@ -45,14 +45,14 @@
 // retransmittable data associated with each packet. If a packet is
 // retransmitted, it will keep track of each version of a packet so that if a
 // previous transmission is acked, the data will not be retransmitted.
-class QUIC_EXPORT_PRIVATE QuicSentPacketManager {
+class QUICHE_EXPORT QuicSentPacketManager {
  public:
   // Interface which gets callbacks from the QuicSentPacketManager at
   // interesting points.  Implementations must not mutate the state of
   // the packet manager or connection as a result of these callbacks.
-  class QUIC_EXPORT_PRIVATE DebugDelegate {
+  class QUICHE_EXPORT DebugDelegate {
    public:
-    struct QUIC_EXPORT_PRIVATE SendParameters {
+    struct QUICHE_EXPORT SendParameters {
       CongestionControlType congestion_control_type;
       bool use_pacing;
       QuicPacketCount initial_congestion_window;
@@ -98,7 +98,7 @@
   // Interface which gets callbacks from the QuicSentPacketManager when
   // network-related state changes. Implementations must not mutate the
   // state of the packet manager as a result of these callbacks.
-  class QUIC_EXPORT_PRIVATE NetworkChangeVisitor {
+  class QUICHE_EXPORT NetworkChangeVisitor {
    public:
     virtual ~NetworkChangeVisitor() {}
 
diff --git a/quiche/quic/core/quic_server_id.h b/quiche/quic/core/quic_server_id.h
index 51d055b..ecbf3aa 100644
--- a/quiche/quic/core/quic_server_id.h
+++ b/quiche/quic/core/quic_server_id.h
@@ -17,7 +17,7 @@
 
 // The id used to identify sessions. Includes the hostname, port, scheme and
 // privacy_mode.
-class QUIC_EXPORT_PRIVATE QuicServerId {
+class QUICHE_EXPORT QuicServerId {
  public:
   // Attempts to parse a QuicServerId from a "host:port" string. Returns nullopt
   // if input could not be parsed. Requires input to contain both host and port
diff --git a/quiche/quic/core/quic_session.h b/quiche/quic/core/quic_session.h
index a518091..79b7396 100644
--- a/quiche/quic/core/quic_session.h
+++ b/quiche/quic/core/quic_session.h
@@ -59,7 +59,7 @@
 class QuicSessionPeer;
 }  // namespace test
 
-class QUIC_EXPORT_PRIVATE QuicSession
+class QUICHE_EXPORT QuicSession
     : public QuicConnectionVisitorInterface,
       public SessionNotifierInterface,
       public QuicStreamFrameDataProducer,
@@ -74,7 +74,7 @@
   // TODO(danzh): split this visitor to separate visitors for client and server
   // respectively as not all methods in this class are interesting to both
   // perspectives.
-  class QUIC_EXPORT_PRIVATE Visitor {
+  class QUICHE_EXPORT Visitor {
    public:
     virtual ~Visitor() {}
 
@@ -417,7 +417,7 @@
   // and ResultDelegate to react upon the validation result.
   // Example implementations of these for path validation for connection
   // migration could be:
-  //  class QUIC_EXPORT_PRIVATE PathMigrationContext
+  //  class QUICHE_EXPORT PathMigrationContext
   //      : public QuicPathValidationContext {
   //   public:
   //    PathMigrationContext(std::unique_ptr<QuicPacketWriter> writer,
diff --git a/quiche/quic/core/quic_socket_address_coder.h b/quiche/quic/core/quic_socket_address_coder.h
index b56ee6a..aaec5f4 100644
--- a/quiche/quic/core/quic_socket_address_coder.h
+++ b/quiche/quic/core/quic_socket_address_coder.h
@@ -17,7 +17,7 @@
 // Serializes and parses a socket address (IP address and port), to be used in
 // the kCADR tag in the ServerHello handshake message and the Public Reset
 // packet.
-class QUIC_EXPORT_PRIVATE QuicSocketAddressCoder {
+class QUICHE_EXPORT QuicSocketAddressCoder {
  public:
   QuicSocketAddressCoder();
   explicit QuicSocketAddressCoder(const QuicSocketAddress& address);
diff --git a/quiche/quic/core/quic_stream.h b/quiche/quic/core/quic_stream.h
index e4d1463..69abe7d 100644
--- a/quiche/quic/core/quic_stream.h
+++ b/quiche/quic/core/quic_stream.h
@@ -50,7 +50,7 @@
 class QuicStream;
 
 // Buffers frames for a stream until the first byte of that frame arrives.
-class QUIC_EXPORT_PRIVATE PendingStream
+class QUICHE_EXPORT PendingStream
     : public QuicStreamSequencer::StreamInterface {
  public:
   PendingStream(QuicStreamId id, QuicSession* session);
@@ -135,8 +135,7 @@
   absl::optional<QuicResetStreamError> stop_sending_error_code_;
 };
 
-class QUIC_EXPORT_PRIVATE QuicStream
-    : public QuicStreamSequencer::StreamInterface {
+class QUICHE_EXPORT QuicStream : public QuicStreamSequencer::StreamInterface {
  public:
   // Creates a new stream with stream_id |id| associated with |session|. If
   // |is_static| is true, then the stream will be given precedence
diff --git a/quiche/quic/core/quic_stream_frame_data_producer.h b/quiche/quic/core/quic_stream_frame_data_producer.h
index 5dc12b7..56ae622 100644
--- a/quiche/quic/core/quic_stream_frame_data_producer.h
+++ b/quiche/quic/core/quic_stream_frame_data_producer.h
@@ -12,7 +12,7 @@
 class QuicDataWriter;
 
 // Pure virtual class to retrieve stream data.
-class QUIC_EXPORT_PRIVATE QuicStreamFrameDataProducer {
+class QUICHE_EXPORT QuicStreamFrameDataProducer {
  public:
   virtual ~QuicStreamFrameDataProducer() {}
 
diff --git a/quiche/quic/core/quic_stream_id_manager.h b/quiche/quic/core/quic_stream_id_manager.h
index eaad296..45c7666 100644
--- a/quiche/quic/core/quic_stream_id_manager.h
+++ b/quiche/quic/core/quic_stream_id_manager.h
@@ -19,9 +19,9 @@
 }  // namespace test
 
 // This class manages the stream ids for IETF QUIC.
-class QUIC_EXPORT_PRIVATE QuicStreamIdManager {
+class QUICHE_EXPORT QuicStreamIdManager {
  public:
-  class QUIC_EXPORT_PRIVATE DelegateInterface {
+  class QUICHE_EXPORT DelegateInterface {
    public:
     virtual ~DelegateInterface() = default;
 
diff --git a/quiche/quic/core/quic_stream_send_buffer.h b/quiche/quic/core/quic_stream_send_buffer.h
index b74968a..b892cdf 100644
--- a/quiche/quic/core/quic_stream_send_buffer.h
+++ b/quiche/quic/core/quic_stream_send_buffer.h
@@ -26,7 +26,7 @@
 // contiguous memory space. Please note, BufferedSlice is constructed when
 // stream data is saved in send buffer and is removed when stream data is fully
 // acked. It is move-only.
-struct QUIC_EXPORT_PRIVATE BufferedSlice {
+struct QUICHE_EXPORT BufferedSlice {
   BufferedSlice(quiche::QuicheMemSlice mem_slice, QuicStreamOffset offset);
   BufferedSlice(BufferedSlice&& other);
   BufferedSlice& operator=(BufferedSlice&& other);
@@ -44,7 +44,7 @@
   QuicStreamOffset offset;
 };
 
-struct QUIC_EXPORT_PRIVATE StreamPendingRetransmission {
+struct QUICHE_EXPORT StreamPendingRetransmission {
   constexpr StreamPendingRetransmission(QuicStreamOffset offset,
                                         QuicByteCount length)
       : offset(offset), length(length) {}
@@ -61,7 +61,7 @@
 // are added to the tail of the list. Data slices are removed from the head of
 // the list when they get fully acked. Stream data can be retrieved and acked
 // across slice boundaries.
-class QUIC_EXPORT_PRIVATE QuicStreamSendBuffer {
+class QUICHE_EXPORT QuicStreamSendBuffer {
  public:
   explicit QuicStreamSendBuffer(quiche::QuicheBufferAllocator* allocator);
   QuicStreamSendBuffer(const QuicStreamSendBuffer& other) = delete;
diff --git a/quiche/quic/core/quic_stream_sequencer.h b/quiche/quic/core/quic_stream_sequencer.h
index f0e3ab3..2d5bfcf 100644
--- a/quiche/quic/core/quic_stream_sequencer.h
+++ b/quiche/quic/core/quic_stream_sequencer.h
@@ -22,10 +22,10 @@
 
 // Buffers frames until we have something which can be passed
 // up to the next layer.
-class QUIC_EXPORT_PRIVATE QuicStreamSequencer final {
+class QUICHE_EXPORT QuicStreamSequencer final {
  public:
   // Interface that thie Sequencer uses to communicate with the Stream.
-  class QUIC_EXPORT_PRIVATE StreamInterface {
+  class QUICHE_EXPORT StreamInterface {
    public:
     virtual ~StreamInterface() = default;
 
diff --git a/quiche/quic/core/quic_stream_sequencer_buffer.h b/quiche/quic/core/quic_stream_sequencer_buffer.h
index 9b36ee1..2db24bc 100644
--- a/quiche/quic/core/quic_stream_sequencer_buffer.h
+++ b/quiche/quic/core/quic_stream_sequencer_buffer.h
@@ -77,7 +77,7 @@
 class QuicStreamSequencerBufferPeer;
 }  // namespace test
 
-class QUIC_EXPORT_PRIVATE QuicStreamSequencerBuffer {
+class QUICHE_EXPORT QuicStreamSequencerBuffer {
  public:
   // Size of blocks used by this buffer.
   // Choose 8K to make block large enough to hold multiple frames, each of
@@ -85,7 +85,7 @@
   static const size_t kBlockSizeBytes = 8 * 1024;  // 8KB
 
   // The basic storage block used by this buffer.
-  struct QUIC_EXPORT_PRIVATE BufferBlock {
+  struct QUICHE_EXPORT BufferBlock {
     char buffer[kBlockSizeBytes];
   };
 
diff --git a/quiche/quic/core/quic_sustained_bandwidth_recorder.h b/quiche/quic/core/quic_sustained_bandwidth_recorder.h
index 63ed6cb..e0231e6 100644
--- a/quiche/quic/core/quic_sustained_bandwidth_recorder.h
+++ b/quiche/quic/core/quic_sustained_bandwidth_recorder.h
@@ -22,7 +22,7 @@
 // to the client in a server config update message. A sustained bandwidth
 // estimate is only marked as valid if the QuicSustainedBandwidthRecorder has
 // been given uninterrupted reliable estimates over a certain period of time.
-class QUIC_EXPORT_PRIVATE QuicSustainedBandwidthRecorder {
+class QUICHE_EXPORT QuicSustainedBandwidthRecorder {
  public:
   QuicSustainedBandwidthRecorder();
   QuicSustainedBandwidthRecorder(const QuicSustainedBandwidthRecorder&) =
diff --git a/quiche/quic/core/quic_syscall_wrapper.h b/quiche/quic/core/quic_syscall_wrapper.h
index 4f4ffb0..ea90cc3 100644
--- a/quiche/quic/core/quic_syscall_wrapper.h
+++ b/quiche/quic/core/quic_syscall_wrapper.h
@@ -14,7 +14,7 @@
 namespace quic {
 
 // QuicSyscallWrapper is a pass-through proxy to the real syscalls.
-class QUIC_EXPORT_PRIVATE QuicSyscallWrapper {
+class QUICHE_EXPORT QuicSyscallWrapper {
  public:
   virtual ~QuicSyscallWrapper() = default;
 
@@ -32,7 +32,7 @@
 
 // ScopedGlobalSyscallWrapperOverride changes the global QuicSyscallWrapper
 // during its lifetime, for testing.
-class QUIC_EXPORT_PRIVATE ScopedGlobalSyscallWrapperOverride {
+class QUICHE_EXPORT ScopedGlobalSyscallWrapperOverride {
  public:
   explicit ScopedGlobalSyscallWrapperOverride(
       QuicSyscallWrapper* wrapper_in_scope);
diff --git a/quiche/quic/core/quic_tag.h b/quiche/quic/core/quic_tag.h
index 17c5968..f130a57 100644
--- a/quiche/quic/core/quic_tag.h
+++ b/quiche/quic/core/quic_tag.h
@@ -29,38 +29,35 @@
 
 // MakeQuicTag returns a value given the four bytes. For example:
 //   MakeQuicTag('C', 'H', 'L', 'O');
-QUIC_EXPORT_PRIVATE QuicTag MakeQuicTag(uint8_t a, uint8_t b, uint8_t c,
-                                        uint8_t d);
+QUICHE_EXPORT QuicTag MakeQuicTag(uint8_t a, uint8_t b, uint8_t c, uint8_t d);
 
 // Returns true if |tag_vector| contains |tag|.
-QUIC_EXPORT_PRIVATE bool ContainsQuicTag(const QuicTagVector& tag_vector,
-                                         QuicTag tag);
+QUICHE_EXPORT bool ContainsQuicTag(const QuicTagVector& tag_vector,
+                                   QuicTag tag);
 
 // Sets |out_result| to the first tag in |our_tags| that is also in |their_tags|
 // and returns true. If there is no intersection it returns false.
 //
 // If |out_index| is non-nullptr and a match is found then the index of that
 // match in |their_tags| is written to |out_index|.
-QUIC_EXPORT_PRIVATE bool FindMutualQuicTag(const QuicTagVector& our_tags,
-                                           const QuicTagVector& their_tags,
-                                           QuicTag* out_result,
-                                           size_t* out_index);
+QUICHE_EXPORT bool FindMutualQuicTag(const QuicTagVector& our_tags,
+                                     const QuicTagVector& their_tags,
+                                     QuicTag* out_result, size_t* out_index);
 
 // A utility function that converts a tag to a string. It will try to maintain
 // the human friendly name if possible (i.e. kABCD -> "ABCD"), or will just
 // treat it as a number if not.
-QUIC_EXPORT_PRIVATE std::string QuicTagToString(QuicTag tag);
+QUICHE_EXPORT std::string QuicTagToString(QuicTag tag);
 
 // Utility function that converts a string of the form "ABCD" to its
 // corresponding QuicTag. Note that tags that are less than four characters
 // long are right-padded with zeroes. Tags that contain non-ASCII characters
 // are represented as 8-character-long hexadecimal strings.
-QUIC_EXPORT_PRIVATE QuicTag ParseQuicTag(absl::string_view tag_string);
+QUICHE_EXPORT QuicTag ParseQuicTag(absl::string_view tag_string);
 
 // Utility function that converts a string of the form "ABCD,EFGH" to a vector
 // of the form {kABCD,kEFGH}. Note the caveats on ParseQuicTag.
-QUIC_EXPORT_PRIVATE QuicTagVector
-ParseQuicTagVector(absl::string_view tags_string);
+QUICHE_EXPORT QuicTagVector ParseQuicTagVector(absl::string_view tags_string);
 
 }  // namespace quic
 
diff --git a/quiche/quic/core/quic_time.h b/quiche/quic/core/quic_time.h
index ddf0307..46ee1a1 100644
--- a/quiche/quic/core/quic_time.h
+++ b/quiche/quic/core/quic_time.h
@@ -23,7 +23,7 @@
 // a number of microseconds. QUIC does not use absl::Duration, since the Abseil
 // type is 128-bit, which would adversely affect certain performance-sensitive
 // QUIC data structures.
-class QUIC_EXPORT_PRIVATE QuicTimeDelta {
+class QUICHE_EXPORT QuicTimeDelta {
  public:
   // Creates a QuicTimeDelta from an absl::Duration. Note that this inherently
   // loses precision, since absl::Duration is nanoseconds, and QuicTimeDelta is
@@ -111,7 +111,7 @@
 // usually either a Unix timestamp or a timestamp returned by the
 // platform-specific monotonic clock. QuicClock has a method to convert QuicTime
 // to the wall time.
-class QUIC_EXPORT_PRIVATE QuicTime {
+class QUICHE_EXPORT QuicTime {
  public:
   using Delta = QuicTimeDelta;
 
@@ -156,7 +156,7 @@
 // A UNIX timestamp.
 //
 // TODO(vasilvv): evaluate whether this can be replaced with absl::Time.
-class QUIC_EXPORT_PRIVATE QuicWallTime {
+class QUICHE_EXPORT QuicWallTime {
  public:
   // FromUNIXSeconds constructs a QuicWallTime from a count of the seconds
   // since the UNIX epoch.
diff --git a/quiche/quic/core/quic_time_accumulator.h b/quiche/quic/core/quic_time_accumulator.h
index 480e797..51910b7 100644
--- a/quiche/quic/core/quic_time_accumulator.h
+++ b/quiche/quic/core/quic_time_accumulator.h
@@ -12,7 +12,7 @@
 namespace quic {
 
 // QuicTimeAccumulator accumulates elapsed times between Start(s) and Stop(s).
-class QUIC_EXPORT_PRIVATE QuicTimeAccumulator {
+class QUICHE_EXPORT QuicTimeAccumulator {
   // TODO(wub): Switch to a data member called kNotRunningSentinel after c++17.
   static constexpr QuicTime NotRunningSentinel() {
     return QuicTime::Infinite();
diff --git a/quiche/quic/core/quic_time_wait_list_manager.h b/quiche/quic/core/quic_time_wait_list_manager.h
index 676e15e..3fee798 100644
--- a/quiche/quic/core/quic_time_wait_list_manager.h
+++ b/quiche/quic/core/quic_time_wait_list_manager.h
@@ -31,7 +31,7 @@
 
 // TimeWaitConnectionInfo comprises information of a connection which is in the
 // time wait list.
-struct QUIC_NO_EXPORT TimeWaitConnectionInfo {
+struct QUICHE_EXPORT TimeWaitConnectionInfo {
   TimeWaitConnectionInfo(
       bool ietf_quic,
       std::vector<std::unique_ptr<QuicEncryptedPacket>>* termination_packets,
@@ -62,7 +62,7 @@
 // wait state.  After the connection_id expires its time wait period, a new
 // connection/session will be created if a packet is received for this
 // connection_id.
-class QUIC_NO_EXPORT QuicTimeWaitListManager
+class QUICHE_EXPORT QuicTimeWaitListManager
     : public QuicBlockedWriterInterface {
  public:
   // Specifies what the time wait list manager should do when processing packets
@@ -80,7 +80,7 @@
     DO_NOTHING,
   };
 
-  class QUIC_NO_EXPORT Visitor : public QuicSession::Visitor {
+  class QUICHE_EXPORT Visitor : public QuicSession::Visitor {
    public:
     // Called after the given connection is added to the time-wait list.
     virtual void OnConnectionAddedToTimeWaitList(
@@ -183,7 +183,7 @@
       QuicConnectionId connection_id) const;
 
   // Internal structure to store pending termination packets.
-  class QUIC_NO_EXPORT QueuedPacket {
+  class QUICHE_EXPORT QueuedPacket {
    public:
     QueuedPacket(const QuicSocketAddress& self_address,
                  const QuicSocketAddress& peer_address,
@@ -258,7 +258,7 @@
   // A map from a recently closed connection_id to the number of packets
   // received after the termination of the connection bound to the
   // connection_id.
-  struct QUIC_NO_EXPORT ConnectionIdData {
+  struct QUICHE_EXPORT ConnectionIdData {
     ConnectionIdData(int num_packets, QuicTime time_added,
                      TimeWaitAction action, TimeWaitConnectionInfo info);
 
diff --git a/quiche/quic/core/quic_trace_visitor.h b/quiche/quic/core/quic_trace_visitor.h
index 28e4d68..fd1bb47 100644
--- a/quiche/quic/core/quic_trace_visitor.h
+++ b/quiche/quic/core/quic_trace_visitor.h
@@ -14,7 +14,7 @@
 // Records a QUIC trace protocol buffer for a QuicConnection.  It's the
 // responsibility of the user of this visitor to process or store the resulting
 // trace, which can be accessed via trace().
-class QUIC_NO_EXPORT QuicTraceVisitor : public QuicConnectionDebugVisitor {
+class QUICHE_EXPORT QuicTraceVisitor : public QuicConnectionDebugVisitor {
  public:
   explicit QuicTraceVisitor(const QuicConnection* connection);
 
diff --git a/quiche/quic/core/quic_transmission_info.h b/quiche/quic/core/quic_transmission_info.h
index 2b81078..bc6d49b 100644
--- a/quiche/quic/core/quic_transmission_info.h
+++ b/quiche/quic/core/quic_transmission_info.h
@@ -15,7 +15,7 @@
 namespace quic {
 
 // Stores details of a single sent packet.
-struct QUIC_EXPORT_PRIVATE QuicTransmissionInfo {
+struct QUICHE_EXPORT QuicTransmissionInfo {
   // Used by STL when assigning into a map.
   QuicTransmissionInfo();
 
diff --git a/quiche/quic/core/quic_types.cc b/quiche/quic/core/quic_types.cc
index 3981256..168d699 100644
--- a/quiche/quic/core/quic_types.cc
+++ b/quiche/quic/core/quic_types.cc
@@ -440,8 +440,8 @@
   }
   return "(unknown)";
 }
-QUIC_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& os,
-                                             QuicPriorityType type) {
+QUICHE_EXPORT std::ostream& operator<<(std::ostream& os,
+                                       QuicPriorityType type) {
   os << QuicPriorityTypeToString(type);
   return os;
 }
diff --git a/quiche/quic/core/quic_types.h b/quiche/quic/core/quic_types.h
index 55183bb..e58d0d6 100644
--- a/quiche/quic/core/quic_types.h
+++ b/quiche/quic/core/quic_types.h
@@ -71,7 +71,7 @@
 using ApplicationState = std::vector<uint8_t>;
 
 // A struct for functions which consume data payloads and fins.
-struct QUIC_EXPORT_PRIVATE QuicConsumedData {
+struct QUICHE_EXPORT QuicConsumedData {
   constexpr QuicConsumedData(size_t bytes_consumed, bool fin_consumed)
       : bytes_consumed(bytes_consumed), fin_consumed(fin_consumed) {}
 
@@ -79,8 +79,8 @@
   // member causes this object to have padding bytes, which causes the
   // default gtest object printer to read uninitialize memory. So we need
   // to teach gtest how to print this object.
-  QUIC_EXPORT_PRIVATE friend std::ostream& operator<<(
-      std::ostream& os, const QuicConsumedData& s);
+  QUICHE_EXPORT friend std::ostream& operator<<(std::ostream& os,
+                                                const QuicConsumedData& s);
 
   // How many bytes were consumed.
   size_t bytes_consumed;
@@ -116,8 +116,8 @@
 };
 
 std::string HistogramEnumString(WriteStatus enum_value);
-QUIC_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& os,
-                                             const WriteStatus& status);
+QUICHE_EXPORT std::ostream& operator<<(std::ostream& os,
+                                       const WriteStatus& status);
 
 inline std::string HistogramEnumDescription(WriteStatus /*dummy*/) {
   return "status";
@@ -134,7 +134,7 @@
 
 // A struct used to return the result of write calls including either the number
 // of bytes written or the error code, depending upon the status.
-struct QUIC_EXPORT_PRIVATE WriteResult {
+struct QUICHE_EXPORT WriteResult {
   constexpr WriteResult(WriteStatus status, int bytes_written_or_error_code)
       : status(status), bytes_written(bytes_written_or_error_code) {}
 
@@ -155,8 +155,8 @@
     }
   }
 
-  QUIC_EXPORT_PRIVATE friend std::ostream& operator<<(std::ostream& os,
-                                                      const WriteResult& s);
+  QUICHE_EXPORT friend std::ostream& operator<<(std::ostream& os,
+                                                const WriteResult& s);
 
   WriteResult& set_batch_id(uint32_t new_batch_id) {
     batch_id = new_batch_id;
@@ -200,11 +200,11 @@
   LAST_TRANSMISSION_TYPE = ALL_INITIAL_RETRANSMISSION,
 };
 
-QUIC_EXPORT_PRIVATE std::string TransmissionTypeToString(
+QUICHE_EXPORT std::string TransmissionTypeToString(
     TransmissionType transmission_type);
 
-QUIC_EXPORT_PRIVATE std::ostream& operator<<(
-    std::ostream& os, TransmissionType transmission_type);
+QUICHE_EXPORT std::ostream& operator<<(std::ostream& os,
+                                       TransmissionType transmission_type);
 
 enum HasRetransmittableData : uint8_t {
   NO_RETRANSMITTABLE_DATA,
@@ -215,16 +215,16 @@
 
 enum class Perspective : uint8_t { IS_SERVER, IS_CLIENT };
 
-QUIC_EXPORT_PRIVATE std::string PerspectiveToString(Perspective perspective);
-QUIC_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& os,
-                                             const Perspective& perspective);
+QUICHE_EXPORT std::string PerspectiveToString(Perspective perspective);
+QUICHE_EXPORT std::ostream& operator<<(std::ostream& os,
+                                       const Perspective& perspective);
 
 // Describes whether a ConnectionClose was originated by the peer.
 enum class ConnectionCloseSource { FROM_PEER, FROM_SELF };
 
-QUIC_EXPORT_PRIVATE std::string ConnectionCloseSourceToString(
+QUICHE_EXPORT std::string ConnectionCloseSourceToString(
     ConnectionCloseSource connection_close_source);
-QUIC_EXPORT_PRIVATE std::ostream& operator<<(
+QUICHE_EXPORT std::ostream& operator<<(
     std::ostream& os, const ConnectionCloseSource& connection_close_source);
 
 // Should a connection be closed silently or not.
@@ -234,9 +234,9 @@
   SEND_CONNECTION_CLOSE_PACKET
 };
 
-QUIC_EXPORT_PRIVATE std::string ConnectionCloseBehaviorToString(
+QUICHE_EXPORT std::string ConnectionCloseBehaviorToString(
     ConnectionCloseBehavior connection_close_behavior);
-QUIC_EXPORT_PRIVATE std::ostream& operator<<(
+QUICHE_EXPORT std::ostream& operator<<(
     std::ostream& os, const ConnectionCloseBehavior& connection_close_behavior);
 
 enum QuicFrameType : uint8_t {
@@ -280,9 +280,9 @@
 };
 
 // Human-readable string suitable for logging.
-QUIC_EXPORT_PRIVATE std::string QuicFrameTypeToString(QuicFrameType t);
-QUIC_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& os,
-                                             const QuicFrameType& t);
+QUICHE_EXPORT std::string QuicFrameTypeToString(QuicFrameType t);
+QUICHE_EXPORT std::ostream& operator<<(std::ostream& os,
+                                       const QuicFrameType& t);
 
 // Ietf frame types. These are defined in the IETF QUIC Specification.
 // Explicit values are given in the enum so that we can be sure that
@@ -348,9 +348,9 @@
   // TODO(ianswett): Determine a proper value to replace this temporary value.
   IETF_ACK_RECEIVE_TIMESTAMPS = 0x22,
 };
-QUIC_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& os,
-                                             const QuicIetfFrameType& c);
-QUIC_EXPORT_PRIVATE std::string QuicIetfFrameTypeString(QuicIetfFrameType t);
+QUICHE_EXPORT std::ostream& operator<<(std::ostream& os,
+                                       const QuicIetfFrameType& c);
+QUICHE_EXPORT std::string QuicIetfFrameTypeString(QuicIetfFrameType t);
 
 // Masks for the bits that indicate the frame is a Stream frame vs the
 // bits used as flags.
@@ -450,7 +450,7 @@
   kBBRv2,
 };
 
-QUIC_EXPORT_PRIVATE std::string CongestionControlTypeToString(
+QUICHE_EXPORT std::string CongestionControlTypeToString(
     CongestionControlType cc_type);
 
 // EncryptionLevel enumerates the stages of encryption that a QUIC connection
@@ -470,10 +470,9 @@
   return ENCRYPTION_INITIAL <= level && level < NUM_ENCRYPTION_LEVELS;
 }
 
-QUIC_EXPORT_PRIVATE std::string EncryptionLevelToString(EncryptionLevel level);
+QUICHE_EXPORT std::string EncryptionLevelToString(EncryptionLevel level);
 
-QUIC_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& os,
-                                             EncryptionLevel level);
+QUICHE_EXPORT std::ostream& operator<<(std::ostream& os, EncryptionLevel level);
 
 // Enumeration of whether a server endpoint will request a client certificate,
 // and whether that endpoint requires a valid client certificate to establish a
@@ -484,11 +483,9 @@
   kRequire,  // Require clients to provide a valid certificate.
 };
 
-QUIC_EXPORT_PRIVATE absl::string_view ClientCertModeToString(
-    ClientCertMode mode);
+QUICHE_EXPORT absl::string_view ClientCertModeToString(ClientCertMode mode);
 
-QUIC_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& os,
-                                             ClientCertMode mode);
+QUICHE_EXPORT std::ostream& operator<<(std::ostream& os, ClientCertMode mode);
 
 enum AddressChangeType : uint8_t {
   // IP address and port remain unchanged.
@@ -507,11 +504,10 @@
   IPV6_TO_IPV6_CHANGE,
 };
 
-QUIC_EXPORT_PRIVATE std::string AddressChangeTypeToString(
-    AddressChangeType type);
+QUICHE_EXPORT std::string AddressChangeTypeToString(AddressChangeType type);
 
-QUIC_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& os,
-                                             AddressChangeType type);
+QUICHE_EXPORT std::ostream& operator<<(std::ostream& os,
+                                       AddressChangeType type);
 
 enum StreamSendingState {
   // Sender has more data to send on this stream.
@@ -558,11 +554,10 @@
   GOOGLE_QUIC_PACKET,
 };
 
-QUIC_EXPORT_PRIVATE std::string PacketHeaderFormatToString(
-    PacketHeaderFormat format);
+QUICHE_EXPORT std::string PacketHeaderFormatToString(PacketHeaderFormat format);
 
 // Information about a newly acknowledged packet.
-struct QUIC_EXPORT_PRIVATE AckedPacket {
+struct QUICHE_EXPORT AckedPacket {
   constexpr AckedPacket(QuicPacketNumber packet_number,
                         QuicPacketLength bytes_acked,
                         QuicTime receive_timestamp)
@@ -570,7 +565,7 @@
         bytes_acked(bytes_acked),
         receive_timestamp(receive_timestamp) {}
 
-  friend QUIC_EXPORT_PRIVATE std::ostream& operator<<(
+  friend QUICHE_EXPORT std::ostream& operator<<(
       std::ostream& os, const AckedPacket& acked_packet);
 
   QuicPacketNumber packet_number;
@@ -586,12 +581,12 @@
 using AckedPacketVector = absl::InlinedVector<AckedPacket, 2>;
 
 // Information about a newly lost packet.
-struct QUIC_EXPORT_PRIVATE LostPacket {
+struct QUICHE_EXPORT LostPacket {
   LostPacket(QuicPacketNumber packet_number, QuicPacketLength bytes_lost)
       : packet_number(packet_number), bytes_lost(bytes_lost) {}
 
-  friend QUIC_EXPORT_PRIVATE std::ostream& operator<<(
-      std::ostream& os, const LostPacket& lost_packet);
+  friend QUICHE_EXPORT std::ostream& operator<<(std::ostream& os,
+                                                const LostPacket& lost_packet);
 
   QuicPacketNumber packet_number;
   // Number of bytes sent in the packet that was lost.
@@ -612,8 +607,7 @@
   INVALID_PACKET_TYPE,
 };
 
-QUIC_EXPORT_PRIVATE std::string QuicLongHeaderTypeToString(
-    QuicLongHeaderType type);
+QUICHE_EXPORT std::string QuicLongHeaderTypeToString(QuicLongHeaderType type);
 
 enum QuicPacketHeaderTypeFlags : uint8_t {
   // Bit 2: Key phase bit for IETF QUIC short header packets.
@@ -647,27 +641,25 @@
                                   // reaches an invalid state.
 };
 
-QUIC_EXPORT_PRIVATE std::string MessageStatusToString(
-    MessageStatus message_status);
+QUICHE_EXPORT std::string MessageStatusToString(MessageStatus message_status);
 
 // Used to return the result of SendMessage calls
-struct QUIC_EXPORT_PRIVATE MessageResult {
+struct QUICHE_EXPORT MessageResult {
   MessageResult(MessageStatus status, QuicMessageId message_id);
 
   bool operator==(const MessageResult& other) const {
     return status == other.status && message_id == other.message_id;
   }
 
-  QUIC_EXPORT_PRIVATE friend std::ostream& operator<<(std::ostream& os,
-                                                      const MessageResult& mr);
+  QUICHE_EXPORT friend std::ostream& operator<<(std::ostream& os,
+                                                const MessageResult& mr);
 
   MessageStatus status;
   // Only valid when status is MESSAGE_STATUS_SUCCESS.
   QuicMessageId message_id;
 };
 
-QUIC_EXPORT_PRIVATE std::string MessageResultToString(
-    MessageResult message_result);
+QUICHE_EXPORT std::string MessageResultToString(MessageResult message_result);
 
 enum WriteStreamDataResult {
   WRITE_SUCCESS,
@@ -698,7 +690,7 @@
   NUM_PACKET_NUMBER_SPACES,
 };
 
-QUIC_EXPORT_PRIVATE std::string PacketNumberSpaceToString(
+QUICHE_EXPORT std::string PacketNumberSpaceToString(
     PacketNumberSpace packet_number_space);
 
 // Used to return the result of processing a received ACK frame.
@@ -730,11 +722,11 @@
   SEND_TO_WRITER,  // Send packet to writer.
 };
 
-QUIC_EXPORT_PRIVATE std::string SerializedPacketFateToString(
+QUICHE_EXPORT std::string SerializedPacketFateToString(
     SerializedPacketFate fate);
 
-QUIC_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& os,
-                                             const SerializedPacketFate fate);
+QUICHE_EXPORT std::ostream& operator<<(std::ostream& os,
+                                       const SerializedPacketFate fate);
 
 // There are three different forms of CONNECTION_CLOSE.
 enum QuicConnectionCloseType {
@@ -743,10 +735,10 @@
   IETF_QUIC_APPLICATION_CONNECTION_CLOSE = 2
 };
 
-QUIC_EXPORT_PRIVATE std::ostream& operator<<(
-    std::ostream& os, const QuicConnectionCloseType type);
+QUICHE_EXPORT std::ostream& operator<<(std::ostream& os,
+                                       const QuicConnectionCloseType type);
 
-QUIC_EXPORT_PRIVATE std::string QuicConnectionCloseTypeString(
+QUICHE_EXPORT std::string QuicConnectionCloseTypeString(
     QuicConnectionCloseType type);
 
 // Indicate handshake state of a connection.
@@ -770,7 +762,7 @@
   HANDSHAKE_CONFIRMED,
 };
 
-struct QUIC_NO_EXPORT NextReleaseTimeResult {
+struct QUICHE_EXPORT NextReleaseTimeResult {
   // The ideal release time of the packet being sent.
   QuicTime release_time;
   // Whether it is allowed to send the packet before release_time.
@@ -780,7 +772,7 @@
 // QuicPacketBuffer bundles a buffer and a function that releases it. Note
 // it does not assume ownership of buffer, i.e. it doesn't release the buffer on
 // destruction.
-struct QUIC_NO_EXPORT QuicPacketBuffer {
+struct QUICHE_EXPORT QuicPacketBuffer {
   QuicPacketBuffer() = default;
 
   QuicPacketBuffer(char* buffer,
@@ -792,7 +784,7 @@
 };
 
 // QuicOwnedPacketBuffer is a QuicPacketBuffer that assumes buffer ownership.
-struct QUIC_NO_EXPORT QuicOwnedPacketBuffer : public QuicPacketBuffer {
+struct QUICHE_EXPORT QuicOwnedPacketBuffer : public QuicPacketBuffer {
   QuicOwnedPacketBuffer(const QuicOwnedPacketBuffer&) = delete;
   QuicOwnedPacketBuffer& operator=(const QuicOwnedPacketBuffer&) = delete;
 
@@ -827,16 +819,16 @@
   kMaxValue = kLocalKeyUpdateLimitOverride,
 };
 
-QUIC_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& os,
-                                             const KeyUpdateReason reason);
+QUICHE_EXPORT std::ostream& operator<<(std::ostream& os,
+                                       const KeyUpdateReason reason);
 
-QUIC_EXPORT_PRIVATE std::string KeyUpdateReasonString(KeyUpdateReason reason);
+QUICHE_EXPORT std::string KeyUpdateReasonString(KeyUpdateReason reason);
 
 using QuicSignatureAlgorithmVector = absl::InlinedVector<uint16_t, 8>;
 
 // QuicSSLConfig contains configurations to be applied on a SSL object, which
 // overrides the configurations in SSL_CTX.
-struct QUIC_NO_EXPORT QuicSSLConfig {
+struct QUICHE_EXPORT QuicSSLConfig {
   // Whether TLS early data should be enabled. If not set, default to enabled.
   absl::optional<bool> early_data_enabled;
   // Whether TLS session tickets are supported. If not set, default to
@@ -858,7 +850,7 @@
 // QuicDelayedSSLConfig contains a subset of SSL config that can be applied
 // after BoringSSL's early select certificate callback. This overwrites all SSL
 // configs applied before cert selection.
-struct QUIC_NO_EXPORT QuicDelayedSSLConfig {
+struct QUICHE_EXPORT QuicDelayedSSLConfig {
   // Client certificate mode for mTLS support. Only used at server side.
   // absl::nullopt means do not change client certificate mode.
   absl::optional<ClientCertMode> client_cert_mode;
@@ -868,7 +860,7 @@
 
 // ParsedClientHello contains client hello information extracted from a fully
 // received client hello.
-struct QUIC_NO_EXPORT ParsedClientHello {
+struct QUICHE_EXPORT ParsedClientHello {
   std::string sni;                 // QUIC crypto and TLS.
   std::string uaid;                // QUIC crypto only.
   std::vector<std::string> alpns;  // QUIC crypto and TLS.
@@ -879,11 +871,11 @@
   bool early_data_attempted = false;  // TLS only.
 };
 
-QUIC_EXPORT_PRIVATE bool operator==(const ParsedClientHello& a,
-                                    const ParsedClientHello& b);
+QUICHE_EXPORT bool operator==(const ParsedClientHello& a,
+                              const ParsedClientHello& b);
 
-QUIC_EXPORT_PRIVATE std::ostream& operator<<(
-    std::ostream& os, const ParsedClientHello& parsed_chlo);
+QUICHE_EXPORT std::ostream& operator<<(std::ostream& os,
+                                       const ParsedClientHello& parsed_chlo);
 
 // The two bits in the IP header for Explicit Congestion Notification can take
 // one of four values.
@@ -907,7 +899,7 @@
 // This struct reports the Explicit Congestion Notification (ECN) contents of
 // the ACK_ECN frame. They are the cumulative number of QUIC packets received
 // for that codepoint in a given Packet Number Space.
-struct QUIC_EXPORT_PRIVATE QuicEcnCounts {
+struct QUICHE_EXPORT QuicEcnCounts {
   QuicEcnCounts() = default;
   QuicEcnCounts(QuicPacketCount ect0, QuicPacketCount ect1, QuicPacketCount ce)
       : ect0(ect0), ect1(ect1), ce(ce) {}
@@ -937,8 +929,7 @@
 };
 
 QUICHE_EXPORT std::string QuicPriorityTypeToString(QuicPriorityType type);
-QUIC_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& os,
-                                             QuicPriorityType type);
+QUICHE_EXPORT std::ostream& operator<<(std::ostream& os, QuicPriorityType type);
 
 }  // namespace quic
 
diff --git a/quiche/quic/core/quic_udp_socket.h b/quiche/quic/core/quic_udp_socket.h
index 2541fb0..404563f 100644
--- a/quiche/quic/core/quic_udp_socket.h
+++ b/quiche/quic/core/quic_udp_socket.h
@@ -47,7 +47,7 @@
 
 // BufferSpan points to an unowned buffer, copying this structure only copies
 // the pointer and length, not the buffer itself.
-struct QUIC_EXPORT_PRIVATE BufferSpan {
+struct QUICHE_EXPORT BufferSpan {
   BufferSpan(char* buffer, size_t buffer_len)
       : buffer(buffer), buffer_len(buffer_len) {}
 
@@ -61,7 +61,7 @@
 
 // QuicUdpPacketInfo contains per-packet information used for sending and
 // receiving.
-class QUIC_EXPORT_PRIVATE QuicUdpPacketInfo {
+class QUICHE_EXPORT QuicUdpPacketInfo {
  public:
   QuicUdpPacketInfoBitMask bitmask() const { return bitmask_; }
 
@@ -179,7 +179,7 @@
 // versions, the goal of QuicUdpSocketApi is to hide such differences.
 // We use non-static functions because it is easier to be mocked in tests when
 // needed.
-class QUIC_EXPORT_PRIVATE QuicUdpSocketApi {
+class QUICHE_EXPORT QuicUdpSocketApi {
  public:
   // Creates a non-blocking udp socket, sets the receive/send buffer and enable
   // receiving of self ip addresses on read.
@@ -215,7 +215,7 @@
   // Return true if |fd| is readable upon return.
   bool WaitUntilReadable(QuicUdpSocketFd fd, QuicTime::Delta timeout);
 
-  struct QUIC_EXPORT_PRIVATE ReadPacketResult {
+  struct QUICHE_EXPORT ReadPacketResult {
     bool ok = false;
     QuicUdpPacketInfo packet_info;
     BufferSpan packet_buffer;
diff --git a/quiche/quic/core/quic_unacked_packet_map.h b/quiche/quic/core/quic_unacked_packet_map.h
index 143fa5f..67ed28d 100644
--- a/quiche/quic/core/quic_unacked_packet_map.h
+++ b/quiche/quic/core/quic_unacked_packet_map.h
@@ -27,7 +27,7 @@
 // 1) Track retransmittable data, including multiple transmissions of frames.
 // 2) Track packets and bytes in flight for congestion control.
 // 3) Track sent time of packets to provide RTT measurements from acks.
-class QUIC_EXPORT_PRIVATE QuicUnackedPacketMap {
+class QUICHE_EXPORT QuicUnackedPacketMap {
  public:
   QuicUnackedPacketMap(Perspective perspective);
   QuicUnackedPacketMap(const QuicUnackedPacketMap&) = delete;
diff --git a/quiche/quic/core/quic_utils.h b/quiche/quic/core/quic_utils.h
index 4c3fdc9..761914e 100644
--- a/quiche/quic/core/quic_utils.h
+++ b/quiche/quic/core/quic_utils.h
@@ -29,7 +29,7 @@
 
 namespace quic {
 
-class QUIC_EXPORT_PRIVATE QuicUtils {
+class QUICHE_EXPORT QuicUtils {
  public:
   QuicUtils() = delete;
 
@@ -227,13 +227,13 @@
 QuicByteCount MemSliceSpanTotalSize(absl::Span<quiche::QuicheMemSlice> span);
 
 // Computes a SHA-256 hash and returns the raw bytes of the hash.
-QUIC_EXPORT_PRIVATE std::string RawSha256(absl::string_view input);
+QUICHE_EXPORT std::string RawSha256(absl::string_view input);
 
 // BitMask<Index, Mask> is a set of elements of type `Index` represented as a
 // bitmask of an underlying integer type `Mask` (uint64_t by default). The
 // underlying type has to be large enough to fit all possible values of `Index`.
 template <typename Index, typename Mask = uint64_t>
-class QUIC_EXPORT_PRIVATE BitMask {
+class QUICHE_EXPORT BitMask {
  public:
   explicit constexpr BitMask(std::initializer_list<Index> bits) {
     for (Index bit : bits) {
diff --git a/quiche/quic/core/quic_version_manager.h b/quiche/quic/core/quic_version_manager.h
index 5beee79..c6c983b 100644
--- a/quiche/quic/core/quic_version_manager.h
+++ b/quiche/quic/core/quic_version_manager.h
@@ -11,7 +11,7 @@
 namespace quic {
 
 // Used to generate filtered supported versions based on flags.
-class QUIC_EXPORT_PRIVATE QuicVersionManager {
+class QUICHE_EXPORT QuicVersionManager {
  public:
   // |supported_versions| should be sorted in the order of preference (typically
   // highest supported version to the lowest supported version).
diff --git a/quiche/quic/core/quic_versions.h b/quiche/quic/core/quic_versions.h
index 7cd31be..8958e33 100644
--- a/quiche/quic/core/quic_versions.h
+++ b/quiche/quic/core/quic_versions.h
@@ -140,7 +140,7 @@
 
 // Helper function which translates from a QuicTransportVersion to a string.
 // Returns strings corresponding to enum names (e.g. QUIC_VERSION_6).
-QUIC_EXPORT_PRIVATE std::string QuicVersionToString(
+QUICHE_EXPORT std::string QuicVersionToString(
     QuicTransportVersion transport_version);
 
 // The crypto handshake protocols that can be used with QUIC.
@@ -153,12 +153,12 @@
 };
 
 // Helper function which translates from a HandshakeProtocol to a string.
-QUIC_EXPORT_PRIVATE std::string HandshakeProtocolToString(
+QUICHE_EXPORT std::string HandshakeProtocolToString(
     HandshakeProtocol handshake_protocol);
 
 // Returns whether |transport_version| uses CRYPTO frames for the handshake
 // instead of stream 1.
-QUIC_EXPORT_PRIVATE constexpr bool QuicVersionUsesCryptoFrames(
+QUICHE_EXPORT constexpr bool QuicVersionUsesCryptoFrames(
     QuicTransportVersion transport_version) {
   // CRYPTO frames were added in version 48.
   return transport_version > QUIC_VERSION_46;
@@ -168,7 +168,7 @@
 // version is allowed. For example, {PROTOCOL_TLS1_3, QUIC_VERSION_46} is NOT
 // allowed as TLS requires crypto frames which v46 does not support. Note that
 // UnsupportedQuicVersion is a valid version.
-QUIC_EXPORT_PRIVATE constexpr bool ParsedQuicVersionIsValid(
+QUICHE_EXPORT constexpr bool ParsedQuicVersionIsValid(
     HandshakeProtocol handshake_protocol,
     QuicTransportVersion transport_version) {
   bool transport_version_is_valid = false;
@@ -209,7 +209,7 @@
 
 // A parsed QUIC version label which determines that handshake protocol
 // and the transport version.
-struct QUIC_EXPORT_PRIVATE ParsedQuicVersion {
+struct QUICHE_EXPORT ParsedQuicVersion {
   HandshakeProtocol handshake_protocol;
   QuicTransportVersion transport_version;
 
@@ -368,17 +368,17 @@
   bool AlpnDeferToRFCv1() const;
 };
 
-QUIC_EXPORT_PRIVATE ParsedQuicVersion UnsupportedQuicVersion();
+QUICHE_EXPORT ParsedQuicVersion UnsupportedQuicVersion();
 
-QUIC_EXPORT_PRIVATE ParsedQuicVersion QuicVersionReservedForNegotiation();
+QUICHE_EXPORT ParsedQuicVersion QuicVersionReservedForNegotiation();
 
-QUIC_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& os,
-                                             const ParsedQuicVersion& version);
+QUICHE_EXPORT std::ostream& operator<<(std::ostream& os,
+                                       const ParsedQuicVersion& version);
 
 using ParsedQuicVersionVector = std::vector<ParsedQuicVersion>;
 
-QUIC_EXPORT_PRIVATE std::ostream& operator<<(
-    std::ostream& os, const ParsedQuicVersionVector& versions);
+QUICHE_EXPORT std::ostream& operator<<(std::ostream& os,
+                                       const ParsedQuicVersionVector& versions);
 
 // Representation of the on-the-wire QUIC version number. Will be written/read
 // to the wire in network-byte-order.
@@ -387,10 +387,10 @@
 
 // Constructs a version label from the 4 bytes such that the on-the-wire
 // order will be: d, c, b, a.
-QUIC_EXPORT_PRIVATE QuicVersionLabel MakeVersionLabel(uint8_t a, uint8_t b,
-                                                      uint8_t c, uint8_t d);
+QUICHE_EXPORT QuicVersionLabel MakeVersionLabel(uint8_t a, uint8_t b, uint8_t c,
+                                                uint8_t d);
 
-QUIC_EXPORT_PRIVATE std::ostream& operator<<(
+QUICHE_EXPORT std::ostream& operator<<(
     std::ostream& os, const QuicVersionLabelVector& version_labels);
 
 // This vector contains all crypto handshake protocols that are supported.
@@ -408,72 +408,70 @@
 
 using QuicTransportVersionVector = std::vector<QuicTransportVersion>;
 
-QUIC_EXPORT_PRIVATE std::ostream& operator<<(
+QUICHE_EXPORT std::ostream& operator<<(
     std::ostream& os, const QuicTransportVersionVector& transport_versions);
 
 // Returns a vector of supported QUIC versions.
-QUIC_EXPORT_PRIVATE ParsedQuicVersionVector AllSupportedVersions();
+QUICHE_EXPORT ParsedQuicVersionVector AllSupportedVersions();
 
 // Returns a vector of supported QUIC versions, with any versions disabled by
 // flags excluded.
-QUIC_EXPORT_PRIVATE ParsedQuicVersionVector CurrentSupportedVersions();
+QUICHE_EXPORT ParsedQuicVersionVector CurrentSupportedVersions();
 
 // Returns a vector of QUIC versions from |versions| which exclude any versions
 // which are disabled by flags.
-QUIC_EXPORT_PRIVATE ParsedQuicVersionVector
+QUICHE_EXPORT ParsedQuicVersionVector
 FilterSupportedVersions(ParsedQuicVersionVector versions);
 
 // Returns a subset of AllSupportedVersions() with
 // handshake_protocol == PROTOCOL_QUIC_CRYPTO, in the same order.
 // Deprecated; only to be used in components that do not yet support
 // PROTOCOL_TLS1_3.
-QUIC_EXPORT_PRIVATE ParsedQuicVersionVector
-AllSupportedVersionsWithQuicCrypto();
+QUICHE_EXPORT ParsedQuicVersionVector AllSupportedVersionsWithQuicCrypto();
 
 // Returns a subset of CurrentSupportedVersions() with
 // handshake_protocol == PROTOCOL_QUIC_CRYPTO, in the same order.
-QUIC_EXPORT_PRIVATE ParsedQuicVersionVector
-CurrentSupportedVersionsWithQuicCrypto();
+QUICHE_EXPORT ParsedQuicVersionVector CurrentSupportedVersionsWithQuicCrypto();
 
 // Returns a subset of AllSupportedVersions() with
 // handshake_protocol == PROTOCOL_TLS1_3, in the same order.
-QUIC_EXPORT_PRIVATE ParsedQuicVersionVector AllSupportedVersionsWithTls();
+QUICHE_EXPORT ParsedQuicVersionVector AllSupportedVersionsWithTls();
 
 // Returns a subset of CurrentSupportedVersions() with handshake_protocol ==
 // PROTOCOL_TLS1_3.
-QUIC_EXPORT_PRIVATE ParsedQuicVersionVector CurrentSupportedVersionsWithTls();
+QUICHE_EXPORT ParsedQuicVersionVector CurrentSupportedVersionsWithTls();
 
 // Returns a subset of CurrentSupportedVersions() using HTTP/3 at the HTTP
 // layer.
-QUIC_EXPORT_PRIVATE ParsedQuicVersionVector CurrentSupportedHttp3Versions();
+QUICHE_EXPORT ParsedQuicVersionVector CurrentSupportedHttp3Versions();
 
 // Returns QUIC version of |index| in result of |versions|. Returns
 // UnsupportedQuicVersion() if |index| is out of bounds.
-QUIC_EXPORT_PRIVATE ParsedQuicVersionVector
+QUICHE_EXPORT ParsedQuicVersionVector
 ParsedVersionOfIndex(const ParsedQuicVersionVector& versions, int index);
 
 // QuicVersionLabel is written to and read from the wire, but we prefer to use
 // the more readable ParsedQuicVersion at other levels.
 // Helper function which translates from a QuicVersionLabel to a
 // ParsedQuicVersion.
-QUIC_EXPORT_PRIVATE ParsedQuicVersion
+QUICHE_EXPORT ParsedQuicVersion
 ParseQuicVersionLabel(QuicVersionLabel version_label);
 
 // Helper function that translates from a QuicVersionLabelVector to a
 // ParsedQuicVersionVector.
-QUIC_EXPORT_PRIVATE ParsedQuicVersionVector
+QUICHE_EXPORT ParsedQuicVersionVector
 ParseQuicVersionLabelVector(const QuicVersionLabelVector& version_labels);
 
 // Parses a QUIC version string such as "Q043" or "T051". Also supports parsing
 // ALPN such as "h3-29" or "h3-Q050". For PROTOCOL_QUIC_CRYPTO versions, also
 // supports parsing numbers such as "46".
-QUIC_EXPORT_PRIVATE ParsedQuicVersion
+QUICHE_EXPORT ParsedQuicVersion
 ParseQuicVersionString(absl::string_view version_string);
 
 // Parses a comma-separated list of QUIC version strings. Supports parsing by
 // label, ALPN and numbers for PROTOCOL_QUIC_CRYPTO. Skips unknown versions.
 // For example: "h3-29,Q050,46".
-QUIC_EXPORT_PRIVATE ParsedQuicVersionVector
+QUICHE_EXPORT ParsedQuicVersionVector
 ParseQuicVersionVectorString(absl::string_view versions_string);
 
 // Constructs a QuicVersionLabel from the provided ParsedQuicVersion.
@@ -481,16 +479,16 @@
 // the more readable ParsedQuicVersion at other levels.
 // Helper function which translates from a ParsedQuicVersion to a
 // QuicVersionLabel. Returns 0 if |parsed_version| is unsupported.
-QUIC_EXPORT_PRIVATE QuicVersionLabel
+QUICHE_EXPORT QuicVersionLabel
 CreateQuicVersionLabel(ParsedQuicVersion parsed_version);
 
 // Constructs a QuicVersionLabelVector from the provided
 // ParsedQuicVersionVector.
-QUIC_EXPORT_PRIVATE QuicVersionLabelVector
+QUICHE_EXPORT QuicVersionLabelVector
 CreateQuicVersionLabelVector(const ParsedQuicVersionVector& versions);
 
 // Helper function which translates from a QuicVersionLabel to a string.
-QUIC_EXPORT_PRIVATE std::string QuicVersionLabelToString(
+QUICHE_EXPORT std::string QuicVersionLabelToString(
     QuicVersionLabel version_label);
 
 // Helper function which translates from a QuicVersionLabel string to a
@@ -499,19 +497,19 @@
 // "51303433" (the hex encoding of the Q064 version label). Returns
 // the ParsedQuicVersion which matches the label or UnsupportedQuicVersion()
 // otherwise.
-QUIC_EXPORT_PRIVATE ParsedQuicVersion
+QUICHE_EXPORT ParsedQuicVersion
 ParseQuicVersionLabelString(absl::string_view version_label_string);
 
 // Returns |separator|-separated list of string representations of
 // QuicVersionLabel values in the supplied |version_labels| vector. The values
 // after the (0-based) |skip_after_nth_version|'th are skipped.
-QUIC_EXPORT_PRIVATE std::string QuicVersionLabelVectorToString(
+QUICHE_EXPORT std::string QuicVersionLabelVectorToString(
     const QuicVersionLabelVector& version_labels, const std::string& separator,
     size_t skip_after_nth_version);
 
 // Returns comma separated list of string representations of QuicVersionLabel
 // values in the supplied |version_labels| vector.
-QUIC_EXPORT_PRIVATE inline std::string QuicVersionLabelVectorToString(
+QUICHE_EXPORT inline std::string QuicVersionLabelVectorToString(
     const QuicVersionLabelVector& version_labels) {
   return QuicVersionLabelVectorToString(version_labels, ",",
                                         std::numeric_limits<size_t>::max());
@@ -519,33 +517,32 @@
 
 // Helper function which translates from a ParsedQuicVersion to a string.
 // Returns strings corresponding to the on-the-wire tag.
-QUIC_EXPORT_PRIVATE std::string ParsedQuicVersionToString(
-    ParsedQuicVersion version);
+QUICHE_EXPORT std::string ParsedQuicVersionToString(ParsedQuicVersion version);
 
 // Returns a vector of supported QUIC transport versions. DEPRECATED, use
 // AllSupportedVersions instead.
-QUIC_EXPORT_PRIVATE QuicTransportVersionVector AllSupportedTransportVersions();
+QUICHE_EXPORT QuicTransportVersionVector AllSupportedTransportVersions();
 
 // Returns comma separated list of string representations of
 // QuicTransportVersion enum values in the supplied |versions| vector.
-QUIC_EXPORT_PRIVATE std::string QuicTransportVersionVectorToString(
+QUICHE_EXPORT std::string QuicTransportVersionVectorToString(
     const QuicTransportVersionVector& versions);
 
 // Returns comma separated list of string representations of ParsedQuicVersion
 // values in the supplied |versions| vector.
-QUIC_EXPORT_PRIVATE std::string ParsedQuicVersionVectorToString(
+QUICHE_EXPORT std::string ParsedQuicVersionVectorToString(
     const ParsedQuicVersionVector& versions);
 
 // Returns |separator|-separated list of string representations of
 // ParsedQuicVersion values in the supplied |versions| vector. The values after
 // the (0-based) |skip_after_nth_version|'th are skipped.
-QUIC_EXPORT_PRIVATE std::string ParsedQuicVersionVectorToString(
+QUICHE_EXPORT std::string ParsedQuicVersionVectorToString(
     const ParsedQuicVersionVector& versions, const std::string& separator,
     size_t skip_after_nth_version);
 
 // Returns comma separated list of string representations of ParsedQuicVersion
 // values in the supplied |versions| vector.
-QUIC_EXPORT_PRIVATE inline std::string ParsedQuicVersionVectorToString(
+QUICHE_EXPORT inline std::string ParsedQuicVersionVectorToString(
     const ParsedQuicVersionVector& versions) {
   return ParsedQuicVersionVectorToString(versions, ",",
                                          std::numeric_limits<size_t>::max());
@@ -560,14 +557,14 @@
 // * HEADERS frames are compressed using QPACK.
 // * DATA frame has frame headers.
 // * GOAWAY is moved to HTTP layer.
-QUIC_EXPORT_PRIVATE constexpr bool VersionUsesHttp3(
+QUICHE_EXPORT constexpr bool VersionUsesHttp3(
     QuicTransportVersion transport_version) {
   return transport_version >= QUIC_VERSION_IETF_DRAFT_29;
 }
 
 // Returns whether the transport_version supports the variable length integer
 // length field as defined by IETF QUIC draft-13 and later.
-QUIC_EXPORT_PRIVATE constexpr bool QuicVersionHasLongHeaderLengths(
+QUICHE_EXPORT constexpr bool QuicVersionHasLongHeaderLengths(
     QuicTransportVersion transport_version) {
   // Long header lengths were added in version 49.
   return transport_version > QUIC_VERSION_46;
@@ -575,7 +572,7 @@
 
 // Returns whether |transport_version| makes use of IETF QUIC
 // frames or not.
-QUIC_EXPORT_PRIVATE constexpr bool VersionHasIetfQuicFrames(
+QUICHE_EXPORT constexpr bool VersionHasIetfQuicFrames(
     QuicTransportVersion transport_version) {
   return VersionUsesHttp3(transport_version);
 }
@@ -583,41 +580,40 @@
 // Returns whether this version supports long header 8-bit encoded
 // connection ID lengths as described in draft-ietf-quic-invariants-06 and
 // draft-ietf-quic-transport-22.
-QUIC_EXPORT_PRIVATE bool VersionHasLengthPrefixedConnectionIds(
+QUICHE_EXPORT bool VersionHasLengthPrefixedConnectionIds(
     QuicTransportVersion transport_version);
 
 // Returns true if this version supports the old Google-style Alt-Svc
 // advertisement format.
-QUIC_EXPORT_PRIVATE bool VersionSupportsGoogleAltSvcFormat(
+QUICHE_EXPORT bool VersionSupportsGoogleAltSvcFormat(
     QuicTransportVersion transport_version);
 
 // Returns whether this version allows server connection ID lengths that are
 // not 64 bits.
-QUIC_EXPORT_PRIVATE bool VersionAllowsVariableLengthConnectionIds(
+QUICHE_EXPORT bool VersionAllowsVariableLengthConnectionIds(
     QuicTransportVersion transport_version);
 
 // Returns whether this version label supports long header 4-bit encoded
 // connection ID lengths as described in draft-ietf-quic-invariants-05 and
 // draft-ietf-quic-transport-21.
-QUIC_EXPORT_PRIVATE bool QuicVersionLabelUses4BitConnectionIdLength(
+QUICHE_EXPORT bool QuicVersionLabelUses4BitConnectionIdLength(
     QuicVersionLabel version_label);
 
 // Returns the ALPN string to use in TLS for this version of QUIC.
-QUIC_EXPORT_PRIVATE std::string AlpnForVersion(
-    ParsedQuicVersion parsed_version);
+QUICHE_EXPORT std::string AlpnForVersion(ParsedQuicVersion parsed_version);
 
 // Initializes support for the provided IETF draft version by setting the
 // correct flags.
-QUIC_EXPORT_PRIVATE void QuicVersionInitializeSupportForIetfDraft();
+QUICHE_EXPORT void QuicVersionInitializeSupportForIetfDraft();
 
 // Configures the flags required to enable support for this version of QUIC.
-QUIC_EXPORT_PRIVATE void QuicEnableVersion(const ParsedQuicVersion& version);
+QUICHE_EXPORT void QuicEnableVersion(const ParsedQuicVersion& version);
 
 // Configures the flags required to disable support for this version of QUIC.
-QUIC_EXPORT_PRIVATE void QuicDisableVersion(const ParsedQuicVersion& version);
+QUICHE_EXPORT void QuicDisableVersion(const ParsedQuicVersion& version);
 
 // Returns whether support for this version of QUIC is currently enabled.
-QUIC_EXPORT_PRIVATE bool QuicVersionIsEnabled(const ParsedQuicVersion& version);
+QUICHE_EXPORT bool QuicVersionIsEnabled(const ParsedQuicVersion& version);
 
 }  // namespace quic
 
diff --git a/quiche/quic/core/quic_write_blocked_list.h b/quiche/quic/core/quic_write_blocked_list.h
index 1c7f25a..3c3645f 100644
--- a/quiche/quic/core/quic_write_blocked_list.h
+++ b/quiche/quic/core/quic_write_blocked_list.h
@@ -75,7 +75,7 @@
 };
 
 // Default implementation of QuicWriteBlockedListInterface.
-class QUIC_EXPORT_PRIVATE QuicWriteBlockedList
+class QUICHE_EXPORT QuicWriteBlockedList
     : public QuicWriteBlockedListInterface {
  public:
   explicit QuicWriteBlockedList();
@@ -166,9 +166,9 @@
 
   // A StaticStreamCollection is a vector of <QuicStreamId, bool> pairs plus a
   // eagerly-computed number of blocked static streams.
-  class QUIC_EXPORT_PRIVATE StaticStreamCollection {
+  class QUICHE_EXPORT StaticStreamCollection {
    public:
-    struct QUIC_EXPORT_PRIVATE StreamIdBlockedPair {
+    struct QUICHE_EXPORT StreamIdBlockedPair {
       QuicStreamId id;
       bool is_blocked;
     };
diff --git a/quiche/quic/core/session_notifier_interface.h b/quiche/quic/core/session_notifier_interface.h
index ee4453a..fcf7937 100644
--- a/quiche/quic/core/session_notifier_interface.h
+++ b/quiche/quic/core/session_notifier_interface.h
@@ -12,7 +12,7 @@
 
 // Pure virtual class to be notified when a packet containing a frame is acked
 // or lost.
-class QUIC_EXPORT_PRIVATE SessionNotifierInterface {
+class QUICHE_EXPORT SessionNotifierInterface {
  public:
   virtual ~SessionNotifierInterface() {}
 
diff --git a/quiche/quic/core/stream_delegate_interface.h b/quiche/quic/core/stream_delegate_interface.h
index a5f03f0..5a89f82 100644
--- a/quiche/quic/core/stream_delegate_interface.h
+++ b/quiche/quic/core/stream_delegate_interface.h
@@ -17,7 +17,7 @@
 
 // Pure virtual class to get notified when particular QuicStream events
 // occurred.
-class QUIC_EXPORT_PRIVATE StreamDelegateInterface {
+class QUICHE_EXPORT StreamDelegateInterface {
  public:
   virtual ~StreamDelegateInterface() {}
 
diff --git a/quiche/quic/core/tls_chlo_extractor.h b/quiche/quic/core/tls_chlo_extractor.h
index f24023b..55b0142 100644
--- a/quiche/quic/core/tls_chlo_extractor.h
+++ b/quiche/quic/core/tls_chlo_extractor.h
@@ -26,7 +26,7 @@
 // then uses a QuicStreamSequencer to reassemble the contents of the crypto
 // stream, and implements QuicStreamSequencer::StreamInterface to access the
 // reassembled data.
-class QUIC_NO_EXPORT TlsChloExtractor
+class QUICHE_EXPORT TlsChloExtractor
     : public QuicFramerVisitorInterface,
       public QuicStreamSequencer::StreamInterface {
  public:
@@ -271,8 +271,8 @@
 };
 
 // Convenience method to facilitate logging TlsChloExtractor::State.
-QUIC_NO_EXPORT std::ostream& operator<<(std::ostream& os,
-                                        const TlsChloExtractor::State& state);
+QUICHE_EXPORT std::ostream& operator<<(std::ostream& os,
+                                       const TlsChloExtractor::State& state);
 
 }  // namespace quic
 
diff --git a/quiche/quic/core/tls_client_handshaker.h b/quiche/quic/core/tls_client_handshaker.h
index dd7e393..eaea623 100644
--- a/quiche/quic/core/tls_client_handshaker.h
+++ b/quiche/quic/core/tls_client_handshaker.h
@@ -23,7 +23,7 @@
 
 // An implementation of QuicCryptoClientStream::HandshakerInterface which uses
 // TLS 1.3 for the crypto handshake protocol.
-class QUIC_EXPORT_PRIVATE TlsClientHandshaker
+class QUICHE_EXPORT TlsClientHandshaker
     : public TlsHandshaker,
       public QuicCryptoClientStream::HandshakerInterface,
       public TlsClientConnection::Delegate {
diff --git a/quiche/quic/core/tls_handshaker.h b/quiche/quic/core/tls_handshaker.h
index 0c7aa5d..71bede1 100644
--- a/quiche/quic/core/tls_handshaker.h
+++ b/quiche/quic/core/tls_handshaker.h
@@ -26,8 +26,8 @@
 // provides functionality common to both the client and server, such as moving
 // messages between the TLS stack and the QUIC crypto stream, and handling
 // derivation of secrets.
-class QUIC_EXPORT_PRIVATE TlsHandshaker : public TlsConnection::Delegate,
-                                          public CryptoMessageParser {
+class QUICHE_EXPORT TlsHandshaker : public TlsConnection::Delegate,
+                                    public CryptoMessageParser {
  public:
   // TlsHandshaker does not take ownership of any of its arguments; they must
   // outlive the TlsHandshaker.
@@ -175,8 +175,7 @@
  private:
   // ProofVerifierCallbackImpl handles the result of an asynchronous certificate
   // verification operation.
-  class QUIC_EXPORT_PRIVATE ProofVerifierCallbackImpl
-      : public ProofVerifierCallback {
+  class QUICHE_EXPORT ProofVerifierCallbackImpl : public ProofVerifierCallback {
    public:
     explicit ProofVerifierCallbackImpl(TlsHandshaker* parent);
     ~ProofVerifierCallbackImpl() override;
diff --git a/quiche/quic/core/tls_server_handshaker.h b/quiche/quic/core/tls_server_handshaker.h
index 9863ea7..4506369 100644
--- a/quiche/quic/core/tls_server_handshaker.h
+++ b/quiche/quic/core/tls_server_handshaker.h
@@ -27,11 +27,10 @@
 
 // An implementation of QuicCryptoServerStreamBase which uses
 // TLS 1.3 for the crypto handshake protocol.
-class QUIC_EXPORT_PRIVATE TlsServerHandshaker
-    : public TlsHandshaker,
-      public TlsServerConnection::Delegate,
-      public ProofSourceHandleCallback,
-      public QuicCryptoServerStreamBase {
+class QUICHE_EXPORT TlsServerHandshaker : public TlsHandshaker,
+                                          public TlsServerConnection::Delegate,
+                                          public ProofSourceHandleCallback,
+                                          public QuicCryptoServerStreamBase {
  public:
   // |crypto_config| must outlive TlsServerHandshaker.
   TlsServerHandshaker(QuicSession* session,
@@ -194,8 +193,7 @@
   void SetIgnoreTicketOpen(bool value) { ignore_ticket_open_ = value; }
 
  private:
-  class QUIC_EXPORT_PRIVATE DecryptCallback
-      : public ProofSource::DecryptCallback {
+  class QUICHE_EXPORT DecryptCallback : public ProofSource::DecryptCallback {
    public:
     explicit DecryptCallback(TlsServerHandshaker* handshaker);
     void Run(std::vector<uint8_t> plaintext) override;
@@ -214,8 +212,7 @@
 
   // DefaultProofSourceHandle delegates all operations to the shared proof
   // source.
-  class QUIC_EXPORT_PRIVATE DefaultProofSourceHandle
-      : public ProofSourceHandle {
+  class QUICHE_EXPORT DefaultProofSourceHandle : public ProofSourceHandle {
    public:
     DefaultProofSourceHandle(TlsServerHandshaker* handshaker,
                              ProofSource* proof_source);
@@ -251,7 +248,7 @@
     ProofSourceHandleCallback* callback() override { return handshaker_; }
 
    private:
-    class QUIC_EXPORT_PRIVATE DefaultSignatureCallback
+    class QUICHE_EXPORT DefaultSignatureCallback
         : public ProofSource::SignatureCallback {
      public:
       explicit DefaultSignatureCallback(DefaultProofSourceHandle* handle)
@@ -291,7 +288,7 @@
     DefaultSignatureCallback* signature_callback_ = nullptr;
   };
 
-  struct QUIC_NO_EXPORT SetTransportParametersResult {
+  struct QUICHE_EXPORT SetTransportParametersResult {
     bool success = false;
     // Empty vector if QUIC transport params are not set successfully.
     std::vector<uint8_t> quic_transport_params;
@@ -308,7 +305,7 @@
   bool TransportParametersMatch(
       absl::Span<const uint8_t> serialized_params) const;
 
-  struct QUIC_NO_EXPORT SetApplicationSettingsResult {
+  struct QUICHE_EXPORT SetApplicationSettingsResult {
     bool success = false;
     // TODO(b/239676439): Change type to absl::optional<std::string> and make
     // sure SetApplicationSettings() returns nullopt if no ALPS data.
diff --git a/quiche/quic/core/uber_quic_stream_id_manager.h b/quiche/quic/core/uber_quic_stream_id_manager.h
index e6b73d0..7b836d4 100644
--- a/quiche/quic/core/uber_quic_stream_id_manager.h
+++ b/quiche/quic/core/uber_quic_stream_id_manager.h
@@ -19,7 +19,7 @@
 
 // This class comprises two QuicStreamIdManagers, which manage bidirectional and
 // unidirectional stream IDs, respectively.
-class QUIC_EXPORT_PRIVATE UberQuicStreamIdManager {
+class QUICHE_EXPORT UberQuicStreamIdManager {
  public:
   UberQuicStreamIdManager(
       Perspective perspective, ParsedQuicVersion version,
diff --git a/quiche/quic/core/uber_received_packet_manager.h b/quiche/quic/core/uber_received_packet_manager.h
index d4d35bc..7f4c7cc 100644
--- a/quiche/quic/core/uber_received_packet_manager.h
+++ b/quiche/quic/core/uber_received_packet_manager.h
@@ -13,7 +13,7 @@
 // This class comprises multiple received packet managers, one per packet number
 // space. Please note, if multiple packet number spaces is not supported, only
 // one received packet manager will be used.
-class QUIC_EXPORT_PRIVATE UberReceivedPacketManager {
+class QUICHE_EXPORT UberReceivedPacketManager {
  public:
   explicit UberReceivedPacketManager(QuicConnectionStats* stats);
   UberReceivedPacketManager(const UberReceivedPacketManager&) = delete;