Fix ODR violtions in quic/core

See https://abseil.io/tips/140

PiperOrigin-RevId: 600884321
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 0a945db..9162f62 100644
--- a/quiche/quic/core/congestion_control/tcp_cubic_sender_bytes.h
+++ b/quiche/quic/core/congestion_control/tcp_cubic_sender_bytes.h
@@ -25,7 +25,7 @@
 class RttStats;
 
 // Maximum window to allow when doing bandwidth resumption.
-const QuicPacketCount kMaxResumptionCongestionWindow = 200;
+inline constexpr QuicPacketCount kMaxResumptionCongestionWindow = 200;
 
 namespace test {
 class TcpCubicSenderBytesPeer;
diff --git a/quiche/quic/core/http/http_frames.h b/quiche/quic/core/http/http_frames.h
index 874dc10..5b72bb0 100644
--- a/quiche/quic/core/http/http_frames.h
+++ b/quiche/quic/core/http/http_frames.h
@@ -108,7 +108,7 @@
 // incoming 0xf0701 frames are treated as frames of unknown type.
 
 // Length of a priority frame's first byte.
-const QuicByteCount kPriorityFirstByteLength = 1;
+inline constexpr QuicByteCount kPriorityFirstByteLength = 1;
 
 struct QUICHE_EXPORT PriorityUpdateFrame {
   uint64_t prioritized_element_id = 0;
diff --git a/quiche/quic/core/quic_connection_id.h b/quiche/quic/core/quic_connection_id.h
index 6bf5cc4..b7f8b48 100644
--- a/quiche/quic/core/quic_connection_id.h
+++ b/quiche/quic/core/quic_connection_id.h
@@ -23,19 +23,19 @@
 
 // Maximum connection ID length supported by versions that use the encoding from
 // draft-ietf-quic-invariants-06.
-const uint8_t kQuicMaxConnectionIdWithLengthPrefixLength = 20;
+inline constexpr uint8_t kQuicMaxConnectionIdWithLengthPrefixLength = 20;
 
 // Maximum connection ID length supported by versions that use the encoding from
 // draft-ietf-quic-invariants-05.
-const uint8_t kQuicMaxConnectionId4BitLength = 18;
+inline constexpr uint8_t kQuicMaxConnectionId4BitLength = 18;
 
 // kQuicDefaultConnectionIdLength is the only supported length for QUIC
 // versions < v99, and is the default picked for all versions.
-const uint8_t kQuicDefaultConnectionIdLength = 8;
+inline constexpr uint8_t kQuicDefaultConnectionIdLength = 8;
 
 // According to the IETF spec, the initial server connection ID generated by
 // the client must be at least this long.
-const uint8_t kQuicMinimumInitialConnectionIdLength = 8;
+inline constexpr uint8_t kQuicMinimumInitialConnectionIdLength = 8;
 
 class QUICHE_EXPORT QuicConnectionId {
  public:
diff --git a/quiche/quic/core/quic_flow_controller.h b/quiche/quic/core/quic_flow_controller.h
index 8bd43c2..6091f59 100644
--- a/quiche/quic/core/quic_flow_controller.h
+++ b/quiche/quic/core/quic_flow_controller.h
@@ -19,7 +19,7 @@
 
 // How much larger the session flow control window needs to be relative to any
 // stream's flow control window.
-const float kSessionFlowControlMultiplier = 1.5;
+inline constexpr float kSessionFlowControlMultiplier = 1.5;
 
 class QUICHE_EXPORT QuicFlowControllerInterface {
  public:
diff --git a/quiche/quic/core/quic_framer.h b/quiche/quic/core/quic_framer.h
index 62c4ce8..432d052 100644
--- a/quiche/quic/core/quic_framer.h
+++ b/quiche/quic/core/quic_framer.h
@@ -32,37 +32,38 @@
 class QuicStreamFrameDataProducer;
 
 // Number of bytes reserved for the frame type preceding each frame.
-const size_t kQuicFrameTypeSize = 1;
+inline constexpr size_t kQuicFrameTypeSize = 1;
 // Number of bytes reserved for error code.
-const size_t kQuicErrorCodeSize = 4;
+inline constexpr size_t kQuicErrorCodeSize = 4;
 // Number of bytes reserved to denote the length of error details field.
-const size_t kQuicErrorDetailsLengthSize = 2;
+inline constexpr size_t kQuicErrorDetailsLengthSize = 2;
 
 // Maximum number of bytes reserved for stream id.
-const size_t kQuicMaxStreamIdSize = 4;
+inline constexpr size_t kQuicMaxStreamIdSize = 4;
 // Maximum number of bytes reserved for byte offset in stream frame.
-const size_t kQuicMaxStreamOffsetSize = 8;
+inline constexpr size_t kQuicMaxStreamOffsetSize = 8;
 // Number of bytes reserved to store payload length in stream frame.
-const size_t kQuicStreamPayloadLengthSize = 2;
+inline constexpr size_t kQuicStreamPayloadLengthSize = 2;
 // Number of bytes to reserve for IQ Error codes (for the Connection Close,
 // Application Close, and Reset Stream frames).
-const size_t kQuicIetfQuicErrorCodeSize = 2;
+inline constexpr size_t kQuicIetfQuicErrorCodeSize = 2;
 // Minimum size of the IETF QUIC Error Phrase's length field
-const size_t kIetfQuicMinErrorPhraseLengthSize = 1;
+inline constexpr size_t kIetfQuicMinErrorPhraseLengthSize = 1;
 
 // Size in bytes reserved for the delta time of the largest observed
 // packet number in ack frames.
-const size_t kQuicDeltaTimeLargestObservedSize = 2;
+inline constexpr size_t kQuicDeltaTimeLargestObservedSize = 2;
 // Size in bytes reserved for the number of received packets with timestamps.
-const size_t kQuicNumTimestampsSize = 1;
+inline constexpr size_t kQuicNumTimestampsSize = 1;
 // Size in bytes reserved for the number of missing packets in ack frames.
-const size_t kNumberOfNackRangesSize = 1;
+inline constexpr size_t kNumberOfNackRangesSize = 1;
 // Size in bytes reserved for the number of ack blocks in ack frames.
-const size_t kNumberOfAckBlocksSize = 1;
+inline constexpr size_t kNumberOfAckBlocksSize = 1;
 // Maximum number of missing packet ranges that can fit within an ack frame.
-const size_t kMaxNackRanges = (1 << (kNumberOfNackRangesSize * 8)) - 1;
+inline constexpr size_t kMaxNackRanges =
+    (1 << (kNumberOfNackRangesSize * 8)) - 1;
 // Maximum number of ack blocks that can fit within an ack frame.
-const size_t kMaxAckBlocks = (1 << (kNumberOfAckBlocksSize * 8)) - 1;
+inline constexpr size_t kMaxAckBlocks = (1 << (kNumberOfAckBlocksSize * 8)) - 1;
 
 // This class receives callbacks from the framer when packets
 // are processed.
diff --git a/quiche/quic/core/quic_linux_socket_utils.h b/quiche/quic/core/quic_linux_socket_utils.h
index a1e725b..a0e338d 100644
--- a/quiche/quic/core/quic_linux_socket_utils.h
+++ b/quiche/quic/core/quic_linux_socket_utils.h
@@ -44,20 +44,20 @@
 
 namespace quic {
 
-const int kCmsgSpaceForIpv4 = CMSG_SPACE(sizeof(in_pktinfo));
-const int kCmsgSpaceForIpv6 = CMSG_SPACE(sizeof(in6_pktinfo));
+inline constexpr int kCmsgSpaceForIpv4 = CMSG_SPACE(sizeof(in_pktinfo));
+inline constexpr int kCmsgSpaceForIpv6 = CMSG_SPACE(sizeof(in6_pktinfo));
 // kCmsgSpaceForIp should be big enough to hold both IPv4 and IPv6 packet info.
-const int kCmsgSpaceForIp = (kCmsgSpaceForIpv4 < kCmsgSpaceForIpv6)
-                                ? kCmsgSpaceForIpv6
-                                : kCmsgSpaceForIpv4;
+inline constexpr int kCmsgSpaceForIp = (kCmsgSpaceForIpv4 < kCmsgSpaceForIpv6)
+                                           ? kCmsgSpaceForIpv6
+                                           : kCmsgSpaceForIpv4;
 
-const int kCmsgSpaceForSegmentSize = CMSG_SPACE(sizeof(uint16_t));
+inline constexpr int kCmsgSpaceForSegmentSize = CMSG_SPACE(sizeof(uint16_t));
 
-const int kCmsgSpaceForTxTime = CMSG_SPACE(sizeof(uint64_t));
+inline constexpr int kCmsgSpaceForTxTime = CMSG_SPACE(sizeof(uint64_t));
 
-const int kCmsgSpaceForTTL = CMSG_SPACE(sizeof(int));
+inline constexpr int kCmsgSpaceForTTL = CMSG_SPACE(sizeof(int));
 
-const int kCmsgSpaceForTOS = CMSG_SPACE(sizeof(int));
+inline constexpr int kCmsgSpaceForTOS = CMSG_SPACE(sizeof(int));
 
 // QuicMsgHdr is used to build msghdr objects that can be used send packets via
 // ::sendmsg.
diff --git a/quiche/quic/core/quic_mtu_discovery.h b/quiche/quic/core/quic_mtu_discovery.h
index 68fbc6d..fe61640 100644
--- a/quiche/quic/core/quic_mtu_discovery.h
+++ b/quiche/quic/core/quic_mtu_discovery.h
@@ -14,10 +14,10 @@
 
 // The initial number of packets between MTU probes.  After each attempt the
 // number is doubled.
-const QuicPacketCount kPacketsBetweenMtuProbesBase = 100;
+inline constexpr QuicPacketCount kPacketsBetweenMtuProbesBase = 100;
 
 // The number of MTU probes that get sent before giving up.
-const size_t kMtuDiscoveryAttempts = 3;
+inline constexpr size_t kMtuDiscoveryAttempts = 3;
 
 // Ensure that exponential back-off does not result in an integer overflow.
 // The number of packets can be potentially capped, but that is not useful at
@@ -28,8 +28,8 @@
               "The initial number of packets between MTU probes is too high");
 
 // The increased packet size targeted when doing path MTU discovery.
-const QuicByteCount kMtuDiscoveryTargetPacketSizeHigh = 1400;
-const QuicByteCount kMtuDiscoveryTargetPacketSizeLow = 1380;
+inline constexpr QuicByteCount kMtuDiscoveryTargetPacketSizeHigh = 1400;
+inline constexpr QuicByteCount kMtuDiscoveryTargetPacketSizeLow = 1380;
 
 static_assert(kMtuDiscoveryTargetPacketSizeLow <= kMaxOutgoingPacketSize,
               "MTU discovery target is too large");
diff --git a/quiche/quic/core/quic_packet_reader.h b/quiche/quic/core/quic_packet_reader.h
index c994557..3b417f2 100644
--- a/quiche/quic/core/quic_packet_reader.h
+++ b/quiche/quic/core/quic_packet_reader.h
@@ -18,7 +18,7 @@
 namespace quic {
 
 // Read in larger batches to minimize recvmmsg overhead.
-const int kNumPacketsPerReadMmsgCall = 16;
+inline constexpr int kNumPacketsPerReadMmsgCall = 16;
 
 class QUICHE_EXPORT QuicPacketReader {
  public: