Skip to content

Commit

Permalink
link-connect event report had an empty fcrdns field, but now that eri…
Browse files Browse the repository at this point in the history
…c@ has

plugged fcrdns in the smtp_session we can fill the field with a value
  • Loading branch information
poolpOrg committed Dec 6, 2018
1 parent 7929fb1 commit 7bbc0d0
Show file tree
Hide file tree
Showing 6 changed files with 37 additions and 16 deletions.
9 changes: 6 additions & 3 deletions usr.sbin/smtpd/lka.c
@@ -1,4 +1,4 @@
/* $OpenBSD: lka.c,v 1.217 2018/12/06 15:32:06 gilles Exp $ */
/* $OpenBSD: lka.c,v 1.218 2018/12/06 16:05:04 gilles Exp $ */

/*
* Copyright (c) 2008 Pierre-Yves Ritschard <pyr@openbsd.org>
Expand Down Expand Up @@ -95,6 +95,7 @@ lka_imsg(struct mproc *p, struct imsg *imsg)
uint64_t evpid;
size_t msgsz;
int ok;
int fcrdns;

if (imsg == NULL)
lka_shutdown();
Expand Down Expand Up @@ -417,11 +418,12 @@ lka_imsg(struct mproc *p, struct imsg *imsg)
m_get_time(&m, &tm);
m_get_id(&m, &reqid);
m_get_string(&m, &rdns);
m_get_int(&m, &fcrdns);
m_get_sockaddr(&m, (struct sockaddr *)&ss_src);
m_get_sockaddr(&m, (struct sockaddr *)&ss_dest);
m_end(&m);

lka_report_smtp_link_connect("smtp-in", tm, reqid, rdns, &ss_src, &ss_dest);
lka_report_smtp_link_connect("smtp-in", tm, reqid, rdns, fcrdns, &ss_src, &ss_dest);
return;

case IMSG_SMTP_REPORT_LINK_DISCONNECT:
Expand Down Expand Up @@ -534,11 +536,12 @@ lka_imsg(struct mproc *p, struct imsg *imsg)
m_get_time(&m, &tm);
m_get_id(&m, &reqid);
m_get_string(&m, &rdns);
m_get_int(&m, &fcrdns);
m_get_sockaddr(&m, (struct sockaddr *)&ss_src);
m_get_sockaddr(&m, (struct sockaddr *)&ss_dest);
m_end(&m);

lka_report_smtp_link_connect("smtp-out", tm, reqid, rdns, &ss_src, &ss_dest);
lka_report_smtp_link_connect("smtp-out", tm, reqid, rdns, fcrdns, &ss_src, &ss_dest);
return;

case IMSG_MTA_REPORT_LINK_DISCONNECT:
Expand Down
19 changes: 16 additions & 3 deletions usr.sbin/smtpd/lka_report.c
@@ -1,4 +1,4 @@
/* $OpenBSD: lka_report.c,v 1.10 2018/12/06 15:32:06 gilles Exp $ */
/* $OpenBSD: lka_report.c,v 1.11 2018/12/06 16:05:04 gilles Exp $ */

/*
* Copyright (c) 2018 Gilles Chehade <gilles@poolp.org>
Expand Down Expand Up @@ -62,14 +62,15 @@ report_smtp_broadcast(const char *direction, time_t tm, const char *format, ...)

void
lka_report_smtp_link_connect(const char *direction, time_t tm, uint64_t reqid, const char *rdns,
int fcrdns,
const struct sockaddr_storage *ss_src,
const struct sockaddr_storage *ss_dest)
{
char src[NI_MAXHOST + 5];
char dest[NI_MAXHOST + 5];
uint16_t src_port = 0;
uint16_t dest_port = 0;
const char *fcrdns = "";
const char *fcrdns_str;

if (ss_src->ss_family == AF_INET)
src_port = ntohs(((const struct sockaddr_in *)ss_src)->sin_port);
Expand All @@ -84,9 +85,21 @@ lka_report_smtp_link_connect(const char *direction, time_t tm, uint64_t reqid, c
(void)strlcpy(src, ss_to_text(ss_src), sizeof src);
(void)strlcpy(dest, ss_to_text(ss_dest), sizeof dest);

switch (fcrdns) {
case 1:
fcrdns_str = "pass";
break;
case 0:
fcrdns_str = "fail";
break;
default:
fcrdns_str = "error";
break;
}

report_smtp_broadcast(direction, tm,
"link-connect|%016"PRIx64"|%s|%s|%s:%d|%s:%d\n",
reqid, rdns, fcrdns, src, src_port, dest, dest_port);
reqid, rdns, fcrdns_str, src, src_port, dest, dest_port);
}

void
Expand Down
5 changes: 3 additions & 2 deletions usr.sbin/smtpd/mta_report.c
@@ -1,4 +1,4 @@
/* $OpenBSD: mta_report.c,v 1.2 2018/12/06 15:32:06 gilles Exp $ */
/* $OpenBSD: mta_report.c,v 1.3 2018/12/06 16:05:04 gilles Exp $ */

/*
* Copyright (c) 2018 Gilles Chehade <gilles@poolp.org>
Expand Down Expand Up @@ -44,14 +44,15 @@
#include "rfc5322.h"

void
mta_report_link_connect(uint64_t qid, const char *rdns,
mta_report_link_connect(uint64_t qid, const char *rdns, int fcrdns,
const struct sockaddr_storage *ss_src,
const struct sockaddr_storage *ss_dest)
{
m_create(p_lka, IMSG_MTA_REPORT_LINK_CONNECT, 0, 0, -1);
m_add_time(p_lka, time(NULL));
m_add_id(p_lka, qid);
m_add_string(p_lka, rdns);
m_add_int(p_lka, fcrdns);
m_add_sockaddr(p_lka, (const struct sockaddr *)ss_src);
m_add_sockaddr(p_lka, (const struct sockaddr *)ss_dest);
m_close(p_lka);
Expand Down
5 changes: 3 additions & 2 deletions usr.sbin/smtpd/smtp_report.c
@@ -1,4 +1,4 @@
/* $OpenBSD: smtp_report.c,v 1.6 2018/12/06 15:32:06 gilles Exp $ */
/* $OpenBSD: smtp_report.c,v 1.7 2018/12/06 16:05:04 gilles Exp $ */

/*
* Copyright (c) 2018 Gilles Chehade <gilles@poolp.org>
Expand Down Expand Up @@ -44,14 +44,15 @@
#include "rfc5322.h"

void
smtp_report_link_connect(uint64_t qid, const char *rdns,
smtp_report_link_connect(uint64_t qid, const char *rdns, int fcrdns,
const struct sockaddr_storage *ss_src,
const struct sockaddr_storage *ss_dest)
{
m_create(p_lka, IMSG_SMTP_REPORT_LINK_CONNECT, 0, 0, -1);
m_add_time(p_lka, time(NULL));
m_add_id(p_lka, qid);
m_add_string(p_lka, rdns);
m_add_int(p_lka, fcrdns);
m_add_sockaddr(p_lka, (const struct sockaddr *)ss_src);
m_add_sockaddr(p_lka, (const struct sockaddr *)ss_dest);
m_close(p_lka);
Expand Down
4 changes: 2 additions & 2 deletions usr.sbin/smtpd/smtp_session.c
@@ -1,4 +1,4 @@
/* $OpenBSD: smtp_session.c,v 1.360 2018/12/06 15:32:06 gilles Exp $ */
/* $OpenBSD: smtp_session.c,v 1.361 2018/12/06 16:05:04 gilles Exp $ */

/*
* Copyright (c) 2008 Gilles Chehade <gilles@poolp.org>
Expand Down Expand Up @@ -1969,7 +1969,7 @@ smtp_connected(struct smtp_session *s)
log_info("%016"PRIx64" smtp connected address=%s host=%s",
s->id, ss_to_text(&s->ss), s->hostname);

smtp_report_link_connect(s->id, s->hostname, &s->ss,
smtp_report_link_connect(s->id, s->hostname, s->fcrdns, &s->ss,
&s->listener->ss);

sl = sizeof(ss);
Expand Down
11 changes: 7 additions & 4 deletions usr.sbin/smtpd/smtpd.h
@@ -1,4 +1,4 @@
/* $OpenBSD: smtpd.h,v 1.579 2018/12/06 15:32:06 gilles Exp $ */
/* $OpenBSD: smtpd.h,v 1.580 2018/12/06 16:05:04 gilles Exp $ */

/*
* Copyright (c) 2008 Gilles Chehade <gilles@poolp.org>
Expand Down Expand Up @@ -1316,7 +1316,8 @@ struct io *lka_proc_get_io(const char *);


/* lka_report.c */
void lka_report_smtp_link_connect(const char *, time_t, uint64_t, const char *, const struct sockaddr_storage *, const struct sockaddr_storage *);
void lka_report_smtp_link_connect(const char *, time_t, uint64_t, const char *, int,
const struct sockaddr_storage *, const struct sockaddr_storage *);
void lka_report_smtp_link_disconnect(const char *, time_t, uint64_t);
void lka_report_smtp_link_tls(const char *, time_t, uint64_t, const char *);
void lka_report_smtp_tx_begin(const char *, time_t, uint64_t, uint32_t);
Expand Down Expand Up @@ -1439,7 +1440,8 @@ const char *mta_relay_to_text(struct mta_relay *);


/* mta_report.c */
void mta_report_link_connect(uint64_t, const char *, const struct sockaddr_storage *, const struct sockaddr_storage *);
void mta_report_link_connect(uint64_t, const char *, int,
const struct sockaddr_storage *, const struct sockaddr_storage *);
void mta_report_link_disconnect(uint64_t);
void mta_report_link_tls(uint64_t, const char *);
void mta_report_tx_begin(uint64_t, uint32_t);
Expand Down Expand Up @@ -1520,7 +1522,8 @@ void smtp_collect(void);


/* smtp_report.c */
void smtp_report_link_connect(uint64_t, const char *, const struct sockaddr_storage *, const struct sockaddr_storage *);
void smtp_report_link_connect(uint64_t, const char *, int,
const struct sockaddr_storage *, const struct sockaddr_storage *);
void smtp_report_link_disconnect(uint64_t);
void smtp_report_link_tls(uint64_t, const char *);
void smtp_report_tx_begin(uint64_t, uint32_t);
Expand Down

0 comments on commit 7bbc0d0

Please sign in to comment.