sync with OpenBSD -current

This commit is contained in:
purplerain 2024-07-05 02:44:07 +00:00
parent ff77f1c0ed
commit b8cf0a282a
Signed by: purplerain
GPG Key ID: F42C07F07E2E35B7
19 changed files with 237 additions and 127 deletions

View File

@ -1,5 +1,5 @@
# #
# $OpenBSD: daily,v 1.99 2024/05/30 14:29:05 sthen Exp $ # $OpenBSD: daily,v 1.100 2024/07/04 05:06:58 bket Exp $
# From: @(#)daily 8.2 (Berkeley) 1/25/94 # From: @(#)daily 8.2 (Berkeley) 1/25/94
# #
# For local additions, create the file /etc/daily.local. # For local additions, create the file /etc/daily.local.
@ -136,9 +136,6 @@ done
next_part "Services that should be running but aren't:" next_part "Services that should be running but aren't:"
rcctl ls failed rcctl ls failed
next_part "Services that are running but shouldn't:"
rcctl ls rogue
next_part "Filesystems which need to be dumped:" next_part "Filesystems which need to be dumped:"
dump w | grep -vB1 ^Dump dump w | grep -vB1 ^Dump

View File

@ -1,4 +1,4 @@
.\" $OpenBSD: daily.8,v 1.30 2024/05/16 11:33:59 solene Exp $ .\" $OpenBSD: daily.8,v 1.31 2024/07/04 05:06:58 bket Exp $
.\" .\"
.\" Copyright (c) 2003 Jason McIntyre <jmc@openbsd.org> .\" Copyright (c) 2003 Jason McIntyre <jmc@openbsd.org>
.\" .\"
@ -14,7 +14,7 @@
.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
.\" .\"
.Dd $Mdocdate: May 16 2024 $ .Dd $Mdocdate: July 4 2024 $
.Dt DAILY 8 .Dt DAILY 8
.Os .Os
.Sh NAME .Sh NAME
@ -112,7 +112,7 @@ for the mount options, e.g.
Checks daemon status. Checks daemon status.
Lists any daemons which are enabled in Lists any daemons which are enabled in
.Xr rc.conf.local 8 .Xr rc.conf.local 8
but which are not actually running (and vice versa). but which are not actually running.
.It .It
Reports on which file systems need to be dumped via Reports on which file systems need to be dumped via
.Xr dump 8 . .Xr dump 8 .

View File

@ -1,4 +1,4 @@
/* $OpenBSD: qcgpio.c,v 1.9 2023/04/11 04:45:11 mglocker Exp $ */ /* $OpenBSD: qcgpio.c,v 1.10 2024/07/04 18:35:36 patrick Exp $ */
/* /*
* Copyright (c) 2022 Mark Kettenis <kettenis@openbsd.org> * Copyright (c) 2022 Mark Kettenis <kettenis@openbsd.org>
* *
@ -93,11 +93,13 @@ struct cfdriver qcgpio_cd = {
const char *qcgpio_hids[] = { const char *qcgpio_hids[] = {
"QCOM060C", "QCOM060C",
"QCOM080D", "QCOM080D",
"QCOM0C0C",
NULL NULL
}; };
int qcgpio_sc7180_pin_map(int, bus_size_t *); int qcgpio_sc7180_pin_map(int, bus_size_t *);
int qcgpio_sc8280xp_pin_map(int, bus_size_t *); int qcgpio_sc8280xp_pin_map(int, bus_size_t *);
int qcgpio_x1e80100_pin_map(int, bus_size_t *);
int qcgpio_read_pin(void *, int); int qcgpio_read_pin(void *, int);
void qcgpio_write_pin(void *, int, int); void qcgpio_write_pin(void *, int, int);
@ -142,6 +144,9 @@ qcgpio_acpi_attach(struct device *parent, struct device *self, void *aux)
} else if (strcmp(aaa->aaa_dev, "QCOM060C") == 0) { } else if (strcmp(aaa->aaa_dev, "QCOM060C") == 0) {
sc->sc_npins = 228; sc->sc_npins = 228;
sc->sc_pin_map = qcgpio_sc8280xp_pin_map; sc->sc_pin_map = qcgpio_sc8280xp_pin_map;
} else if (strcmp(aaa->aaa_dev, "QCOM0C0C") == 0) {
sc->sc_npins = 239;
sc->sc_pin_map = qcgpio_x1e80100_pin_map;
} }
KASSERT(sc->sc_npins != 0); KASSERT(sc->sc_npins != 0);
@ -223,6 +228,22 @@ qcgpio_sc8280xp_pin_map(int pin, bus_size_t *off)
} }
} }
int
qcgpio_x1e80100_pin_map(int pin, bus_size_t *off)
{
switch (pin) {
case 3:
case 51:
return pin;
case 0x180:
return 67;
case 0x3c0:
return 3;
default:
return -1;
}
}
int int
qcgpio_read_pin(void *cookie, int pin) qcgpio_read_pin(void *cookie, int pin)
{ {

View File

@ -1,4 +1,4 @@
/* $OpenBSD: qcscm.c,v 1.6 2024/06/23 22:04:53 patrick Exp $ */ /* $OpenBSD: qcscm.c,v 1.7 2024/07/04 20:11:46 kettenis Exp $ */
/* /*
* Copyright (c) 2022 Patrick Wildt <patrick@blueri.se> * Copyright (c) 2022 Patrick Wildt <patrick@blueri.se>
* *
@ -744,8 +744,6 @@ qcscm_uefi_rtc_set(uint32_t off)
return 0; return 0;
rtcinfo[0] = off; rtcinfo[0] = off;
rtcinfo[1] = 0x10000;
rtcinfo[2] = 0;
if (qcscm_uefi_set_variable(sc, u"RTCInfo", sizeof(u"RTCInfo"), if (qcscm_uefi_set_variable(sc, u"RTCInfo", sizeof(u"RTCInfo"),
&qcscm_uefi_rtcinfo_guid, EFI_VARIABLE_NON_VOLATILE | &qcscm_uefi_rtcinfo_guid, EFI_VARIABLE_NON_VOLATILE |

View File

@ -1,4 +1,4 @@
/* $OpenBSD: qcspmi.c,v 1.4 2024/05/13 01:15:50 jsg Exp $ */ /* $OpenBSD: qcspmi.c,v 1.5 2024/07/04 21:54:38 kettenis Exp $ */
/* /*
* Copyright (c) 2022 Patrick Wildt <patrick@blueri.se> * Copyright (c) 2022 Patrick Wildt <patrick@blueri.se>
* *
@ -34,14 +34,16 @@
#define SPMI_VERSION_V2_MIN 0x20010000 #define SPMI_VERSION_V2_MIN 0x20010000
#define SPMI_VERSION_V3_MIN 0x30000000 #define SPMI_VERSION_V3_MIN 0x30000000
#define SPMI_VERSION_V5_MIN 0x50000000 #define SPMI_VERSION_V5_MIN 0x50000000
#define SPMI_ARB_APID_MAP(x) (0x900 + (x) * 0x4) #define SPMI_VERSION_V7_MIN 0x70000000
#define SPMI_ARB_APID_MAP(sc, x) ((sc)->sc_arb_apid_map + (x) * 0x4)
#define SPMI_ARB_APID_MAP_PPID_MASK 0xfff #define SPMI_ARB_APID_MAP_PPID_MASK 0xfff
#define SPMI_ARB_APID_MAP_PPID_SHIFT 8 #define SPMI_ARB_APID_MAP_PPID_SHIFT 8
#define SPMI_ARB_APID_MAP_IRQ_OWNER (1 << 14) #define SPMI_ARB_APID_MAP_IRQ_OWNER (1 << 14)
/* Channel registers. */ /* Channel registers. */
#define SPMI_CHAN_OFF(x) (0x10000 * (x)) #define SPMI_CHAN_OFF(sc, x) ((sc)->sc_chan_stride * (x))
#define SPMI_OBSV_OFF(x, y) (0x10000 * (x) + 0x80 * (y)) #define SPMI_OBSV_OFF(sc, x, y) \
((sc)->sc_obsv_ee_stride * (x) + (sc)->sc_obsv_apid_stride * (y))
#define SPMI_COMMAND 0x00 #define SPMI_COMMAND 0x00
#define SPMI_COMMAND_OP_EXT_WRITEL (0 << 27) #define SPMI_COMMAND_OP_EXT_WRITEL (0 << 27)
#define SPMI_COMMAND_OP_EXT_READL (1 << 27) #define SPMI_COMMAND_OP_EXT_READL (1 << 27)
@ -75,14 +77,15 @@
#define SPMI_IRQ_CLEAR 0x108 #define SPMI_IRQ_CLEAR 0x108
/* Intr registers */ /* Intr registers */
#define SPMI_OWNER_ACC_STATUS(x, y) (0x10000 * (x) + 0x4 * (y)) #define SPMI_OWNER_ACC_STATUS(sc, x, y) \
((sc)->sc_chan_stride * (x) + 0x4 * (y))
/* Config registers */ /* Config registers */
#define SPMI_OWNERSHIP_TABLE(x) (0x700 + (x) * 0x4) #define SPMI_OWNERSHIP_TABLE(sc, x) ((sc)->sc_ownership_table + (x) * 0x4)
#define SPMI_OWNERSHIP_TABLE_OWNER(x) ((x) & 0x7) #define SPMI_OWNERSHIP_TABLE_OWNER(x) ((x) & 0x7)
/* Misc */ /* Misc */
#define SPMI_MAX_PERIPH 512 #define SPMI_MAX_PERIPH 1024
#define SPMI_MAX_PPID 4096 #define SPMI_MAX_PPID 4096
#define SPMI_PPID_TO_APID_VALID (1U << 15) #define SPMI_PPID_TO_APID_VALID (1U << 15)
#define SPMI_PPID_TO_APID_MASK (0x7fff) #define SPMI_PPID_TO_APID_MASK (0x7fff)
@ -144,6 +147,12 @@ struct qcspmi_softc {
struct qcspmi_apid sc_apid[SPMI_MAX_PERIPH]; struct qcspmi_apid sc_apid[SPMI_MAX_PERIPH];
uint16_t sc_ppid_to_apid[SPMI_MAX_PPID]; uint16_t sc_ppid_to_apid[SPMI_MAX_PPID];
uint16_t sc_max_periph;
bus_size_t sc_chan_stride;
bus_size_t sc_obsv_ee_stride;
bus_size_t sc_obsv_apid_stride;
bus_size_t sc_arb_apid_map;
bus_size_t sc_ownership_table;
struct spmi_controller sc_tag; struct spmi_controller sc_tag;
struct interrupt_controller sc_ic; struct interrupt_controller sc_ic;
@ -180,7 +189,8 @@ qcspmi_match(struct device *parent, void *match, void *aux)
{ {
struct fdt_attach_args *faa = aux; struct fdt_attach_args *faa = aux;
return OF_is_compatible(faa->fa_node, "qcom,spmi-pmic-arb"); return OF_is_compatible(faa->fa_node, "qcom,spmi-pmic-arb") ||
OF_is_compatible(faa->fa_node, "qcom,x1e80100-spmi-pmic-arb");
} }
void void
@ -190,15 +200,14 @@ qcspmi_attach(struct device *parent, struct device *self, void *aux)
struct qcspmi_softc *sc = (struct qcspmi_softc *)self; struct qcspmi_softc *sc = (struct qcspmi_softc *)self;
struct qcspmi_apid *apid, *last_apid; struct qcspmi_apid *apid, *last_apid;
uint32_t val, ppid, irq_own; uint32_t val, ppid, irq_own;
struct spmi_attach_args sa; struct fdt_reg *spmi_reg;
char name[32]; int spmi_nreg;
uint32_t reg[2]; int i, j, node, spmi;
int i, j, node;
sc->sc_node = faa->fa_node; sc->sc_node = faa->fa_node;
sc->sc_iot = faa->fa_iot; sc->sc_iot = faa->fa_iot;
for (i = 0; i < nitems(qcspmi_regs); i++) { for (i = QCSPMI_REG_CORE; i < QCSPMI_REG_INTR; i++) {
j = OF_getindex(faa->fa_node, qcspmi_regs[i], "reg-names"); j = OF_getindex(faa->fa_node, qcspmi_regs[i], "reg-names");
if (j < 0 || j >= faa->fa_nreg) { if (j < 0 || j >= faa->fa_nreg) {
printf(": no %s registers\n", qcspmi_regs[i]); printf(": no %s registers\n", qcspmi_regs[i]);
@ -212,13 +221,69 @@ qcspmi_attach(struct device *parent, struct device *self, void *aux)
} }
} }
/* Support only version 5 for now */ spmi = OF_getnodebyname(faa->fa_node, "spmi");
if (spmi) {
/* Multiple busses; only support the first. */
uint32_t reg[8];
if (OF_getpropintarray(spmi, "reg", reg,
sizeof(reg)) != sizeof(reg)) {
printf(": no spmi registers\n");
return;
}
spmi_reg = faa->fa_reg;
spmi_reg[0].addr = ((uint64_t)reg[0] << 32) | reg[1];
spmi_reg[0].size = ((uint64_t)reg[2] << 32) | reg[3];
spmi_reg[1].addr = ((uint64_t)reg[4] << 32) | reg[5];
spmi_reg[1].size = ((uint64_t)reg[6] << 32) | reg[7];
spmi_nreg = 2;
} else {
/* Single bus. */
spmi = faa->fa_node;
spmi_reg = faa->fa_reg;
spmi_nreg = faa->fa_nreg;
}
for (i = QCSPMI_REG_INTR; i < QCSPMI_REG_MAX; i++) {
j = OF_getindex(spmi, qcspmi_regs[i], "reg-names");
if (j < 0 || j >= spmi_nreg) {
printf(": no %s registers\n", qcspmi_regs[i]);
return;
}
if (bus_space_map(sc->sc_iot, spmi_reg[j].addr,
spmi_reg[j].size, 0, &sc->sc_ioh[i])) {
printf(": can't map %s registers\n", qcspmi_regs[i]);
return;
}
}
/* Support only version 5 and 7 for now */
val = HREAD4(sc, QCSPMI_REG_CORE, SPMI_VERSION); val = HREAD4(sc, QCSPMI_REG_CORE, SPMI_VERSION);
if (val < SPMI_VERSION_V5_MIN) { if (val < SPMI_VERSION_V5_MIN) {
printf(": unsupported version 0x%08x\n", val); printf(": unsupported version 0x%08x\n", val);
return; return;
} }
if (val < SPMI_VERSION_V7_MIN) {
sc->sc_max_periph = 512;
sc->sc_chan_stride = 0x10000;
sc->sc_obsv_ee_stride = 0x10000;
sc->sc_obsv_apid_stride = 0x00080;
sc->sc_arb_apid_map = 0x00900;
sc->sc_ownership_table = 0x00700;
} else {
sc->sc_max_periph = 1024;
sc->sc_chan_stride = 0x01000;
sc->sc_obsv_ee_stride = 0x08000;
sc->sc_obsv_apid_stride = 0x00020;
sc->sc_arb_apid_map = 0x02000;
sc->sc_ownership_table = 0x00000;
}
KASSERT(sc->sc_max_periph <= SPMI_MAX_PERIPH);
sc->sc_ee = OF_getpropint(sc->sc_node, "qcom,ee", 0); sc->sc_ee = OF_getpropint(sc->sc_node, "qcom,ee", 0);
if (sc->sc_ee > 5) { if (sc->sc_ee > 5) {
printf(": unsupported EE\n"); printf(": unsupported EE\n");
@ -227,7 +292,7 @@ qcspmi_attach(struct device *parent, struct device *self, void *aux)
TAILQ_INIT(&sc->sc_intrq); TAILQ_INIT(&sc->sc_intrq);
sc->sc_ih = fdt_intr_establish(sc->sc_node, IPL_BIO, qcspmi_intr, sc->sc_ih = fdt_intr_establish(spmi, IPL_BIO, qcspmi_intr,
sc, sc->sc_dev.dv_xname); sc, sc->sc_dev.dv_xname);
if (sc->sc_ih == NULL) { if (sc->sc_ih == NULL) {
printf(": can't establish interrupt\n"); printf(": can't establish interrupt\n");
@ -236,14 +301,14 @@ qcspmi_attach(struct device *parent, struct device *self, void *aux)
printf("\n"); printf("\n");
for (i = 0; i < SPMI_MAX_PERIPH; i++) { for (i = 0; i < sc->sc_max_periph; i++) {
val = HREAD4(sc, QCSPMI_REG_CORE, SPMI_ARB_APID_MAP(i)); val = HREAD4(sc, QCSPMI_REG_CORE, SPMI_ARB_APID_MAP(sc, i));
if (!val) if (!val)
continue; continue;
ppid = (val >> SPMI_ARB_APID_MAP_PPID_SHIFT) & ppid = (val >> SPMI_ARB_APID_MAP_PPID_SHIFT) &
SPMI_ARB_APID_MAP_PPID_MASK; SPMI_ARB_APID_MAP_PPID_MASK;
irq_own = val & SPMI_ARB_APID_MAP_IRQ_OWNER; irq_own = val & SPMI_ARB_APID_MAP_IRQ_OWNER;
val = HREAD4(sc, QCSPMI_REG_CNFG, SPMI_OWNERSHIP_TABLE(i)); val = HREAD4(sc, QCSPMI_REG_CNFG, SPMI_OWNERSHIP_TABLE(sc, i));
apid = &sc->sc_apid[i]; apid = &sc->sc_apid[i];
apid->write_ee = SPMI_OWNERSHIP_TABLE_OWNER(val); apid->write_ee = SPMI_OWNERSHIP_TABLE_OWNER(val);
apid->irq_ee = 0xff; apid->irq_ee = 0xff;
@ -265,7 +330,7 @@ qcspmi_attach(struct device *parent, struct device *self, void *aux)
sc->sc_tag.sc_cmd_read = qcspmi_cmd_read; sc->sc_tag.sc_cmd_read = qcspmi_cmd_read;
sc->sc_tag.sc_cmd_write = qcspmi_cmd_write; sc->sc_tag.sc_cmd_write = qcspmi_cmd_write;
sc->sc_ic.ic_node = faa->fa_node; sc->sc_ic.ic_node = spmi;
sc->sc_ic.ic_cookie = sc; sc->sc_ic.ic_cookie = sc;
sc->sc_ic.ic_establish = qcspmi_intr_establish; sc->sc_ic.ic_establish = qcspmi_intr_establish;
sc->sc_ic.ic_disestablish = qcspmi_intr_disestablish; sc->sc_ic.ic_disestablish = qcspmi_intr_disestablish;
@ -274,7 +339,11 @@ qcspmi_attach(struct device *parent, struct device *self, void *aux)
sc->sc_ic.ic_barrier = qcspmi_intr_barrier; sc->sc_ic.ic_barrier = qcspmi_intr_barrier;
fdt_intr_register(&sc->sc_ic); fdt_intr_register(&sc->sc_ic);
for (node = OF_child(faa->fa_node); node; node = OF_peer(node)) { for (node = OF_child(spmi); node; node = OF_peer(node)) {
struct spmi_attach_args sa;
uint32_t reg[2];
char name[32];
if (OF_getpropintarray(node, "reg", reg, if (OF_getpropintarray(node, "reg", reg,
sizeof(reg)) != sizeof(reg)) sizeof(reg)) != sizeof(reg))
continue; continue;
@ -330,13 +399,13 @@ qcspmi_cmd_read(void *cookie, uint8_t sid, uint8_t cmd, uint16_t addr,
apid = sc->sc_ppid_to_apid[ppid] & SPMI_PPID_TO_APID_MASK; apid = sc->sc_ppid_to_apid[ppid] & SPMI_PPID_TO_APID_MASK;
HWRITE4(sc, QCSPMI_REG_OBSRVR, HWRITE4(sc, QCSPMI_REG_OBSRVR,
SPMI_OBSV_OFF(sc->sc_ee, apid) + SPMI_COMMAND, SPMI_OBSV_OFF(sc, sc->sc_ee, apid) + SPMI_COMMAND,
SPMI_COMMAND_OP_EXT_READL | SPMI_COMMAND_ADDR(addr) | SPMI_COMMAND_OP_EXT_READL | SPMI_COMMAND_ADDR(addr) |
SPMI_COMMAND_LEN(bc)); SPMI_COMMAND_LEN(bc));
for (i = 1000; i > 0; i--) { for (i = 1000; i > 0; i--) {
reg = HREAD4(sc, QCSPMI_REG_OBSRVR, reg = HREAD4(sc, QCSPMI_REG_OBSRVR,
SPMI_OBSV_OFF(sc->sc_ee, apid) + SPMI_STATUS); SPMI_OBSV_OFF(sc, sc->sc_ee, apid) + SPMI_STATUS);
if (reg & SPMI_STATUS_DONE) if (reg & SPMI_STATUS_DONE)
break; break;
} }
@ -350,14 +419,14 @@ qcspmi_cmd_read(void *cookie, uint8_t sid, uint8_t cmd, uint16_t addr,
if (len > 0) { if (len > 0) {
reg = HREAD4(sc, QCSPMI_REG_OBSRVR, reg = HREAD4(sc, QCSPMI_REG_OBSRVR,
SPMI_OBSV_OFF(sc->sc_ee, apid) + SPMI_RDATA0); SPMI_OBSV_OFF(sc, sc->sc_ee, apid) + SPMI_RDATA0);
memcpy(cbuf, &reg, MIN(len, 4)); memcpy(cbuf, &reg, MIN(len, 4));
cbuf += MIN(len, 4); cbuf += MIN(len, 4);
len -= MIN(len, 4); len -= MIN(len, 4);
} }
if (len > 0) { if (len > 0) {
reg = HREAD4(sc, QCSPMI_REG_OBSRVR, reg = HREAD4(sc, QCSPMI_REG_OBSRVR,
SPMI_OBSV_OFF(sc->sc_ee, apid) + SPMI_RDATA1); SPMI_OBSV_OFF(sc, sc->sc_ee, apid) + SPMI_RDATA1);
memcpy(cbuf, &reg, MIN(len, 4)); memcpy(cbuf, &reg, MIN(len, 4));
cbuf += MIN(len, 4); cbuf += MIN(len, 4);
len -= MIN(len, 4); len -= MIN(len, 4);
@ -394,25 +463,25 @@ qcspmi_cmd_write(void *cookie, uint8_t sid, uint8_t cmd, uint16_t addr,
if (len > 0) { if (len > 0) {
memcpy(&reg, cbuf, MIN(len, 4)); memcpy(&reg, cbuf, MIN(len, 4));
HWRITE4(sc, QCSPMI_REG_CHNLS, SPMI_CHAN_OFF(apid) + HWRITE4(sc, QCSPMI_REG_CHNLS, SPMI_CHAN_OFF(sc, apid) +
SPMI_WDATA0, reg); SPMI_WDATA0, reg);
cbuf += MIN(len, 4); cbuf += MIN(len, 4);
len -= MIN(len, 4); len -= MIN(len, 4);
} }
if (len > 0) { if (len > 0) {
memcpy(&reg, cbuf, MIN(len, 4)); memcpy(&reg, cbuf, MIN(len, 4));
HWRITE4(sc, QCSPMI_REG_CHNLS, SPMI_CHAN_OFF(apid) + HWRITE4(sc, QCSPMI_REG_CHNLS, SPMI_CHAN_OFF(sc, apid) +
SPMI_WDATA1, reg); SPMI_WDATA1, reg);
cbuf += MIN(len, 4); cbuf += MIN(len, 4);
len -= MIN(len, 4); len -= MIN(len, 4);
} }
HWRITE4(sc, QCSPMI_REG_CHNLS, SPMI_CHAN_OFF(apid) + SPMI_COMMAND, HWRITE4(sc, QCSPMI_REG_CHNLS, SPMI_CHAN_OFF(sc, apid) + SPMI_COMMAND,
SPMI_COMMAND_OP_EXT_WRITEL | SPMI_COMMAND_ADDR(addr) | SPMI_COMMAND_OP_EXT_WRITEL | SPMI_COMMAND_ADDR(addr) |
SPMI_COMMAND_LEN(bc)); SPMI_COMMAND_LEN(bc));
for (i = 1000; i > 0; i--) { for (i = 1000; i > 0; i--) {
reg = HREAD4(sc, QCSPMI_REG_CHNLS, SPMI_CHAN_OFF(apid) + reg = HREAD4(sc, QCSPMI_REG_CHNLS, SPMI_CHAN_OFF(sc, apid) +
SPMI_STATUS); SPMI_STATUS);
if (reg & SPMI_STATUS_DONE) if (reg & SPMI_STATUS_DONE)
break; break;
@ -492,7 +561,7 @@ qcspmi_intr_establish(void *cookie, int *cells, int ipl,
if (error) if (error)
printf("%s: cannot write irq setting\n", sc->sc_dev.dv_xname); printf("%s: cannot write irq setting\n", sc->sc_dev.dv_xname);
HWRITE4(sc, QCSPMI_REG_CHNLS, SPMI_CHAN_OFF(ih->ih_apid) + HWRITE4(sc, QCSPMI_REG_CHNLS, SPMI_CHAN_OFF(sc, ih->ih_apid) +
SPMI_IRQ_CLEAR, (1U << ih->ih_pin)); SPMI_IRQ_CLEAR, (1U << ih->ih_pin));
qcspmi_intr_enable(ih); qcspmi_intr_enable(ih);
@ -522,7 +591,7 @@ qcspmi_intr_enable(void *cookie)
uint8_t reg[2]; uint8_t reg[2];
int error; int error;
HWRITE4(sc, QCSPMI_REG_CHNLS, SPMI_CHAN_OFF(ih->ih_apid) + HWRITE4(sc, QCSPMI_REG_CHNLS, SPMI_CHAN_OFF(sc, ih->ih_apid) +
SPMI_ACC_ENABLE, SPMI_ACC_ENABLE_BIT); SPMI_ACC_ENABLE, SPMI_ACC_ENABLE_BIT);
error = spmi_cmd_read(&sc->sc_tag, ih->ih_sid, SPMI_CMD_EXT_READL, error = spmi_cmd_read(&sc->sc_tag, ih->ih_sid, SPMI_CMD_EXT_READL,
@ -576,22 +645,22 @@ qcspmi_intr(void *arg)
TAILQ_FOREACH(ih, &sc->sc_intrq, ih_q) { TAILQ_FOREACH(ih, &sc->sc_intrq, ih_q) {
status = HREAD4(sc, QCSPMI_REG_INTR, status = HREAD4(sc, QCSPMI_REG_INTR,
SPMI_OWNER_ACC_STATUS(sc->sc_ee, ih->ih_apid / 32)); SPMI_OWNER_ACC_STATUS(sc, sc->sc_ee, ih->ih_apid / 32));
if (!(status & (1U << (ih->ih_apid % 32)))) if (!(status & (1U << (ih->ih_apid % 32))))
continue; continue;
status = HREAD4(sc, QCSPMI_REG_CHNLS, status = HREAD4(sc, QCSPMI_REG_CHNLS,
SPMI_CHAN_OFF(ih->ih_apid) + SPMI_ACC_ENABLE); SPMI_CHAN_OFF(sc, ih->ih_apid) + SPMI_ACC_ENABLE);
if (!(status & SPMI_ACC_ENABLE_BIT)) if (!(status & SPMI_ACC_ENABLE_BIT))
continue; continue;
status = HREAD4(sc, QCSPMI_REG_CHNLS, status = HREAD4(sc, QCSPMI_REG_CHNLS,
SPMI_CHAN_OFF(ih->ih_apid) + SPMI_IRQ_STATUS); SPMI_CHAN_OFF(sc, ih->ih_apid) + SPMI_IRQ_STATUS);
if (!(status & (1U << ih->ih_pin))) if (!(status & (1U << ih->ih_pin)))
continue; continue;
ih->ih_func(ih->ih_arg); ih->ih_func(ih->ih_arg);
handled = 1; handled = 1;
HWRITE4(sc, QCSPMI_REG_CHNLS, SPMI_CHAN_OFF(ih->ih_apid) + HWRITE4(sc, QCSPMI_REG_CHNLS, SPMI_CHAN_OFF(sc, ih->ih_apid) +
SPMI_IRQ_CLEAR, (1U << ih->ih_pin)); SPMI_IRQ_CLEAR, (1U << ih->ih_pin));
reg = 1U << ih->ih_pin; reg = 1U << ih->ih_pin;
error = spmi_cmd_write(&sc->sc_tag, ih->ih_sid, error = spmi_cmd_write(&sc->sc_tag, ih->ih_sid,

View File

@ -1,4 +1,4 @@
/* $OpenBSD: pf.c,v 1.1200 2024/07/02 18:33:47 bluhm Exp $ */ /* $OpenBSD: pf.c,v 1.1201 2024/07/04 12:50:08 bluhm Exp $ */
/* /*
* Copyright (c) 2001 Daniel Hartmeier * Copyright (c) 2001 Daniel Hartmeier
@ -7986,14 +7986,20 @@ done:
break; break;
case AF_INET6: case AF_INET6:
if (pd.dir == PF_IN) { if (pd.dir == PF_IN) {
int flags; int flags = IPV6_REDIRECT;
if (ip6_forwarding == 0) { switch (ip6_forwarding) {
case 2:
SET(flags, IPV6_FORWARDING_IPSEC);
/* FALLTHROUGH */
case 1:
SET(flags, IPV6_FORWARDING);
break;
default:
ip6stat_inc(ip6s_cantforward); ip6stat_inc(ip6s_cantforward);
action = PF_DROP; action = PF_DROP;
goto out; goto out;
} }
flags = IPV6_FORWARDING | IPV6_REDIRECT;
ip6_forward(pd.m, NULL, flags); ip6_forward(pd.m, NULL, flags);
} else } else
ip6_output(pd.m, NULL, NULL, 0, NULL, NULL); ip6_output(pd.m, NULL, NULL, 0, NULL, NULL);

View File

@ -1,4 +1,4 @@
/* $OpenBSD: pf_norm.c,v 1.231 2024/06/20 19:25:42 bluhm Exp $ */ /* $OpenBSD: pf_norm.c,v 1.232 2024/07/04 12:50:08 bluhm Exp $ */
/* /*
* Copyright 2001 Niels Provos <provos@citi.umich.edu> * Copyright 2001 Niels Provos <provos@citi.umich.edu>
@ -1011,7 +1011,20 @@ pf_refragment6(struct mbuf **m0, struct m_tag *mtag, struct sockaddr_in6 *dst,
while ((m = ml_dequeue(&ml)) != NULL) { while ((m = ml_dequeue(&ml)) != NULL) {
m->m_pkthdr.pf.flags |= PF_TAG_REFRAGMENTED; m->m_pkthdr.pf.flags |= PF_TAG_REFRAGMENTED;
if (ifp == NULL) { if (ifp == NULL) {
ip6_forward(m, NULL, IPV6_FORWARDING); int flags = 0;
switch (ip6_forwarding) {
case 2:
SET(flags, IPV6_FORWARDING_IPSEC);
/* FALLTHROUGH */
case 1:
SET(flags, IPV6_FORWARDING);
break;
default:
ip6stat_inc(ip6s_cantforward);
return (PF_DROP);
}
ip6_forward(m, NULL, flags);
} else if ((u_long)m->m_pkthdr.len <= ifp->if_mtu) { } else if ((u_long)m->m_pkthdr.len <= ifp->if_mtu) {
ifp->if_output(ifp, m, sin6tosa(dst), rt); ifp->if_output(ifp, m, sin6tosa(dst), rt);
} else { } else {

View File

@ -1,4 +1,4 @@
/* $OpenBSD: ip6_forward.c,v 1.119 2024/06/20 19:25:42 bluhm Exp $ */ /* $OpenBSD: ip6_forward.c,v 1.120 2024/07/04 12:50:08 bluhm Exp $ */
/* $KAME: ip6_forward.c,v 1.75 2001/06/29 12:42:13 jinmei Exp $ */ /* $KAME: ip6_forward.c,v 1.75 2001/06/29 12:42:13 jinmei Exp $ */
/* /*
@ -315,6 +315,15 @@ reroute:
} }
#endif #endif
#ifdef IPSEC
if (ISSET(flags, IPV6_FORWARDING) &&
ISSET(flags, IPV6_FORWARDING_IPSEC) &&
!ISSET(m->m_pkthdr.ph_tagsset, PACKET_TAG_IPSEC_IN_DONE)) {
error = EHOSTUNREACH;
goto senderr;
}
#endif
error = if_output_tso(ifp, &m, dst, rt, ifp->if_mtu); error = if_output_tso(ifp, &m, dst, rt, ifp->if_mtu);
if (error) if (error)
ip6stat_inc(ip6s_cantforward); ip6stat_inc(ip6s_cantforward);

View File

@ -1,4 +1,4 @@
/* $OpenBSD: ip6_input.c,v 1.263 2024/06/20 19:25:42 bluhm Exp $ */ /* $OpenBSD: ip6_input.c,v 1.264 2024/07/04 12:50:08 bluhm Exp $ */
/* $KAME: ip6_input.c,v 1.188 2001/03/29 05:34:31 itojun Exp $ */ /* $KAME: ip6_input.c,v 1.188 2001/03/29 05:34:31 itojun Exp $ */
/* /*
@ -416,8 +416,14 @@ ip6_input_if(struct mbuf **mp, int *offp, int nxt, int af, struct ifnet *ifp)
SET(flags, IPV6_REDIRECT); SET(flags, IPV6_REDIRECT);
#endif #endif
if (ip6_forwarding != 0) switch (ip6_forwarding) {
case 2:
SET(flags, IPV6_FORWARDING_IPSEC);
/* FALLTHROUGH */
case 1:
SET(flags, IPV6_FORWARDING); SET(flags, IPV6_FORWARDING);
break;
}
/* /*
* Without embedded scope ID we cannot find link-local * Without embedded scope ID we cannot find link-local
@ -491,7 +497,7 @@ ip6_input_if(struct mbuf **mp, int *offp, int nxt, int af, struct ifnet *ifp)
* must be discarded, else it may be accepted below. * must be discarded, else it may be accepted below.
*/ */
KERNEL_LOCK(); KERNEL_LOCK();
error = ip6_mforward(ip6, ifp, m); error = ip6_mforward(ip6, ifp, m, flags);
KERNEL_UNLOCK(); KERNEL_UNLOCK();
if (error) { if (error) {
ip6stat_inc(ip6s_cantforward); ip6stat_inc(ip6s_cantforward);
@ -1442,7 +1448,7 @@ const struct sysctl_bounded_args ipv6ctl_vars[] = {
#ifdef MROUTING #ifdef MROUTING
{ IPV6CTL_MRTPROTO, &ip6_mrtproto, SYSCTL_INT_READONLY }, { IPV6CTL_MRTPROTO, &ip6_mrtproto, SYSCTL_INT_READONLY },
#endif #endif
{ IPV6CTL_FORWARDING, &ip6_forwarding, 0, 1 }, { IPV6CTL_FORWARDING, &ip6_forwarding, 0, 2 },
{ IPV6CTL_SENDREDIRECTS, &ip6_sendredirects, 0, 1 }, { IPV6CTL_SENDREDIRECTS, &ip6_sendredirects, 0, 1 },
{ IPV6CTL_DEFHLIM, &ip6_defhlim, 0, 255 }, { IPV6CTL_DEFHLIM, &ip6_defhlim, 0, 255 },
{ IPV6CTL_MAXFRAGPACKETS, &ip6_maxfragpackets, 0, 1000 }, { IPV6CTL_MAXFRAGPACKETS, &ip6_maxfragpackets, 0, 1000 },

View File

@ -1,4 +1,4 @@
/* $OpenBSD: ip6_mroute.c,v 1.142 2024/06/07 08:37:59 jsg Exp $ */ /* $OpenBSD: ip6_mroute.c,v 1.143 2024/07/04 12:50:08 bluhm Exp $ */
/* $NetBSD: ip6_mroute.c,v 1.59 2003/12/10 09:28:38 itojun Exp $ */ /* $NetBSD: ip6_mroute.c,v 1.59 2003/12/10 09:28:38 itojun Exp $ */
/* $KAME: ip6_mroute.c,v 1.45 2001/03/25 08:38:51 itojun Exp $ */ /* $KAME: ip6_mroute.c,v 1.45 2001/03/25 08:38:51 itojun Exp $ */
@ -122,8 +122,8 @@ int mcast6_debug = 1;
do { } while (0) do { } while (0)
#endif #endif
int ip6_mdq(struct mbuf *, struct ifnet *, struct rtentry *); int ip6_mdq(struct mbuf *, struct ifnet *, struct rtentry *, int);
void phyint_send6(struct ifnet *, struct ip6_hdr *, struct mbuf *); void phyint_send6(struct ifnet *, struct ip6_hdr *, struct mbuf *, int);
/* /*
* Globals. All but ip6_mrouter, ip6_mrtproto and mrt6stat could be static, * Globals. All but ip6_mrouter, ip6_mrtproto and mrt6stat could be static,
@ -853,7 +853,7 @@ socket6_send(struct socket *so, struct mbuf *mm, struct sockaddr_in6 *src)
* discard it. * discard it.
*/ */
int int
ip6_mforward(struct ip6_hdr *ip6, struct ifnet *ifp, struct mbuf *m) ip6_mforward(struct ip6_hdr *ip6, struct ifnet *ifp, struct mbuf *m, int flags)
{ {
struct rtentry *rt; struct rtentry *rt;
struct mif6 *mifp; struct mif6 *mifp;
@ -902,7 +902,7 @@ ip6_mforward(struct ip6_hdr *ip6, struct ifnet *ifp, struct mbuf *m)
/* Entry exists, so forward if necessary */ /* Entry exists, so forward if necessary */
if (rt) { if (rt) {
return (ip6_mdq(m, ifp, rt)); return (ip6_mdq(m, ifp, rt, flags));
} else { } else {
/* /*
* If we don't have a route for packet's origin, * If we don't have a route for packet's origin,
@ -997,7 +997,7 @@ mf6c_expire_route(struct rtentry *rt, u_int rtableid)
* Packet forwarding routine once entry in the cache is made * Packet forwarding routine once entry in the cache is made
*/ */
int int
ip6_mdq(struct mbuf *m, struct ifnet *ifp, struct rtentry *rt) ip6_mdq(struct mbuf *m, struct ifnet *ifp, struct rtentry *rt, int flags)
{ {
struct ip6_hdr *ip6 = mtod(m, struct ip6_hdr *); struct ip6_hdr *ip6 = mtod(m, struct ip6_hdr *);
struct mif6 *m6, *mifp = (struct mif6 *)ifp->if_mcast6; struct mif6 *m6, *mifp = (struct mif6 *)ifp->if_mcast6;
@ -1085,7 +1085,7 @@ ip6_mdq(struct mbuf *m, struct ifnet *ifp, struct rtentry *rt)
m6->m6_pkt_out++; m6->m6_pkt_out++;
m6->m6_bytes_out += plen; m6->m6_bytes_out += plen;
phyint_send6(ifn, ip6, m); phyint_send6(ifn, ip6, m, flags);
if_put(ifn); if_put(ifn);
} while ((rt = rtable_iterate(rt)) != NULL); } while ((rt = rtable_iterate(rt)) != NULL);
@ -1093,7 +1093,7 @@ ip6_mdq(struct mbuf *m, struct ifnet *ifp, struct rtentry *rt)
} }
void void
phyint_send6(struct ifnet *ifp, struct ip6_hdr *ip6, struct mbuf *m) phyint_send6(struct ifnet *ifp, struct ip6_hdr *ip6, struct mbuf *m, int flags)
{ {
struct mbuf *mb_copy; struct mbuf *mb_copy;
struct sockaddr_in6 *dst6, sin6; struct sockaddr_in6 *dst6, sin6;
@ -1126,8 +1126,8 @@ phyint_send6(struct ifnet *ifp, struct ip6_hdr *ip6, struct mbuf *m)
/* XXX: ip6_output will override ip6->ip6_hlim */ /* XXX: ip6_output will override ip6->ip6_hlim */
im6o.im6o_hlim = ip6->ip6_hlim; im6o.im6o_hlim = ip6->ip6_hlim;
im6o.im6o_loop = 1; im6o.im6o_loop = 1;
error = ip6_output(mb_copy, NULL, NULL, IPV6_FORWARDING, &im6o, error = ip6_output(mb_copy, NULL, NULL, flags | IPV6_FORWARDING,
NULL); &im6o, NULL);
return; return;
} }

View File

@ -1,4 +1,4 @@
/* $OpenBSD: ip6_output.c,v 1.291 2024/04/17 20:48:51 bluhm Exp $ */ /* $OpenBSD: ip6_output.c,v 1.292 2024/07/04 12:50:08 bluhm Exp $ */
/* $KAME: ip6_output.c,v 1.172 2001/03/25 09:55:56 itojun Exp $ */ /* $KAME: ip6_output.c,v 1.172 2001/03/25 09:55:56 itojun Exp $ */
/* /*
@ -533,7 +533,7 @@ reroute:
*/ */
if (ip6_mforwarding && ip6_mrouter[ifp->if_rdomain] && if (ip6_mforwarding && ip6_mrouter[ifp->if_rdomain] &&
(flags & IPV6_FORWARDING) == 0) { (flags & IPV6_FORWARDING) == 0) {
if (ip6_mforward(ip6, ifp, m) != 0) { if (ip6_mforward(ip6, ifp, m, flags) != 0) {
m_freem(m); m_freem(m);
goto done; goto done;
} }
@ -644,6 +644,15 @@ reroute:
} }
#endif #endif
#ifdef IPSEC
if (ISSET(flags, IPV6_FORWARDING) &&
ISSET(flags, IPV6_FORWARDING_IPSEC) &&
!ISSET(m->m_pkthdr.ph_tagsset, PACKET_TAG_IPSEC_IN_DONE)) {
error = EHOSTUNREACH;
goto bad;
}
#endif
/* /*
* If the packet is not going on the wire it can be destined * If the packet is not going on the wire it can be destined
* to any local address. In this case do not clear its scopes * to any local address. In this case do not clear its scopes

View File

@ -1,4 +1,4 @@
/* $OpenBSD: ip6_var.h,v 1.118 2024/06/20 19:25:42 bluhm Exp $ */ /* $OpenBSD: ip6_var.h,v 1.119 2024/07/04 12:50:08 bluhm Exp $ */
/* $KAME: ip6_var.h,v 1.33 2000/06/11 14:59:20 jinmei Exp $ */ /* $KAME: ip6_var.h,v 1.33 2000/06/11 14:59:20 jinmei Exp $ */
/* /*
@ -270,6 +270,7 @@ ip6stat_add(enum ip6stat_counters c, uint64_t v)
#define IPV6_FORWARDING 0x02 /* most of IPv6 header exists */ #define IPV6_FORWARDING 0x02 /* most of IPv6 header exists */
#define IPV6_MINMTU 0x04 /* use minimum MTU (IPV6_USE_MIN_MTU) */ #define IPV6_MINMTU 0x04 /* use minimum MTU (IPV6_USE_MIN_MTU) */
#define IPV6_REDIRECT 0x08 /* redirected by pf */ #define IPV6_REDIRECT 0x08 /* redirected by pf */
#define IPV6_FORWARDING_IPSEC 0x10 /* only packets processed by IPsec */
extern int ip6_mtudisc_timeout; /* mtu discovery */ extern int ip6_mtudisc_timeout; /* mtu discovery */
extern struct rttimer_queue icmp6_mtudisc_timeout_q; extern struct rttimer_queue icmp6_mtudisc_timeout_q;
@ -316,7 +317,7 @@ int ip6_unknown_opt(struct mbuf **, u_int8_t *, int);
int ip6_get_prevhdr(struct mbuf *, int); int ip6_get_prevhdr(struct mbuf *, int);
int ip6_nexthdr(struct mbuf *, int, int, int *); int ip6_nexthdr(struct mbuf *, int, int, int *);
int ip6_lasthdr(struct mbuf *, int, int, int *); int ip6_lasthdr(struct mbuf *, int, int, int *);
int ip6_mforward(struct ip6_hdr *, struct ifnet *, struct mbuf *); int ip6_mforward(struct ip6_hdr *, struct ifnet *, struct mbuf *, int);
int ip6_process_hopopts(struct mbuf **, u_int8_t *, int, u_int32_t *, int ip6_process_hopopts(struct mbuf **, u_int8_t *, int, u_int32_t *,
u_int32_t *); u_int32_t *);
void ip6_savecontrol(struct inpcb *, struct mbuf *, struct mbuf **); void ip6_savecontrol(struct inpcb *, struct mbuf *, struct mbuf **);

View File

@ -1,4 +1,4 @@
/* $OpenBSD: uvm_addr.c,v 1.35 2024/06/07 06:04:43 jsg Exp $ */ /* $OpenBSD: uvm_addr.c,v 1.36 2024/07/04 04:52:10 jsg Exp $ */
/* /*
* Copyright (c) 2011 Ariane van der Steldt <ariane@stack.nl> * Copyright (c) 2011 Ariane van der Steldt <ariane@stack.nl>
@ -290,30 +290,6 @@ uvm_addr_destroy(struct uvm_addr_state *uaddr)
(*uaddr->uaddr_functions->uaddr_destroy)(uaddr); (*uaddr->uaddr_functions->uaddr_destroy)(uaddr);
} }
/*
* Move address forward to satisfy align, offset.
*/
vaddr_t
uvm_addr_align(vaddr_t addr, vaddr_t align, vaddr_t offset)
{
vaddr_t result = (addr & ~(align - 1)) + offset;
if (result < addr)
result += align;
return result;
}
/*
* Move address backwards to satisfy align, offset.
*/
vaddr_t
uvm_addr_align_back(vaddr_t addr, vaddr_t align, vaddr_t offset)
{
vaddr_t result = (addr & ~(align - 1)) + offset;
if (result > addr)
result -= align;
return result;
}
/* /*
* Directional first fit. * Directional first fit.
* *

View File

@ -1,4 +1,4 @@
/* $OpenBSD: uvm_addr.h,v 1.7 2017/01/17 17:19:21 stefan Exp $ */ /* $OpenBSD: uvm_addr.h,v 1.8 2024/07/04 04:52:10 jsg Exp $ */
/* /*
* Copyright (c) 2011 Ariane van der Steldt <ariane@stack.nl> * Copyright (c) 2011 Ariane van der Steldt <ariane@stack.nl>
@ -75,8 +75,6 @@ struct uvm_addr_functions {
void uvm_addr_init(void); void uvm_addr_init(void);
void uvm_addr_destroy(struct uvm_addr_state *); void uvm_addr_destroy(struct uvm_addr_state *);
vaddr_t uvm_addr_align(vaddr_t, vaddr_t, vaddr_t);
vaddr_t uvm_addr_align_back(vaddr_t, vaddr_t, vaddr_t);
int uvm_addr_linsearch(struct vm_map *, int uvm_addr_linsearch(struct vm_map *,
struct uvm_addr_state *, struct vm_map_entry **, struct uvm_addr_state *, struct vm_map_entry **,
vaddr_t *addr_out, vaddr_t, vsize_t, vaddr_t *addr_out, vaddr_t, vsize_t,

View File

@ -33,8 +33,8 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\" .\"
.\" $OpenBSD: ssh_config.5,v 1.396 2024/06/17 08:30:29 djm Exp $ .\" $OpenBSD: ssh_config.5,v 1.397 2024/07/04 22:53:59 djm Exp $
.Dd $Mdocdate: June 17 2024 $ .Dd $Mdocdate: July 4 2024 $
.Dt SSH_CONFIG 5 .Dt SSH_CONFIG 5
.Os .Os
.Sh NAME .Sh NAME
@ -1383,8 +1383,8 @@ DEBUG and DEBUG1 are equivalent.
DEBUG2 and DEBUG3 each specify higher levels of verbose output. DEBUG2 and DEBUG3 each specify higher levels of verbose output.
.It Cm LogVerbose .It Cm LogVerbose
Specify one or more overrides to LogLevel. Specify one or more overrides to LogLevel.
An override consists of a pattern lists that matches the source file, function An override consists of one or more pattern lists that matches the
and line number to force detailed logging for. source file, function and line number to force detailed logging for.
For example, an override pattern of: For example, an override pattern of:
.Bd -literal -offset indent .Bd -literal -offset indent
kex.c:*:1000,*:kex_exchange_identification():*,packet.c:* kex.c:*:1000,*:kex_exchange_identification():*,packet.c:*

View File

@ -33,8 +33,8 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\" .\"
.\" $OpenBSD: sshd_config.5,v 1.365 2024/06/24 06:59:39 jmc Exp $ .\" $OpenBSD: sshd_config.5,v 1.366 2024/07/04 22:53:59 djm Exp $
.Dd $Mdocdate: June 24 2024 $ .Dd $Mdocdate: July 4 2024 $
.Dt SSHD_CONFIG 5 .Dt SSHD_CONFIG 5
.Os .Os
.Sh NAME .Sh NAME
@ -1134,8 +1134,8 @@ Logging with a DEBUG level violates the privacy of users and is not recommended.
.It Cm LogVerbose .It Cm LogVerbose
Specify one or more overrides to Specify one or more overrides to
.Cm LogLevel . .Cm LogLevel .
An override consists of a pattern lists that matches the source file, function An override consists of one or more pattern lists that matches the
and line number to force detailed logging for. source file, function and line number to force detailed logging for.
For example, an override pattern of: For example, an override pattern of:
.Bd -literal -offset indent .Bd -literal -offset indent
kex.c:*:1000,*:kex_exchange_identification():*,packet.c:* kex.c:*:1000,*:kex_exchange_identification():*,packet.c:*

View File

@ -1,4 +1,4 @@
.\" $OpenBSD: radiusd.conf.5,v 1.24 2024/07/03 06:09:13 yasuoka Exp $ .\" $OpenBSD: radiusd.conf.5,v 1.27 2024/07/04 13:14:26 sobrado Exp $
.\" .\"
.\" Copyright (c) 2014 Esdenera Networks GmbH .\" Copyright (c) 2014 Esdenera Networks GmbH
.\" Copyright (c) 2014, 2023 Internet Initiative Japan Inc. .\" Copyright (c) 2014, 2023 Internet Initiative Japan Inc.
@ -15,7 +15,7 @@
.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
.\" .\"
.Dd $Mdocdate: July 3 2024 $ .Dd $Mdocdate: July 4 2024 $
.Dt RADIUSD.CONF 5 .Dt RADIUSD.CONF 5
.Os .Os
.Sh NAME .Sh NAME
@ -35,7 +35,7 @@ Keywords may be specified multiple times within the configuration file.
The configuration options are as follows: The configuration options are as follows:
.Bl -tag -width Ds .Bl -tag -width Ds
.It Xo .It Xo
.Ic listen on Ar address Oo Ic accounting Oc Ic port Ar port .Ic listen on Ar address Oo Ic accounting Oc Oo Ic port Ar port Oc
.Xc .Xc
Specify an Specify an
.Ar address .Ar address
@ -113,8 +113,12 @@ and
.Ar value .Ar value
must be quoted to be distinguished from the reserved word if needed. must be quoted to be distinguished from the reserved word if needed.
.El .El
.It Ic authenticate Ar username-pattern ... Ic by Ar auth Oo Ic decorated-by \ .It Xo
Ar deco ... Oc .Ic authenticate
.Ar username-pattern ...
.Ic by Ar auth
.Op Ic decorate-by Ar deco ...
.Xc
Specify an authentication configuration for the users specified by Specify an authentication configuration for the users specified by
.Ar username-pattern . .Ar username-pattern .
The users matched by the pattern are authenticated by the module The users matched by the pattern are authenticated by the module
@ -133,8 +137,13 @@ matches an authenticating user is used.
Optionally decoration modules can be specified by Optionally decoration modules can be specified by
.Ar deco . .Ar deco .
The specified modules decorate the RADIUS messages in the configured order. The specified modules decorate the RADIUS messages in the configured order.
.It Ic account Oo Ic quick Oc Ar username-pattern ... Ic to Ar module \ .It Xo
Oo Ic decoratd by Ar deco ... Oc .Ic account
.Op Ic quick
.Ar username-pattern ...
.Ic to Ar module
.Op Ic decorate-by Ar deco ...
.Xc
Specify an accounting configuration for the users specified by Specify an accounting configuration for the users specified by
.Ar username-pattern . .Ar username-pattern .
The accounting messages for the users matched by the pattern are handled The accounting messages for the users matched by the pattern are handled
@ -144,13 +153,11 @@ Use shell globbing rules for the patterns;
multiple patterns can be determined by separating them with space characters. multiple patterns can be determined by separating them with space characters.
When multiple When multiple
.Ic account .Ic account
lines are selected, configurations are specified,
all account settings whose all matches are used;
.Ar username-pattern if the user matches a pattern with the
matches an accounting users are used. .Ic quick
until the user matches the setting with the option, then processing stops after that configuration.
.Ar quick
option.
.Pp .Pp
Optionally decoration modules can be specified by Optionally decoration modules can be specified by
.Ar deco . .Ar deco .

View File

@ -1,4 +1,4 @@
.\" $OpenBSD: radiusd_bsdauth.8,v 1.1 2024/07/02 00:00:12 yasuoka Exp $ .\" $OpenBSD: radiusd_bsdauth.8,v 1.2 2024/07/04 05:25:14 jmc Exp $
.\" .\"
.\" Copyright (c) 2014 Esdenera Networks GmbH .\" Copyright (c) 2014 Esdenera Networks GmbH
.\" Copyright (c) 2014, 2024 Internet Initiative Japan Inc. .\" Copyright (c) 2014, 2024 Internet Initiative Japan Inc.
@ -17,7 +17,7 @@
.\" .\"
.\" The following requests are required for all man pages. .\" The following requests are required for all man pages.
.\" .\"
.Dd $Mdocdate: July 2 2024 $ .Dd $Mdocdate: July 4 2024 $
.Dt RADIUSD_BSDAUTH 8 .Dt RADIUSD_BSDAUTH 8
.Os .Os
.Sh NAME .Sh NAME
@ -52,8 +52,8 @@ module executable.
.El .El
.Sh SEE ALSO .Sh SEE ALSO
.Xr authenticate 3 , .Xr authenticate 3 ,
.Xr radiusd 8 , .Xr radiusd.conf 5 ,
.Xr radiusd.conf 5 .Xr radiusd 8
.Sh HISTORY .Sh HISTORY
The The
.Nm .Nm

View File

@ -1,4 +1,4 @@
.\" $OpenBSD: radiusd_standard.8,v 1.2 2024/07/02 00:33:51 yasuoka Exp $ .\" $OpenBSD: radiusd_standard.8,v 1.3 2024/07/04 05:27:20 jmc Exp $
.\" .\"
.\" Copyright (c) 2014 Esdenera Networks GmbH .\" Copyright (c) 2014 Esdenera Networks GmbH
.\" Copyright (c) 2014, 2024 Internet Initiative Japan Inc. .\" Copyright (c) 2014, 2024 Internet Initiative Japan Inc.
@ -17,7 +17,7 @@
.\" .\"
.\" The following requests are required for all man pages. .\" The following requests are required for all man pages.
.\" .\"
.Dd $Mdocdate: July 2 2024 $ .Dd $Mdocdate: July 4 2024 $
.Dt RADIUSD_STANDARD 8 .Dt RADIUSD_STANDARD 8
.Os .Os
.Sh NAME .Sh NAME
@ -41,7 +41,7 @@ The
.Nm .Nm
module supports the following configuration key and value: module supports the following configuration key and value:
.Pp .Pp
.Bl -tag -width Ds .Bl -tag -width Ds -compact
.It Ic strip-atmark-realm Ar true | false .It Ic strip-atmark-realm Ar true | false
Remove the realm part which starts with @ Remove the realm part which starts with @
.Pq atmark .Pq atmark