]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mon: adapt MonCap network checks to addrvecs
authorSage Weil <sage@redhat.com>
Thu, 5 Jul 2018 17:59:13 +0000 (12:59 -0500)
committerSage Weil <sage@redhat.com>
Sun, 12 Aug 2018 22:01:05 +0000 (17:01 -0500)
Breaking this out in a separate commit to make the backport a bit easier.

Signed-off-by: Sage Weil <sage@redhat.com>
src/mon/Monitor.cc
src/mon/OSDMonitor.cc
src/mon/Session.h

index a184381c459a5cc082629e2662e673472d0c5221..bf93a7566020b765dee2043d35f9401161ae43f5 100644 (file)
@@ -2864,7 +2864,7 @@ bool Monitor::_allowed_command(MonSession *s, const string &module,
     s->entity_name,
     module, prefix, param_str_map,
     cmd_r, cmd_w, cmd_x,
-    s->get_peer_addr());
+    s->get_peer_socket_addr());
 
   dout(10) << __func__ << " " << (capable ? "" : "not ") << "capable" << dendl;
   return capable;
index 6a7bf6234995ff756282b25b6a2e1ff10ab08257..812143cd35c93a646bcd16210f052f9cc489f506 100644 (file)
@@ -3344,7 +3344,7 @@ bool OSDMonitor::preprocess_remove_snaps(MonOpRequestRef op)
        CEPH_ENTITY_TYPE_MON,
        session->entity_name,
         "osd", "osd pool rmsnap", {}, true, true, false,
-       session->get_peer_addr())) {
+       session->get_peer_socket_addr())) {
     dout(0) << "got preprocess_remove_snaps from entity with insufficient caps "
            << session->caps << dendl;
     goto ignore;
@@ -11897,7 +11897,7 @@ bool OSDMonitor::enforce_pool_op_caps(MonOpRequestRef op)
 
       if (!is_unmanaged_snap_op_permitted(cct, mon->key_server,
                                           session->entity_name, session->caps,
-                                         session->get_peer_addr(),
+                                         session->get_peer_socket_addr(),
                                           pool_name)) {
         dout(0) << "got unmanaged-snap pool op from entity with insufficient "
                 << "privileges. message: " << *m  << std::endl
index 957dd5041debfad88c338654104c0b63a9e7e636..ca7013ebf494731e1ed5bbee7099c2991204ed43 100644 (file)
@@ -44,6 +44,7 @@ struct MonSession : public RefCountedObject {
   uint64_t con_features = 0;  // zero if AnonConnection
   entity_name_t name;
   entity_addrvec_t addrs;
+  entity_addr_t socket_addr;
   utime_t session_timeout;
   bool closed = false;
   xlist<MonSession*>::item item;
@@ -73,6 +74,7 @@ struct MonSession : public RefCountedObject {
     con_type(c->get_peer_type()),
     name(n),
     addrs(av),
+    socket_addr(c->get_peer_socket_addr()),
     item(this) {
     if (c->get_messenger()) {
       // only fill in features if this is a non-anonymous connection
@@ -95,11 +97,11 @@ struct MonSession : public RefCountedObject {
       entity_name,
       service, "", args,
       mask & MON_CAP_R, mask & MON_CAP_W, mask & MON_CAP_X,
-      get_peer_addr());
+      get_peer_socket_addr());
   }
 
-  const entity_addr_t& get_peer_addr() {
-    return inst.addr;
+  const entity_addr_t& get_peer_socket_addr() {
+    return socket_addr;
   }
 };