bool ClientMonitor::check_mount(MClientMount *m)
{
+ stringstream ss;
// already mounted?
entity_addr_t addr = m->get_orig_source_addr();
ExportControl *ec = conf_get_export_control();
if (ec && (!ec->is_authorized(&addr, "/"))) {
dout(0) << "client is not authorized to mount" << dendl;
+ ss << "addr " << addr << "is not authorized to mount";
+ mon->get_logclient()->log(LOG_SEC, ss);
+ mon->get_logclient()->send_log();
return true;
}
if (client_map.addr_client.count(addr)) {
int client = client_map.addr_client[addr];
dout(7) << " client" << client << " already mounted" << dendl;
+ ss << "client " << client << "is already mounted";
+ mon->get_logclient()->log(LOG_INFO, ss);
+ mon->get_logclient()->send_log();
_mounted(client, m);
return true;
}
bool ClientMonitor::prepare_update(Message *m)
{
+ stringstream ss;
dout(10) << "prepare_update " << *m << " from " << m->get_orig_source_inst() << dendl;
switch (m->get_type()) {
::encode(info.ticket, info.signed_ticket);
pending_inc.add_mount(client, info);
paxos->wait_for_commit(new C_Mounted(this, client, (MClientMount*)m));
+ ss << "client " << client << " mounted";
+ mon->get_logclient()->log(LOG_INFO, ss);
+ mon->get_logclient()->send_log();
}
return true;
pending_inc.add_unmount(client);
paxos->wait_for_commit(new C_Unmounted(this, (MClientUnmount*)m));
+ ss << "client " << client << " unmounted";
+ mon->get_logclient()->log(LOG_INFO, ss);
+ mon->get_logclient()->send_log();
}
return true;
bufferlist bloginfo;
bufferlist blogwarn;
bufferlist blogerr;
+ bufferlist blogsec;
// walk through incrementals
while (paxosv > log_version) {
blogdebug.append(s);
if (le.type >= LOG_INFO)
bloginfo.append(s);
+ if (le.type == LOG_SEC)
+ blogsec.append(s);
if (le.type >= LOG_WARN)
blogwarn.append(s);
if (le.type >= LOG_ERROR)
blogerr.append(s);
+ if (le.type >= LOG_ERROR)
+ blogerr.append(s);
}
log_version++;
mon->store->append_bl_ss(blogdebug, "log.debug", NULL);
if (bloginfo.length())
mon->store->append_bl_ss(bloginfo, "log.info", NULL);
+ if (blogsec.length())
+ mon->store->append_bl_ss(bloginfo, "log.security", NULL);
if (blogwarn.length())
mon->store->append_bl_ss(blogwarn, "log.warn", NULL);
if (blogerr.length())
messenger(m),
lock("Monitor::lock"),
monmap(map),
+ logclient(messenger, monmap),
timer(lock), tick_timer(0),
store(s),
// i'm ready!
messenger->set_dispatcher(this);
+ link_dispatcher(&logclient);
// start ticker
reset_tick();
cancel_tick();
timer.cancel_all();
timer.join();
+
+ unlink_dispatcher(&logclient);
// die.
messenger->shutdown();