virtual void write_event() = 0;
virtual bool is_queued() = 0;
+ virtual void dump(Formatter *f) = 0;
+
int get_con_mode() const {
return auth_meta->con_mode;
}
return !out_q.empty() || connection->is_queued();
}
+void ProtocolV1::dump(Formatter* f) {
+ f->open_object_section("v1");
+ f->dump_string("state", get_state_name(state));
+ f->dump_unsigned("connect_seq", connect_seq);
+ f->dump_unsigned("peer_global_seq", peer_global_seq);
+ if (auth_meta) {
+ f->dump_string("con_mode", ceph_con_mode_name(auth_meta->con_mode));
+ }
+ f->close_section(); // v1
+}
+
void ProtocolV1::run_continuation(CtPtr pcontinuation) {
if (pcontinuation) {
CONTINUATION_RUN(*pcontinuation);
virtual void write_event() override;
virtual bool is_queued() override;
+ virtual void dump(Formatter *f) override;
+
// Client Protocol
private:
int global_seq;
return !out_queue.empty() || connection->is_queued();
}
+void ProtocolV2::dump(Formatter *f) {
+ f->open_object_section("v2");
+ f->dump_string("state", get_state_name(state));
+ if (auth_meta) {
+ f->dump_string("con_mode", ceph_con_mode_name(auth_meta->con_mode));
+ }
+ f->dump_bool("rev1", HAVE_MSGR2_FEATURE(peer_supported_features, REVISION_1));
+ f->dump_unsigned("connect_seq", connect_seq);
+ f->dump_unsigned("peer_global_seq", peer_global_seq);
+
+ f->open_object_section("crypto");
+ f->dump_string(
+ "rx", session_stream_handlers.rx
+ ? session_stream_handlers.rx->cipher_name()
+ : "PLAIN");
+ f->dump_string(
+ "tx", session_stream_handlers.tx
+ ? session_stream_handlers.tx->cipher_name()
+ : "PLAIN");
+ f->close_section(); // crypto
+
+ f->open_object_section("compression");
+ f->dump_string(
+ "rx", session_compression_handlers.rx
+ ? session_compression_handlers.rx->compressor_name()
+ : "UNCOMPRESSED");
+ f->dump_string(
+ "tx", session_compression_handlers.tx
+ ? session_compression_handlers.tx->compressor_name()
+ : "UNCOMPRESSED");
+ f->close_section(); // compression
+ f->close_section(); // v2
+}
+
CtPtr ProtocolV2::read(CONTINUATION_RXBPTR_TYPE<ProtocolV2> &next,
rx_buffer_t &&buffer) {
const auto len = buffer->length();
virtual void write_event() override;
virtual bool is_queued() override;
+ virtual void dump(Formatter *f) override;
+
private:
// Client Protocol
CONTINUATION_DECL(ProtocolV2, start_client_banner_exchange);
ldout(m_cct, 25) << __func__ << " compression ratio=" << get_ratio() << dendl;
}
+std::string_view RxHandler::compressor_name() const {
+ return m_compressor->get_type_name();
+}
+
+std::string_view TxHandler::compressor_name() const {
+ return m_compressor->get_type_name();
+}
+
} // namespace ceph::compression::onwire
* @returns true on success, false on failure
*/
std::optional<ceph::bufferlist> decompress(const ceph::bufferlist &input);
+
+ std::string_view compressor_name() const;
};
class TxHandler final : private Handler {
return m_onwire_size;
}
+ std::string_view compressor_name() const;
+
private:
uint64_t m_min_size;
Compressor::CompressionMode m_mode;
void authenticated_encrypt_update(const ceph::bufferlist& plaintext) override;
ceph::bufferlist authenticated_encrypt_final() override;
+
+ std::string_view cipher_name() const override {
+ return "AES-128-GCM";
+ };
};
void AES128GCM_OnWireTxHandler::reset_tx_handler(const uint32_t* first,
void reset_rx_handler() override;
void authenticated_decrypt_update(ceph::bufferlist& bl) override;
void authenticated_decrypt_update_final(ceph::bufferlist& bl) override;
+
+ std::string_view cipher_name() const override {
+ return "AES-128-GCM";
+ };
};
void AES128GCM_OnWireRxHandler::reset_rx_handler()
// Generates authentication signature and returns bufferlist crafted
// basing on plaintext from preceding call to _update().
virtual ceph::bufferlist authenticated_encrypt_final() = 0;
+
+ virtual std::string_view cipher_name() const = 0;
};
class RxHandler {
// for overall decryption sequence.
// Throws on integrity/authenticity checks
virtual void authenticated_decrypt_update_final(ceph::bufferlist& bl) = 0;
+
+ virtual std::string_view cipher_name() const = 0;
};
struct rxtx_t {