#include #include bool log_status_msg(struct log *log, const struct node_id *node_id, const u8 *msg) { char *entry, *who; u8 *data; struct node_id *suggested_node_id; enum log_level level; bool call_notifier; if (fromwire_status_log(msg, msg, &level, &suggested_node_id, &entry)) { /* If there's not already a node_id (global subdirs), they can * set it */ if (!node_id) node_id = suggested_node_id; /* No per-peer daemon should claim a different peer! */ else if (suggested_node_id && !node_id_eq(node_id, suggested_node_id)) return false; if (level != LOG_IO_IN && level != LOG_IO_OUT) { call_notifier = (level == LOG_BROKEN || level == LOG_UNUSUAL)? true : false; log_(log, level, node_id, call_notifier, "%s", entry); return true; } /* FIXME: This would be far more efficient to copy to log in place, rather than doing the additional allocation in fromwire. */ } else if (fromwire_status_io(msg, msg, &level, &suggested_node_id, &who, &data)) { if (level == LOG_IO_IN || level == LOG_IO_OUT) { if (!node_id) node_id = suggested_node_id; log_io(log, level, node_id, who, data, tal_count(data)); return true; } } return false; }