Commit Graph

52748 Commits

Author SHA1 Message Date
Christian Lamparter
e7d0dce2b3 ipq40xx: fix missing include
This patch fixes a blunder of mine. The include needed
for LED_COLOR_ID_BLUE property is missing.

This caused the builds to fail with:
|Error: arch/arm/boot/dts/qcom-ipq4019-r619ac.dtsi:91.13-14 syntax error
|FATAL ERROR: Unable to parse input tree

Fixes: 12d33d388c ("ipq40xx: add support for P&W R619AC (aka G-DOCK 2.0)")
Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
2021-11-14 19:21:55 +01:00
Christian Lamparter
cb18b62206 ipq40xx: reenable Zyxel NBG6617 by default
The Zyxel NBG6617 already uses lzma to compress the kernel.
A local build with every module enabled (either as =Y or =M)
ended produced a 3058 KiB kernel (the kernel partition is 4MiB).
It booted just fine, let's reenable the device.

Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
2021-11-14 14:29:47 +01:00
Richard Yu
12d33d388c ipq40xx: add support for P&W R619AC (aka G-DOCK 2.0)
P&W R619AC is a IPQ4019 Dual-Band AC1200 router.
It is made by P&W (p2w-tech.com) known as P&W R619AC
but marketed and sold more popularly as G-DOCK 2.0.

Specification:

* SOC: Qualcomm Atheros IPQ4019 (717 MHz)
* RAM: 512 MiB
* Flash: 16 MiB (NOR) + 128 MiB (NAND)
* Ethernet: 5 x 10/100/1000 (4 x LAN, 1 x WAN)
* Wireless:
  - 2.4 GHz b/g/n Qualcomm Atheros IPQ4019
  - 5 GHz a/n/ac Qualcomm Atheros IPQ4019
* USB: 1 x USB 3.0
* LED: 4 x LAN, 1 x WAN, 2 x WiFi, 1 x Power (All Blue LED)
* Input: 1 x reset
* 1 x MicroSD card slot
* Serial console: 115200bps, pinheader J2 on PCB
* Power: DC 12V 2A
* 1 x Unpopulated mPCIe Slot (see below how to connect it)
* 1 x Unpopulated Sim Card Slot

Installation:
1. Access to tty console via UART serial
2. Enter failsafe mode and mount rootfs
   <https://openwrt.org/docs/guide-user/troubleshooting/failsafe_and_factory_reset>
3. Edit inittab to enable shell on tty console
   `sed -i 's/#ttyM/ttyM/' /etc/inittab`
4. Reboot and upload `-nand-factory.bin` to the router (using wget)
5. Use `sysupgrade` command to install

Another installation method is to hijack the upgrade server domain
of stock firmware, because it's using insecure http.

This commit is based on @LGA1150(at GitHub)'s work
<a4932c8d5a>
With some changes:
1. Added `qpic_bam` node in dts. I don't know much about this,
   but I observed other dtses have this node.
2. Removed `ldo` node under `sd_0_pinmux`, because `ldo` cause SD card not
   working. This fix is from
   <51143b4c75>
3. Removed the 32MB NOR variant.
4. Removed `cd-gpios` in `sdhci` node, because it's reported that it makes
   wlan2g led light up.
5. Added ethphy led config in dts.
6. Changed nand partition label from `rootfs` to `ubi`.

About the 128MiB variant: The stock bootloader sets size of nand to 64MiB.
But most of this devices have 128MiB nand. If you want to use all 128MiB,
you need to modify the `MIBIB` data of bootloader. More details can be
found on github:
<https://github.com/openwrt/openwrt/pull/3691#issuecomment-818770060>
For instructions on how to flash the MIBIB partition from u-boot console:
<https://github.com/openwrt/openwrt/pull/3691#issuecomment-819138232>

About the Mini PCIe slot: (from "ygleg")
"The REFCLK signals on the Mini PCIe slot is not connected on
this board out of the box. If you want to use the Mini PCIe slot
on the board, you need to (preferably) solder two 0402 resistors:
R436 (REFCLK+) and R444 (REFCLK-)..."
This and much more information is provoided in the github comment:
<https://github.com/openwrt/openwrt/pull/3691#issuecomment-968054670>

Signed-off-by: Richard Yu <yurichard3839@gmail.com>
Signed-off-by: DENG Qingfang <dqfext@gmail.com>
[Added comment about MIBIB+128 MiB variant. Added commit
message section about pcie slot. Renamed gpio-leds' subnodes
and added color, function+enum properties.]
Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
2021-11-14 14:28:34 +01:00
Arne Zachlod
b5ab6d0bc5 scripts/env: fix env for git conf init.defaultBranch not set to "master"
Since version 2.28, git has a config option init.defaultBranch to set the name
of the first branch created with git init. The env script expects this name to
be "master". This commit sets the initial branch name to "master"
instead of using the git configured one.

Signed-off-by: Arne Zachlod <arne@nerdkeller.org>
2021-11-13 10:29:41 -10:00
Paul Spooren
7bc18aa284 firewall4: update to latest Git HEAD
eb0a3ee fw4.uc: Do not quote port ranges
c5a8e3e tests: adapt test to new ICMP print logic

Also start using $(AUTORELEASE)

Signed-off-by: Paul Spooren <mail@aparcar.org>
2021-11-13 09:40:14 -10:00
Daniel Golle
4d3303b1bd
base-files: stage2: improve /proc/*/stat parser
Simply reading /proc/*/stat as a space-separated string will not work
as the process name may itself contain spaces. Hence we must match on
the '(' and ')' characters around the process name and can then handle
the remaining string as space-separated values.
This fixes shell error messages which have been popping up the console
due to spaces in process names being interpreted as field separators.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2021-11-13 18:36:52 +00:00
Rui Salvaterra
f81dc44fd5
kernel: bump 5.10 to 5.10.79
Manually rebased:
generic/backport-5.10/810-v5.13-usb-ehci-add-spurious-flag-to-disable-overcurrent-ch.patch

Tested-by: John Audia <graysky@archlinux.us>
Tested-by: Daniel Golle <daniel@makrotopia.org>
Signed-off-by: Rui Salvaterra <rsalvaterra@gmail.com>
2021-11-13 18:36:47 +00:00
Hauke Mehrtens
c90e10b62e mac80211: Fix deadlock when configuring wifi
The nl80211_set_wiphy() function was changed between kernel 5.11 and
5.12 to take the rdev->wiphy lock which should be freed at the end
again. The 500-mac80211_configure_antenna_gain.patch added some code
which just returned in some cases without unlocking. This resulted in a
deadlock with brcmfmac.
This patch fixes this by also jumping to the out label in case we want
to leave the function.
This fixes a hanging system when brcmfmac is in use. I do not know why
we do not see this with other driver.

The kernel returns very useful debug details when setting these OpenWrt
configuration options:
CONFIG_KERNEL_DETECT_HUNG_TASK=y
CONFIG_KERNEL_PROVE_LOCKING=y

Fixes: FS#4122
Fixes: b96c2569ac ("mac80211: Update to version 5.12.19-1")
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2021-11-13 19:09:22 +01:00
Russell Senior
fa7356dd9d iproute2: update to 5.15
from https://git.kernel.org/pub/scm/network/iproute2/iproute2.git

changes since 5.14.0:

ad3a118f rdma: Fix SRQ resource tracking information json
7a235a10 man: devlink-port: fix pfnum for devlink port add
229eaba5 uapi: pickup fix for xfrm ABI breakage
a500c5ac lib/bpf: fix map-in-map creation without prepopulation
7c032cac man: devlink-port: remove extra .br
04ee8e6f man: devlink-port: fix style
14802d84 man: devlink-port: fix the devlink port add synopsis
897772a7 cmd: use spaces instead of tabs for usage indentation
e7a98a96 mptcp: unbreak JSON endpoint list
2f5825cb lib: bpf_legacy: fix bpffs mount when /sys/fs/bpf exists
d756c08a tc/f_flower: fix port range parsing
92e32f77 uapi: updates from 5.15-rc1
e7e0e2ce iptuntap: fix multi-queue flag display
deef844b man: ip-link: remove double of
a3272b93 configure: restore backward compatibility
ceba5930 tree-wide: fix some typos found by Lintian
7a705242 ip: remove leftovers from IPX and DECnet
8ab1834e uapi: update headers from 5.15 merge
6d0d35ba ip/bond: add lacp active support
926ad641 Update kernel headers
c730bd0b ip/tunnel: always print all known attributes
df8912ed ipioam6: use print_nl instead of print_null
7e7270bb tc/skbmod: Introduce SKBMOD_F_ECN option
86c596ed IOAM man8
2d83c710 New IOAM6 encap type for routes
f0b3808a Add, show, link, remove IOAM namespaces and schemas
acbdef93 Import ioam6 uapi headers
2d6fa30b Update kernel headers
508ad89c ipneigh: add support to print brief output of neigh cache in tabular format

* update patch 170-ip_tiny.patch to accomodate ioam.

Signed-off-by: Russell Senior <russell@personaltelco.net>
2021-11-13 18:00:11 +01:00
Felix Fietkau
bdaacdc2fc qosify: add default alias sections
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2021-11-12 23:11:56 +01:00
Felix Fietkau
50d33fcf7d qosify: update to the latest version
0750f2b4d329 README: dnsmasq integration is complete
8e48d0b0cbba bpf: add initial support for splitting map dscp value into ingress and egress
bfc2cafe2a8c map: add support for defining aliases

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2021-11-12 23:11:56 +01:00
Rui Salvaterra
c8340120e7 dnsmasq: fix the dynamic dns object names patch
We can't use booleans, since we're not including stdbool.h. Use integers
instead.

Fixes: 0b79e7c01e ("dnsmasq: generate the dns object name dynamically")

Signed-off-by: Rui Salvaterra <rsalvaterra@gmail.com>
2021-11-12 23:11:56 +01:00
Daniel Golle
8fd0268b5f
mediatek: mt7622: bpi-r64: rewrite MMC uImage.FIT sysupgrade
Similar to mt7623, also no longer use 'blockdev' and stop relying on
in-kernel partition parsers. Instead, strip off all metadata using
'fwtool' while writing the firmware image and scrape the number of
blocks written from 'dd', then use that block offset to stash the
configuration backup.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2021-11-12 15:03:07 +00:00
Daniel Golle
c3c67fe7b1
mediatek: mt7623: re-write sysupgrade uImage.FIT on MMC
Re-reading the partition table doesn't work reliably, it fails if
anything on the device is still in use and it's not trivial to prevent
every possible case of a block device still being in use somehow.

Therefore, instead of relying on the in-kernel partition parser to know
where to write the configuration backup, use OpenWrt's format-agnostic
fwtool to strip off all metadata from the image and count its blocks
while writing. In that way we can know where to write the config backup
without needing the kernel to parse the MBR and FIT structures.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2021-11-12 15:03:02 +00:00
Daniel Golle
0cbc6b16db
dnsmasq: add ubus acl to allow calls to hotplug.tftp object
dnsmasq may call hotplug.dhcp, hotplug.neigh and hotplug.tftp.
Only the first two callees were listed in the ACL, so add missing
hotplug.tftp.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2021-11-12 15:02:58 +00:00
Felix Fietkau
959a0308e5 include/bpf.mk: fix typo in clang version check
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2021-11-12 13:15:44 +01:00
Daniel Golle
9224ddf72d
procd: update to git HEAD
9d1431e jail: allow passing environment variable to procd jailed process

Fixes dnsmasq in ujail which needs USER_SCRIPT env variable to be
passed to jailed process.

Reported-by: Bastian Bittorf <bb@npl.de>
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2021-11-11 14:09:25 +00:00
Felix Fietkau
49f615022c mac80211: fix queue selection issue
When __ieee80211_select_queue is called, skb->cb has not been cleared yet,
which means that info->control.flags can contain garbage.
In some cases this leads to IEEE80211_TX_CTRL_DONT_REORDER being set, causing
packets marked for other queues to randomly end up in BE instead.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2021-11-10 22:25:27 +01:00
Hans Dedecker
a564e1df52 nat46: update to latest git HEAD
1fdf2a3 Fix kernel panic due to device deletion (#29)
e7b48d1 add the mutex lock for create/delete/config/insert nat46 devices to fix nat46 module crash issues. (#28)

Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
2021-11-10 20:29:12 +01:00
Felix Fietkau
0b79e7c01e dnsmasq: generate the dns object name dynamically
Fixes an issue with running multiple dnsmasq instances

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2021-11-10 10:07:04 +01:00
Felix Fietkau
694aed607f include/bpf.mk: check minimum required clang version
Avoid spurious runtime errors caused by loading eBPF modules
built with an old clang version

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2021-11-09 20:59:51 +01:00
Paul Fertser
8a6b1a8d29 dnsmasq: add match_tag for --dhcp-host
A set of tags can be specified for --dhcp-host option to restrict the
assignment to the requests which match all the tags.

Example usage:

config vendorclass
        option networkid 'udhcp'
        option vendorclass 'udhcp'

config host
        option mac '*:*:*:*:*:*'
        list match_tag 'switch.10'
        list match_tag 'udhcp'
        option ip '192.168.25.10'

Signed-off-by: Paul Fertser <fercerpav@gmail.com>
2021-11-09 16:45:38 +00:00
Felix Fietkau
a667f6b8dd qosify: mark as nonshared
The SDK does not have the LLVM toolchain yet

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2021-11-09 14:07:19 +01:00
Rafał Miłecki
f1a074d0ce bcm4908: switch to kernel 5.10
Tested on:
1. Asus GT-AC5300
2. Netgear R8000P

Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
2021-11-09 12:44:26 +01:00
Rafał Miłecki
9565bd9bd6 bcm4908: add watchdog support
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
2021-11-09 12:44:23 +01:00
Rafał Miłecki
9a18bbec1f bcm4908: refresh kernel configs
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
2021-11-09 12:27:49 +01:00
Felix Fietkau
85cc004606 qosify: move files to /etc/qosify
Now that wildcard matching is supported, this makes it easier for packages
to supply their own qosify rules

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2021-11-08 22:26:46 +01:00
Felix Fietkau
0e4ef0e5a4 qosify: update to the latest version
737970946bc0 map: default to fnmatch matching for dns patterns. support regex via leading /
b56b112e62e2 ubus: fix crash caused by missing static keyword
3a420e272c18 qosify: support wildcards in classifier filenames

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2021-11-08 22:26:22 +01:00
Felix Fietkau
48c754d653 qosify: add missing dependency
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2021-11-08 21:32:40 +01:00
Rafał Miłecki
c4ff53b971 bcm4908: fix b53 regression regarding RGMII reg(s)
This fixes:
[   35.308550] WARNING: CPU: 0 PID: 230 at bcm_sf2_reg_rgmii_cntrl.isra.0+0x84/0x90

Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
2021-11-08 17:52:29 +01:00
Rafał Miłecki
4e9be47087 bcm53xx: drop patch for downstream swconfig-based b53
It isn't used anymore so there is no need to hack CPU port. Upstream
(DSA-based) b53 also supports all switch ports just fine.

Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
2021-11-08 15:58:42 +01:00
Rafał Miłecki
406c5002b8 bcm53xx: drop downstream patch for Buffalo WZR-1750DHP button
This patch never received a proper description and was never sent
upstream as supposed. It was meant to be handled in 2015-2018 so it
should be safe to assume noone really understands it or care.

Cc: Felix Fietkau <nbd@nbd.name>
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
2021-11-08 15:58:30 +01:00
Rafał Miłecki
b8bbac951c layerscape: mkits-multiple-config: fail on invalid arguments
Fail if arguments couldn't be parsed and print unrecognized part. It's
important when running it from script with dynamic values. Missing value
could result in skipping argument and silent failures (unexpected its).

Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
2021-11-08 15:58:13 +01:00
Rafał Miłecki
a02c971dff bcm4908: start work on images for devices using U-Boot
New BCM4908 family based routers will use U-Boot bootloader. That will
require using a totally different firmware format. Kernel has to be put
in a FIT image.

OpenWrt has some helpers for generating .its files but they don't fit
BCM4908 requirements and there is no simple way of extending any of
them. The best solution seems to be storing an .its template.

BCM4908 bootfs may:
1. contain extra binaries (other than kernel & DTB)
2. include multiple DTB files
3. store device specific U-Boot configurations with custom properties

Such setups are too complex to generate using shell script. Raw .its
file on the other hand seems quire clean & reasonable.

Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
2021-11-08 15:57:55 +01:00
Rafał Miłecki
29f12fefc0 bcm47xx: switch to kernel 5.10
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
2021-11-08 15:56:39 +01:00
Rafał Miłecki
6cdac99401 bcm47xx: fix bgmac regression present in 5.10 kernel
This fixes:
[    2.548098] bgmac_bcma bcma0:1: Failed to register fixed PHY device
[    2.554584] bgmac_bcma bcma0:1: Cannot connect to phy
and downstream (swconfig-based) b53 driver failing to load.

Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
2021-11-08 15:55:40 +01:00
Rafał Miłecki
4cd97e4760 bcm47xx: relocate LZMA loader
Kernel 5.10 grew bigger than 5.4 so we need to bump BZ_TEXT_START to
allow lzma loader hanel its size.

At the same time BZ_STACK_START needs to be increased to avoid
overwriting the stack.

For a reference see:
d5cf4a5aa4 ("brcm47xx: relocate loader to higher address")
2909a4b78e ("brcm47xx: relocate the stack in loader")

Cc: Hauke Mehrtens <hauke@hauke-m.de>
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
Acked-by: Hauke Mehrtens <hauke@hauke-m.de>
2021-11-08 15:55:26 +01:00
Daniel Golle
32ba52e217
rpcd: reload rpcd on installation of rpcd-mod-*
When installing additional rpcd modules, a restart of rpcd is required.
This often confuses users as even after installing rpcd-mod-rpcsys the
relevant ubus objects are still missing until rpcd has been reloaded
(or the system has been rebooted, obviously).
Let rpcd-mod-* reload rpcd as post-install action.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2021-11-08 14:21:02 +00:00
Felix Fietkau
afb9c24d90 qosify: update to the latest version
2ca7352543da map: make a helper function for freeing entries
411432ec853b map: add support for adding dns regex patterns
14803cb559d8 ubus: remove unused enum
a0740172eda6 ubus: add api for providing dns lookup results for dns regex rules
406fbf478e87 ubus: add support for dynamically adding dns based rules
5fc91183d60a README: mention dns regex entries
3ed8c3eb1a3b README: document mapping file syntax
91ce2e77d302 map: introduce low effort codepoint from RFC8622
5ff14acca0e7 interface: enable NAT on interfaces by default
e70f70e496d7 README: fix typo
f25ded617478 README: fix another typo
675238bc2ce5 loader: always reinitialize programs
010eea0d98c3 map: improve timeout handling of IP entries
7ef54a7f04a0 map: add DF codepoint
6f7fbe698555 map: increase active timeout to 300
60e06a579a13 qosify-bpf: inline check_flow() to ensure that it is jited
f5ae89e8d869 ubus: subscribe to dnsmasq.dns for dns lookup results

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2021-11-08 15:06:20 +01:00
Felix Fietkau
d8b33dad0b dnsmasq: add support for monitoring and modifying dns lookup results via ubus
The monitoring functionality will be used for dns rule support in qosify

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2021-11-08 15:06:19 +01:00
John Audia
83f1d72dea kernel: bump 5.10 to 5.10.78
All patches automatically rebased.

Build system: x86_64
Build-tested: bcm2711/RPi4B
Run-tested: bcm2711/RPi4B

Signed-off-by: John Audia <graysky@archlinux.us>
2021-11-07 19:59:10 +01:00
John Audia
a50565157e kernel: bump 5.4 to 5.4.158
All patches automatically rebased.

Signed-off-by: John Audia <graysky@archlinux.us>
2021-11-07 19:58:08 +01:00
Hauke Mehrtens
71af55ae2a gdb: Make only full gdb depend on libgmp
libgmp is only needed for the full gdb and not for the gdbserver
application.

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2021-11-07 18:32:21 +01:00
Hauke Mehrtens
84616a1725 gdb: Add explicit patch to libgmp
Without giving the patch gdb does not compile on Arch Linux.

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2021-11-07 18:32:21 +01:00
Paul Spooren
184d072fc0 pistachio: drop Kernel 5.4 support
With the switch to Kernel 5.10 the 5.4 files are no longer needed.

Signed-off-by: Paul Spooren <mail@aparcar.org>
2021-11-07 18:32:21 +01:00
Paul Spooren
646c011ec7 pistachio: switch to Kernel 5.10
This was successfully boot tested on a Creator Ci40.

Signed-off-by: Paul Spooren <mail@aparcar.org>
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2021-11-07 18:31:34 +01:00
Stijn Tintel
786cbf0fa4 kernel: fix KERNEL_KASAN_VMALLOC build option
It should be config, not CONFIG.

Fixes: cbeab2cd99 ("kernel: add another missing KASAN symbol")
Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
2021-11-07 18:57:12 +02:00
Stijn Tintel
0ccbcb0223 kernel: add missing keyword to KERNEL_KASAN_VMALLOC
The help keyword is missing, which breaks menuconfig etc.

Fixes: cbeab2cd99 ("kernel: add another missing KASAN symbol")

Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
2021-11-07 18:55:17 +02:00
Stijn Tintel
cbeab2cd99 kernel: add another missing KASAN symbol
Enabling KERNEL_KASAN exposes yet another missing symbol. This did not
appear on bcm27xx but is appearing now on x86/64. Add a new kernel build
option for KASAN_VMALLOC to fix build on x86/64 with KERNEL_KASAN
enabled.

Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
Acked-by: Hauke Mehrtens <hauke@hauke-m.de>
2021-11-07 18:38:16 +02:00
Evgeniy Didin
da9a8fcbc3 archs38: update kernel version to 5.10
Update config, Makefile and image/Makefile.
Directly switch to kernel 5.10.

This patch was tested in nSIM simulator, no errors appeared.

Signed-off-by: Evgeniy Didin <Evgeniy.Didin@synopsys.com>
Cc: Alexey Brodkin <abrodkin@synopsys.com>
Cc: Paul Spooren <mail@aparcar.org>
Cc: Hauke Mehrtens <hauke@hauke-m.de>
Cc: John Crispin <john@phrozen.org>
2021-11-07 17:12:10 +01:00