sync with OpenBSD -current
This commit is contained in:
parent
ff77f1c0ed
commit
b8cf0a282a
@ -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
|
||||||
|
|
||||||
|
@ -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 .
|
||||||
|
@ -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)
|
||||||
{
|
{
|
||||||
|
@ -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 |
|
||||||
|
@ -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, ®, MIN(len, 4));
|
memcpy(cbuf, ®, 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, ®, MIN(len, 4));
|
memcpy(cbuf, ®, 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(®, cbuf, MIN(len, 4));
|
memcpy(®, 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(®, cbuf, MIN(len, 4));
|
memcpy(®, 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,
|
||||||
|
14
sys/net/pf.c
14
sys/net/pf.c
@ -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);
|
||||||
|
@ -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 {
|
||||||
|
@ -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);
|
||||||
|
@ -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 },
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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 **);
|
||||||
|
@ -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.
|
||||||
*
|
*
|
||||||
|
@ -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,
|
||||||
|
@ -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:*
|
||||||
|
@ -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:*
|
||||||
|
@ -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 .
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user