aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* odhcpd: fix update to git HEADHans Dedecker2019-09-121-2/+2
| | | | | | | | | | | | | | | | Fixes commit 7ff5b12e90 e73bf11 config: ra_management compatibility support d818380 odhcpd: router: Fix out of scope memory access 94a1c94 dhcpv6-ia: free assignment when validity timer expires 752fc2c router: speed up initial router advertisements 09aa022 router: close socket upon NETEV_IFINDEX_CHANGE fixed 79eb160 router: fix previous commit 6034b5c router: close socket upon NETEV_IFINDEX_CHANGE 000182f router: fix lingering uloop socket descriptor f6c2242 router: support ra_lifetime being 0 Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
* umbim: update to latest git HEADIngo Feinerer2019-09-121-3/+3
| | | | | | 184b707 umbim: add home provider query support Signed-off-by: Ingo Feinerer <feinerer@logic.at>
* odhcpd: update to latest git HEAD (FS#2019)Hans Dedecker2019-09-122-2/+5
| | | | | | | | | | | | | | | | | e73bf11 config: ra_management compatibility support d818380 odhcpd: router: Fix out of scope memory access 94a1c94 dhcpv6-ia: free assignment when validity timer expires 752fc2c router: speed up initial router advertisements 09aa022 router: close socket upon NETEV_IFINDEX_CHANGE fixed 79eb160 router: fix previous commit 6034b5c router: close socket upon NETEV_IFINDEX_CHANGE 000182f router: fix lingering uloop socket descriptor f6c2242 router: support ra_lifetime being 0 d111809 router: make RA flags configurable (FS#2019) Update odhcpd defaults according to the new RA flags implementation Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
* mt76: probe load mt7615 driver asynchronouslyFelix Fietkau2019-09-121-0/+1
| | | | | | It can take a long time to load the firmware Signed-off-by: Felix Fietkau <nbd@nbd.name>
* ath79: fix UniFi AC LED mappingDavid Bauer2019-09-121-4/+9
| | | | | | | | | | | The UniFi AC LED mapping is currently off. The blue/white LED are used as WiFi indicators, while the vendor firmware does not feature WiFI LEDs. Instead, the LEDs are used to indicate the devices status. Align the LED mapping to match the vendor firmware as good as possible. Signed-off-by: David Bauer <mail@david-bauer.net>
* iwinfo: update to latest Git HEADDavid Bauer2019-09-121-3/+3
| | | | | | | a88fb42 iwinfo: add device id for Qualcomm Atheros QCA9886 1b69d86 iwinfo: add device id for Qualcomm Atheros QCA9887 Signed-off-by: David Bauer <mail@david-bauer.net>
* config: kernel: only enable container features if !SMALL_FLASHDaniel Golle2019-09-121-2/+2
| | | | | | | | | | | | KERNEL_DEVPTS_MULTIPLE_INSTANCES and KERNEL_POSIX_MQUEUE were previously enabled by default only if KERNEL_LXC_MISC was selected. KERNEL_LXC_MISC was enabled only if the SMALL_FLASH (anti-)feature was not selected. Now that KERNEL_LXC_MISC no longer exists, make sure that those options are also only enabled by default for !SMALL_FLASH targets. Fixes: 4f94a331 ("config: kernel: remove KERNEL_LXC_MISC") Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* config: kernel: remove KERNEL_LXC_MISCYousong Zhou2019-09-121-33/+22
| | | | | | | | | | Kernel features are neutral. The two cascaded features can also be useful for other container related tools It's also less error-prone if only kconfig symbols from the kernel are prefixed KERNEL_ Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
* config: kernel: add KERNEL_X86_VSYSCALL_EMULATIONYousong Zhou2019-09-121-0/+18
| | | | | | | | | Binaries in container images may need this. E.g. nginx:1.7.9 used in k8s default deployment manifest file for demostration [1] [1] https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#creating-a-deployment Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
* Revert "ar71xx: use platform code for qca955x usb0 init"Koen Vandeputte2019-09-121-14/+0
| | | | | | | | | | | | | | | This reverts commit 5b98061bb1ac7e3affadda7b55c6f4ed4eb8268e. As Piotr Dymacz pointed out: In QCA MIPS based WiSOCs, for first USB interface, device/host mode can be selected _only_ in hardware see description of 57c641ba6e QCA955x and QCA9563, second USB can be switched to device mode in software (tested and confirmed on real hardware). Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
* imx6: split up DEVICE_TITLEMoritz Warning2019-09-111-5/+12
| | | | | | DEVICE_TITLE is split up into DEVICE_VENDOR, DEVICE_MODEL and DEVICE_VARIANT Signed-off-by: Moritz Warning <moritzwarning@web.de>
* samsung: split up DEVICE_TITLEMoritz Warning2019-09-111-1/+2
| | | | | | DEVICE_TITLE is split up into DEVICE_VENDOR, DEVICE_MODEL and DEVICE_VARIANT Signed-off-by: Moritz Warning <moritzwarning@web.de>
* ar71xx: qca955x pci init/reset fixesTomislav Požega2019-09-111-0/+120
| | | | | | | | | | | | | | Current ar724x code does the reset only on single pci bus, and in case of qca9558 writes the wrong register (0x10 vs 0x0c). This change allows the reset of second pci bus, commonly used in Archer C7 devices, in case host controller is stuck in reset. If the resetting controller on boot can solve any other issue it can be enabled unconditionally by removing reset check before ar724x_pci_hw_init is called. Signed-off-by: Tomislav Požega <pozega.tomislav@gmail.com> [refreshed to apply cleanly] Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
* ar71xx: enable ddr wb flush on qca955xTomislav Požega2019-09-111-0/+49
| | | | | | | | Enable flushing of write buffers on qca955x. GPL code has 0x88 reg defined for PCI flush which is likely an error since the device freezes on boot. So use DS default value 0xA8 for PCI flush. Signed-off-by: Tomislav Požega <pozega.tomislav@gmail.com>
* ar71xx: use platform code for qca955x usb0 initTomislav Požega2019-09-111-0/+14
| | | | | | | Switch from ci_usb_setup to generic platform initialization of usb0 port. Signed-off-by: Tomislav Požega <pozega.tomislav@gmail.com>
* kernel: bump 4.19 to 4.19.71Koen Vandeputte2019-09-117-89/+32
| | | | | | | | | | | | | Refreshed all patches. Remove upstreamed: - 950-0774-watchdog-bcm2835_wdt-Fix-module-autoload.patch - 0017-usb-host-fotg2-restart-hcd-after-port-reset.patch Compile-tested on: cns3xxx Runtime-tested on: cns3xxx Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
* kernel: bump 4.14 to 4.14.142Koen Vandeputte2019-09-116-36/+10
| | | | | | | | | | | | Refreshed all patches. Remove upstreamed: - 0032-usb-host-fotg2-restart-hcd-after-port-reset.patch Compile-tested on: cns3xxx Runtime-tested on: cns3xxx Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
* kernel: bump 4.9 to 4.9.191Koen Vandeputte2019-09-112-5/+5
| | | | | | | | | Refreshed all patches. Compile-tested on: none Runtime-tested on: none Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
* treewide: sysupgrade: use $UPGRADE_BACKUP to check for backupRafał Miłecki2019-09-1112-14/+13
| | | | | | | Now that $UPGRADE_BACKUP is set conditionally there is no need to check the $UPGRADE_OPT_SAVE_CONFIG anymore. All conditions can be simplified. Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
* procd: update to the latest git HEADRafał Miłecki2019-09-111-3/+3
| | | | | | | | | b8238df sysupgrade: support "backup" attribute This update requires "sysupgrade" method callers to pass "backup" attribute if $UPGRADE_BACKUP is used in the project. Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
* base-files: sysupgrade: pass "backup" ubus attributeRafał Miłecki2019-09-111-0/+3
| | | | | | | | This explicitly tells procd what backup file should be used during sysupgrade (if any). It's much more generic this way compared to the magic /tmp/sysupgrade.tgz file that had to be created before a call. Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
* gemini: image: fix race condition when building copy-kernel.binYousong Zhou2019-09-112-8/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | Make treat copy-kernel.o as intermediate and delete it when it's no longer needed. This can fail when the same submake was triggered multiple times for different devices. arm-openwrt-linux-muslgnueabi-as -k -o copy-kernel.o copy-kernel.S export MAKEFLAGS= ;make -w -C copy-kernel CROSS_COMPILE=arm-openwrt-linux-muslgnueabi- arm-openwrt-linux-muslgnueabi-objcopy -O binary -S copy-kernel.o copy-kernel.bin make[5]: Entering directory '/builder/shared-workdir/build/target/linux/gemini/image/copy-kernel' arm-openwrt-linux-muslgnueabi-objcopy -O binary -S copy-kernel.o copy-kernel.bin rm copy-kernel.o make[5]: Leaving directory '/builder/shared-workdir/build/target/linux/gemini/image/copy-kernel' # "App" partition is the rootfs arm-openwrt-linux-muslgnueabi-objcopy: 'copy-kernel.o': No such file Makefile:27: recipe for target 'copy-kernel.bin' failed make[5]: Leaving directory '/builder/shared-workdir/build/target/linux/gemini/image/copy-kernel' make[5]: *** [copy-kernel.bin] Error 1 Makefile:244: recipe for target '/builder/shared-workdir/build/build_dir/target-arm_fa526_musl_eabi/linux-gemini/tmp/openwrt-gemini-storlink_sl93512r-ext4-factory.bin' failed make[4]: *** [/builder/shared-workdir/build/build_dir/target-arm_fa526_musl_eabi/linux-gemini/tmp/openwrt-gemini-storlink_sl93512r-ext4-factory.bin] Error 2 With this change, output files are directed to $(KDIR) Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com> Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
* hostapd: SAE/EAP-pwd side-channel attack updateHauke Mehrtens2019-09-109-1/+397
| | | | | | | | Fixes this security problem: * SAE/EAP-pwd side-channel attack update https://w1.fi/security/2019-6/sae-eap-pwd-side-channel-attack-update.txt Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
* hostapd: Fix security problemHauke Mehrtens2019-09-103-1/+81
| | | | | | | | | | | This fixes: CVE-2019-11555 "EAP-pwd message reassembly issue with unexpected fragment" https://w1.fi/security/2019-5/eap-pwd-message-reassembly-issue-with-unexpected-fragment.txt This shouöld not affect OpenWrt in the default settings as we do not use EAP-pwd. Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
* ramips: enable external amplifier for D-Link DIR-810LRoger Pueyo Centelles2019-09-101-0/+2
| | | | | | | | The 2.4 GHz radio had very poor signal reception (-89 dBm for an AP sitting 5 m away). By enabling the external amplifier, received signal has improved to -50 dBm for the same AP. Signed-off-by: Roger Pueyo Centelles <roger.pueyo@guifi.net>
* rpcd: update to latest Git HEADJo-Philipp Wich2019-09-101-3/+3
| | | | | | e2a7bc4 iwinfo: add WPA3 support Signed-off-by: Jo-Philipp Wich <jo@mein.io>
* mac80211: brcmfmac: backport more kernel 5.4 changesRafał Miłecki2019-09-098-9/+283
| | | | | | | Patch getting RAM info got upstreamed. A debugging fs entry for testing reset feature was added. Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
* glibc: update to latest 2.27 commit (BZ #24228, BZ #24744, BZ #24699)Hans Dedecker2019-09-081-2/+2
| | | | | | | | | | | | | | | | | | | | | | 5f0d2e0491 [AArch64] Add ifunc support for Ares e6b7252040 aarch64,falkor: Use vector registers for memcpy c74b884f70 aarch64,falkor: Ignore prefetcher tagging for smaller copies 0fc5934ebd aarch64/strncmp: Use lsr instead of mov+lsr e0a0bd3acc aarch64/strncmp: Unbreak builds with old binutils 638caf3000 aarch64: Improve strncmp for mutually misaligned inputs d5f45a29ff aarch64/strcmp: fix misaligned loop jump target 7f690fafad aarch64: Improve strcmp unaligned performance 40df047b3b aarch64: Fix branch target to loop16 062139f233 aarch64: Optimized memcmp for medium to large sizes f3e2add213 aarch64: Use the L() macro for labels in memcmp 22bd3ab40e posix: Fix large mmap64 offset for mips64n32 (BZ#24699) bdd16894aa aarch64: handle STO_AARCH64_VARIANT_PCS 0b48caab9a aarch64: add STO_AARCH64_VARIANT_PCS and DT_AARCH64_VARIANT_PCS 949da7f2fd io: Remove copy_file_range emulation [BZ #24744] f056ac8363 libio: do not attempt to free wide buffers of legacy streams [BZ #24228] 5f90e009b1 NEWS: add entries for bugs 22964, 24180, and 24531 Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
* rpcd: update to latest Git HEADJo-Philipp Wich2019-09-081-4/+4
| | | | | | | | | | | 69eeb1b file: refactor message parsing and permission checking f65527a iwinfo: expose all rate info fields in assoclist reply 7fec636 sys: fix symbol redeclaration 27c24c7 rpcd: sys: actually move timespec declaration 345363b file: add remove operation 604db20 rpcd: Switch to nanosleep Signed-off-by: Jo-Philipp Wich <jo@mein.io>
* firewall: update to latest git HEADHauke Mehrtens2019-09-081-3/+3
| | | | | | 487bd0d utils: Fix string format message Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
* base-files: validate firmware for compatibility with backupRafał Miłecki2019-09-081-0/+7
| | | | | | | | | This allows platform code to check if firmware image can be used with preserving a backup. It may be used e.g. when installing vendor firmwares that won't restore appended backup archive. Suggested-by: Luis Araneda <luaraneda@gmail.com> Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
* firewal: update to latest git HEADHans Dedecker2019-09-071-3/+3
| | | | | | | | 4d0c703 firewall3: Fix some format string problems 8c404ef iptables.c: lock the xtables.lock c1d3a4d utils: implement fw3_lock_path() & fw3_unlock_path() Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
* ramips: fix MAC address setup for Newifi Y1 and Y1SAdrian Schmutzler2019-09-073-4/+4
| | | | | | | | | | | | | | | | | | | | | | | So far, MAC address setup for those devices has been using local addresses although additional MAC addresses are available on flash. On device, we found the following situation: position Y1 Y1S 0x4 *:d4 *:e4 0x8004 *:d6 *:e8 0x28 *:d4 *:e4 0x2e *:d7 *:eb Since 0x4 and 0x28 yield the same address, the former was set for &ethernet in DTS. However, the typical location on this architecture is 0x28, so this patch changes that. For further setup in 02_network, the local bit for lan_mac is removed, so the address from &ethernet is used at all. For wan_mac, instead of calculating an address with local bit set, this patch exploits the previously unused address in 0x2e. Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
* ramips: initialize MAC addresses from flash where possibleAdrian Schmutzler2019-09-071-5/+9
| | | | | | | | | | | | This patch changes wan MAC address setup from retrieving it by calculation to reading it from flash. Changes are limited to cases where on-device check was possible. Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de> [fix mac for newifi-d1; drop adslr,g7 because it's unlikely for vendor to specifically use 2.4g mac as wan_mac] Signed-off-by: Chuanhong Guo <gch981213@gmail.com>
* ramips: fix duplicate network setup for dlink,dir-615-h1Adrian Schmutzler2019-09-071-1/+0
| | | | | | | | | | | | | | In 555ca422d1cb ("ramips: fix D-Link DIR-615 H1 switch port mapping"), port setup for dir-615-h1 was changed without removing the old one. This was working as the new one was triggered earlier than the old one. (In the meantine, changed sorting during ramips rename patches actually inversed that order.) Anyway, just remove the wrong case now. Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
* ramips: remove duplicate case for MAC setup of freestation5Adrian Schmutzler2019-09-071-1/+0
| | | | | | | | | | | | ARC FreeStation5 is present twice in MAC address setup. From older commits/changes, it is not possible to reconstruct the correct choice only by reading the annotations. Thus, remove the second case and keep the first one, so behavior stays the same (as nobody seems to have complained about it). Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
* ramips: clean and improve MAC address setup in 02_networkAdrian Schmutzler2019-09-079-31/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch removes unnecessary MAC address setup statements in ramips' 02_network by doing several optimizations: 1. For the following devices, lan_mac was set up with mtd_get_mac_binary although the same address was set in DTS. The lan_mac statement is removed in 02_network, but wan_mac is kept: - mercury,mac1200r-v2 - phicomm,k2g - skylab,skw92a - wiznet,wizfi630a 2. For the following devices, wan_mac was set up with mtd_get_mac_binary although the same address was set in DTS. The wan_mac statement is removed in 02_network, no lan_mac is present: - buffalo,whr-g300n - glinet,gl-mt300n-v2 - zyxel,keenetic-start 3. For the following device, lan_mac and wan_mac were set up with mtd_get_mac_binary to the same address as set in DTS. Both statements are removed in 02_network: - buffalo,whr-600d 4. For some devices, it was possible to move setup from 02_network to DTS by introducing previously missing mtd_mac_address: - buffalo,whr-1166d - buffalo,whr-300hp2 - buffalo,wsr-600dhp - ohyeah,oy-0001 - planex,vr500 5. For one device, mtd_mac_address was just wrong and overwritten by 02_network. Put the correct value in DTS and remove redundant statement in 02_network: - asus,rt-ac57u 6. For one device, MAC address defined in DTS is exchanged together with lan_mac/wan_mac setup in 02_network, so that cases in 02_network can be merged: - phicomm,k2p For some devices, an empty case has to be used to prevent them from falling into the default case and have WAN address = eth0 address + 1 set to them. Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
* Revert "build: remove harmful -nopad option from mksquashfs"Jonas Gorski2019-09-071-1/+1
| | | | | | | | | | | | | | This reverts commit 1c0290c5cc6258c48b8ba46b4f9c85a21de4f875. Dropping the nopad can make the padding overflow into the next erase block on devices using a non-aligned rootfs start. This breaks the jffs2 overlay partition with the following messages: [ 30.343877] jffs2_scan_eraseblock(): End of filesystem marker found at 0x10000 [ 30.376512] jffs2: Cowardly refusing to erase blocks on filesystem with no valid JFFS2 nodes [ 30.385253] jffs2: empty_blocks 196, bad_blocks 0, c->nr_blocks 197 Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
* odhcp6c: update to latest git HEADHans Dedecker2019-09-071-2/+2
| | | | | | e199804 dhcpv6: sanitize oro options Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
* bcm53xx: extend firmware validationRafał Miłecki2019-09-061-1/+11
| | | | | | | This provides TRX validation result to the validation JSON. It also prevents users from installing broken firmware files. Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
* uboot-fritz4040: build with ipq40xx "generic" subtargetYousong Zhou2019-09-061-0/+1
| | | | | | Fixes: 853e4dd3 ("ipqx0xx: add Generic subtarget") Ref: https://forum.openwrt.org/t/ipq40xx-snapshot-not-updated-since-22nd-august/44126 Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
* treewide: use new procd sysupgrade $UPGRADE_BACKUP variableRafał Miłecki2019-09-0523-27/+26
| | | | | | | | | | It's a variable set by procd that should replace hardcoded /tmp/sysupgrade.tgz. This change requires the most recent procd with the commit 0f3c136 ("sysupgrade: set UPGRADE_BACKUP env variable"). Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
* procd: update to the latest git HEADRafał Miłecki2019-09-051-3/+3
| | | | | | | | | | 0f3c136 sysupgrade: set UPGRADE_BACKUP env variable 0bcbbbf system: fix uninitialized variables in firmware validation code This update includes a fix for uninitialized variable usage. Fixes: 7290963d0992 ("procd: update to the latest git HEAD") Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
* base-files: use get_mac_binary() in mtd_get_mac_binary_ubi()Adrian Schmutzler2019-09-051-6/+1
| | | | | | | | | | | | The actual retrieval of the MAC address in mtd_get_mac_binary_ubi() is the same as in get_mac_binary(). Thus, use the latter function in the former to reduce duplicate code. This will also allow to benefit from the enhanced path check there and bring mtd_get_mac_binary_ubi() more in line with the similar mtd_get_mac_binary(). Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
* base-files: fix mtd_get_mac_text not accepting hex offsetsDavid Bauer2019-09-051-1/+1
| | | | | | | | | | | The mtd_get_mac_text helper method did not support hexadecimal offset values, resulting them to break after 75bfc393ba6c ("treewide: convert MAC address location offsets to hexadecimal") This commit fixes this by evaluating the hexadecimal input, converting them to decimal. Signed-off-by: David Bauer <mail@david-bauer.net>
* treewide: when copying a backup file always specify dest nameRafał Miłecki2019-09-0513-13/+13
| | | | | | | $CONF_TAR shouldn't be assumed to always point to the sysupgrade.tgz. This change makes code more generic and allows refactoring $CONF_TAR. Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
* treewide: don't hardcode "sysupgrade.tgz" file nameRafał Miłecki2019-09-0517-28/+37
| | | | | | | | 1) Add BACKUP_FILE and use it when copying an archive to be restored after sysupgrade (on the next preinit). 2) Use CONF_TAR for copying backup prepared by the /sbin/sysupgrade Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
* treewide: fix invalid UPGRADE_OPT_SAVE_CONFIG spellingsRafał Miłecki2019-09-055-7/+7
| | | | | | | That was a result of accidentally running "sed" twice on some files. Fixes: 5797fe84a3b5 ("treewide: replace remaining (not working now) $SAVE_CONFIG uses") Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
* treewide: replace remaining (not working now) $SAVE_CONFIG usesRafał Miłecki2019-09-059-11/+11
| | | | | | | This var has been replaced by the $UPGRADE_OPT_UPGRADE_OPT_SAVE_CONFIG Fixes: b534ba961100 ("base-files: pass "save_config" option to the "sysupgrade" method") Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
* uboot-envtools: Update to U-Boot version 2019.07Hauke Mehrtens2019-09-042-7/+7
| | | | Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>