commit - b14526d53399ce81a9a5534de38a094b15a882c5
commit + 58fc320c602b00aed04b7887496e83d9892bed86
blob - 148b33f6520321f587faa12c157143a0281dfb56
blob + ed82e2197f01cf509ad38088633750d55bda7d1a
--- ca.c
+++ ca.c
-/* $OpenBSD: ca.c,v 1.20 2016/09/02 14:31:47 reyk Exp $ */
+/* $OpenBSD: ca.c,v 1.21 2016/09/02 14:45:51 reyk Exp $ */
/*
* Copyright (c) 2014 Reyk Floeter <reyk@openbsd.org>
case IMSG_CA_PRIVDEC:
IMSG_SIZE_CHECK(imsg, (&cko));
bcopy(imsg->data, &cko, sizeof(cko));
- if (cko.cko_proc > env->sc_prefork_relay)
+ if (cko.cko_proc > env->sc_conf.prefork_relay)
fatalx("ca_dispatch_relay: "
"invalid relay proc");
if (IMSG_DATA_SIZE(imsg) != (sizeof(cko) + cko.cko_flen))
blob - 05e8fa8fd63983cf034f3f9b8ab1f2fbf632aaec
blob + 3ba5179856d6d321e1df20464b2af658b1a3a4f9
--- check_icmp.c
+++ check_icmp.c
-/* $OpenBSD: check_icmp.c,v 1.43 2015/11/28 09:52:07 reyk Exp $ */
+/* $OpenBSD: check_icmp.c,v 1.44 2016/09/02 14:45:51 reyk Exp $ */
/*
* Copyright (c) 2006 Pierre-Yves Ritschard <pyr@openbsd.org>
if (start != NULL)
bcopy(start, &cie->tv_start, sizeof(cie->tv_start));
- bcopy(&cie->env->sc_timeout, &tv, sizeof(tv));
+ bcopy(&cie->env->sc_conf.timeout, &tv, sizeof(tv));
getmonotime(&cie->tv_start);
event_del(&cie->ev);
event_set(&cie->ev, cie->s, EV_TIMEOUT|flags, fn, cie);
retry:
event_again(&cie->ev, s, EV_TIMEOUT|EV_WRITE, send_icmp,
- &cie->tv_start, &cie->env->sc_timeout, cie);
+ &cie->tv_start, &cie->env->sc_conf.timeout, cie);
}
void
retry:
event_again(&cie->ev, s, EV_TIMEOUT|EV_READ, recv_icmp,
- &cie->tv_start, &cie->env->sc_timeout, cie);
+ &cie->tv_start, &cie->env->sc_conf.timeout, cie);
}
/* in_cksum from ping.c --
blob - c9990e0add0d4740b72fdf96084681c18841881e
blob + 9bb494c7275c3e2732d22405f6e44e5f1dd9c152
--- check_script.c
+++ check_script.c
-/* $OpenBSD: check_script.c,v 1.19 2015/12/02 13:41:27 reyk Exp $ */
+/* $OpenBSD: check_script.c,v 1.20 2016/09/02 14:45:51 reyk Exp $ */
/*
* Copyright (c) 2007 - 2014 Reyk Floeter <reyk@openbsd.org>
const char *file, *arg;
struct passwd *pw;
- if ((env->sc_flags & F_SCRIPT) == 0) {
+ if ((env->sc_conf.flags & F_SCRIPT) == 0) {
log_warnx("%s: script disabled", __func__);
return (-1);
}
blob - db6ac05ea4ce014f101dd84a75ca1fa2fa058210
blob + 326f3efa31f14476cab33fe0f62053dbb8b77ce7
--- config.c
+++ config.c
-/* $OpenBSD: config.c,v 1.29 2016/09/02 13:09:21 reyk Exp $ */
+/* $OpenBSD: config.c,v 1.30 2016/09/02 14:45:51 reyk Exp $ */
/*
* Copyright (c) 2011 - 2014 Reyk Floeter <reyk@openbsd.org>
/* Global configuration */
if (privsep_process == PROC_PARENT) {
- env->sc_timeout.tv_sec = CHECK_TIMEOUT / 1000;
- env->sc_timeout.tv_usec = (CHECK_TIMEOUT % 1000) * 1000;
- env->sc_interval.tv_sec = CHECK_INTERVAL;
- env->sc_interval.tv_usec = 0;
- env->sc_prefork_relay = RELAY_NUMPROC;
- env->sc_statinterval.tv_sec = RELAY_STATINTERVAL;
+ env->sc_conf.timeout.tv_sec = CHECK_TIMEOUT / 1000;
+ env->sc_conf.timeout.tv_usec = (CHECK_TIMEOUT % 1000) * 1000;
+ env->sc_conf.interval.tv_sec = CHECK_INTERVAL;
+ env->sc_conf.interval.tv_usec = 0;
+ env->sc_conf.prefork_relay = RELAY_NUMPROC;
+ env->sc_conf.statinterval.tv_sec = RELAY_STATINTERVAL;
}
ps->ps_what[PROC_PARENT] = CONFIG_ALL;
struct privsep *ps = env->sc_ps;
struct table *tb;
struct host *h, *ph;
- struct ctl_flags cf;
u_int what;
- if (IMSG_DATA_SIZE(imsg) != sizeof(cf))
+ if (IMSG_DATA_SIZE(imsg) != sizeof(struct relayd_config))
return (0); /* ignore */
/* Update runtime flags */
- memcpy(&cf, imsg->data, sizeof(cf));
- env->sc_opts = cf.cf_opts;
- env->sc_flags = cf.cf_flags;
+ memcpy(&env->sc_conf, imsg->data, sizeof(env->sc_conf));
what = ps->ps_what[privsep_process];
}
}
- if (env->sc_flags & (F_TLS|F_TLSCLIENT)) {
+ if (env->sc_conf.flags & (F_TLS|F_TLSCLIENT)) {
ssl_init(env);
if (what & CONFIG_CA_ENGINE)
ca_engine_init(env);
blob - 84b811545744e53f3180932bf988462c380cbd1d
blob + e99ff18fbd43e81a7f8cbc51d9c353e2bdbf7421
--- hce.c
+++ hce.c
-/* $OpenBSD: hce.c,v 1.73 2016/09/02 11:51:49 reyk Exp $ */
+/* $OpenBSD: hce.c,v 1.74 2016/09/02 14:45:51 reyk Exp $ */
/*
* Copyright (c) 2006 Pierre-Yves Ritschard <pyr@openbsd.org>
evtimer_add(&env->sc_ev, &tv);
}
- if (env->sc_flags & F_TLS) {
+ if (env->sc_conf.flags & F_TLS) {
TAILQ_FOREACH(table, env->sc_tables, entry) {
if (!(table->conf.flags & F_TLS) ||
table->ssl_ctx != NULL)
}
check_icmp(env, &tv);
- bcopy(&env->sc_interval, &tv, sizeof(tv));
+ bcopy(&env->sc_conf.interval, &tv, sizeof(tv));
evtimer_add(&env->sc_ev, &tv);
}
fatalx("hce_notify_done: invalid table id");
if (hostnst->flags & F_DISABLE) {
- if (env->sc_opts & RELAYD_OPT_LOGUPDATE) {
+ if (env->sc_conf.opts & RELAYD_OPT_LOGUPDATE) {
log_info("host %s, check %s%s (ignoring result, "
"host disabled)",
host->conf.name, table_check(table->conf.check),
else
duration = 0;
- if (env->sc_opts & logopt) {
+ if (env->sc_conf.opts & logopt) {
if (host->code > 0)
asprintf(&codemsg, ",%d", host->code);
log_info("host %s, check %s%s (%lums,%s%s), state %s -> %s, "
blob - a69ef4fb1a01ed0fcee47728a8243ed725d724a7
blob + ecadc7399826e8ee24be65a3bd138ffb2ae010a7
--- parse.y
+++ parse.y
-/* $OpenBSD: parse.y,v 1.208 2016/09/01 10:49:48 claudio Exp $ */
+/* $OpenBSD: parse.y,v 1.209 2016/09/02 14:45:51 reyk Exp $ */
/*
* Copyright (c) 2007 - 2014 Reyk Floeter <reyk@openbsd.org>
main : INTERVAL NUMBER {
if (loadcfg)
break;
- if ((conf->sc_interval.tv_sec = $2) < 0) {
+ if ((conf->sc_conf.interval.tv_sec = $2) < 0) {
yyerror("invalid interval: %d", $2);
YYERROR;
}
| LOG loglevel {
if (loadcfg)
break;
- conf->sc_opts |= $2;
+ conf->sc_conf.opts |= $2;
}
| TIMEOUT timeout {
if (loadcfg)
break;
- bcopy(&$2, &conf->sc_timeout, sizeof(struct timeval));
+ bcopy(&$2, &conf->sc_conf.timeout, sizeof(struct timeval));
}
| PREFORK NUMBER {
if (loadcfg)
"relays: %d", $2);
YYERROR;
}
- conf->sc_prefork_relay = $2;
+ conf->sc_conf.prefork_relay = $2;
}
| SNMP trap optstring {
if (loadcfg)
break;
- conf->sc_flags |= F_SNMP;
+ conf->sc_conf.flags |= F_SNMP;
if ($2)
conf->sc_snmp_flags |= FSNMP_TRAPONLY;
if ($3)
rdr : REDIRECT STRING {
struct rdr *srv;
- conf->sc_flags |= F_NEEDPF;
+ conf->sc_conf.flags |= F_NEEDPF;
if (!loadcfg) {
free($2);
| DISABLE { rdr->conf.flags |= F_DISABLE; }
| STICKYADDR { rdr->conf.flags |= F_STICKY; }
| match PFTAG STRING {
- conf->sc_flags |= F_NEEDPF;
+ conf->sc_conf.flags |= F_NEEDPF;
if (strlcpy(rdr->conf.tag, $3,
sizeof(rdr->conf.tag)) >=
sizeof(rdr->conf.tag)) {
free($2);
tb->conf.id = 0; /* will be set later */
- bcopy(&conf->sc_timeout, &tb->conf.timeout,
+ bcopy(&conf->sc_conf.timeout, &tb->conf.timeout,
sizeof(struct timeval));
TAILQ_INIT(&tb->hosts);
table = tb;
}
}
| INTERVAL NUMBER {
- if ($2 < conf->sc_interval.tv_sec ||
- $2 % conf->sc_interval.tv_sec) {
+ if ($2 < conf->sc_conf.interval.tv_sec ||
+ $2 % conf->sc_conf.interval.tv_sec) {
yyerror("table interval must be "
"divisible by global interval");
YYERROR;
}
table->conf.skip_cnt =
- ($2 / conf->sc_interval.tv_sec) - 1;
+ ($2 / conf->sc_conf.interval.tv_sec) - 1;
}
| MODE dstmode hashkey {
switch ($2) {
| TCP { table->conf.check = CHECK_TCP; }
| ssltls {
table->conf.check = CHECK_TCP;
- conf->sc_flags |= F_TLS;
+ conf->sc_conf.flags |= F_TLS;
table->conf.flags |= F_TLS;
}
| http_type STRING hostname CODE NUMBER {
if ($1) {
- conf->sc_flags |= F_TLS;
+ conf->sc_conf.flags |= F_TLS;
table->conf.flags |= F_TLS;
}
table->conf.check = CHECK_HTTP_CODE;
}
| http_type STRING hostname digest {
if ($1) {
- conf->sc_flags |= F_TLS;
+ conf->sc_conf.flags |= F_TLS;
table->conf.flags |= F_TLS;
}
table->conf.check = CHECK_HTTP_DIGEST;
| SEND sendbuf EXPECT STRING opttls {
table->conf.check = CHECK_SEND_EXPECT;
if ($5) {
- conf->sc_flags |= F_TLS;
+ conf->sc_conf.flags |= F_TLS;
table->conf.flags |= F_TLS;
}
if (strlcpy(table->conf.exbuf, $4,
free($2);
YYERROR;
}
- conf->sc_flags |= F_SCRIPT;
+ conf->sc_conf.flags |= F_SCRIPT;
free($2);
}
;
r->rl_conf.port = h->port.val[0];
if ($5) {
r->rl_conf.flags |= F_TLS;
- conf->sc_flags |= F_TLS;
+ conf->sc_conf.flags |= F_TLS;
}
tableport = h->port.val[0];
host_free(&al);
}
if ($2) {
rlay->rl_conf.flags |= F_TLSCLIENT;
- conf->sc_flags |= F_TLSCLIENT;
+ conf->sc_conf.flags |= F_TLSCLIENT;
}
}
| SESSION TIMEOUT NUMBER {
host_free(&al);
}
| NAT LOOKUP retry {
- conf->sc_flags |= F_NEEDPF;
+ conf->sc_conf.flags |= F_NEEDPF;
rlay->rl_conf.flags |= F_NATLOOK;
rlay->rl_conf.dstretry = $3;
}
| DESTINATION retry {
- conf->sc_flags |= F_NEEDPF;
+ conf->sc_conf.flags |= F_NEEDPF;
rlay->rl_conf.flags |= F_DIVERT;
rlay->rl_conf.dstretry = $2;
}
YYACCEPT;
}
- conf->sc_flags |= F_NEEDRT;
+ conf->sc_conf.flags |= F_NEEDRT;
TAILQ_FOREACH(rt, conf->sc_rts, rt_entry)
if (!strcmp(rt->rt_conf.name, $2))
break;
struct relay_table *rlt;
conf = x_conf;
- conf->sc_flags = 0;
+ conf->sc_conf.flags = 0;
loadcfg = 1;
errors = 0;
/* Free macros and check which have not been used. */
for (sym = TAILQ_FIRST(&symhead); sym != NULL; sym = next) {
next = TAILQ_NEXT(sym, entry);
- if ((conf->sc_opts & RELAYD_OPT_VERBOSE) && !sym->used)
+ if ((conf->sc_conf.opts & RELAYD_OPT_VERBOSE) && !sym->used)
fprintf(stderr, "warning: macro '%s' not "
"used\n", sym->nam);
if (!sym->persist) {
free(rlay);
}
- if (timercmp(&conf->sc_timeout, &conf->sc_interval, >=)) {
+ if (timercmp(&conf->sc_conf.timeout, &conf->sc_conf.interval, >=)) {
log_warnx("global timeout exceeds interval");
errors++;
}
log_warnx("unused table: %s", table->conf.name);
errors++;
}
- if (timercmp(&table->conf.timeout, &conf->sc_interval, >=)) {
+ if (timercmp(&table->conf.timeout,
+ &conf->sc_conf.interval, >=)) {
log_warnx("table timeout exceeds interval: %s",
table->conf.name);
errors++;
blob - 265b3cc12dd040915820db5d357654ab12694a3c
blob + 9c039c66b2a2ba0d69793f69321ce6cca88fdaad
--- pfe.c
+++ pfe.c
-/* $OpenBSD: pfe.c,v 1.85 2016/09/02 12:12:51 reyk Exp $ */
+/* $OpenBSD: pfe.c,v 1.86 2016/09/02 14:45:51 reyk Exp $ */
/*
* Copyright (c) 2006 Pierre-Yves Ritschard <pyr@openbsd.org>
/* Schedule statistics timer */
if (!event_initialized(&env->sc_statev)) {
evtimer_set(&env->sc_statev, pfe_statistics, NULL);
- bcopy(&env->sc_statinterval, &tv, sizeof(tv));
+ bcopy(&env->sc_conf.statinterval, &tv, sizeof(tv));
evtimer_add(&env->sc_statev, &tv);
}
}
case IMSG_NATLOOK:
IMSG_SIZE_CHECK(imsg, &cnl);
bcopy(imsg->data, &cnl, sizeof(cnl));
- if (cnl.proc > env->sc_prefork_relay)
+ if (cnl.proc > env->sc_conf.prefork_relay)
fatalx("pfe_dispatch_relay: "
"invalid relay proc");
if (natlook(env, &cnl) != 0)
case IMSG_STATISTICS:
IMSG_SIZE_CHECK(imsg, &crs);
bcopy(imsg->data, &crs, sizeof(crs));
- if (crs.proc > env->sc_prefork_relay)
+ if (crs.proc > env->sc_conf.prefork_relay)
fatalx("pfe_dispatch_relay: "
"invalid relay proc");
if ((rlay = relay_find(env, crs.id)) == NULL)
fatalx("pfe_dispatch_relay: invalid relay id");
bcopy(&crs, &rlay->rl_stats[crs.proc], sizeof(crs));
rlay->rl_stats[crs.proc].interval =
- env->sc_statinterval.tv_sec;
+ env->sc_conf.statinterval.tv_sec;
break;
case IMSG_CTL_SESSION:
IMSG_SIZE_CHECK(imsg, &con);
if (env->sc_relays == NULL)
goto routers;
TAILQ_FOREACH(rlay, env->sc_relays, rl_entry) {
- rlay->rl_stats[env->sc_prefork_relay].id = EMPTY_ID;
+ rlay->rl_stats[env->sc_conf.prefork_relay].id = EMPTY_ID;
imsg_compose_event(&c->iev, IMSG_CTL_RELAY, 0, 0, -1,
rlay, sizeof(*rlay));
imsg_compose_event(&c->iev, IMSG_CTL_RELAY_STATS, 0, 0, -1,
{
int proc, cid;
- for (proc = 0; proc < env->sc_prefork_relay; proc++) {
+ for (proc = 0; proc < env->sc_conf.prefork_relay; proc++) {
cid = c->iev.ibuf.fd;
/*
cur->tick++;
cur->avg = (cur->last + cur->avg) / 2;
cur->last_hour += cur->last;
- if ((cur->tick % (3600 / env->sc_statinterval.tv_sec)) == 0) {
+ if ((cur->tick %
+ (3600 / env->sc_conf.statinterval.tv_sec)) == 0) {
cur->avg_hour = (cur->last_hour + cur->avg_hour) / 2;
resethour++;
}
cur->last_day += cur->last;
- if ((cur->tick % (86400 / env->sc_statinterval.tv_sec)) == 0) {
+ if ((cur->tick %
+ (86400 / env->sc_conf.statinterval.tv_sec)) == 0) {
cur->avg_day = (cur->last_day + cur->avg_day) / 2;
resethour++;
}
if (resetday)
cur->last_day = 0;
- rdr->stats.interval = env->sc_statinterval.tv_sec;
+ rdr->stats.interval = env->sc_conf.statinterval.tv_sec;
}
/* Schedule statistics timer */
evtimer_set(&env->sc_statev, pfe_statistics, NULL);
- bcopy(&env->sc_statinterval, &tv, sizeof(tv));
+ bcopy(&env->sc_conf.statinterval, &tv, sizeof(tv));
evtimer_add(&env->sc_statev, &tv);
}
blob - f76c5aba445adc2aa5aa45ace4cc2fed5b1086fa
blob + add0bf8b4d921fdbdfeff5015525a4b8c51c4363
--- pfe_filter.c
+++ pfe_filter.c
-/* $OpenBSD: pfe_filter.c,v 1.59 2015/11/29 01:20:33 benno Exp $ */
+/* $OpenBSD: pfe_filter.c,v 1.60 2016/09/02 14:45:51 reyk Exp $ */
/*
* Copyright (c) 2006 Pierre-Yves Ritschard <pyr@openbsd.org>
{
struct pf_status status;
- if (!(env->sc_flags & F_NEEDPF))
+ if (!(env->sc_conf.flags & F_NEEDPF))
return;
if (s == -1)
struct pfr_table *tables;
struct pfioc_table io;
- if (!(env->sc_flags & F_NEEDPF))
+ if (!(env->sc_conf.flags & F_NEEDPF))
return;
if ((tables = calloc(env->sc_rdrcount, sizeof(*tables))) == NULL)
struct rdr *rdr;
int cnt = 0;
- if (!(env->sc_flags & F_NEEDPF))
+ if (!(env->sc_conf.flags & F_NEEDPF))
return;
TAILQ_FOREACH(rdr, env->sc_rdrs, entry) {
struct sockaddr_in6 *sain6;
struct host *host;
- if (!(env->sc_flags & F_NEEDPF))
+ if (!(env->sc_conf.flags & F_NEEDPF))
return;
if (table == NULL)
cnt = kill_srcnodes(env, table);
free(addlist);
- if (env->sc_opts & RELAYD_OPT_LOGUPDATE)
+ if (env->sc_conf.opts & RELAYD_OPT_LOGUPDATE)
log_info("table %s: %d added, %d deleted, "
"%d changed, %d killed", io.pfrio_table.pfrt_name,
io.pfrio_nadd, io.pfrio_ndel, io.pfrio_nchange, cnt);
{
struct pfioc_table io;
- if (!(env->sc_flags & F_NEEDPF))
+ if (!(env->sc_conf.flags & F_NEEDPF))
return;
memset(&io, 0, sizeof(io));
char anchor[PF_ANCHOR_NAME_SIZE];
struct table *t = rdr->table;
- if ((env->sc_flags & F_NEEDPF) == 0)
+ if ((env->sc_conf.flags & F_NEEDPF) == 0)
return;
bzero(anchor, sizeof(anchor));
struct rdr *rdr;
char anchor[PF_ANCHOR_NAME_SIZE];
- if (!(env->sc_flags & F_NEEDPF))
+ if (!(env->sc_conf.flags & F_NEEDPF))
return;
kill_tables(env);
struct sockaddr_in6 *in6, *out6;
char ibuf[BUFSIZ], obuf[BUFSIZ];
- if (!(env->sc_flags & F_NEEDPF))
+ if (!(env->sc_conf.flags & F_NEEDPF))
return (0);
bzero(&pnl, sizeof(pnl));
blob - 731060e27469caa9326b564ea25235ea0b5d90ae
blob + f7382ef514ca694bf9b9cf5ffea15e55b6ea12a1
--- pfe_route.c
+++ pfe_route.c
-/* $OpenBSD: pfe_route.c,v 1.10 2015/12/02 13:41:27 reyk Exp $ */
+/* $OpenBSD: pfe_route.c,v 1.11 2016/09/02 14:45:51 reyk Exp $ */
/*
* Copyright (c) 2009 - 2011 Reyk Floeter <reyk@openbsd.org>
{
u_int rtfilter;
- if (!(env->sc_flags & F_NEEDRT))
+ if (!(env->sc_conf.flags & F_NEEDRT))
return;
if ((env->sc_rtsock = socket(AF_ROUTE, SOCK_RAW, 0)) == -1)
char buf[HOST_NAME_MAX+1];
struct ctl_netroute crt;
- if (!(env->sc_flags & F_NEEDRT))
+ if (!(env->sc_conf.flags & F_NEEDRT))
return;
TAILQ_FOREACH(nr, &rt->rt_netroutes, nr_entry) {
blob - 55e2791144807faa0a6e14914ee7d2c049bae784
blob + 89254b4d6f9e2b3605f714ec5b439cb8701c3bf4
--- relay.c
+++ relay.c
-/* $OpenBSD: relay.c,v 1.210 2016/09/02 14:31:47 reyk Exp $ */
+/* $OpenBSD: relay.c,v 1.211 2016/09/02 14:45:51 reyk Exp $ */
/*
* Copyright (c) 2006 - 2014 Reyk Floeter <reyk@openbsd.org>
/* Schedule statistics timer */
evtimer_set(&env->sc_statev, relay_statistics, ps);
- bcopy(&env->sc_statinterval, &tv, sizeof(tv));
+ bcopy(&env->sc_conf.statinterval, &tv, sizeof(tv));
evtimer_add(&env->sc_statev, &tv);
}
cur->tick++;
cur->avg = (cur->last + cur->avg) / 2;
cur->last_hour += cur->last;
- if ((cur->tick % (3600 / env->sc_statinterval.tv_sec)) == 0) {
+ if ((cur->tick %
+ (3600 / env->sc_conf.statinterval.tv_sec)) == 0) {
cur->avg_hour = (cur->last_hour + cur->avg_hour) / 2;
resethour++;
}
cur->last_day += cur->last;
- if ((cur->tick % (86400 / env->sc_statinterval.tv_sec)) == 0) {
+ if ((cur->tick %
+ (86400 / env->sc_conf.statinterval.tv_sec)) == 0) {
cur->avg_day = (cur->last_day + cur->avg_day) / 2;
resethour++;
}
/* Schedule statistics timer */
evtimer_set(&env->sc_statev, relay_statistics, ps);
- bcopy(&env->sc_statinterval, &tv, sizeof(tv));
+ bcopy(&env->sc_conf.statinterval, &tv, sizeof(tv));
evtimer_add(&env->sc_statev, &tv);
}
if (con->se_out.bev != NULL)
bufferevent_disable(con->se_out.bev, EV_READ|EV_WRITE);
- if ((env->sc_opts & RELAYD_OPT_LOGUPDATE) && msg != NULL) {
+ if ((env->sc_conf.opts & RELAYD_OPT_LOGUPDATE) && msg != NULL) {
bzero(&ibuf, sizeof(ibuf));
bzero(&obuf, sizeof(obuf));
(void)print_host(&con->se_in.ss, ibuf, sizeof(ibuf));
* Set session ID context to a random value. It needs to be the
* same accross all relay processes or session caching will fail.
*/
- if (!SSL_CTX_set_session_id_context(ctx, env->sc_tls_sid,
- sizeof(env->sc_tls_sid)))
+ if (!SSL_CTX_set_session_id_context(ctx, env->sc_conf.tls_sid,
+ sizeof(env->sc_conf.tls_sid)))
goto err;
/* The text versions of the keys/certs are not needed anymore */
blob - 8a8ca2852c545d62d78057cd8976f76bd81389ea
blob + 7c9dd6ed99661afcf5e21e9fa32f578dd2db19fd
--- relayd.c
+++ relayd.c
-/* $OpenBSD: relayd.c,v 1.158 2016/09/02 12:12:51 reyk Exp $ */
+/* $OpenBSD: relayd.c,v 1.159 2016/09/02 14:45:51 reyk Exp $ */
/*
* Copyright (c) 2007 - 2016 Reyk Floeter <reyk@openbsd.org>
ps->ps_env = env;
TAILQ_INIT(&ps->ps_rcsocks);
env->sc_conffile = conffile;
- env->sc_opts = opts;
+ env->sc_conf.opts = opts;
TAILQ_INIT(&env->sc_hosts);
TAILQ_INIT(&env->sc_sessions);
env->sc_rtable = getrtable();
/* initialize the TLS session id to a random key for all relay procs */
- arc4random_buf(env->sc_tls_sid, sizeof(env->sc_tls_sid));
+ arc4random_buf(env->sc_conf.tls_sid, sizeof(env->sc_conf.tls_sid));
if (parse_config(env->sc_conffile, env) == -1)
exit(1);
if (debug)
- env->sc_opts |= RELAYD_OPT_LOGUPDATE;
+ env->sc_conf.opts |= RELAYD_OPT_LOGUPDATE;
if (geteuid())
errx(1, "need root privileges");
if (!debug && daemon(1, 0) == -1)
err(1, "failed to daemonize");
- if (env->sc_opts & RELAYD_OPT_NOACTION)
+ if (env->sc_conf.opts & RELAYD_OPT_NOACTION)
ps->ps_noaction = 1;
else
log_info("startup");
- ps->ps_instances[PROC_RELAY] = env->sc_prefork_relay;
- ps->ps_instances[PROC_CA] = env->sc_prefork_relay;
+ ps->ps_instances[PROC_RELAY] = env->sc_conf.prefork_relay;
+ ps->ps_instances[PROC_CA] = env->sc_conf.prefork_relay;
proc_init(ps, procs, nitems(procs));
log_procinit("parent");
exit(1);
}
- if (env->sc_opts & RELAYD_OPT_NOACTION) {
+ if (env->sc_conf.opts & RELAYD_OPT_NOACTION) {
fprintf(stderr, "configuration OK\n");
proc_kill(env->sc_ps);
exit(0);
}
- if (env->sc_flags & (F_TLS|F_TLSCLIENT))
+ if (env->sc_conf.flags & (F_TLS|F_TLSCLIENT))
ssl_init(env);
/* rekey the TLS tickets before pushing the config */
struct protocol *proto;
struct relay *rlay;
int id;
- struct ctl_flags cf;
int s, ret = -1;
TAILQ_FOREACH(tb, env->sc_tables, entry)
}
/* HCE, PFE, CA and the relays need to reload their config. */
- env->sc_reload = 2 + (2 * env->sc_prefork_relay);
+ env->sc_reload = 2 + (2 * env->sc_conf.prefork_relay);
for (id = 0; id < PROC_MAX; id++) {
if (id == privsep_process)
continue;
- cf.cf_opts = env->sc_opts;
- cf.cf_flags = env->sc_flags;
- if ((env->sc_flags & F_NEEDPF) && id == PROC_PFE) {
+ if ((env->sc_conf.flags & F_NEEDPF) && id == PROC_PFE) {
/* Send pf socket to the pf engine */
if ((s = open(PF_SOCKET, O_RDWR)) == -1) {
log_debug("%s: cannot open pf socket",
s = -1;
proc_compose_imsg(env->sc_ps, id, -1, IMSG_CFG_DONE, -1,
- s, &cf, sizeof(cf));
+ s, &env->sc_conf, sizeof(env->sc_conf));
}
ret = 0;
case IMSG_BINDANY:
IMSG_SIZE_CHECK(imsg, &bnd);
bcopy(imsg->data, &bnd, sizeof(bnd));
- if (bnd.bnd_proc > env->sc_prefork_relay)
+ if (bnd.bnd_proc > env->sc_conf.prefork_relay)
fatalx("pfe_dispatch_relay: "
"invalid relay proc");
switch (bnd.bnd_proto) {
blob - 0d5c07ac9fb28b2ac0811ec4dfa920fc355d9587
blob + 8427454c5306d9e81bbeaedef27abe557bd9a9cf
--- relayd.h
+++ relayd.h
-/* $OpenBSD: relayd.h,v 1.229 2016/09/02 12:12:51 reyk Exp $ */
+/* $OpenBSD: relayd.h,v 1.230 2016/09/02 14:45:51 reyk Exp $ */
/*
* Copyright (c) 2006 - 2016 Reyk Floeter <reyk@openbsd.org>
typedef u_int32_t objid_t;
-struct ctl_flags {
- u_int8_t cf_opts;
- u_int32_t cf_flags;
-};
-
struct ctl_status {
objid_t id;
int up;
struct relayd *p_env;
};
+struct relayd_config {
+ char tls_sid[SSL_MAX_SID_CTX_LENGTH];
+ struct timeval interval;
+ struct timeval timeout;
+ struct timeval statinterval;
+ u_int16_t prefork_relay;
+ u_int16_t opts;
+ u_int32_t flags;
+};
+
struct relayd {
- u_int8_t sc_opts;
- u_int32_t sc_flags;
+ struct relayd_config sc_conf;
const char *sc_conffile;
struct pfdata *sc_pf;
int sc_rtsock;
int sc_relaycount;
int sc_routercount;
int sc_routecount;
- struct timeval sc_interval;
- struct timeval sc_timeout;
struct table sc_empty_table;
struct protocol sc_proto_default;
struct event sc_ev;
struct netroutelist *sc_routes;
struct ca_pkeylist *sc_pkeys;
struct sessionlist sc_sessions;
- u_int16_t sc_prefork_relay;
char sc_demote_group[IFNAMSIZ];
u_int16_t sc_id;
int sc_rtable;
struct event sc_statev;
- struct timeval sc_statinterval;
int sc_snmp;
const char *sc_snmp_path;
struct privsep *sc_ps;
int sc_reload;
- char sc_tls_sid[SSL_MAX_SID_CTX_LENGTH];
struct tls_ticket sc_tls_ticket;
struct tls_ticket sc_tls_ticket_bak;
};
blob - 22a8e9633fc357a91c4bdb182dfa713588d88051
blob + 6b16d5f836d724986b997a2d9c8615ec854d6fad
--- snmp.c
+++ snmp.c
-/* $OpenBSD: snmp.c,v 1.26 2015/12/05 10:59:03 blambert Exp $ */
+/* $OpenBSD: snmp.c,v 1.27 2016/09/02 14:45:51 reyk Exp $ */
/*
* Copyright (c) 2008 - 2014 Reyk Floeter <reyk@openbsd.org>
env->sc_snmp = -1;
}
- if ((env->sc_flags & F_SNMP) == 0)
+ if ((env->sc_conf.flags & F_SNMP) == 0)
return;
snmp_procid = id;
u_int instanceidx, objectidx;
u_int32_t status, value = 0;
u_int64_t value64 = 0;
- int i;
+ int i, nrelay = env->sc_conf.prefork_relay;
instanceidx = oid->o_id[OIDIDX_relaydInfo + 2];
objectidx = oid->o_id[OIDIDX_relaydInfo + 1];
return (-1);
break;
case 4: /* count */
- for (i = 0; i < env->sc_prefork_relay; i++)
+ for (i = 0; i < nrelay; i++)
value64 += rly->rl_stats[i].cnt;
if (snmp_agentx_varbind(resp, oid,
AGENTX_COUNTER64, &value64,
return (-1);
break;
case 5: /* average */
- for (i = 0; i < env->sc_prefork_relay; i++)
+ for (i = 0; i < nrelay; i++)
value += rly->rl_stats[i].avg;
if (snmp_agentx_varbind(resp, oid,
AGENTX_INTEGER, &value,
return (-1);
break;
case 6: /* last */
- for (i = 0; i < env->sc_prefork_relay; i++)
+ for (i = 0; i < nrelay; i++)
value += rly->rl_stats[i].last;
if (snmp_agentx_varbind(resp, oid,
AGENTX_INTEGER, &value,
return (-1);
break;
case 7: /* average hour */
- for (i = 0; i < env->sc_prefork_relay; i++)
+ for (i = 0; i < nrelay; i++)
value += rly->rl_stats[i].avg_hour;
if (snmp_agentx_varbind(resp, oid,
AGENTX_INTEGER, &value,
return (-1);
break;
case 8: /* last hour */
- for (i = 0; i < env->sc_prefork_relay; i++)
+ for (i = 0; i < nrelay; i++)
value += rly->rl_stats[i].last_hour;
if (snmp_agentx_varbind(resp, oid,
AGENTX_INTEGER, &value,
return (-1);
break;
case 9: /* average day */
- for (i = 0; i < env->sc_prefork_relay; i++)
+ for (i = 0; i < nrelay; i++)
value += rly->rl_stats[i].avg_day;
if (snmp_agentx_varbind(resp, oid,
AGENTX_INTEGER, &value,
return (-1);
break;
case 10: /* last day */
- for (i = 0; i < env->sc_prefork_relay; i++)
+ for (i = 0; i < nrelay; i++)
value += rly->rl_stats[i].last_day;
if (snmp_agentx_varbind(resp, oid,
AGENTX_INTEGER, &value,