From 893b2253c5f9904c1aa5a88c4903d0237328c3ba Mon Sep 17 00:00:00 2001 From: Radoslaw Zarzynski Date: Thu, 14 Feb 2019 20:30:05 +0100 Subject: [PATCH] msg/async: switch to CRC32 for V2 preamble blocks. Signed-off-by: Radoslaw Zarzynski --- src/msg/async/ProtocolV2.cc | 23 ++++++----------------- 1 file changed, 6 insertions(+), 17 deletions(-) diff --git a/src/msg/async/ProtocolV2.cc b/src/msg/async/ProtocolV2.cc index 028e8dfc8d4..48a1d7d852e 100644 --- a/src/msg/async/ProtocolV2.cc +++ b/src/msg/async/ProtocolV2.cc @@ -46,17 +46,6 @@ const uint64_t msgr2_frame_assumed = using CtPtr = Ct *; -// NOTE: I guess this will be moved outside the ProtocolV2 soon. -// https://stackoverflow.com/q/48819797 -static std::uint16_t ceph_crc16c( - std::uint16_t crc, - unsigned char const* const data, - const std::size_t length) -{ - return ceph_crc32c(crc, data, length); -} - - void ProtocolV2::run_continuation(CtPtr continuation) { try { CONTINUATION_RUN(continuation) @@ -138,10 +127,10 @@ struct preamble_block_t { __u8 num_segments; std::array segments; - __u8 _reserved[4]; + __u8 _reserved[2]; - // CRC16 for this single preamble block. - __le16 crc; + // CRC32 for this single preamble block. + __le32 crc; } __attribute__((packed)); static_assert(sizeof(preamble_block_t) % CRYPTO_BLOCK_SIZE == 0); static_assert(std::is_standard_layout::value); @@ -180,7 +169,7 @@ protected: std::copy(std::cbegin(main_segments), std::cend(main_segments), std::begin(main_preamble.segments)); - main_preamble.crc = ceph_crc16c(0, + main_preamble.crc = ceph_crc32c(0, reinterpret_cast(&main_preamble), sizeof(main_preamble) - sizeof(main_preamble.crc)); @@ -200,7 +189,7 @@ protected: std::copy(std::cbegin(extra_segments), std::cend(extra_segments), std::begin(extra_preamble.segments)); - extra_preamble.crc = ceph_crc16c(0, + extra_preamble.crc = ceph_crc32c(0, reinterpret_cast(&extra_preamble), sizeof(extra_preamble)); @@ -1475,7 +1464,7 @@ CtPtr ProtocolV2::handle_read_frame_preamble_main(char *buffer, int r) { } // TODO: move this ugliness into dedicated procedure - const auto rx_crc = ceph_crc16c(0, + const auto rx_crc = ceph_crc32c(0, reinterpret_cast(&main_preamble), sizeof(main_preamble) - sizeof(main_preamble.crc)); if (rx_crc != main_preamble.crc) { -- 2.39.5