virtual ~AuthServiceHandler() { }
- virtual int start_session(EntityName& name, bufferlist::const_iterator& indata, bufferlist& result, AuthCapsInfo& caps) = 0;
+ virtual int start_session(const EntityName& name,
+ bufferlist *result,
+ AuthCapsInfo *caps) = 0;
virtual int handle_request(bufferlist::const_iterator& indata, bufferlist& result, uint64_t& global_id, AuthCapsInfo& caps) = 0;
EntityName& get_entity_name() { return entity_name; }
#undef dout_prefix
#define dout_prefix *_dout << "cephx server " << entity_name << ": "
-int CephxServiceHandler::start_session(EntityName& name, bufferlist::const_iterator& indata, bufferlist& result_bl, AuthCapsInfo& caps)
+int CephxServiceHandler::start_session(const EntityName& name,
+ bufferlist *result_bl,
+ AuthCapsInfo *caps)
{
entity_name = name;
uint64_t min = 1; // always non-zero
uint64_t max = std::numeric_limits<uint64_t>::max();
server_challenge = ceph::util::generate_random_number<uint64_t>(min, max);
- ldout(cct, 10) << "start_session server_challenge " << hex << server_challenge << dec << dendl;
+ ldout(cct, 10) << "start_session server_challenge "
+ << hex << server_challenge << dec << dendl;
CephXServerChallenge ch;
ch.server_challenge = server_challenge;
- encode(ch, result_bl);
- return CEPH_AUTH_CEPHX;
+ encode(ch, *result_bl);
+ return 0;
}
int CephxServiceHandler::handle_request(bufferlist::const_iterator& indata, bufferlist& result_bl, uint64_t& global_id, AuthCapsInfo& caps)
: AuthServiceHandler(cct_), key_server(ks), server_challenge(0) {}
~CephxServiceHandler() override {}
- int start_session(EntityName& name, bufferlist::const_iterator& indata, bufferlist& result_bl, AuthCapsInfo& caps) override;
+ int start_session(const EntityName& name,
+ bufferlist *result_bl,
+ AuthCapsInfo *caps) override;
int handle_request(bufferlist::const_iterator& indata, bufferlist& result_bl, uint64_t& global_id, AuthCapsInfo& caps) override;
void build_cephx_response_header(int request_type, int status, bufferlist& bl);
};
return result;
}
-int KrbServiceHandler::start_session(EntityName& name,
- bufferlist::const_iterator& indata,
- bufferlist& buff_list,
- AuthCapsInfo& caps)
+int KrbServiceHandler::start_session(const EntityName& name,
+ bufferlist *buff_list,
+ AuthCapsInfo *caps)
{
gss_buffer_desc gss_buffer_in = {0, nullptr};
gss_OID gss_object_id = GSS_C_NT_HOSTBASED_SERVICE;
static_cast<int>(GSSAuthenticationRequest::GSS_MUTUAL);
using ceph::encode;
- encode(krb_response, buff_list);
+ encode(krb_response, *buff_list);
return (CEPH_AUTH_GSS);
}
}
uint64_t& global_id,
AuthCapsInfo& caps) override;
- int start_session(EntityName& name,
- bufferlist::const_iterator& indata,
- bufferlist& buff_list,
- AuthCapsInfo& caps) override;
+ int start_session(const EntityName& name,
+ bufferlist *buff_list,
+ AuthCapsInfo *caps) override;
private:
gss_buffer_desc m_gss_buffer_out;
: AuthServiceHandler(cct_) {}
~AuthNoneServiceHandler() override {}
- int start_session(EntityName& name, bufferlist::const_iterator& indata, bufferlist& result_bl, AuthCapsInfo& caps) override {
+ int start_session(const EntityName& name,
+ bufferlist *result_bl,
+ AuthCapsInfo *caps) override {
entity_name = name;
- caps.allow_all = true;
- return CEPH_AUTH_NONE;
+ caps->allow_all = true;
+ return 0;
}
int handle_request(bufferlist::const_iterator& indata, bufferlist& result_bl, uint64_t& global_id, AuthCapsInfo& caps) override {
return 0;
: AuthServiceHandler(cct_) {}
~AuthUnknownServiceHandler() {}
- int start_session(EntityName& name, bufferlist::iterator& indata, bufferlist& result_bl, AuthCapsInfo& caps) {
- return CEPH_AUTH_UNKNOWN;
+ int start_session(const EntityName& name,
+ bufferlist *result_bl,
+ AuthCapsInfo *caps) {
+ return 0;
}
int handle_request(bufferlist::iterator& indata, bufferlist& result_bl, uint64_t& global_id, AuthCapsInfo& caps) {
ceph_abort(); // shouldn't get called
goto reply;
}
start = true;
+ proto = type;
} else if (!s->auth_handler) {
dout(10) << "protocol specified but no s->auth_handler" << dendl;
ret = -EINVAL;
try {
if (start) {
// new session
- proto = s->auth_handler->start_session(entity_name, indata, response_bl,
- s->con->peer_caps_info);
+ s->auth_handler->start_session(entity_name, &response_bl,
+ &s->con->peer_caps_info);
ret = 0;
} else {
// request