Download raw body.
relayd: expose backup role of relay tables to relayctl
On Sun Aug 09, 2026 at 09:34:09PM +0200, Kirill A. Korinsky wrote:
> On Sat, 08 Aug 2026 14:50:05 +0200,
> Rafael Sadowski <rafael@sizeofvoid.org> wrote:
> >
> > Since I haven't received an OK for my manpage diff yet, and the
> > situation with the backup tables is extremely unclear, here's a first
> > step.
> >
> > I would like to make it transparent for users what is marked as backup
> > table. Here is an example with a modified relayctl call:
> >
> > doas relayctl -v show summary
> > Id Type Name Avlblty Checks Status
> > 1 relay https-gateway active
> > 1 table wiki:3000 active (1 hosts)
> > 1 host 10.0.23.6 100.00% 1/1 up
> > 2 table ap:6443 backup active (1 hosts)
> > 2 host 10.0.23.6 100.00% 1/1 up
> >
> > OK?
> >
>
> It conflicts with https://marc.info/?l=openbsd-tech&m=178628460482427&w=2
>
> Am I wrong?
No you're not wrong. That never worked, but now that "backup" is out,
it's obviously not necessary.
>
> > commit 18b5909ffabbe72603ac927c0550ada83b2cc817
> > Author: Rafael Sadowski <rafael@sizeofvoid.org>
> > Date: Sat Aug 1 21:14:53 2026 +0200
> >
> > relayd: expose backup role of relay tables to relayctl
> >
> > F_BACKUP lives on the relay_table binding (rlt_flags), not on the table itself,
> > because one table can be primary for one relay and backup for another. As a
> > result IMSG_CTL_TABLE from pfe never carried the backup role, and relayctl
> > always displayed backup tables as plain active.
> >
> > Send a copy of the table when reporting status and mark it as backup if the
> > binding says so. The shared table stays untouched and all other flags are
> > preserved.
> >
> > diff --git a/pfe.c b/pfe.c
> > index 1438171..5b89fa9 100644
> > --- a/pfe.c
> > +++ b/pfe.c
> > @@ -409,8 +409,13 @@ relays:
> > &rlay->rl_stats, sizeof(rlay->rl_stats));
> >
> > TAILQ_FOREACH(rlt, &rlay->rl_tables, rlt_entry) {
> > + struct table tbl = *rlt->rlt_table;
> > +
> > + /* Backup role lives on rlt_flags; expose it. */
> > + if (rlt->rlt_flags & F_BACKUP)
> > + tbl.conf.flags |= F_BACKUP;
> > imsg_compose_event(&c->iev, IMSG_CTL_TABLE, 0, 0, -1,
> > - rlt->rlt_table, sizeof(*rlt->rlt_table));
> > + &tbl, sizeof(tbl));
> > if (!(rlt->rlt_table->conf.flags & F_DISABLE))
> > TAILQ_FOREACH(host,
> > &rlt->rlt_table->hosts, entry)
> >
>
> --
> wbr, Kirill
>
relayd: expose backup role of relay tables to relayctl