aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* ramips: pinctrl: return proper error if pinctrl0 is emptyMathias Kresin2017-07-271-1/+1
| | | | | | | | Children of the pinctrl0 node are optional. Return EINVAL (=missing) instead of 0. Fixes a hang if the pinctrl0 has no children. Signed-off-by: Mathias Kresin <dev@kresin.me> Acked-by: John Crispin <john@phrozen.org>
* scripts/package-metadata.pl: inhibit compile deps on missing build typesJo-Philipp Wich2017-07-271-6/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When a package declares a PKG_BUILD_DEPENDENCY or HOST_BUILD_DEPENDENCY on a not existing build type, the metadata script will emit a reference to an unresolvable build target in tmp/.packagedeps, causing the make process to fail hard in a way not catchable by the IGNORE_ERRORS mechanism. In a situation where a package "test-a" declares a build dependency "PKG_BUILD_DEPENDS:=test-b/host" while the Makefile of "test-b" does not implement a HostBuild, make fails with an unrecoverable error in the form: make[1]: Entering directory '...' make[1]: *** No rule to make target 'package/test-b/host/compile', needed by 'package/test-a/compile'. Stop. make[1]: Leaving directory '...' .../toplevel.mk:200: recipe for target 'package/test-a/compile' failed make: *** [package/test-a/compile] Error 2 Extend the metadata generation script to catch such unresolved references and emit a visable warning upon detection. After this change, the script will emit a warning similar to: WARNING: Makefile "package/test-a/Makefile" has a build dependency on "test-b/host" but "package/test-b/Makefile" does not implement a "host" build type Fixes a global build cluster outage which occured after the "python-cffi" feed package removed its HostBuild which the "python-cryptography" package build-depended on. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
* ramips: refresh the rcu_sched patch and remove debug infoJohn Crispin2017-07-261-27/+6
| | | | Signed-off-by: John Crispin <john@phrozen.org>
* ralink: fix rcu_sched stalls on mt7621John Crispin2017-07-262-0/+132
| | | | | | | | there were 2 bugs *) core1 came up with a bad bogo mips, looks like the clock needed time to stabilize *) HPT frequency was not set making r4k timers not come up properly Signed-off-by: John Crispin <john@phrozen.org>
* ramips: add support for the GnuBee Personal Cloud OneL. D. Pinney2017-07-257-0/+141
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The GnuBee Personal Cloud One crowdfunded on https://www.crowdsupply.com It is a low-cost, low-power, network-attached storage device. Specifications: - SoC: MediaTek MT7621AT - RAM: DDR3 512 MB - Flash: 32 MB - Six SATA ports for 2.5" Drives - One micro SDcard - One USB 3.0 - Two USB 2.0 - Gigabit Ethernet: 1 x WAN and 1 x LAN - UART 3.5mm Audio Jack or 3 pin header - 57600 8N1 - Four GPIOs available on a pin header Flash instructions: The GnuBee Personal Cloud One ships with libreCMC installed. libreCMC is a Free Software Foundation approved fork of LEDE/OpenWrt. As such one can upgrade using the webinterface or sysupgrade. Das U-Boot has multiple options for recovery or updates including : - USB - http - tftp Signed-off-by: L. D. Pinney <ldpinney@gmail.com> [use switchdev led trigger, all interfaces are in vlan1; rename leds according to board.d setting; remove ge2 group from the pinmux, this group doesn't exist in the driver] Signed-off-by: Mathias Kresin <dev@kresin.me>
* ramips: DIR-860L-B1 fix switch port numberingThibaut VARENE2017-07-251-1/+4
| | | | | | | | Luci shows switch ports in inverted order on that device. This patch fixes switch port numbering and matches them to the device silkscreen. Signed-off-by: Thibaut VARENE <hacks@slashdirt.org>
* kernel: netfilter: fix nf-nathelper(-extra) descriptionUwe Arnold2017-07-251-2/+2
| | | | | | | | | The tftp and irc netfilter modules are provided by nf-nathelper-extra and not by nf-nathelper. Signed-off-by: Uwe Arnold <donvipre@gmail.com> [move the irc module as well] Signed-off-by: Mathias Kresin <dev@kresin.me>
* ramips: fix wps button gpio for DWR-512Giuseppe Lippolis2017-07-251-1/+1
| | | | | | The WPS button is at GPIO#7. Signed-off-by: Giuseppe Lippolis <giu.lippolis@gmail.com>
* ramips: DTS: VoCore2 improvements/fixesPaul Wassi2017-07-251-22/+3
| | | | | | | | | | | The VoCore2 features 128MB of RAM, therefore set memory in DTS to 128*1024*1024 = 0x8000000 The board's LED is connected to GND, set it to ACTIVE_HIGH here. Make serial console working again on kernel 4.9 by change of pinmux configuration. Signed-off-by: Paul Wassi <p.wassi@gmx.at>
* ramips: add support for TP-Link RE350Alex Maclean2017-07-259-0/+207
| | | | | | | | | | | | | | | | | | | | | | | | | | | The TP-Link RE350 is a wall-wart AC1200 range extender/access point with a single gigabit ethernet port and two non-detachable antennas, based on the MT7621A SoC with MT7603E and MT7612E radios. Firmware wise it is very similar to the QCA based RE450. SoC: MediaTek MT7621A (880MHz) Flash: 8MiB (Winbond W25Q64) RAM: 64MiB (DDR2) Ethernet: 1x 1Gbit Wireless: 2T2R 2.4Ghz (MT7603E) and 5GHz (MT7612E) LEDs: Power, 2.4G, 5G (blue), WPS (red and blue), ethernet link/act (green) Buttons: On/off, LED, reset, WPS Serial header at J1, 57600 8n1: Pin 1 TX Pin 2 RX Pin 3 GND Pin 4 3.3V Factory image can be uploaded directly through the stock UI. Signed-off-by: Alex Maclean <monkeh@monkeh.net>
* firmware-utils: tplink-safeloader: add support for TP-Link RE350Alex Maclean2017-07-251-0/+41
| | | | Signed-off-by: Alex Maclean <monkeh@monkeh.net>
* ath9k: fix regression in multicast buffering fixFelix Fietkau2017-07-251-1/+3
| | | | | | | Update the more data flag on the last frame, but tx from the first frame on. Signed-off-by: Felix Fietkau <nbd@nbd.name>
* ath9k: fix typo in US tx power reduction fixFelix Fietkau2017-07-251-1/+1
| | | | | | Use max_t instead of min_t to prevent the value from going below zero Signed-off-by: Felix Fietkau <nbd@nbd.name>
* build: bundle-libraries.sh: do not override argv[0] in inner exec callsJo-Philipp Wich2017-07-241-1/+3
| | | | | | | | | | | Only mangle argv[0] of the first executed process and leave the argument vector of subsequent invocations as-is to allow child programs to properly discover resources relative to their binary locations. Fixes "cc1" discovery when executing the host gcc through the bundled "ccache" executable. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
* ath9k: fix more-data flag for buffered multicast packetsFelix Fietkau2017-07-241-0/+38
| | | | | | | | The flag needs to be cleared for the last packet in the list, not the first one. Fixes some issues with multicast packet loss for powersave clients connected to an ath9k AP. Signed-off-by: Felix Fietkau <nbd@nbd.name>
* ath9k: adjust tx power reduction for US regulatory domainFelix Fietkau2017-07-241-0/+23
| | | | | | | FCC regulatory rules allow for up to 3 dBi antenna gain. Account for this in the EEPROM based tx power reduction code. Signed-off-by: Felix Fietkau <nbd@nbd.name>
* firmware-utils: drop mktplinkfw-kernel toolPiotr Dymacz2017-07-222-353/+0
| | | | | | | As we can now use combined mode in "mktplinkfw" tool to generate the same header/image, this tool is no longer needed. Signed-off-by: Piotr Dymacz <pepe2k@gmail.com>
* ar71xx: image: use tplink-v1-header in place of mktplinkfw-kernelPiotr Dymacz2017-07-221-13/+8
| | | | Signed-off-by: Piotr Dymacz <pepe2k@gmail.com>
* build: move mktplinkfw-combined command to image-commands.mkPiotr Dymacz2017-07-222-18/+13
| | | | | | | | | | We will need "mktplinkfw-combined" command also in the "ramips" target for new MediaTek based TP-Link devices, with "safeloader" image type. Also, rename the command to "tplink-v1-header", use "VERSION_DIST" variable instead of "OpenWrt" and allow passing additional parameters. Signed-off-by: Piotr Dymacz <pepe2k@gmail.com>
* firmware-utils: mktplinkfw: rework combined image optionPiotr Dymacz2017-07-222-62/+44
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | We use combined option in "mktplinkfw" tool for generating initramfs kernel images and header for kernel inside "safeloader" image type (in fact, only for TL-WR1043ND v4 at this moment). There is also "mktplinkfw-kernel" tool, a stripped-down version, used only for generating "simple" header, for safeloader image types. This changes how "mktplinkfw" handles combined images (which then will allow us to drop the stripped-down version of the tool): - drop "ignore size" command line option (it was used only for combined images anyway) - don't require "flash layout id" for combined images (we don't need and shouldn't limit size of the initramfs kernel and for kernels inside safeloader images, the "tplink-safeloader" tool does the size check) - require kernel address and entry point in command line parameters for combined images (consequence of previous point) - don't include md5 sum and firmware length values in header (they are needed only for update from vendor GUI and are ingored in case of initramfs and "tplink-safeloader" images) - drop "fake" flash layout for TL-WR1043ND v4 as it's no longer needed Also, adjust "mktplinkfw-combined" command in ar71xx/image/tp-link.mk to match introduced changes in "mktplinkfw" tool. Signed-off-by: Piotr Dymacz <pepe2k@gmail.com>
* uboot-envtools: add support for ALFA Network AP121FPiotr Dymacz2017-07-221-0/+1
| | | | Signed-off-by: Piotr Dymacz <pepe2k@gmail.com>
* ar71xx: add support for ALFA Network AP121FPiotr Dymacz2017-07-2213-0/+143
| | | | | | | | | | | | | | | | | | | | | | | | | | | ALFA Network AP121F is a pocket-size router dedicated for VPN/TOR users. Device is based on Atheros AR9331 WiSoC and is running a custom version (updated from OpenWrt CC to LEDE 17.01 release) of NetAidKit firmware. Specification: - 400/400/200 MHz (CPU/DDR/AHB) - 64 MB of RAM (DDR1) - 16 MB of FLASH (SPI NOR) - 1x 10/100 Mbps Ethernet - 1T1R 2.4 GHz - 1x microSD (optional, on separate PCB) - 3x LED, 1x button, 1x switch - UART header on PCB Flash instruction (under U-Boot web recovery mode): 1. Configure PC with static IP 192.168.1.2/24. 2. Connect PC with RJ45 port, press the reset button, power up device, wait for first blink of all LEDs (indicates network setup), then keep button for 3 following blinks and release it. 3. Open 192.168.1.1 address in your browser and upload sysupgrade image. Signed-off-by: Piotr Dymacz <pepe2k@gmail.com>
* firmware-utils: tplink-safeloader: add support for TL-WR902AC v1 USPiotr Dymacz2017-07-221-1/+2
| | | | Signed-off-by: Piotr Dymacz <pepe2k@gmail.com>
* samba36: Remove legacy optionsRosen Penev2017-07-222-8/+3
| | | | | | | | | | | | | Browseable is now set through LuCI per share, so remove it. Same with writeable (inverted synonym for read only). domain master and preferred master seem to be legacy settings for Windows 9x. encrypt passwords defaults to yes. Probably should not be disabled either. Also reordered alphabetically. Signed-off-by: Rosen Penev <rosenp@gmail.com> [rewrap commit message, fix SoB, fix author, bump pkg revsion] Signed-off-by: Jo-Philipp Wich <jo@mein.io>
* mwlwifi: update to version 10.3.4.0 / 2017-07-13Jo-Philipp Wich2017-07-221-3/+3
| | | | | | Ref: https://github.com/lede-project/source/pull/1217 Reported-by: Kabuli Chana <newtownBuild@gmail.com> Signed-off-by: Jo-Philipp Wich <jo@mein.io>
* netifd: update to git HEADStijn Tintel2017-07-211-3/+3
| | | | | | | d397e8c netifd: Fix printf calls + function declarations. 34afb76 system-linux: fix GRE ikey/okey endianness Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
* Revert "kernel: do not try to probe builtin modules on empty kmod package ↵Jo-Philipp Wich2017-07-211-2/+0
| | | | | | | | | | | install" This change currently causes some issues with loading out of tree kernel modules so revert that commit for now. Reverts commit 34c01e68b5d6b06ce3794ef0e2b06e81ec3ce8ca. Fixes FS#919. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
* mt76: update to the latest version, fixes stability issuesFelix Fietkau2017-07-211-3/+3
| | | | | | | | 8a649c3 mt7603: mac: code optimization 8dee788 mt7603: mac: stop netdev queues during watchdog reset 3c4c9a6 tx: move state check in mt76_txq_send_burst() Signed-off-by: Felix Fietkau <nbd@nbd.name>
* ipset: split libipset as a subpackageAlexandru Ardelean2017-07-211-6/+15
| | | | | | | | | | | Intent is to link against it, and have the option to not install the ipset utility (if needed). One example/use-case is keepalived (from package) feeds, where it would be nice to just depend on a `libipset` (sub)package. Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
* ag71xx: add support for port mirroringMilan Krstić2017-07-211-0/+153
| | | | | | | This exposes hardware port mirroring in ag71xx driver (e.g. TL-WR841ND) via swconfig API. Signed-off-by: Milan Krstić <milan.krstic@gmail.com>
* dnsmasq: introduce config support for forced DHCP optionsJo-Philipp Wich2017-07-211-5/+9
| | | | | | | | | | | Introduce a new UCI list setting `list dhcp_option_force` which is available in sections of type `dnsmasq` and `dhcp`. The `dhcp_option_force` setting has the same semantics as `dhcp_option` but generates `dhcp-option-force` directives instead of `dhcp-option` ones in emitted native configuration. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
* scripts/download.pl: Adjust URLsDaniel Engberg2017-07-211-5/+5
| | | | | | | | | | | | Internet2 isn't considered a trusted issuer meaning that https links to rit.edu will fail. The host mirror.csclub.uwaterloo.ca has a trusted SSL cert and peering is good so it can replace rit.edu without performance issues. Signed-off-by: Daniel Engberg <daniel.engberg.lists@pyret.net> [Jo-Philipp Wich: rewrapped commit message] Signed-off-by: Jo-Philipp Wich <jo@mein.io>
* build: fix invocation of bundled ld.so in SDK and ImagebuilderJo-Philipp Wich2017-07-211-15/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | Commit 72d751cba9 "build: rework library bundling" introduced a new helper binary "runas" whose sole purpose was mangling the argv vector passed to the actual called ELF image so that the renamed executable could obtain the proper name from argv[0]. This approach, however totally defeated the purpose of calling bundled ELF executables through the shipped ld.so loader since the execv() invocation performed by "runas" would cause the kernel the interprete the final program image through the system ELF loader again. To solve the problem, use an alternative approach of shipping a shared object "runas.so" which uses an ELF ".init_array" function pointer to obtain the argv[] vector of the to-be-executed main() function and mangle it in-place. The actual argv[0] value to use is communicated out-of-band using an environment variable "RUNAS_ARG0" by the shell wrapper script. The wrapper script also takes care of setting LD_PRELOAD to instruct the shipped ELF loader to preload the actual ELF program image with the "runas.so" helper library. Fixes FS#909. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
* brcm47xx: fix switch port mapping on Asus RT-N12 and RT-N16 modelsJo-Philipp Wich2017-07-211-0/+2
| | | | | | | | | | | | | On Asus RT-N12 and RT-N16 models, the WAN and LAN4 ports are swapped in the initial switch configuration since the presets present in nvram appear to be wrong. Add special casing for these models to detect_by_model() in order to ensure a proper switch configuration. Fixes FS#502. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
* base-files: upgrade: don't loop forever trying to kill processesMatthias Schiffer2017-07-201-1/+10
| | | | | | | | | | When processes don't die on SIGKILL (usually because of kernel bugs), it's better to give up instead of looping forever. upgraded will trigger a reboot in this case (and if this fails, a hardware watchdog will eventually time out and reset the system, if present). Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
* procd: update to latest versionMatthias Schiffer2017-07-201-4/+4
| | | | | | | | | | 17026f4 system: return ubus error when sysupgrade_exec_upgraded() has failed 13f252f upgraded: Check chroot() return value 85ccb95 init: Check chroot return value in sysupgrade_exec_upgraded() 76dcbee upgraded: improve error handling d749b2a upgraded: register stage2 process in uloop as intended Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
* ar71xx: use the RB912UAG-{2, 5}HPnD Power LED for diagSergey Ryazanov2017-07-201-2/+2
| | | | | | | The Power LED of RB912UAG-{2,5}HPnD boards can be controlled by sofware, so use it for diag purposes and make the User LED free for other tasks. Signed-off-by: Sergey Ryazanov <ryazanov.s.a@gmail.com>
* ar71xx: keep the RouterBOARD Power LED in On stateSergey Ryazanov2017-07-202-0/+2
| | | | | | | | | | It is quite unexpected behaviour when the Power LED switches off as soon as the kernel starts booting. So set the default state to 'Keep' for the Power LEDs of all RouterBOARDs (e.g. RB91x, SXT Lite series, etc.). Signed-off-by: Sergey Ryazanov <ryazanov.s.a@gmail.com> [switch the default state to keep instead of on] Signed-off-by: Mathias Kresin <dev@kresin.me>
* ramips: add support for Phicomm K2PChuanhong Guo2017-07-206-4/+136
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It uses one MT7615D radio chip with DBDC mode enabled. This mode allows this single chip act as an 2x2 11n radio and an 2x2 11ac radio at the same time. However mt76 doesn't support it currently so there is no wireless available. Specification: - SoC: MediaTek MT7621AT - Flash: 16 MB - RAM: 128 MB - Ethernet: 1 x WAN (10/100/1000Mbps) and 4 x LAN (10/100/1000 Mbps) - Wireless radio: MT7615D on PCIE0 - UART: 1 x UART on PCB - 57600 8N1 Issue: - Wireless radio doesn't work due to the lack of driver. Flash instruction: Using UART: 1. Configure PC with a static IP address and setup an TFTP server. 2. Put the firmware into the tftp directory. 3. Connect the UART line as described on the PCB. 4. Power up the device and press 2,then follow the instruction to set device and tftp server IP address and input the firmware file name.U-boot will then load the firmware and write it into the flash. Signed-off-by: Chuanhong Guo <gch981213@gmail.com>
* lantiq: fix sleep with spinlock held in xrx200 network driverAndrea Merello2017-07-202-6/+8
| | | | | | | | | | | | | | | | | | | | | | | In the xrx200_close() function we call napi_disable(), that could sleep, with priv->hw->chan[i].lock held. This could lead to deadlock and causes the kernel to complain. Look at the code I couldn't convince myself about why we need to protect that specific code part with the lock. IMHO there seems no reason to protect the refcount variables, because AFAIK ndo_close() and ndo_open() callbacks are already called with a semaphore held. Neither I could figure out why napi_disable() have to be called with that lock held. The only remaining code part for which I could guess the lock is useful for is ltq_dma_close() function call. This patch reduces the lock to the said function call, avoiding the sleep-with-spinlock-held situation Signed-off-by: Andrea Merello <andrea.merello@gmail.com> [fold into 0025-NET-MIPS-lantiq-adds-xrx200-net.patch, backport to kernel 4.4] Signed-off-by: Mathias Kresin <dev@kresin.me>
* kernel: do not try to probe builtin modules on empty kmod package installJonas Gorski2017-07-201-0/+2
| | | | | | | | | | | | Builtin modules are always present, and trying to load them will cause modprobe to spew errors when installing the empty kmod packages. Fix this by never generating any postinst module install instructions for builtin modules. Fixes #842. Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
* uml: Backport upstream fix to build against static libpthreadFlorian Fainelli2017-07-181-0/+139
| | | | | | | | Backport upstream commit f44f1e7da7c8e3f4575d5d61c4df978496903fcc ("um: Avoid longjmp/setjmp symbol clashes with libpthread.a") to fix build issues on hosts that only have a static libpthread. Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
* toolchain/arc: update to the most recent release arc-2017.03Evgeniy Didin2017-07-1830-27/+27
| | | | | | | | | | arc-2017.03 is the most recent release toolchain for ARC cores and it is based on upstream Binutils 2.28 and GCC 6.3.0 Signed-off-by: Evgeniy Didin <Evgeniy.Didin@synopsys.com> Cc: Alexey Brodkin <abrodkin@synopsys.com> Cc: John Crispin <john@phrozen.org> Cc: Hauke Mehrtens <hauke@hauke-m.de>
* dnsmasq: backport remove ping check of configured dhcp addressHans Dedecker2017-07-182-1/+29
| | | | | | | Remove ping check in DHCPDISCOVER case as too many buggy clients leave an interface in configured state causing the ping check to fail. Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
* tools: expat: fix build on older host systemsJo-Philipp Wich2017-07-181-0/+3
| | | | | | | | | | | Expat release 2.2.2 requires support for either syscall(SYS_getrandom) which is available on Linux 3.17 or support for getrandom() which is only available in glibc 2.25 or later. Since some of our builders still run on Linux 3.16, we need to forcibly disable the use of getrandom() for the host builds. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
* tools/expat: Update host version to 2.2.2Ted Hess2017-07-171-2/+2
| | | | | | Ref: CVE-2017-9233, CVE-2016-9063 Signed-off-by: Ted Hess <thess@kitschensync.net>
* fstools: update to latestDaniel Golle2017-07-161-4/+4
| | | | | | | 0dfe61a block: support /dev/xvd* nodes f038a61 libfstools: fix matching device name Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* x86: Fix xen serial console by removing conflicting PATA driverBaptiste Jonglez2017-07-162-2/+0
| | | | | | | | | | | | | | | | | | | | | The Xen serial console has been broken since the xen_domu subtarget was merged in the generic x86 subtarget (commits 1d6879ee and 371b382a). The reason for the broken serial console seems to be an IRQ conflict between the serial console driver and the PATA_LEGACY driver: [ 1.330125] genirq: Flags mismatch irq 8. 00000000 (hvc_console) vs. 00000000 (platform[pata_legacy.4]) [ 1.330134] hvc_open: request_irq failed with rc -16. [ 1.330148] Warning: unable to open an initial console. Just drop the PATA_LEGACY driver from the x86/generic and x86_64 subtargets, since this driver is marked experimental and only supports very old ISA devices anyway. It is still included in the x86/legacy subtarget where it rightfully belongs. Fixes: FS#787 Signed-off-by: Baptiste Jonglez <git@bitsofnetworks.org>
* x86/64: add xen DomU supportBaptiste Jonglez2017-07-162-1/+68
| | | | | | | | | | Xen support for x86/generic was added in 1d6879ee. This commit also enables it for x86/64. This was successfully tested with Xen 4.5, although the serial console is broken in the same way as x86/generic (see FS#787) Signed-off-by: Baptiste Jonglez <git@bitsofnetworks.org>
* x86: Move USB support from subtargets to target configBaptiste Jonglez2017-07-165-38/+11
| | | | | | | | | All x86 subtargets enable USB support, so it makes sense to enable it in the target config instead, to avoid duplication. Also refresh subtarget configs accordingly. Signed-off-by: Baptiste Jonglez <git@bitsofnetworks.org>