// v1 and v2
seastar::future<> close();
bool is_my_peer(const entity_addr_t& addr) const;
- AuthAuthorizer* get_authorizer(peer_type_t peer) const;
+ AuthAuthorizer* get_authorizer(entity_type_t peer) const;
KeyStore& get_keys();
seastar::future<> renew_tickets();
seastar::future<> renew_rotating_keyring();
});
}
-AuthAuthorizer* Connection::get_authorizer(peer_type_t peer) const
+AuthAuthorizer* Connection::get_authorizer(entity_type_t peer) const
{
if (auth) {
return auth->build_authorizer(peer);
using seq_num_t = uint64_t;
class Connection : public seastar::enable_shared_from_this<Connection> {
+ entity_name_t peer_name = {0, -1};
+
protected:
entity_addr_t peer_addr;
- peer_type_t peer_type = -1;
- int64_t peer_id = -1;
using clock_t = seastar::lowres_system_clock;
clock_t::time_point last_keepalive;
clock_t::time_point last_keepalive_ack;
+ void set_peer_type(entity_type_t peer_type) { peer_name._type = peer_type; }
+ void set_peer_id(int64_t peer_id) { peer_name._num = peer_id; }
+
public:
uint64_t peer_global_id = 0;
virtual Messenger* get_messenger() const = 0;
const entity_addr_t& get_peer_addr() const { return peer_addr; }
- virtual int get_peer_type() const = 0;
-
- bool peer_is_mon() const { return get_peer_type() == CEPH_ENTITY_TYPE_MON; }
- bool peer_is_mgr() const { return get_peer_type() == CEPH_ENTITY_TYPE_MGR; }
- bool peer_is_mds() const { return get_peer_type() == CEPH_ENTITY_TYPE_MDS; }
- bool peer_is_osd() const { return get_peer_type() == CEPH_ENTITY_TYPE_OSD; }
- bool peer_is_client() const {
- return get_peer_type() == CEPH_ENTITY_TYPE_CLIENT;
- }
+ const entity_name_t& get_peer_name() const { return peer_name; }
+ entity_type_t get_peer_type() const { return peer_name.type(); }
+ int64_t get_peer_id() const { return peer_name.num(); }
+
+ bool peer_is_mon() const { return peer_name.is_mon(); }
+ bool peer_is_mgr() const { return peer_name.is_mgr(); }
+ bool peer_is_mds() const { return peer_name.is_mds(); }
+ bool peer_is_osd() const { return peer_name.is_osd(); }
+ bool peer_is_client() const { return peer_name.is_client(); }
/// true if the handshake has completed and no errors have been encountered
virtual seastar::future<bool> is_connected() = 0;
}
virtual seastar::future<msgr_tag_t, bufferlist>
- ms_verify_authorizer(peer_type_t,
+ ms_verify_authorizer(entity_type_t,
auth_proto_t,
bufferlist&) {
return seastar::make_ready_future<msgr_tag_t, bufferlist>(0, bufferlist{});
#include "msg/msg_types.h"
#include "msg/Message.h"
-using peer_type_t = int;
using auth_proto_t = int;
class AuthConnectionMeta;
{}
virtual ~Messenger() {}
- int get_mytype() const { return my_name.type(); }
+ entity_type_t get_mytype() const { return my_name.type(); }
const entity_name_t& get_myname() const { return my_name; }
const entity_addrvec_t& get_myaddrs() const { return my_addrs; }
entity_addr_t get_myaddr() const { return my_addrs.front(); }
ceph::bufferlist ProtocolV1::get_auth_payload()
{
// only non-mons connectings to mons use MAuth messages
- if (conn.peer_type == CEPH_ENTITY_TYPE_MON &&
+ if (conn.peer_is_mon() &&
messenger.get_mytype() != CEPH_ENTITY_TYPE_MON) {
return {};
} else {
h.connect.host_type = messenger.get_myname().type();
h.connect.global_seq = h.global_seq;
h.connect.connect_seq = h.connect_seq;
- h.connect.protocol_version = get_proto_version(conn.peer_type, true);
+ h.connect.protocol_version = get_proto_version(conn.get_peer_type(), true);
// this is fyi, actually, server decides!
h.connect.flags = conn.policy.lossy ? CEPH_MSG_CONNECT_LOSSY : 0;
ceph_assert(!socket);
conn.peer_addr = _peer_addr;
- conn.peer_type = _peer_type;
+ conn.set_peer_type(_peer_type);
messenger.register_conn(
seastar::static_pointer_cast<SocketConnection>(conn.shared_from_this()));
seastar::with_gate(pending_dispatch, [this] {
.then([this](bufferlist bl) {
auto p = bl.cbegin();
::decode(h.connect, p);
- conn.peer_type = h.connect.host_type;
+ conn.set_peer_type(h.connect.host_type);
return socket->read(h.connect.authorizer_len);
}).then([this] (bufferlist authorizer) {
memset(&h.reply, 0, sizeof(h.reply));
ceph_assert(!socket);
conn.peer_addr = _peer_addr;
conn.target_addr = _peer_addr;
- conn.peer_type = _peer_type;
+ conn.set_peer_type(_peer_type);
conn.policy = messenger.get_policy(_peer_type);
messenger.register_conn(
seastar::static_pointer_cast<SocketConnection>(conn.shared_from_this()));
// 6. process peer HelloFrame
auto hello = HelloFrame::Decode(rx_segments_data.back());
logger().trace("{} received hello: peer_type={} peer_addr_for_me={}",
- conn, (int)hello.entity_type(), hello.peer_addr());
+ conn, ceph_entity_type_name(hello.entity_type()),
+ hello.peer_addr());
return seastar::make_ready_future<entity_type_t, entity_addr_t>(
hello.entity_type(), hello.peer_addr());
});
// TODO: change peer_addr to entity_addrvec_t
ceph_assert(conn.peer_addr == server_ident.addrs().front());
- peer_name = entity_name_t(conn.get_peer_type(), server_ident.gid());
- conn.peer_id = server_ident.gid();
+ conn.set_peer_id(server_ident.gid());
conn.set_features(server_ident.supported_features() &
conn.policy.features_supported);
peer_global_seq = server_ident.global_seq();
return banner_exchange();
}).then([this] (entity_type_t _peer_type,
entity_addr_t _peer_addr) {
- if (conn.peer_type != _peer_type) {
+ if (conn.get_peer_type() != _peer_type) {
logger().debug("{} connection peer type does not match what peer advertises {} != {}",
- conn, conn.peer_type, (int)_peer_type);
+ conn, ceph_entity_type_name(conn.get_peer_type()),
+ ceph_entity_type_name(_peer_type));
dispatch_reset();
abort_in_close();
}
logger().trace("{} got paddr={}, conn.peer_addr={}", conn, paddr, conn.peer_addr);
conn.target_addr = conn.peer_addr;
- peer_name = entity_name_t(conn.get_peer_type(), client_ident.gid());
- conn.peer_id = client_ident.gid();
+ conn.set_peer_id(client_ident.gid());
client_cookie = client_ident.cookie();
uint64_t feat_missing =
return banner_exchange()
.then([this] (entity_type_t _peer_type,
entity_addr_t _peer_addr) {
- ceph_assert(conn.get_peer_type() == -1);
- conn.peer_type = _peer_type;
+ ceph_assert(conn.get_peer_type() == 0);
+ conn.set_peer_type(_peer_type);
conn.policy = messenger.get_policy(_peer_type);
logger().trace("{} accept of host type {}, lossy={} server={} standby={} resetcheck={}",
- conn, (int)_peer_type,
+ conn, ceph_entity_type_name(_peer_type),
conn.policy.lossy, conn.policy.server,
conn.policy.standby, conn.policy.resetcheck);
return server_auth();
auto message = MessageFrame::Encode(header2,
msg->get_payload(), msg->get_middle(), msg->get_data());
logger().debug("{} --> [{} {}] #{} === {} ({}) // {}",
- messenger, peer_name, conn.get_peer_addr(),
+ messenger, conn.get_peer_name(), conn.get_peer_addr(),
msg->get_seq(), *msg, msg->get_type(), conn);
bl.append(message.get_buffer(session_stream_handlers));
});
logger().trace("{} got {} + {} + {} byte message,"
" envelope type={} src={} off={} seq={}",
conn, msg_frame.front_len(), msg_frame.middle_len(),
- msg_frame.data_len(), current_header.type, peer_name,
+ msg_frame.data_len(), current_header.type, conn.get_peer_name(),
current_header.data_off, current_header.seq);
ceph_msg_header header{current_header.seq,
msg_frame.middle_len(),
msg_frame.data_len(),
current_header.data_off,
- peer_name,
+ conn.get_peer_name(),
current_header.compat_version,
current_header.reserved,
0};
void trigger_state(state_t state, write_state_t write_state, bool reentrant);
- entity_name_t peer_name;
uint64_t connection_features = 0;
uint64_t peer_required_features = 0;
void SocketConnection::print(ostream& out) const {
messenger.print(out);
if (side == side_t::none) {
- out << " >> " << peer_addr;
+ out << " >> " << get_peer_name() << " " << peer_addr;
} else if (side == side_t::acceptor) {
- out << " >> " << peer_addr
+ out << " >> " << get_peer_name() << " " << peer_addr
<< "@" << socket_port;
} else { // side == side_t::connector
out << "@" << socket_port
- << " >> " << peer_addr;
+ << " >> " << get_peer_name() << " " << peer_addr;
}
}
Messenger* get_messenger() const override;
- int get_peer_type() const override {
- return peer_type;
- }
-
seastar::future<bool> is_connected() override;
seastar::future<> send(MessageRef msg) override;
});
}
seastar::future<ceph::net::msgr_tag_t, bufferlist>
- ms_verify_authorizer(peer_type_t peer_type,
+ ms_verify_authorizer(entity_type_t peer_type,
auth_proto_t protocol,
bufferlist& auth) override {
return seastar::make_ready_future<ceph::net::msgr_tag_t, bufferlist>(