]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
auth: mon does not filter messages that come from mon
authorYehuda Sadeh <yehuda@hq.newdream.net>
Wed, 28 Oct 2009 18:01:16 +0000 (11:01 -0700)
committerYehuda Sadeh <yehuda@hq.newdream.net>
Wed, 28 Oct 2009 18:01:16 +0000 (11:01 -0700)
src/auth/AuthServiceHandler.h
src/auth/cephx/CephxProtocol.cc
src/auth/cephx/CephxServiceHandler.h
src/mon/AuthMonitor.cc
src/mon/Monitor.cc

index 88702236f45906bff944fef922a012b16ebdf302..9b8835df5bbc1158cf353e8743f8e48a1cfe1be8 100644 (file)
@@ -25,6 +25,8 @@ struct AuthServiceHandler {
 
   virtual int start_session(bufferlist& result) = 0;
   virtual int handle_request(bufferlist::iterator& indata, bufferlist& result, bufferlist& caps) = 0;
+
+  virtual EntityName& get_entity_name() = 0;
 };
 
 extern AuthServiceHandler *get_auth_service_handler(KeyServer *ks, set<__u32>& supported);
index f1df2f85a3eb2ca0c633a8493c96154cdc82a75a..18703c4182ddcfa91d2aef90d1e11c026d765ed8 100644 (file)
@@ -138,7 +138,7 @@ void CephXTicketManager::set_have_need_key(uint32_t service_id, uint32_t& have,
   if (iter == tickets_map.end()) {
     have &= ~service_id;
     need |= service_id;
-    dout(0) << "couldn't find entry for service_id " << service_id << dendl;
+    dout(10) << "couldn't find entry for service_id " << service_id << dendl;
     return;
   }
 
index 67e7da4459c73888b5e1fc3f2960fc6fb054a9a2..e144f482d3537f9782c87530e439bfa4466a728a 100644 (file)
@@ -32,6 +32,7 @@ public:
   int start_session(bufferlist& result_bl);
   int handle_request(bufferlist::iterator& indata, bufferlist& result_bl, bufferlist& caps);
   void build_cephx_response_header(int request_type, int status, bufferlist& bl);
+  EntityName& get_entity_name() { return entity_name; }
 };
 
 #endif
index b9bd4da58f301d068b299fb262e8a7eae610d5e4..39cd46ad5c3c605f2f607812a88eddbd7eeeae96 100644 (file)
@@ -291,6 +291,7 @@ bool AuthMonitor::preprocess_auth(MAuth *m)
     // handle the request
     try {
       ret = s->auth_handler->handle_request(indata, response_bl, caps);
+      dout(20) << "handled request for entity_name=" << s->auth_handler->get_entity_name().to_str() << dendl;
       if (caps.length()) {
         bufferlist::iterator iter = caps.begin();
         s->caps.parse(iter);
index 607048cb7c6e5772ba25664764faabc0369ff281..ca8715d5a4ac58687a8490536a27dedd97dc4762 100644 (file)
@@ -524,7 +524,7 @@ do { \
 
 #define ALLOW_MESSAGES_FROM(peers) \
 do { \
-  if ((connection && connection->get_peer_type() & (peers)) == 0) { \
+  if ((connection && connection->get_peer_type() & (peers | CEPH_ENTITY_TYPE_MON)) == 0) { \
     dout(0) << "filtered out request, peer=" << connection->get_peer_type() \
            << " allowing=" << #peers << " message=" << *m << dendl; \
     delete m; \