aboutsummaryrefslogtreecommitdiffstats
path: root/package
Commit message (Collapse)AuthorAgeFilesLines
* ucert: fix buildDaniel Golle2018-06-151-1/+7
| | | | | | | set PKG_BUILD_DIR before including package.mk to avoid problems as seen on buildbot. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* libjson-c: fix host-buildDaniel Golle2018-06-141-0/+1
| | | | | | Add -Wno-implicit-fallthrough to HOST_CFLAGS. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* package/libs/libnfnetlink: Remove dead mirrorDaniel Engberg2018-06-141-2/+1
| | | | | | Remove mirrors.evolva.ro as it's no longer available Signed-off-by: Daniel Engberg <daniel.engberg.lists@pyret.net>
* libubox: make sure blobmsg-json is included in host-buildDaniel Golle2018-06-141-1/+2
| | | | Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* libjson-c: add host build (for libblobmsg-json)Daniel Golle2018-06-141-0/+2
| | | | Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* ucert: add packageDaniel Golle2018-06-141-0/+60
| | | | | | | | ucert is a wrapper around usign to allow delegation and revocation of public keys for future use in sysupgrade. Signed-off-by: Daniel Golle <daniel@makrotopia.org> This work was sponsored by WIO (wiowireless.com)
* brcm2708: move wifi calibration EEPROMs out of base-filesDaniel Golle2018-06-141-0/+88
| | | | | | | | Ship EEPROM blobs for specific supported board only and don't have them lurking around in our source tree but rather download them from @github/RPi-Distro/firmware-nonfree upstream. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* linux-firmware: add firmware for BCM43455 SDIO wlan found on RPi3B+Daniel Golle2018-06-141-0/+9
| | | | Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* popt: Add backup siteDaniel Engberg2018-06-131-1/+1
| | | | | | Add Gentoo's distfiles repo as backup site. Signed-off-by: Daniel Engberg <daniel.engberg.lists@pyret.net>
* base-files: sysupgrade: fix handing get_image unpack commandsMatthias Schiffer2018-06-111-6/+6
| | | | | | | | On bcm53xx and brcm47xx, commands are passed to default_do_upgrade that expect the image to be passed on stdin, rather than as an argument. Fixes: 30f61a34b4cf ("base-files: always use staged sysupgrade") Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
* odhcp6c: user string option supportHans Dedecker2018-06-111-3/+3
| | | | | | ca8822b odhcp6c: add support for user string options Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
* dnsmasq: fix confdir option processing (FS#1572)Hans Dedecker2018-06-112-2/+3
| | | | | | | | Fix condir option processing allowing to use the format "<directory>[,<file-extension>......]," as documented on the dnsmasq man page which previously resulted into bogus dir being created. Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
* kernel/modules: fix kmod-mdio-gpio module dependenciesHauke Mehrtens2018-06-101-1/+1
| | | | | | | | | | | On some targets this module depends on kmod-of-mdio. This is similar to the fixes done in: dc629d9cf5a ("kernel: fix kmod-switch-rtl8366-smi dependency") 56bd23cf529 ("kernel: let kmod-rtl8366-smi conditionally depend on kmod-of-mdio") Fixes: 32f32398af976e ("kernel/modules: add kmod-mdio-gpio module") Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
* kernel/modules: add kmod-switch-rtl8306 moduleMartin Schiller2018-06-091-0/+16
| | | | | | | Add kernel module for kmod-switch-rtl8306. Signed-off-by: Florian Eckert <fe@dev.tdt.de> Signed-off-by: Martin Schiller <ms@dev.tdt.de>
* kernel/modules: add kmod-mdio-gpio moduleMartin Schiller2018-06-091-0/+20
| | | | | | | Add kernel module package for kmod-mdio-gpio. Signed-off-by: Florian Eckert <fe@dev.tdt.de> Signed-off-by: Martin Schiller <ms@dev.tdt.de>
* kernel/modules: add kmod-adcxx moduleFlorian Eckert2018-06-091-0/+22
| | | | | | Add kernel module package for kmod-adcxx. Signed-off-by: Florian Eckert <fe@dev.tdt.de>
* kernel/modules: add kmod-random-tpm moduleMartin Schiller2018-06-091-0/+16
| | | | | | | Add kernel module package for kmod-random-tpm. Signed-off-by: Florian Eckert <fe@dev.tdt.de> Signed-off-by: Martin Schiller <ms@dev.tdt.de>
* mac80211: ath10k: Allow to enable the thermal code of ath10kSven Eckelmann2018-06-094-3/+24
| | | | | | | | | | | | | | | Some ath10k firmware versions allow to access the chip internal a temperature sensor and allow to reduce the amount of the time when the card is allowed to send. The latter is required on devices which tend to overheat. An userspace service has to read /sys/class/ieee80211/phy*/device/hwmon/hwmon*/temp1_input regularly and then decide how much the device has to be throttled. This can be done by writing to /sys/class/ieee80211/phy*/device/cooling_device/cur_state. By default it is not throttled (0) but it can be throttled up to 100(%). Signed-off-by: Sven Eckelmann <sven.eckelmann@openmesh.com>
* ltq-vdsl-mei: reset g_tx_link_rate on showtime exitMartin Schiller2018-06-091-0/+12
| | | | | | | | | | | | Without this change, ifx_mei_atm_showtime_check() will always return "showtime" after one call of MEI_InternalXtmSwhowtimeEntrySignal() was done, even if MEI_InternalXtmSwhowtimeExitSignal() was called in the meantime. The ifx_mei_atm_showtime_check() function is used by the ltq-atm and ltq-ptm driver. Signed-off-by: Martin Schiller <ms@dev.tdt.de>
* mtd-utils: revert faulty upstream patch for nowChristian Lamparter2018-06-081-0/+30
| | | | | | | | | | | | | | | | | Some of the ubi-tools in the upstream mtd-utils have been broken by a bad patch upstream. It causes major breakage during sysupgrade when the kernel, rootfs, ... volumes are deleted in the wrong order. This patch therefore reverts the faulty upstream commit which fixes the bug. linux-mtd mailing-list thread: <http://lists.infradead.org/pipermail/linux-mtd/2018-June/081562.html> Cc: John Crispin <john@phrozen.org> Reported-by: L. Wayne Leach <LLeachii@aol.com> Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
* busybox: udhcpc: no MSG_DONTROUTE when sending packetAdi Shammout2018-06-072-1/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts a change made in Sep 2017 [1] which introduced MSG_DONTROUTE flag to prevent udhcpc from reaching out to servers on a different subnet. That change violates RFC2131 by forcing fully configured clients, who got their configurations through an offer relayed by a DHCP relay, from renewing through a unicast request directly to the DHCP server, resulting in the client resorting to boradcasting lease extension requests instead of unicasting them, further breaking RFC2131. The problem with MSG_DONTROUTE appears when talking to a properly configured DHCP server that rejects non-compliant requests. Such server will reject lease extension attempts sent via broadcast rather than unicast, as is the case with Finnish ISPs Telia and DNA as well as Estonian ISP Starman. Once the lease expires without renewal, udhcpc enters init mode, taking down the interfaces with it, and thus causing interruption on every lease expiry. On some ISPs (such as the ones mentioned above) that can be once every 10-20 minutes. The interruptions appear in the logs as such: ---- udhcpc: sending renew to x.x.x.x udhcpc: send: Network unreachable udhcpc: sending renew to 0.0.0.0 udhcpc: sending renew to 0.0.0.0 ... udhcpc: lease lost, entering init state Interface 'wan' has lost the connection Interface 'wan' is now down Network alias 'eth0' link is down udhcpc: sending select for y.y.y.y udhcpc: lease of y.y.y.y obtained, lease time 1200 Network alias 'eth0' link is up Interface 'wan' is now up ---- During lease extension, a fully configured client should be able to reach out to the server from which it recieved the lease for extension, regardless in which network it is; that's up to the gateway to find. [2] This patch ensures that. [1] http://lists.busybox.net/pipermail/busybox-cvs/2017-September/037402.html [2] https://www.netmanias.com/en/post/techdocs/6000/dhcp-network-protocol/ understanding-dhcp-relay-agents Signed-off-by: Adi Shammout <adi.shammout@outlook.com> Signed-off-by: Hans Dedecker <dedeckeh@gmail.com> [PKG_RELEASE increase]
* logd: create log directory for log_fileKarl Palsson2018-06-072-1/+3
| | | | | | | If log_file is specified, make sure its directory exists. Signed-off-by: Karl Palsson <karlp@etactica.com> Signed-off-by: Hans Dedecker <dedeckeh@gmail.com> [PKG_RELEASE increase]
* ar71xx: add support for OCEDO KoalaDavid Bauer2018-06-071-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit adds support for the OCEDO Koala SOC: Qualcomm QCA9558 (Scorpion) RAM: 128MB FLASH: 16MiB WLAN1: QCA9558 2.4 GHz 802.11bgn 3x3 WLAN2: QCA9880 5 GHz 802.11nac 3x3 INPUT: RESET button LED: Power, LAN, WiFi 2.4, WiFi 5, SYS Serial: Header Next to Black metal shield Pinout is 3.3V - GND - TX - RX (Arrow Pad is 3.3V) The Serial setting is 115200-8-N-1. Tested and working: - Ethernet - 2.4 GHz WiFi - 5 GHz WiFi - TFTP boot from ramdisk image - Installation via ramdisk image - OpenWRT sysupgrade - Buttons - LEDs Installation seems to be possible only through booting an OpenWRT ramdisk image. Hold down the reset button while powering on the device. It will load a ramdisk image named 'koala-uImage-initramfs-lzma.bin' from 192.168.100.8. Note: depending on the present software, the device might also try to pull a file called 'koala-uimage-factory'. Only the name differs, it is still used as a ramdisk image. Wait for the ramdisk image to boot. OpenWRT can be written to the flash via sysupgrade or mtd. Due to the flip-flop bootloader which we not (yet) support, you need to set the partition the bootloader is selecting. It is possible from the initramfs image with > fw_setenv bootcmd run bootcmd_1 Afterwards you can reboot the device. Signed-off-by: David Bauer <mail@david-bauer.net>
* hostapd: make cli treat UNKNOWN COMMAND as failingDenton Gentry2018-06-071-0/+13
| | | | | | | | | | | Avoid infinite loop at 100% CPU when running hostapd_cli if CONFIG_CTRL_IFACE_MIB is not defined. _newselect(4, [3], NULL, NULL, ...) recvfrom(3, "UNKNOWN COMMAND\n", 4095, 0, NULL, NULL) = 16 sendto(3, "STA-NEXT UNKNOWN COMMAND", 24, 0, NULL, 0) = 24 Signed-off-by: Denton Gentry <denny@geekhold.com>
* ethtool: Update to 4.16Rosen Penev2018-06-071-2/+2
| | | | | | Tested on Turris Omnia (mvebu). Signed-off-by: Rosen Penev <rosenp@gmail.com>
* iperf: Update to 2.0.11Rosen Penev2018-06-071-2/+2
| | | | | | Tested on Turris Omnia (mvebu). Signed-off-by: Rosen Penev <rosenp@gmail.com>
* gdb: Update to 8.1Rosen Penev2018-06-071-2/+2
| | | | | | Tested on Turris Omnia (mvebu). Signed-off-by: Rosen Penev <rosenp@gmail.com>
* strace: Update to 4.22Rosen Penev2018-06-071-3/+3
| | | | | | | | | SourceForge is deprecated according to upstream, so switch to main site for downloads. Tested on Turris Omnia (mvebu). Signed-off-by: Rosen Penev <rosenp@gmail.com>
* uboot-zynq: update to 2017.03Luis Araneda2018-06-072-5/+5
| | | | | | Compile-tested: ZedBoard Signed-off-by: Luis Araneda <luaraneda@gmail.com>
* brcm2708: Update brcm2708-gpu-fw packageChristo Nedev2018-06-071-7/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem - rapsberry pi 3 b/b+ does not boot with bcm2710 images! How Raspberry Pi boots Actualy? When Raspberry is switched on GPU is activated. 1. GPU execute First stage bootloader from ROM. First stage bootloader mount the FAT boot partition on the SD card and execute second stage bootloader (bootcode.bin). 2. Second stage bootloader (bootcode.bin) activate SDRAM. Load the GPU firmware (start.elf). 3. GPU firmware (start.elf) a) display Rainbow splash. b) read firmware configuration file config.txt and split the RAM using fixup.dat. c) loads a cmdline.txt d) enables the CPU. e) loads the kernel image configurable via config.txt In your target/linux/brcm2708/image/config.txt 493 ## kernel (string) 494 ## Alternative name to use when loading kernel. 495 ## 496 #kernel="" it is not configured! But in your target/linux/brcm2708/image/Makefile 75 KERNEL_IMG := kernel8.img 76 DEVICE_TITLE := Raspberry Pi 3B/3B+ you have kernel8.img GPU Firmware search order by default for a PI 3 is: kernel8.img if found boot in 64 bit mode kernel8-32.img if found boot in 32 bit mode kernel7.img if found boot in 32 bit mode kernel.img if found boot in 32 bit mode But a PI 2 will start the search from kernel7.img and a PI 1 only looks for kernel.img. Оbviously the kernel has been found. But something goes wrong and the device is restarted. In your package/kernel/brcm2708-gpu-fw/Makefile 11 PKG_NAME:=brcm2708-gpu-fw 12 PKG_VERSION:=2017-08-08 13 PKG_RELEASE:=e7ba7ab135f5a68b2c00a919ea9ac8d5528a5d5b boot loader is 10 monts old. In conclusion, the best way to solve the problem is to update the boot loader! Fixup_cd.dat and start_cd.elf files are not necessary. These are used when GPU memory is set to 16 MB, which disables some GPU features. I did not remove them just in case! cheers Signed-off-by: Christo Nedev <christo.nedev@gmail.com>
* ebtables: update to latest git 2018-06-06Hans Dedecker2018-06-061-3/+3
| | | | | | | 5699354 extensions: fix build failure on fc28 e6359ee build: update ebtables.h from kernel and drop local unused copy Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
* base-files: fix UCI config parsing and callback handlingTony Ambardar2018-06-062-9/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There are several long-standing issues present in the UCI shell API as documented in https://wiki.openwrt.org/doc/devel/config-scripting. They relate both to high-level, user-defined callback functions used to process UCI config files, and also to low-level functions used within scripts generally. The related problems have been encountered now and in the past, e.g. https://forum.openwrt.org/viewtopic.php?id=54295, and include: a) UCI parsing option() function and user-defined option_cb() callbacks being erroneously called during processing of "list" config file entries; b) normal usage of the low-level config_set() unexpectedy calling any defined option_cb() if present; and c) handling of the list_cb() not respecting the NO_CALLBACK variable. Root causes include a function stack "inversion", where the low-level config_set() function incorrectly calls the high-level option() function, intended only for processing the "option" keyword of UCI config files. This change addresses the inversion and other issues, making the option handling code more consistent and smaller, and simplifying developers' usage of UCI callbacks. Signed-off-by: Tony Ambardar <itugrok@yahoo.com> Signed-off-by: Hans Dedecker <dedeckeh@gmail.com> [PKG_RELEASE increase]
* hostapd: properly build hostapd-only SSL variantsDaniel Golle2018-06-051-11/+11
| | | | | | | Make sure hostapd-openssl is actually build against OpenSSL, same for wolfSSL. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* kernel: modules: package module for Exar 8250 UARTsDaniel Golle2018-06-051-0/+16
| | | | Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* hostapd: expose device taxonomy signature via ubusFelix Fietkau2018-06-051-0/+6
| | | | Signed-off-by: Felix Fietkau <nbd@nbd.name>
* hostapd: add support for client taxonomy in the full configFelix Fietkau2018-06-052-5/+29
| | | | | | | This can be used to fingerprint clients to try to identify the exact model Signed-off-by: Felix Fietkau <nbd@nbd.name>
* mt76: update to the latest versionFelix Fietkau2018-06-051-3/+3
| | | | | | | | | | | | | | | 20c0766 mt7603: adjust rx hang watchdog for MT7628 664e321 mt7603: add extra PSE hang check signature for MT7628 f24b56f update MT7628 firmware to the latest version d87e4b0 mt7603: clear PSE reset bit if PSE reset fails 0ef26ef mt76: only stop tx queues on offchannel, not during the entire scan f399da3 mt76: prevent tx scheduling during channel change 21c1e1e mt76: move ieee80211_hw allocation to common core 730c292 mt76: wait for pending tx to complete before switching channel fcbb49e mt76x2: use udelay instead of usleep_range in mt76x2_mac_stop 792dbe0 mt7603: do not hold dev->mutex while flushing dev->mac_work Signed-off-by: Felix Fietkau <nbd@nbd.name>
* map: make tunnel encapsulation limit support configurable (FS#1501)Hans Dedecker2018-06-042-8/+10
| | | | | | | | | | | | Be compatible with ISPs which don't support the destination option header containing the tunnel encapsulation limit as reported in FS#1501. Setting the uci parameter encaplimit to ignore; allows to disable the insertion of the destination option header in the map-e packets. Otherwise the tunnel encapsulation limit value can be set to a value from 0 till 255 by setting the encaplimit uci parameter accordingly. If no encaplimit value is specified the default value is 4 as before. Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
* netifd: update to latest git HEAD (FS#1501)Hans Dedecker2018-06-041-4/+4
| | | | | | a580028 system-linux: make encaplimit configurable for ip6 tunnels (FS#1501) Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
* odhcp6c: make ds-lite/map tunnel encapsulation limit support configurable ↵Hans Dedecker2018-06-043-3/+9
| | | | | | | | | | | | | | (FS#1501) Be compatible with ISPs which don't support the destination option header containing the tunnel encapsulation limit as reported in FS#1501 for dynamic created ds-lite/map interfaces. Setting the uci parameter encaplimit_dslite/map to ignore; allows to disable the insertion of the destination option header for the dynamic created ds-lite/map interface. Otherwise the tunnel encapsulation limit value can be set to a value from 0 till 255 by setting the encaplimit_dslite/map uci parameter accordingly. Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
* ds-lite: make tunnel encapsulation limit support configurable (FS#1501)Hans Dedecker2018-06-042-3/+7
| | | | | | | | | | | | Be compatible with ISPs which don't support the destination option header containing the tunnel encapsulation limit as reported in FS#1501. Setting the uci parameter encaplimit to ignore; allows to disable the insertion of the destination option header in the ds-lite packets. Otherwise the tunnel encapsulation limit value can be set to a value from 0 till 255 by setting the encaplimit uci parameter accordingly. If no encaplimit value is specified the default value is 4 as before. Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
* oxnas: bring in new oxnas targetDaniel Golle2018-06-011-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Reboot the oxnas target based on Linux 4.14 by rebasing our support on top of the now-existing upstream kernel support. This commit brings oxnas support to the level of v4.17 having upstream drivers for Ethernet, Serial and NAND flash. Botch up OpenWrt's local drivers for EHCI, SATA and PCIe based on the new platform code and device-tree. Re-introduce base-files from old oxnas target which works for now but needs further clean-up towards generic board support. Functional issues: * PCIe won't come up (hence no USB3 on Shuttle KD20) * I2C bus of Akitio myCloud device is likely not to work (missing debounce support in new pinctrl driver) Code-style issues: * plla/pllb needs further cleanup -- currently their users or writing into the syscon regmap after acquireling the clk instead of using defined clk_*_*() functions to setup multipliers and dividors. * PCIe phy needs its own little driver. * SATA driver is a monster and should be split into an mfd having a raidctrl regmap, sata controller, sata ports and sata phy. Tested on MitraStar STG-212 aka. Medion Akoya MD86xxx and Shuttle KD20. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* uboot-oxnas: fix build with newer GCCDaniel Golle2018-06-012-0/+593
| | | | Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* netifd: drop conflicting 'device' interface propertyIvan Shapovalov2018-06-013-5/+1
| | | | | | | | | | Do not set device runtime property on interfaces in the hotplug handler and in fixup_interfaces(). This property conflicts with device option in several proto handlers (mainly QMI and other WWAN/3G protos) and does not seem to be used anywhere. Signed-off-by: Ivan Shapovalov <intelfx@intelfx.name> Signed-off-by: Hans Dedecker <dedeckeh@gmail.com> [PKG_RELEASE increase]
* nettle: bump to 3.4Kevin Darbyshire-Bryant2018-06-011-2/+2
| | | | | | | | | | | 3.4 is mainly a bug fix/maintenance release. 3KB increase in ipk lib size on mips. Compile tested for: ar71xx, ramips Run tested on: ar71xx Archer C7 v2, ramips mir3g Signed-off-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>
* mtd: mark as nonshared to fix FS#484Mirko Parthey2018-06-011-0/+2
| | | | | | | | | | The mtd tool is built with different configurations depending on the target. For example, brcm47xx adds the fixtrx subcommand, without which an image fails when booting the second time. Mark the mtd package as nonshared to really fix FS#484. Signed-off-by: Mirko Parthey <mirko.parthey@web.de>
* ath10k-ct: Update driver to latestKoen Vandeputte2018-06-011-3/+3
| | | | | | | | | | 127f98189ee5 ath10k: Fix bad return w/out unlock, compile w/out debugfs b8f48f3c138f Fix survey-dump for 4.7, 4.9 and 4.13 kernels. fa8259ad5d6d ath10k-ct: Support survey dump in 10.1 firmware. 2853e1337ecf ath10k-ct: Add 4.16 ath10k-ct driver to package. Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com> CC: Ben Greear <greearb@candelatech.com>
* wireguard: bump to 0.0.20180531 to fix flow offloadingJason A. Donenfeld2018-05-311-6/+5
| | | | | | | | | | This version bump was made upstream mostly for OpenWRT, and should fix an issue with a null dst when on the flow offloading path. While we're at it, Kevin and I are the only people actually taking care of this package, so trim the maintainer list a bit. Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* hostapd: update packaging and patchesDaniel Golle2018-05-3137-496/+417
| | | | | | | | | | Clean up conflicts/provides/depends hell and add PROVIDES for eapol-test variants while at it. Update mesh-DFS patchset from Peter Oh to v5 (with local fixes) which allows to drop two revert-patches for upstream commits which previously were necessary to un-break mesh-DFS support. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* wolfssl: change defaults to cover wpa_supplicant needsDaniel Golle2018-05-312-10/+10
| | | | | | | | | | | | | Implicetely selecting the required options via Kconfig snippet from hostapd worked fine in local builds when using menuconfig but confused the buildbots which (in phase1) may build wpad-mini and hence already come with CONFIG_WPA_WOLFSSL being defined as unset which then won't trigger changing the defaults of wolfssl. Work around by explicitely reflecting wpa_supplicant's needs in wolfssl's default settings to make buildbots happy. Signed-off-by: Daniel Golle <daniel@makrotopia.org>