]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
auth: kill CephXPremable, put trans_id in msg
authorSage Weil <sage@newdream.net>
Thu, 22 Oct 2009 22:09:11 +0000 (15:09 -0700)
committerSage Weil <sage@newdream.net>
Thu, 22 Oct 2009 22:09:11 +0000 (15:09 -0700)
The preamble just identifies different conversations; it's
not really part of the cephx protocol.  This simplifies
the code a bit.

src/auth/AuthClientHandler.cc
src/auth/AuthClientHandler.h
src/auth/AuthProtocol.h
src/messages/MAuth.h
src/messages/MAuthReply.h
src/messages/MAuthorize.h
src/mon/AuthMonitor.cc
src/mon/MonClient.cc
src/mon/Monitor.cc

index b14d376772ee94194b1ff0c792b7929a48c6d48d..5f301a3ecc0f1a5ec32aa145ddffb9403cfde848 100644 (file)
@@ -42,12 +42,6 @@ int AuthClientProtocolHandler::build_request()
   msg = _get_new_msg();
   if (!msg)
     return -ENOMEM;
-  bufferlist& bl = _get_msg_bl(msg);
-
-  CephXPremable pre;
-  dout(0) << "pre=" << id << dendl;
-  pre.trans_id = id;
-  ::encode(pre, bl);
 
   int ret = _build_request(); 
 
@@ -322,7 +316,7 @@ int AuthClientAuthenticateHandler::_build_request()
 Message *AuthClientAuthenticateHandler::_get_new_msg()
 {
   MAuth *m = new MAuth;
-
+  m->trans_id = id;
   return m;
 }
 
@@ -334,7 +328,7 @@ bufferlist& AuthClientAuthenticateHandler::_get_msg_bl(Message *m)
 Message *AuthClientAuthorizeHandler::_get_new_msg()
 {
   MAuthorize *m = new MAuthorize;
-
+  m->trans_id = id;
   return m;
 }
 
@@ -410,26 +404,19 @@ uint32_t AuthClientHandler::_add_proto_handler(AuthClientProtocolHandler *handle
   return id;
 }
 
-int AuthClientHandler::handle_response(Message *response)
+int AuthClientHandler::handle_response(int trans_id, Message *response)
 {
-  bufferlist bl;
-  int ret;
-
   MAuthReply* m = (MAuthReply *)response;
-  bl = m->result_bl;
-  ret = m->result;
-
-  CephXPremable pre;
-  bufferlist::iterator iter = bl.begin();
-  ::decode(pre, iter);
+  int ret = m->result;
 
   lock.Lock();
-  AuthClientProtocolHandler *handler = _get_proto_handler(pre.trans_id);
+  AuthClientProtocolHandler *handler = _get_proto_handler(trans_id);
   lock.Unlock();
-  dout(0) << "AuthClientHandler::handle_response(): got response " << *response << " trans_id=" << pre.trans_id << " handler=" << handler << dendl;
+  dout(0) << "AuthClientHandler::handle_response(): got response " << *response << " trans_id=" << trans_id << " handler=" << handler << dendl;
   if (!handler)
     return -EINVAL;
 
+  bufferlist::iterator iter = m->result_bl.begin();
   return handler->handle_response(ret, iter);
 }
 
index e68e29b14c812284c0e1465310151d228026c78e..ca17a0ffd5af5a116cdd36f6f9a8c98e1348285b 100644 (file)
@@ -197,7 +197,7 @@ public:
     return (want & have) == have;
   }
 
-  int handle_response(Message *response);
+  int handle_response(int trans_id, Message *response);
 
   int start_session(AuthClient *client, double timeout);
   int send_session_request(AuthClient *client, AuthClientProtocolHandler *handler, double timeout);
index 1b2eb851a068b6c9897b827120f3318fee614f72..070cfff5a414873878b7e854e4701a5f5489447f 100644 (file)
@@ -167,19 +167,6 @@ static inline ostream& operator<<(ostream& out, const EntityName& n) {
 }
 
 
-struct CephXPremable {
-  uint32_t trans_id;
-
-  void encode(bufferlist& bl) const {
-    ::encode(trans_id, bl);
-  }
-
-  void decode(bufferlist::iterator& bl) {
-    ::decode(trans_id, bl);
-  }
-};
-WRITE_CLASS_ENCODER(CephXPremable)
-
 /* 
   Ceph X-Envelope protocol
 */
index f811320cac0647bb6c81b84385094a7f98c72662..a49e685181cd420a3f5f53fecd36a4889df185d7 100644 (file)
 #include "messages/PaxosServiceMessage.h"
 
 struct MAuth : public PaxosServiceMessage {
+  __u64 trans_id;
   bufferlist auth_payload;
 
   MAuth() : PaxosServiceMessage(CEPH_MSG_AUTH, 0) { }
 
   const char *get_type_name() { return "auth"; }
+  void print(ostream& out) {
+    out << "auth(" << trans_id << " " << auth_payload.length() << " bytes)";
+  }
 
   void decode_payload() {
     bufferlist::iterator p = payload.begin();
     paxos_decode(p);
+    ::decode(trans_id, p);
     ::decode(auth_payload, p);
   }
   void encode_payload() {
     paxos_encode();
+    ::encode(trans_id, payload);
     ::encode(auth_payload, payload);
   }
   bufferlist& get_auth_payload() { return auth_payload; }
index a0bf6d95f4cca54f597ad118c56982509ef1bdee..cfbc10688ac9385f03ceab9f009760bd82770327 100644 (file)
 #include "msg/Message.h"
 
 struct MAuthReply : public Message {
+  __u64 trans_id;
   __s32 result;
   cstring result_msg;
   bufferlist result_bl;
 
-  MAuthReply(bufferlist *bl = NULL, int r = 0, const char *msg = 0) :
+  MAuthReply() : Message(CEPH_MSG_AUTH_REPLY), trans_id(0), result(0) {}
+  MAuthReply(__u64 tid, bufferlist *bl = NULL, int r = 0, const char *msg = 0) :
     Message(CEPH_MSG_AUTH_REPLY),
-    result(r),
+    trans_id(tid), result(r),
     result_msg(msg) {
     if (bl)
       result_bl = *bl;
@@ -33,7 +35,7 @@ struct MAuthReply : public Message {
   const char *get_type_name() { return "auth_reply"; }
   void print(ostream& o) {
     char buf[80];
-    o << "auth_reply(" << result << " " << strerror_r(-result, buf, sizeof(buf));
+    o << "auth_reply(" << trans_id << " " << result << " " << strerror_r(-result, buf, sizeof(buf));
     if (result_msg.length())
       o << ": " << result_msg;
     o << ")";
@@ -41,11 +43,13 @@ struct MAuthReply : public Message {
 
   void decode_payload() {
     bufferlist::iterator p = payload.begin();
+    ::decode(trans_id, p);
     ::decode(result, p);
     ::decode(result_bl, p);
     ::decode(result_msg, p);
   }
   void encode_payload() {
+    ::encode(trans_id, payload);
     ::encode(result, payload);
     ::encode(result_bl, payload);
     ::encode(result_msg, payload);
index 68628fd6434876cfe1a2d7e8976bff6996d3983f..562968c80b8c52cb012bba33fea8e55d4a9f6346 100644 (file)
 #include "msg/Message.h"
 
 struct MAuthorize : public Message {
+  __u64 trans_id;
   bufferlist auth_payload;
 
   MAuthorize() : Message(CEPH_MSG_AUTHORIZE) { }
 
   const char *get_type_name() { return "authorize"; }
+  void print(ostream& out) {
+    out << "authorize(" << trans_id << ")";
+  }
 
   void decode_payload() {
     bufferlist::iterator p = payload.begin();
+    ::decode(trans_id, p);
     ::decode(auth_payload, p);
   }
   void encode_payload() {
+    ::encode(trans_id, payload);
     ::encode(auth_payload, payload);
   }
   bufferlist& get_auth_payload() { return auth_payload; }
index 0aedb7d0f32d7466a1656ad7ac54c4d19f24480e..099e9839180b363527d40bb4fe8f6c28a1f94b2e 100644 (file)
@@ -265,11 +265,6 @@ bool AuthMonitor::preprocess_auth(MAuth *m)
   bufferlist response_bl;
   bufferlist::iterator indata = m->auth_payload.begin();
 
-  CephXPremable pre;
-  ::decode(pre, indata);
-  dout(0) << "CephXPremable id=" << pre.trans_id << dendl;
-  ::encode(pre, response_bl);
-
   // set up handler?
   if (!s->auth_handler) {
     set<__u32> supported;
@@ -301,7 +296,7 @@ bool AuthMonitor::preprocess_auth(MAuth *m)
       return true;
     }
   }
-  MAuthReply *reply = new MAuthReply(&response_bl, ret);
+  MAuthReply *reply = new MAuthReply(m->trans_id, &response_bl, ret);
   mon->messenger->send_message(reply, m->get_orig_source_inst());
   return true;
 }
index 9132ffd53002c18975d8e03372a2ae59a336613d..557ec5c1cf854efeac98f5d54bc78d772b47b16f 100644 (file)
@@ -308,7 +308,7 @@ void MonClient::handle_mount_ack(MClientMountAck* m)
 
 void MonClient::handle_auth(MAuthReply *m)
 {
-  int ret = auth.handle_response(m);
+  int ret = auth.handle_response(m->trans_id, m);
   delete m;
 
   if (ret == -EAGAIN) {
index e616b903f1f9578e15e23304a64ec29efcfb98fa..fe6e4fa8f40b537a631b874c1df18741bbfe846a 100644 (file)
@@ -868,11 +868,6 @@ void Monitor::handle_authorize(MAuthorize *m)
   bufferlist response_bl;
   bufferlist::iterator indata = m->auth_payload.begin();
 
-  CephXPremable pre;
-  ::decode(pre, indata);
-  dout(0) << "CephXPremable id=" << pre.trans_id << dendl;
-  ::encode(pre, response_bl);
-
   // handle the request
   try {
     ret = do_authorize(indata, response_bl);
@@ -880,7 +875,7 @@ void Monitor::handle_authorize(MAuthorize *m)
     ret = -EINVAL;
     dout(0) << "caught error when trying to handle authorize request, probably malformed request" << dendl;
   }
-  MAuthReply *reply = new MAuthReply(&response_bl, ret);
+  MAuthReply *reply = new MAuthReply(m->trans_id, &response_bl, ret);
   messenger->send_message(reply, m->get_orig_source_inst());
 }