]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
auth: librados requests for osd and mon keys
authorYehuda Sadeh <yehuda@hq.newdream.net>
Wed, 30 Sep 2009 23:17:00 +0000 (16:17 -0700)
committerYehuda Sadeh <yehuda@hq.newdream.net>
Wed, 30 Sep 2009 23:17:00 +0000 (16:17 -0700)
src/auth/AuthClientHandler.cc
src/auth/AuthClientHandler.h
src/librados.cc
src/mon/MonClient.h

index 4f715693bf32de4c8dcd83e4cc2e6dafe306d5e9..f055b301d7547bfebc19fac78597182396e81097 100644 (file)
@@ -215,6 +215,7 @@ int AuthClientAuthenticateHandler::generate_cephx_authenticate_request(bufferlis
 {
   CephXRequestHeader header;
   AuthTicketHandler& ticket_handler = client->tickets.get_handler(CEPHX_PRINCIPAL_AUTH);
+
   if (!ticket_handler.has_key()) {
     dout(0) << "auth ticket: doesn't have key" << dendl;
     /* we first need to get the principle/auth session key */
@@ -271,8 +272,8 @@ int AuthClientAuthenticateHandler::handle_cephx_response(bufferlist::iterator& i
         dout(0) << "could not verify service_ticket reply" << dendl;
         return -EPERM;
       }
-
-      if (want)
+      dout(0) << "want=" << want << " have=" << have << dendl;
+      if (want != have)
         ret = -EAGAIN;
     }
     break;
index c9e2d0b4f17a0ebfac789b8e8865d0ab696ee9f5..4d771264c176bfdbc240a2ebc2e55317dea15b7c 100644 (file)
@@ -116,6 +116,9 @@ protected:
 public:
   AuthClientAuthenticateHandler(AuthClientHandler *client, uint32_t _want, uint32_t _have) :
              AuthClientProtocolHandler(client), want(_want), have(_have) { reset(); }
+  void set_want_keys(__u32 keys) {
+    want = keys;
+  }
 };
 
 class AuthClientAuthorizeHandler : public AuthClientProtocolHandler {
index 9b9b069d68bed1e8f1d2afd0cc83a33aaeb911f4..83005f023f810dfc414ef5015263a00657d41f15 100644 (file)
@@ -302,7 +302,7 @@ bool RadosClient::init()
   rank.start(1);
   messenger->add_dispatcher_head(this);
 
-  monclient.auth.set_want_keys(CEPHX_PRINCIPAL_MON | CEPHX_PRINCIPAL_OSD);
+  monclient.set_want_keys(CEPHX_PRINCIPAL_MON | CEPHX_PRINCIPAL_OSD);
   monclient.init();
 
   if (monclient.get_monmap() < 0)
index 88e17227f5254b28d116180d26c93bce90735d17..3a06f26cf3b11e085ccd9ac944a6f254a605983f 100644 (file)
@@ -86,6 +86,8 @@ private:
   // monclient
   bool want_monmap;
 
+  uint32_t want_keys;
+
   // mount
 private:
   client_t clientid;
@@ -224,6 +226,10 @@ public:
   void set_messenger(Messenger *m) { messenger = m; }
 
   void send_message(Message *m);
+
+  void set_want_keys(uint32_t want) {
+    auth_handler.set_want_keys(want);
+  }
 };
 
 #endif