Connection(const AuthRegistry& auth_registry,
crimson::net::ConnectionRef conn,
KeyRing* keyring);
- enum class AuthResult {
+ enum class auth_result_t {
success = 0,
failure,
canceled
};
seastar::future<> handle_auth_reply(Ref<MAuthReply> m);
// v1
- seastar::future<AuthResult> authenticate_v1(
+ seastar::future<auth_result_t> authenticate_v1(
epoch_t epoch,
const EntityName& name,
uint32_t want_keys);
// v2
- seastar::future<AuthResult> authenticate_v2();
+ seastar::future<auth_result_t> authenticate_v2();
auth::AuthClient::auth_request_t
get_auth_request(const EntityName& name,
uint32_t want_keys);
rotating,
general,
};
- seastar::future<std::optional<AuthResult>> do_auth_single(request_t);
- seastar::future<AuthResult> do_auth(request_t);
+ seastar::future<std::optional<auth_result_t>> do_auth_single(request_t);
+ seastar::future<auth_result_t> do_auth(request_t);
private:
bool closed = false;
using clock_t = seastar::lowres_system_clock;
clock_t::time_point auth_start;
crimson::auth::method_t auth_method = 0;
- seastar::promise<AuthResult> auth_done;
+ seastar::promise<auth_result_t> auth_done;
// v1 and v2
const AuthRegistry& auth_registry;
crimson::net::ConnectionRef conn;
seastar::future<> Connection::renew_tickets()
{
if (auth->need_tickets()) {
- return do_auth(request_t::general).then([](AuthResult r) {
- if (r != AuthResult::success) {
+ return do_auth(request_t::general).then([](auth_result_t r) {
+ if (r != auth_result_t::success) {
throw std::system_error(
make_error_code(
crimson::net::error::negotiation_failure));
return seastar::now();
}
last_rotating_renew_sent = now;
- return do_auth(request_t::rotating).then([](AuthResult r) {
- if (r != AuthResult::success) {
+ return do_auth(request_t::rotating).then([](auth_result_t r) {
+ if (r != auth_result_t::success) {
throw std::system_error(make_error_code(
crimson::net::error::negotiation_failure));
}
return conn->send(m);
}
-seastar::future<std::optional<Connection::AuthResult>>
+seastar::future<std::optional<Connection::auth_result_t>>
Connection::do_auth_single(Connection::request_t what)
{
auto m = make_message<MAuth>();
if (!m) {
ceph_assert(closed);
logger().info("do_auth: connection closed");
- return seastar::make_ready_future<std::optional<Connection::AuthResult>>(
- std::make_optional(AuthResult::canceled));
+ return seastar::make_ready_future<std::optional<Connection::auth_result_t>>(
+ std::make_optional(auth_result_t::canceled));
}
logger().info(
"do_auth: mon {} => {} returns {}: {}",
ret,
conn->get_peer_addr());
}
- return seastar::make_ready_future<std::optional<Connection::AuthResult>>(
+ return seastar::make_ready_future<std::optional<Connection::auth_result_t>>(
ret == -EAGAIN
? std::nullopt
: std::make_optional(ret == 0
- ? AuthResult::success
- : AuthResult::failure
+ ? auth_result_t::success
+ : auth_result_t::failure
));
});
}
-seastar::future<Connection::AuthResult>
+seastar::future<Connection::auth_result_t>
Connection::do_auth(Connection::request_t what) {
return seastar::repeat_until_value([this, what]() {
return do_auth_single(what);
});
}
-seastar::future<Connection::AuthResult>
+seastar::future<Connection::auth_result_t>
Connection::authenticate_v1(epoch_t epoch,
const EntityName& name,
uint32_t want_keys)
}).then([name, want_keys, this](Ref<MAuthReply> m) {
if (!m) {
logger().error("authenticate_v1 canceled on {}", name);
- return seastar::make_ready_future<AuthResult>(AuthResult::canceled);
+ return seastar::make_ready_future<auth_result_t>(auth_result_t::canceled);
}
global_id = m->global_id;
auth = create_auth(m->protocol, m->global_id, name, want_keys);
nullptr, nullptr)) {
case 0:
// none
- return seastar::make_ready_future<AuthResult>(AuthResult::success);
+ return seastar::make_ready_future<auth_result_t>(auth_result_t::success);
case -EAGAIN:
// cephx
return do_auth(request_t::general);
}
}).handle_exception([](auto ep) {
logger().error("authenticate_v1 failed with {}", ep);
- return seastar::make_ready_future<AuthResult>(AuthResult::canceled);
+ return seastar::make_ready_future<auth_result_t>(auth_result_t::canceled);
});
}
-seastar::future<Connection::AuthResult> Connection::authenticate_v2()
+seastar::future<Connection::auth_result_t> Connection::authenticate_v2()
{
auth_start = seastar::lowres_system_clock::now();
return conn->send(make_message<MMonGetMap>()).then([this] {
secret_t connection_secret;
int r = auth->handle_response(0, p, &session_key, &connection_secret);
conn->set_last_keepalive_ack(auth_start);
- auth_done.set_value(AuthResult::success);
+ auth_done.set_value(auth_result_t::success);
return {session_key, connection_secret, r};
}
{
reply.set_value(Ref<MAuthReply>(nullptr));
reply = {};
- auth_done.set_value(AuthResult::canceled);
+ auth_done.set_value(auth_result_t::canceled);
auth_done = {};
if (conn && !std::exchange(closed, true)) {
conn->mark_down();
}
logger().info("connecting to mon.{}", rank);
return seastar::futurize_invoke(
- [peer, this] () -> seastar::future<Connection::AuthResult> {
+ [peer, this] () -> seastar::future<Connection::auth_result_t> {
auto conn = msgr.connect(peer, CEPH_ENTITY_TYPE_MON);
auto& mc = pending_conns.emplace_back(
std::make_unique<Connection>(auth_registry, conn, &keyring));
return mc->authenticate_v1(monmap.get_epoch(), entity_name, want_keys)
.handle_exception([conn](auto ep) {
conn->mark_down();
- return seastar::make_exception_future<Connection::AuthResult>(ep);
+ return seastar::make_exception_future<Connection::auth_result_t>(ep);
});
}
}).then([peer, this](auto result) {
- if (result != Connection::AuthResult::canceled) {
+ if (result != Connection::auth_result_t::canceled) {
_finish_auth(peer);
}
logger().debug("reopen_session mon connection attempts complete");