Download raw body.
smtpd: start with the deckchairs
EHLO tech@,
I'm currently running with a diff that greatly reduces the amount of the
amount of SRCS per new binary. To create something with the least amount
of logic changes I want to create a main() per binary which is derived
from the current main(). This also means that the functions required by
main() inside smtpd.c need to be moved to a more suitable location.
This first diff moves log_imsg(), proc_title(), proc_name(), and
imsg_to_str() into util.c. There's other functions that need to be
moved, but those need their own file, since they would pull in a
dependency hell into the other binaries that now include util.c.
OK?
martijn@
diff c7a21344ea409a87e0b5948decc9b0a0effe7481 5e8d775f0ae5d3ec31c40491e7c42ac35dd34f01
commit - c7a21344ea409a87e0b5948decc9b0a0effe7481
commit + 5e8d775f0ae5d3ec31c40491e7c42ac35dd34f01
blob - 2609be577a05081685109df0d923427e22230189
blob + cb86d6a6aee03def5aefe6a702a6f9155df5ac21
--- usr.sbin/smtpd/smtpd.c
+++ usr.sbin/smtpd/smtpd.c
@@ -1883,254 +1883,6 @@ imsg_dispatch(struct mproc *p, struct imsg *imsg)
}
}
-void
-log_imsg(int to, int from, struct imsg *imsg)
-{
-
- if (to == PROC_CONTROL && imsg->hdr.type == IMSG_STAT_SET)
- return;
-
- log_trace(TRACE_IMSG, "imsg: %s <- %s: %s (len=%zu)",
- proc_name(to),
- proc_name(from),
- imsg_to_str(imsg->hdr.type),
- imsg->hdr.len - IMSG_HEADER_SIZE);
-}
-
-const char *
-proc_title(enum smtp_proc_type proc)
-{
- switch (proc) {
- case PROC_PARENT:
- return "[priv]";
- case PROC_LKA:
- return "lookup";
- case PROC_QUEUE:
- return "queue";
- case PROC_CONTROL:
- return "control";
- case PROC_SCHEDULER:
- return "scheduler";
- case PROC_DISPATCHER:
- return "dispatcher";
- case PROC_CA:
- return "crypto";
- case PROC_CLIENT:
- return "client";
- case PROC_PROCESSOR:
- return "processor";
- }
- return "unknown";
-}
-
-const char *
-proc_name(enum smtp_proc_type proc)
-{
- switch (proc) {
- case PROC_PARENT:
- return "parent";
- case PROC_LKA:
- return "lka";
- case PROC_QUEUE:
- return "queue";
- case PROC_CONTROL:
- return "control";
- case PROC_SCHEDULER:
- return "scheduler";
- case PROC_DISPATCHER:
- return "dispatcher";
- case PROC_CA:
- return "ca";
- case PROC_CLIENT:
- return "client-proc";
- default:
- return "unknown";
- }
-}
-
-#define CASE(x) case x : return #x
-
-const char *
-imsg_to_str(int type)
-{
- static char buf[32];
-
- switch (type) {
- CASE(IMSG_NONE);
-
- CASE(IMSG_CTL_OK);
- CASE(IMSG_CTL_FAIL);
-
- CASE(IMSG_CTL_GET_DIGEST);
- CASE(IMSG_CTL_GET_STATS);
- CASE(IMSG_CTL_LIST_MESSAGES);
- CASE(IMSG_CTL_LIST_ENVELOPES);
- CASE(IMSG_CTL_MTA_SHOW_HOSTS);
- CASE(IMSG_CTL_MTA_SHOW_RELAYS);
- CASE(IMSG_CTL_MTA_SHOW_ROUTES);
- CASE(IMSG_CTL_MTA_SHOW_HOSTSTATS);
- CASE(IMSG_CTL_MTA_BLOCK);
- CASE(IMSG_CTL_MTA_UNBLOCK);
- CASE(IMSG_CTL_MTA_SHOW_BLOCK);
- CASE(IMSG_CTL_PAUSE_EVP);
- CASE(IMSG_CTL_PAUSE_MDA);
- CASE(IMSG_CTL_PAUSE_MTA);
- CASE(IMSG_CTL_PAUSE_SMTP);
- CASE(IMSG_CTL_PROFILE);
- CASE(IMSG_CTL_PROFILE_DISABLE);
- CASE(IMSG_CTL_PROFILE_ENABLE);
- CASE(IMSG_CTL_RESUME_EVP);
- CASE(IMSG_CTL_RESUME_MDA);
- CASE(IMSG_CTL_RESUME_MTA);
- CASE(IMSG_CTL_RESUME_SMTP);
- CASE(IMSG_CTL_RESUME_ROUTE);
- CASE(IMSG_CTL_REMOVE);
- CASE(IMSG_CTL_SCHEDULE);
- CASE(IMSG_CTL_SHOW_STATUS);
- CASE(IMSG_CTL_TRACE_DISABLE);
- CASE(IMSG_CTL_TRACE_ENABLE);
- CASE(IMSG_CTL_UPDATE_TABLE);
- CASE(IMSG_CTL_VERBOSE);
- CASE(IMSG_CTL_DISCOVER_EVPID);
- CASE(IMSG_CTL_DISCOVER_MSGID);
-
- CASE(IMSG_CTL_SMTP_SESSION);
-
- CASE(IMSG_GETADDRINFO);
- CASE(IMSG_GETADDRINFO_END);
- CASE(IMSG_GETNAMEINFO);
- CASE(IMSG_RES_QUERY);
-
- CASE(IMSG_SETUP_KEY);
- CASE(IMSG_SETUP_PEER);
- CASE(IMSG_SETUP_DONE);
-
- CASE(IMSG_CONF_START);
- CASE(IMSG_CONF_END);
-
- CASE(IMSG_STAT_INCREMENT);
- CASE(IMSG_STAT_DECREMENT);
- CASE(IMSG_STAT_SET);
-
- CASE(IMSG_LKA_AUTHENTICATE);
- CASE(IMSG_LKA_OPEN_FORWARD);
- CASE(IMSG_LKA_ENVELOPE_SUBMIT);
- CASE(IMSG_LKA_ENVELOPE_COMMIT);
-
- CASE(IMSG_QUEUE_DELIVER);
- CASE(IMSG_QUEUE_DELIVERY_OK);
- CASE(IMSG_QUEUE_DELIVERY_TEMPFAIL);
- CASE(IMSG_QUEUE_DELIVERY_PERMFAIL);
- CASE(IMSG_QUEUE_DELIVERY_LOOP);
- CASE(IMSG_QUEUE_DISCOVER_EVPID);
- CASE(IMSG_QUEUE_DISCOVER_MSGID);
- CASE(IMSG_QUEUE_ENVELOPE_ACK);
- CASE(IMSG_QUEUE_ENVELOPE_COMMIT);
- CASE(IMSG_QUEUE_ENVELOPE_REMOVE);
- CASE(IMSG_QUEUE_ENVELOPE_SCHEDULE);
- CASE(IMSG_QUEUE_ENVELOPE_SUBMIT);
- CASE(IMSG_QUEUE_HOLDQ_HOLD);
- CASE(IMSG_QUEUE_HOLDQ_RELEASE);
- CASE(IMSG_QUEUE_MESSAGE_COMMIT);
- CASE(IMSG_QUEUE_MESSAGE_ROLLBACK);
- CASE(IMSG_QUEUE_SMTP_SESSION);
- CASE(IMSG_QUEUE_TRANSFER);
-
- CASE(IMSG_MDA_DELIVERY_OK);
- CASE(IMSG_MDA_DELIVERY_TEMPFAIL);
- CASE(IMSG_MDA_DELIVERY_PERMFAIL);
- CASE(IMSG_MDA_DELIVERY_LOOP);
- CASE(IMSG_MDA_DELIVERY_HOLD);
- CASE(IMSG_MDA_DONE);
- CASE(IMSG_MDA_FORK);
- CASE(IMSG_MDA_HOLDQ_RELEASE);
- CASE(IMSG_MDA_LOOKUP_USERINFO);
- CASE(IMSG_MDA_KILL);
- CASE(IMSG_MDA_OPEN_MESSAGE);
-
- CASE(IMSG_MTA_DELIVERY_OK);
- CASE(IMSG_MTA_DELIVERY_TEMPFAIL);
- CASE(IMSG_MTA_DELIVERY_PERMFAIL);
- CASE(IMSG_MTA_DELIVERY_LOOP);
- CASE(IMSG_MTA_DELIVERY_HOLD);
- CASE(IMSG_MTA_DNS_HOST);
- CASE(IMSG_MTA_DNS_HOST_END);
- CASE(IMSG_MTA_DNS_MX);
- CASE(IMSG_MTA_DNS_MX_PREFERENCE);
- CASE(IMSG_MTA_HOLDQ_RELEASE);
- CASE(IMSG_MTA_LOOKUP_CREDENTIALS);
- CASE(IMSG_MTA_LOOKUP_SOURCE);
- CASE(IMSG_MTA_LOOKUP_HELO);
- CASE(IMSG_MTA_LOOKUP_SMARTHOST);
- CASE(IMSG_MTA_OPEN_MESSAGE);
- CASE(IMSG_MTA_SCHEDULE);
-
- CASE(IMSG_SCHED_ENVELOPE_BOUNCE);
- CASE(IMSG_SCHED_ENVELOPE_DELIVER);
- CASE(IMSG_SCHED_ENVELOPE_EXPIRE);
- CASE(IMSG_SCHED_ENVELOPE_INJECT);
- CASE(IMSG_SCHED_ENVELOPE_REMOVE);
- CASE(IMSG_SCHED_ENVELOPE_TRANSFER);
-
- CASE(IMSG_SMTP_AUTHENTICATE);
- CASE(IMSG_SMTP_MESSAGE_COMMIT);
- CASE(IMSG_SMTP_MESSAGE_CREATE);
- CASE(IMSG_SMTP_MESSAGE_ROLLBACK);
- CASE(IMSG_SMTP_MESSAGE_OPEN);
- CASE(IMSG_SMTP_CHECK_SENDER);
- CASE(IMSG_SMTP_EXPAND_RCPT);
- CASE(IMSG_SMTP_LOOKUP_HELO);
-
- CASE(IMSG_SMTP_REQ_CONNECT);
- CASE(IMSG_SMTP_REQ_HELO);
- CASE(IMSG_SMTP_REQ_MAIL);
- CASE(IMSG_SMTP_REQ_RCPT);
- CASE(IMSG_SMTP_REQ_DATA);
- CASE(IMSG_SMTP_REQ_EOM);
- CASE(IMSG_SMTP_EVENT_RSET);
- CASE(IMSG_SMTP_EVENT_COMMIT);
- CASE(IMSG_SMTP_EVENT_ROLLBACK);
- CASE(IMSG_SMTP_EVENT_DISCONNECT);
-
- CASE(IMSG_LKA_PROCESSOR_FORK);
- CASE(IMSG_LKA_PROCESSOR_ERRFD);
-
- CASE(IMSG_REPORT_SMTP_LINK_CONNECT);
- CASE(IMSG_REPORT_SMTP_LINK_DISCONNECT);
- CASE(IMSG_REPORT_SMTP_LINK_GREETING);
- CASE(IMSG_REPORT_SMTP_LINK_IDENTIFY);
- CASE(IMSG_REPORT_SMTP_LINK_TLS);
- CASE(IMSG_REPORT_SMTP_LINK_AUTH);
- CASE(IMSG_REPORT_SMTP_TX_RESET);
- CASE(IMSG_REPORT_SMTP_TX_BEGIN);
- CASE(IMSG_REPORT_SMTP_TX_MAIL);
- CASE(IMSG_REPORT_SMTP_TX_RCPT);
- CASE(IMSG_REPORT_SMTP_TX_ENVELOPE);
- CASE(IMSG_REPORT_SMTP_TX_DATA);
- CASE(IMSG_REPORT_SMTP_TX_COMMIT);
- CASE(IMSG_REPORT_SMTP_TX_ROLLBACK);
- CASE(IMSG_REPORT_SMTP_PROTOCOL_CLIENT);
- CASE(IMSG_REPORT_SMTP_PROTOCOL_SERVER);
- CASE(IMSG_REPORT_SMTP_FILTER_RESPONSE);
- CASE(IMSG_REPORT_SMTP_TIMEOUT);
-
- CASE(IMSG_FILTER_SMTP_BEGIN);
- CASE(IMSG_FILTER_SMTP_END);
- CASE(IMSG_FILTER_SMTP_PROTOCOL);
- CASE(IMSG_FILTER_SMTP_DATA_BEGIN);
- CASE(IMSG_FILTER_SMTP_DATA_END);
-
- CASE(IMSG_CA_RSA_PRIVENC);
- CASE(IMSG_CA_RSA_PRIVDEC);
- CASE(IMSG_CA_ECDSA_SIGN);
-
- default:
- (void)snprintf(buf, sizeof(buf), "IMSG_??? (%d)", type);
-
- return buf;
- }
-}
-
int
parent_auth_user(const char *username, const char *password)
{
blob - 9058e4c36c4a06411f713e822ff1e0e350d69ee5
blob + fa5d31d6926331c11978f0abab5809bad60909b6
--- usr.sbin/smtpd/smtpd.h
+++ usr.sbin/smtpd/smtpd.h
@@ -1606,10 +1606,6 @@ void smtp_session_imsg(struct mproc *, struct imsg *);
/* smtpd.c */
void imsg_dispatch(struct mproc *, struct imsg *);
-const char *proc_name(enum smtp_proc_type);
-const char *proc_title(enum smtp_proc_type);
-const char *imsg_to_str(int);
-void log_imsg(int, int, struct imsg *);
int fork_proc_backend(const char *, const char *, const char *, int);
@@ -1724,6 +1720,10 @@ int base64_decode(char const *, unsigned char *, size_
int base64_encode_rfc3548(unsigned char const *, size_t,
char *, size_t);
+const char *proc_name(enum smtp_proc_type);
+const char *proc_title(enum smtp_proc_type);
+const char *imsg_to_str(int);
+void log_imsg(int, int, struct imsg *);
void log_trace_verbose(int);
void log_trace0(const char *, ...)
__attribute__((format (printf, 1, 2)));
blob - 1a0392c12df3fdc6347670ff8b43308f95e150cd
blob + 3603e29900059f49ab29e51799cc1488844417fb
--- usr.sbin/smtpd/util.c
+++ usr.sbin/smtpd/util.c
@@ -832,7 +832,255 @@ base64_encode_rfc3548(unsigned char const *src, size_t
return ret;
}
+#define CASE(x) case x : return #x
+
+const char *
+imsg_to_str(int type)
+{
+ static char buf[32];
+
+ switch (type) {
+ CASE(IMSG_NONE);
+
+ CASE(IMSG_CTL_OK);
+ CASE(IMSG_CTL_FAIL);
+
+ CASE(IMSG_CTL_GET_DIGEST);
+ CASE(IMSG_CTL_GET_STATS);
+ CASE(IMSG_CTL_LIST_MESSAGES);
+ CASE(IMSG_CTL_LIST_ENVELOPES);
+ CASE(IMSG_CTL_MTA_SHOW_HOSTS);
+ CASE(IMSG_CTL_MTA_SHOW_RELAYS);
+ CASE(IMSG_CTL_MTA_SHOW_ROUTES);
+ CASE(IMSG_CTL_MTA_SHOW_HOSTSTATS);
+ CASE(IMSG_CTL_MTA_BLOCK);
+ CASE(IMSG_CTL_MTA_UNBLOCK);
+ CASE(IMSG_CTL_MTA_SHOW_BLOCK);
+ CASE(IMSG_CTL_PAUSE_EVP);
+ CASE(IMSG_CTL_PAUSE_MDA);
+ CASE(IMSG_CTL_PAUSE_MTA);
+ CASE(IMSG_CTL_PAUSE_SMTP);
+ CASE(IMSG_CTL_PROFILE);
+ CASE(IMSG_CTL_PROFILE_DISABLE);
+ CASE(IMSG_CTL_PROFILE_ENABLE);
+ CASE(IMSG_CTL_RESUME_EVP);
+ CASE(IMSG_CTL_RESUME_MDA);
+ CASE(IMSG_CTL_RESUME_MTA);
+ CASE(IMSG_CTL_RESUME_SMTP);
+ CASE(IMSG_CTL_RESUME_ROUTE);
+ CASE(IMSG_CTL_REMOVE);
+ CASE(IMSG_CTL_SCHEDULE);
+ CASE(IMSG_CTL_SHOW_STATUS);
+ CASE(IMSG_CTL_TRACE_DISABLE);
+ CASE(IMSG_CTL_TRACE_ENABLE);
+ CASE(IMSG_CTL_UPDATE_TABLE);
+ CASE(IMSG_CTL_VERBOSE);
+ CASE(IMSG_CTL_DISCOVER_EVPID);
+ CASE(IMSG_CTL_DISCOVER_MSGID);
+
+ CASE(IMSG_CTL_SMTP_SESSION);
+
+ CASE(IMSG_GETADDRINFO);
+ CASE(IMSG_GETADDRINFO_END);
+ CASE(IMSG_GETNAMEINFO);
+ CASE(IMSG_RES_QUERY);
+
+ CASE(IMSG_SETUP_KEY);
+ CASE(IMSG_SETUP_PEER);
+ CASE(IMSG_SETUP_DONE);
+
+ CASE(IMSG_CONF_START);
+ CASE(IMSG_CONF_END);
+
+ CASE(IMSG_STAT_INCREMENT);
+ CASE(IMSG_STAT_DECREMENT);
+ CASE(IMSG_STAT_SET);
+
+ CASE(IMSG_LKA_AUTHENTICATE);
+ CASE(IMSG_LKA_OPEN_FORWARD);
+ CASE(IMSG_LKA_ENVELOPE_SUBMIT);
+ CASE(IMSG_LKA_ENVELOPE_COMMIT);
+
+ CASE(IMSG_QUEUE_DELIVER);
+ CASE(IMSG_QUEUE_DELIVERY_OK);
+ CASE(IMSG_QUEUE_DELIVERY_TEMPFAIL);
+ CASE(IMSG_QUEUE_DELIVERY_PERMFAIL);
+ CASE(IMSG_QUEUE_DELIVERY_LOOP);
+ CASE(IMSG_QUEUE_DISCOVER_EVPID);
+ CASE(IMSG_QUEUE_DISCOVER_MSGID);
+ CASE(IMSG_QUEUE_ENVELOPE_ACK);
+ CASE(IMSG_QUEUE_ENVELOPE_COMMIT);
+ CASE(IMSG_QUEUE_ENVELOPE_REMOVE);
+ CASE(IMSG_QUEUE_ENVELOPE_SCHEDULE);
+ CASE(IMSG_QUEUE_ENVELOPE_SUBMIT);
+ CASE(IMSG_QUEUE_HOLDQ_HOLD);
+ CASE(IMSG_QUEUE_HOLDQ_RELEASE);
+ CASE(IMSG_QUEUE_MESSAGE_COMMIT);
+ CASE(IMSG_QUEUE_MESSAGE_ROLLBACK);
+ CASE(IMSG_QUEUE_SMTP_SESSION);
+ CASE(IMSG_QUEUE_TRANSFER);
+
+ CASE(IMSG_MDA_DELIVERY_OK);
+ CASE(IMSG_MDA_DELIVERY_TEMPFAIL);
+ CASE(IMSG_MDA_DELIVERY_PERMFAIL);
+ CASE(IMSG_MDA_DELIVERY_LOOP);
+ CASE(IMSG_MDA_DELIVERY_HOLD);
+ CASE(IMSG_MDA_DONE);
+ CASE(IMSG_MDA_FORK);
+ CASE(IMSG_MDA_HOLDQ_RELEASE);
+ CASE(IMSG_MDA_LOOKUP_USERINFO);
+ CASE(IMSG_MDA_KILL);
+ CASE(IMSG_MDA_OPEN_MESSAGE);
+
+ CASE(IMSG_MTA_DELIVERY_OK);
+ CASE(IMSG_MTA_DELIVERY_TEMPFAIL);
+ CASE(IMSG_MTA_DELIVERY_PERMFAIL);
+ CASE(IMSG_MTA_DELIVERY_LOOP);
+ CASE(IMSG_MTA_DELIVERY_HOLD);
+ CASE(IMSG_MTA_DNS_HOST);
+ CASE(IMSG_MTA_DNS_HOST_END);
+ CASE(IMSG_MTA_DNS_MX);
+ CASE(IMSG_MTA_DNS_MX_PREFERENCE);
+ CASE(IMSG_MTA_HOLDQ_RELEASE);
+ CASE(IMSG_MTA_LOOKUP_CREDENTIALS);
+ CASE(IMSG_MTA_LOOKUP_SOURCE);
+ CASE(IMSG_MTA_LOOKUP_HELO);
+ CASE(IMSG_MTA_LOOKUP_SMARTHOST);
+ CASE(IMSG_MTA_OPEN_MESSAGE);
+ CASE(IMSG_MTA_SCHEDULE);
+
+ CASE(IMSG_SCHED_ENVELOPE_BOUNCE);
+ CASE(IMSG_SCHED_ENVELOPE_DELIVER);
+ CASE(IMSG_SCHED_ENVELOPE_EXPIRE);
+ CASE(IMSG_SCHED_ENVELOPE_INJECT);
+ CASE(IMSG_SCHED_ENVELOPE_REMOVE);
+ CASE(IMSG_SCHED_ENVELOPE_TRANSFER);
+
+ CASE(IMSG_SMTP_AUTHENTICATE);
+ CASE(IMSG_SMTP_MESSAGE_COMMIT);
+ CASE(IMSG_SMTP_MESSAGE_CREATE);
+ CASE(IMSG_SMTP_MESSAGE_ROLLBACK);
+ CASE(IMSG_SMTP_MESSAGE_OPEN);
+ CASE(IMSG_SMTP_CHECK_SENDER);
+ CASE(IMSG_SMTP_EXPAND_RCPT);
+ CASE(IMSG_SMTP_LOOKUP_HELO);
+
+ CASE(IMSG_SMTP_REQ_CONNECT);
+ CASE(IMSG_SMTP_REQ_HELO);
+ CASE(IMSG_SMTP_REQ_MAIL);
+ CASE(IMSG_SMTP_REQ_RCPT);
+ CASE(IMSG_SMTP_REQ_DATA);
+ CASE(IMSG_SMTP_REQ_EOM);
+ CASE(IMSG_SMTP_EVENT_RSET);
+ CASE(IMSG_SMTP_EVENT_COMMIT);
+ CASE(IMSG_SMTP_EVENT_ROLLBACK);
+ CASE(IMSG_SMTP_EVENT_DISCONNECT);
+
+ CASE(IMSG_LKA_PROCESSOR_FORK);
+ CASE(IMSG_LKA_PROCESSOR_ERRFD);
+
+ CASE(IMSG_REPORT_SMTP_LINK_CONNECT);
+ CASE(IMSG_REPORT_SMTP_LINK_DISCONNECT);
+ CASE(IMSG_REPORT_SMTP_LINK_GREETING);
+ CASE(IMSG_REPORT_SMTP_LINK_IDENTIFY);
+ CASE(IMSG_REPORT_SMTP_LINK_TLS);
+ CASE(IMSG_REPORT_SMTP_LINK_AUTH);
+ CASE(IMSG_REPORT_SMTP_TX_RESET);
+ CASE(IMSG_REPORT_SMTP_TX_BEGIN);
+ CASE(IMSG_REPORT_SMTP_TX_MAIL);
+ CASE(IMSG_REPORT_SMTP_TX_RCPT);
+ CASE(IMSG_REPORT_SMTP_TX_ENVELOPE);
+ CASE(IMSG_REPORT_SMTP_TX_DATA);
+ CASE(IMSG_REPORT_SMTP_TX_COMMIT);
+ CASE(IMSG_REPORT_SMTP_TX_ROLLBACK);
+ CASE(IMSG_REPORT_SMTP_PROTOCOL_CLIENT);
+ CASE(IMSG_REPORT_SMTP_PROTOCOL_SERVER);
+ CASE(IMSG_REPORT_SMTP_FILTER_RESPONSE);
+ CASE(IMSG_REPORT_SMTP_TIMEOUT);
+
+ CASE(IMSG_FILTER_SMTP_BEGIN);
+ CASE(IMSG_FILTER_SMTP_END);
+ CASE(IMSG_FILTER_SMTP_PROTOCOL);
+ CASE(IMSG_FILTER_SMTP_DATA_BEGIN);
+ CASE(IMSG_FILTER_SMTP_DATA_END);
+
+ CASE(IMSG_CA_RSA_PRIVENC);
+ CASE(IMSG_CA_RSA_PRIVDEC);
+ CASE(IMSG_CA_ECDSA_SIGN);
+
+ default:
+ (void)snprintf(buf, sizeof(buf), "IMSG_??? (%d)", type);
+
+ return buf;
+ }
+}
+
+const char *
+proc_title(enum smtp_proc_type proc)
+{
+ switch (proc) {
+ case PROC_PARENT:
+ return "[priv]";
+ case PROC_LKA:
+ return "lookup";
+ case PROC_QUEUE:
+ return "queue";
+ case PROC_CONTROL:
+ return "control";
+ case PROC_SCHEDULER:
+ return "scheduler";
+ case PROC_DISPATCHER:
+ return "dispatcher";
+ case PROC_CA:
+ return "crypto";
+ case PROC_CLIENT:
+ return "client";
+ case PROC_PROCESSOR:
+ return "processor";
+ }
+ return "unknown";
+}
+
+const char *
+proc_name(enum smtp_proc_type proc)
+{
+ switch (proc) {
+ case PROC_PARENT:
+ return "parent";
+ case PROC_LKA:
+ return "lka";
+ case PROC_QUEUE:
+ return "queue";
+ case PROC_CONTROL:
+ return "control";
+ case PROC_SCHEDULER:
+ return "scheduler";
+ case PROC_DISPATCHER:
+ return "dispatcher";
+ case PROC_CA:
+ return "ca";
+ case PROC_CLIENT:
+ return "client-proc";
+ default:
+ return "unknown";
+ }
+}
+
void
+log_imsg(int to, int from, struct imsg *imsg)
+{
+
+ if (to == PROC_CONTROL && imsg->hdr.type == IMSG_STAT_SET)
+ return;
+
+ log_trace(TRACE_IMSG, "imsg: %s <- %s: %s (len=%zu)",
+ proc_name(to),
+ proc_name(from),
+ imsg_to_str(imsg->hdr.type),
+ imsg->hdr.len - IMSG_HEADER_SIZE);
+}
+
+void
log_trace0(const char *emsg, ...)
{
va_list ap;
smtpd: start with the deckchairs