static inline bool auth_principal_needs_rotating_keys(EntityName& name)
{
- return ((name.entity_type == CEPHX_PRINCIPAL_OSD) ||
- (name.entity_type == CEPHX_PRINCIPAL_MDS));
+ return ((name.entity_type == CEPH_ENTITY_TYPE_OSD) ||
+ (name.entity_type == CEPH_ENTITY_TYPE_MDS));
}
int AuthClientAuthenticateHandler::generate_cephx_authenticate_request(bufferlist& bl)
{
CephXRequestHeader header;
- AuthTicketHandler& ticket_handler = client->tickets.get_handler(CEPHX_PRINCIPAL_AUTH);
+ AuthTicketHandler& ticket_handler = client->tickets.get_handler(CEPH_ENTITY_TYPE_AUTH);
if (!ticket_handler.has_key()) {
dout(0) << "auth ticket: doesn't have key" << dendl;
cephx_response_state = 2;
dout(0) << "CEPHX_GET_PRINCIPAL_SESSION_KEY" << dendl;
{
- AuthTicketHandler& ticket_handler = client->tickets.get_handler(CEPHX_PRINCIPAL_AUTH);
+ AuthTicketHandler& ticket_handler = client->tickets.get_handler(CEPH_ENTITY_TYPE_AUTH);
if (!client->tickets.verify_service_ticket_reply(ticket_handler.session_key, indata)) {
dout(0) << "could not verify service_ticket reply" << dendl;
the service, using that ticket.
*/
-#define CEPHX_PRINCIPAL_AUTH 0x0001
-#define CEPHX_PRINCIPAL_MON 0x0002
-#define CEPHX_PRINCIPAL_OSD 0x0004
-#define CEPHX_PRINCIPAL_MDS 0x0008
-#define CEPHX_PRINCIPAL_CLIENT 0x0010
-
-#define CEPHX_PRINCIPAL_TYPE_MASK 0x00FF
-
/* authenticate requests */
#define CEPHX_GET_AUTH_SESSION_KEY 0x0100
#define CEPHX_GET_PRINCIPAL_SESSION_KEY 0x0200
class Monitor;
-static inline void get_entity_type_str(uint32_t entity_type,string& s) {
- switch (entity_type) {
- case CEPHX_PRINCIPAL_AUTH:
- s = "auth";
- break;
- case CEPHX_PRINCIPAL_MON:
- s = "mon";
- break;
- case CEPHX_PRINCIPAL_OSD:
- s = "osd";
- break;
- case CEPHX_PRINCIPAL_MDS:
- s = "mds";
- break;
- case CEPHX_PRINCIPAL_CLIENT:
- s = "client";
- break;
- default:
- s = "???";
- break;
- }
-}
-
-static inline uint32_t peer_id_to_entity_type(int peer_id)
-{
- switch (peer_id) {
- case CEPH_ENTITY_TYPE_MON:
- return CEPHX_PRINCIPAL_MON;
- case CEPH_ENTITY_TYPE_MDS:
- return CEPHX_PRINCIPAL_MDS;
- case CEPH_ENTITY_TYPE_OSD:
- return CEPHX_PRINCIPAL_OSD;
- case CEPH_ENTITY_TYPE_CLIENT:
- return CEPHX_PRINCIPAL_CLIENT;
- default:
- return 0;
- /* case CEPH_ENTITY_TYPE_ADMIN: */
- }
-}
-
struct EntityName {
uint32_t entity_type;
string name;
}
void to_str(string& str) const {
- get_entity_type_str(entity_type, str);
+ str.append(ceph_entity_type_name(entity_type));
str.append(".");
str.append(name);
}
void set_type(const char *type) {
if (strcmp(type, "auth") == 0) {
- entity_type = CEPHX_PRINCIPAL_AUTH;
+ entity_type = CEPH_ENTITY_TYPE_AUTH;
} else if (strcmp(type, "mon") == 0) {
- entity_type = CEPHX_PRINCIPAL_MON;
+ entity_type = CEPH_ENTITY_TYPE_MON;
} else if (strcmp(type, "osd") == 0) {
- entity_type = CEPHX_PRINCIPAL_OSD;
+ entity_type = CEPH_ENTITY_TYPE_OSD;
} else if (strcmp(type, "mds") == 0) {
- entity_type = CEPHX_PRINCIPAL_MDS;
+ entity_type = CEPH_ENTITY_TYPE_MDS;
} else {
- entity_type = CEPHX_PRINCIPAL_CLIENT;
+ entity_type = CEPH_ENTITY_TYPE_CLIENT;
}
}
void from_type_id(const char *type, const char *id) {
}
void get_type_str(string& s) {
- get_entity_type_str(entity_type, s);
+ s = ceph_entity_type_name(entity_type);
}
};
WRITE_CLASS_ENCODER(EntityName);
mon->key_server.generate_secret(session_key);
info.session_key = session_key;
- info.service_id = CEPHX_PRINCIPAL_AUTH;
- if (!mon->key_server.get_service_secret(CEPHX_PRINCIPAL_AUTH, info.service_secret, info.secret_id)) {
+ info.service_id = CEPH_ENTITY_TYPE_AUTH;
+ if (!mon->key_server.get_service_secret(CEPH_ENTITY_TYPE_AUTH, info.service_secret, info.secret_id)) {
dout(0) << "could not get service secret for auth subsystem" << dendl;
ret = -EIO;
break;
ret = 0;
vector<SessionAuthInfo> info_vec;
- for (uint32_t service_id = 1; service_id != (CEPHX_PRINCIPAL_TYPE_MASK + 1); service_id <<= 1) {
+ for (uint32_t service_id = 1; service_id <= ticket_req.keys; service_id <<= 1) {
if (ticket_req.keys & service_id) {
SessionAuthInfo info;
int r = mon->key_server.build_session_auth_info(service_id, auth_ticket_info, info);
i = 1;
for (; i <= KEY_ROTATE_NUM; i++) {
- _rotate_secret(CEPHX_PRINCIPAL_AUTH, i);
- _rotate_secret(CEPHX_PRINCIPAL_MON, i);
- _rotate_secret(CEPHX_PRINCIPAL_OSD, i);
- _rotate_secret(CEPHX_PRINCIPAL_MDS, i);
+ _rotate_secret(CEPH_ENTITY_TYPE_AUTH, i);
+ _rotate_secret(CEPH_ENTITY_TYPE_MON, i);
+ _rotate_secret(CEPH_ENTITY_TYPE_OSD, i);
+ _rotate_secret(CEPH_ENTITY_TYPE_MDS, i);
}
dout(0) << "generated: " << dendl;
info.service_id = service_id;
- string s;
- get_entity_type_str(service_id, s);
+ string s = ceph_entity_type_name(service_id);
if (!data.get_caps(info.ticket.name, s, info.ticket.caps)) {
return -EINVAL;
*/
#include "types.h"
+const char *ceph_entity_type_name(int type)
+{
+ switch (type) {
+ case CEPH_ENTITY_TYPE_MDS: return "mds";
+ case CEPH_ENTITY_TYPE_OSD: return "osd";
+ case CEPH_ENTITY_TYPE_MON: return "mon";
+ case CEPH_ENTITY_TYPE_CLIENT: return "client";
+ case CEPH_ENTITY_TYPE_ADMIN: return "admin";
+ case CEPH_ENTITY_TYPE_AUTH: return "auth";
+ default: return "unknown";
+ }
+}
+
const char *ceph_osd_op_name(int op)
{
switch (op) {
#define CEPH_ENTITY_TYPE_OSD 4
#define CEPH_ENTITY_TYPE_CLIENT 8
#define CEPH_ENTITY_TYPE_ADMIN 16
+#define CEPH_ENTITY_TYPE_AUTH 32
-const char *ceph_entity_type_name(int type);
+extern const char *ceph_entity_type_name(int type);
/*
* entity_addr -- network address
bool ms_get_authorizer(int dest_type, AuthAuthorizer& authorizer, bool force_new) {
dout(0) << "RadosClient::ms_get_authorizer type=" << dest_type << dendl;
- uint32_t want = peer_id_to_entity_type(dest_type);
- if (monclient.auth.build_authorizer(want, authorizer) < 0)
+ if (monclient.auth.build_authorizer(dest_type, authorizer) < 0)
return false;
return true;
}
rank.start(1);
messenger->add_dispatcher_head(this);
- monclient.set_want_keys(CEPHX_PRINCIPAL_MON | CEPHX_PRINCIPAL_OSD);
+ monclient.set_want_keys(CEPH_ENTITY_TYPE_MON | CEPH_ENTITY_TYPE_OSD);
monclient.init();
if (monclient.get_monmap() < 0)
// get monmap
monc->set_messenger(messenger);
- monc->set_want_keys(CEPHX_PRINCIPAL_MON | CEPHX_PRINCIPAL_OSD | CEPHX_PRINCIPAL_MDS);
+ monc->set_want_keys(CEPH_ENTITY_TYPE_MON | CEPH_ENTITY_TYPE_OSD | CEPH_ENTITY_TYPE_MDS);
monc->init();
monc->get_monmap();
bool MDS::ms_get_authorizer(int dest_type, AuthAuthorizer& authorizer, bool force_new)
{
dout(0) << "OSD::ms_get_authorizer type=" << dest_type << dendl;
+
/* monitor authorization is being handled on different layer */
if (dest_type == CEPH_ENTITY_TYPE_MON)
return true;
- uint32_t want = peer_id_to_entity_type(dest_type);
-
if (force_new) {
if (monc->wait_auth_rotating(10) < 0)
return false;
}
- if (monc->auth.build_authorizer(want, authorizer) < 0)
+ if (monc->auth.build_authorizer(dest_type, authorizer) < 0)
return false;
return true;
int MonClient::authorize(double timeout)
{
- return auth.authorize(CEPHX_PRINCIPAL_MON, timeout);
+ return auth.authorize(CEPH_ENTITY_TYPE_MON, timeout);
}
int MonClient::_start_auth_rotating()
timer(monc_lock),
hunting(false),
mounting(0), mount_err(0),
- auth_handler(&auth, CEPHX_PRINCIPAL_MON, 0),
- authorize_handler(&auth, CEPHX_PRINCIPAL_MON) { }
+ auth_handler(&auth, CEPH_ENTITY_TYPE_MON, 0),
+ authorize_handler(&auth, CEPH_ENTITY_TYPE_MON) { }
~MonClient() {
timer.cancel_all_events();
}
}
void set_want_keys(uint32_t want) {
- auth_handler.set_want_keys(want | CEPHX_PRINCIPAL_MON);
+ auth_handler.set_want_keys(want | CEPH_ENTITY_TYPE_MON);
}
void add_want_keys(uint32_t want) {
SessionAuthInfo info;
int ret;
- uint32_t service_id = peer_id_to_entity_type(dest_type);
+ uint32_t service_id = dest_type;
dout(0) << "ms_get_authorizer service_id=" << service_id << dendl;
- if (service_id != CEPHX_PRINCIPAL_MON) {
+ if (service_id != CEPH_ENTITY_TYPE_MON) {
ret = key_server.build_session_auth_info(service_id, auth_ticket_info, info);
if (ret < 0) {
return false;
}
} else {
EntityName name;
- name.entity_type = CEPHX_PRINCIPAL_MON;
+ name.entity_type = CEPH_ENTITY_TYPE_MON;
CryptoKey secret;
if (!key_server.get_secret(name, secret)) {
bool OSD::ms_get_authorizer(int dest_type, AuthAuthorizer& authorizer, bool force_new)
{
dout(0) << "OSD::ms_get_authorizer type=" << dest_type << dendl;
- uint32_t want = peer_id_to_entity_type(dest_type);
if (force_new) {
if (monc->wait_auth_rotating(10) < 0)
return false;
}
- if (monc->auth.build_authorizer(want, authorizer) < 0)
+ if (monc->auth.build_authorizer(dest_type, authorizer) < 0)
return false;
return true;