Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
  • experimental
  • master
  • v2021.1.2-ffs
  • v2021.1.1-ffs
  • nrb/gluon-master-cpe510
  • v2021.1-ffs
  • v2020.2.3-ffs
  • nrbffs/fastd-remove-delay
  • v2020.2.2-ffs
  • v2020.2.1-ffs
  • v2020.2-ffs
  • v2020.2.x
  • v2020.1.3-ffs
  • v2020.1.1-ffs
  • v2020.1-ffs
  • v2019.1.2-ffs
  • v2019.1.1-ffs
  • nrb/test-radv-filter
  • v2019.1-ffs
  • nrbffs/netgear-ex6120
  • v2018.2.3-ffs
  • 0x4A6F-rpi4
  • 0x4A6F-master
  • v2018.2.2-ffs
  • v2018.2.x
  • v2016.2.4-batmanbug
  • radv-filterd
  • v2016.2.x
  • hoodselector
  • v2016.1.x
  • babel
  • v2015.1.x
  • 2014.4.x
  • 2014.3.x
  • v2014.1
  • v2014.2
  • v2014.3
  • v2014.3.1
  • v2014.4
  • v2015.1
  • v2015.1.1
  • v2015.1.2
  • v2016.1
  • v2016.1.1
  • v2016.1.2
  • v2016.1.3
  • v2016.1.4
  • v2016.1.5
  • v2016.1.6
  • v2016.2
  • v2016.2.1
  • v2016.2.2
  • v2016.2.3
  • v2016.2.4
  • v2016.2.5
  • v2016.2.6
  • v2016.2.7
  • v2017.1
  • v2017.1.1
  • v2017.1.2
  • v2017.1.3
  • v2017.1.4
  • v2017.1.5
  • v2017.1.6
  • v2017.1.7
  • v2017.1.8
  • v2018.1
  • v2018.1.1
  • v2018.1.2
  • v2018.1.3
  • v2018.1.4
  • v2018.2
  • v2018.2-ffs0.1
  • v2018.2.1
  • v2018.2.1-ffs0.1
  • v2018.2.2-ffs0.1
  • v2018.2.3-ffs0.1
  • v2019.1-ffs0.1
  • v2019.1.1-ffs0.1
  • v2019.1.2-ffs0.1
  • v2020.1-ffs0.1
  • v2020.1.1-ffs0.1
  • v2020.1.3-ffs0.1
  • v2020.2
  • v2020.2-ffs0.1
  • v2020.2.1-ffs0.1
  • v2020.2.2-ffs0.1
  • v2020.2.3-ffs0.1
  • v2020.2.3-ffs0.2
  • v2020.2.3-ffs0.3
  • v2020.2.x-ffs0.1
  • v2021.1-ffs0.1
  • v2021.1.1-ffs0.1
  • v2021.1.1-ffs0.2
  • v2021.1.1-ffs0.3
  • v2021.1.1-ffs0.4
  • v2021.1.2-ffs0.1
  • v2021.1.2-ffs0.2
98 results

Target

Select target project
  • firmware / FFS Gluon
  • 0x4A6F / FFS Gluon
  • Patrick / FFS Gluon
3 results
Select Git revision
  • experimental
  • v2023.2.5-ffs
  • nrb/ex400-remove-wps
  • nrb/airmax-test
  • v2023.2.4-ffs
  • nrb/ar9344-reset-sequence
  • autinerd/experimental-openwrt-24.10
  • v2023.2.3-ffs
  • v2023.2.2-ffs
  • v2023.2-ffs
  • v2023.1-ffs
  • v2022.1.4-ffs
  • feature/addMikrotikwAP
  • v2022.1.3-ffs
  • v2021.1.2-ffs
  • v2022.1.1-ffs
  • master
  • v2021.1.1-ffs
  • nrb/gluon-master-cpe510
  • v2021.1-ffs
  • v2020.2.3-ffs
  • nrbffs/fastd-remove-delay
  • v2020.2.2-ffs
  • v2020.2.1-ffs
  • v2020.2-ffs
  • v2020.1.3-ffs
  • v2020.1.1-ffs
  • v2020.1-ffs
  • v2019.1.2-ffs
  • v2019.1.1-ffs
  • nrb/test-radv-filter
  • v2019.1-ffs
  • nrbffs/netgear-ex6120
  • v2018.2.3-ffs
  • 0x4A6F-rpi4
  • 0x4A6F-master
  • v2018.2.2-ffs
  • experimental-2022-09-24
  • experimental-2022-09-24-base
  • experimental-2023-03-11
  • experimental-2023-03-11-base
  • experimental-2023-03-12
  • experimental-2023-03-12-base
  • experimental-2023-03-16
  • experimental-2023-03-16-base
  • experimental-2023-03-20
  • experimental-2023-03-20-base
  • experimental-2023-03-23
  • experimental-2023-03-23-base
  • experimental-2023-03-25
  • experimental-2023-03-25-base
  • experimental-2023-03-26
  • experimental-2023-03-26-base
  • experimental-2023-03-30
  • experimental-2023-03-30-base
  • experimental-2023-03-31
  • experimental-2023-03-31-base
  • experimental-2023-04-01
  • experimental-2023-04-01-base
  • experimental-2023-04-08
  • experimental-2023-04-08-base
  • experimental-2023-04-10
  • experimental-2023-04-10-base
  • experimental-2023-04-13
  • experimental-2023-04-13-base
  • experimental-2023-04-15
  • experimental-2023-04-15-base
  • experimental-2023-04-16
  • experimental-2023-04-16-base
  • experimental-2023-04-18
  • experimental-2023-04-18-base
  • experimental-2023-04-20
  • experimental-2023-04-20-base
  • experimental-2023-04-26
  • experimental-2023-04-26-base
  • experimental-2023-04-28
  • experimental-2023-04-28-base
  • experimental-2023-04-30
  • experimental-2023-04-30-base
  • experimental-2023-05-02
  • experimental-2023-05-02-base
  • experimental-2023-05-03
  • experimental-2023-05-03-base
  • experimental-2023-05-12
  • experimental-2023-05-12-base
  • experimental-2023-05-21
  • experimental-2023-05-21-base
  • experimental-2023-05-25
  • experimental-2023-05-25-base
  • experimental-2023-07-02
  • experimental-2023-07-02-base
  • experimental-2023-07-04
  • experimental-2023-07-04-base
  • experimental-2023-07-12
  • experimental-2023-07-12-base
  • experimental-2023-07-16
  • experimental-2023-07-16-base
  • experimental-2023-08-04
  • experimental-2023-08-04-base
  • experimental-2023-08-10
  • experimental-2023-08-10-base
  • experimental-2023-09-08
  • experimental-2023-09-08-base
  • experimental-2023-09-09
  • experimental-2023-09-09-base
  • experimental-2023-09-10
  • experimental-2023-09-10-base
  • experimental-2023-09-11
  • experimental-2023-09-11-base
  • experimental-2023-09-12
  • experimental-2023-09-12-base
  • experimental-2023-09-13
  • experimental-2023-09-13-base
  • experimental-2023-09-15
  • experimental-2023-09-15-base
  • experimental-2023-09-16
  • experimental-2023-09-16-base
  • experimental-2023-09-18
  • experimental-2023-09-18-base
  • experimental-2023-09-20
  • experimental-2023-09-20-base
  • experimental-2023-09-27
  • experimental-2023-09-27-base
  • experimental-2023-09-28
  • experimental-2023-09-28-base
  • experimental-2023-09-29
  • experimental-2023-09-29-base
  • experimental-2023-10-02
  • experimental-2023-10-02-base
  • experimental-2023-10-13
  • experimental-2023-10-13-base
  • experimental-2023-10-14
  • experimental-2023-10-14-base
  • experimental-2023-10-16
  • experimental-2023-10-16-base
  • experimental-2023-10-23
  • experimental-2023-10-23-base
137 results
Show changes

Commits on Source 82

143 files
+ 7606
27121
Compare changes
  • Side-by-side
  • Inline

Files

+10 −10
Original line number Original line Diff line number Diff line
@@ -4,11 +4,16 @@ LC_ALL:=C
LANG:=C
LANG:=C
export LC_ALL LANG
export LC_ALL LANG


export SHELL:=/usr/bin/env bash

GLUONPATH ?= $(PATH)
export GLUONPATH := $(GLUONPATH)

empty:=
empty:=
space:= $(empty) $(empty)
space:= $(empty) $(empty)


GLUONMAKE_EARLY = $(SUBMAKE) -C $(GLUON_ORIGOPENWRTDIR) -f $(GLUONDIR)/Makefile GLUON_TOOLS=0 QUILT=
GLUONMAKE_EARLY = PATH=$(GLUONPATH) $(SUBMAKE) -C $(GLUON_ORIGOPENWRTDIR) -f $(GLUONDIR)/Makefile GLUON_TOOLS=0 QUILT=
GLUONMAKE = $(SUBMAKE) -C $(GLUON_OPENWRTDIR) -f $(GLUONDIR)/Makefile
GLUONMAKE = PATH=$(GLUONPATH) $(SUBMAKE) -C $(GLUON_OPENWRTDIR) -f $(GLUONDIR)/Makefile


ifneq ($(OPENWRT_BUILD),1)
ifneq ($(OPENWRT_BUILD),1)


@@ -24,12 +29,6 @@ update: FORCE
	$(GLUONDIR)/scripts/update.sh
	$(GLUONDIR)/scripts/update.sh
	$(GLUONDIR)/scripts/patch.sh
	$(GLUONDIR)/scripts/patch.sh


patch: FORCE
	$(GLUONDIR)/scripts/patch.sh

unpatch: FORCE
	$(GLUONDIR)/scripts/unpatch.sh

update-patches: FORCE
update-patches: FORCE
	$(GLUONDIR)/scripts/update.sh
	$(GLUONDIR)/scripts/update.sh
	$(GLUONDIR)/scripts/update-patches.sh
	$(GLUONDIR)/scripts/update-patches.sh
@@ -236,7 +235,7 @@ $(early_prepared_stamp):


$(GLUON_OPKG_KEY): $(early_prepared_stamp) FORCE
$(GLUON_OPKG_KEY): $(early_prepared_stamp) FORCE
	[ -s $(GLUON_OPKG_KEY) -a -s $(GLUON_OPKG_KEY).pub ] || \
	[ -s $(GLUON_OPKG_KEY) -a -s $(GLUON_OPKG_KEY).pub ] || \
		mkdir -p $$(dirname $(GLUON_OPKG_KEY)) && $(STAGING_DIR_HOST)/bin/usign -G -s $(GLUON_OPKG_KEY) -p $(GLUON_OPKG_KEY).pub -c "Gluon opkg key"
		( mkdir -p $$(dirname $(GLUON_OPKG_KEY)) && $(STAGING_DIR_HOST)/bin/usign -G -s $(GLUON_OPKG_KEY) -p $(GLUON_OPKG_KEY).pub -c "Gluon opkg key" )


$(GLUON_OPKG_KEY).pub: $(GLUON_OPKG_KEY)
$(GLUON_OPKG_KEY).pub: $(GLUON_OPKG_KEY)


@@ -299,7 +298,8 @@ prepare-target: $(GLUON_OPKG_KEY).pub
$(target_prepared_stamp):
$(target_prepared_stamp):
	+$(GLUONMAKE_EARLY) prepare-target
	+$(GLUONMAKE_EARLY) prepare-target


maybe-prepare-target: $(GLUON_OPKG_KEY).pub $(target_prepared_stamp)
maybe-prepare-target: $(target_prepared_stamp)
	+$(GLUONMAKE_EARLY) $(GLUON_OPKG_KEY).pub


$(BUILD_DIR)/.prepared: Makefile
$(BUILD_DIR)/.prepared: Makefile
	@mkdir -p $$(dirname $@)
	@mkdir -p $$(dirname $@)
+1 −1
Original line number Original line Diff line number Diff line
@@ -16,7 +16,7 @@ our mailinglist to discuss it first.


Please refrain from using the `master` branch for anything else but development purposes!
Please refrain from using the `master` branch for anything else but development purposes!
Use the most recent release instead. You can list all relaseses by running `git branch -a`
Use the most recent release instead. You can list all relaseses by running `git branch -a`
and switch to one by running `git checkout v2016.1 && make update`.
and switch to one by running `git checkout v2016.1.5 && make update`.


If you're using the autoupdater, do not autoupdate nodes with anything but releases.
If you're using the autoupdater, do not autoupdate nodes with anything but releases.
If you upgrade using random master commits the nodes *will break* eventually.
If you upgrade using random master commits the nodes *will break* eventually.
+3 −3
Original line number Original line Diff line number Diff line
@@ -47,16 +47,16 @@ master_doc = 'index'


# General information about the project.
# General information about the project.
project = 'Gluon'
project = 'Gluon'
copyright = '2015, Project Gluon'
copyright = '2016, Project Gluon'


# The version info for the project you're documenting, acts as replacement for
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# |version| and |release|, also used in various other places throughout the
# built documents.
# built documents.
#
#
# The short X.Y version.
# The short X.Y version.
version = '2016.1'
version = '2016.1.5'
# The full version, including alpha/beta/rc tags.
# The full version, including alpha/beta/rc tags.
release = '2016.1'
release = '2016.1.5'


# The language for content autogenerated by Sphinx. Refer to documentation
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
# for a list of supported languages.
+40 −2
Original line number Original line Diff line number Diff line
@@ -60,6 +60,11 @@ Releases
.. toctree::
.. toctree::
   :maxdepth: 1
   :maxdepth: 1


   releases/v2016.1.5
   releases/v2016.1.4
   releases/v2016.1.3
   releases/v2016.1.2
   releases/v2016.1.1
   releases/v2016.1
   releases/v2016.1
   releases/v2015.1.2
   releases/v2015.1.2
   releases/v2015.1.1
   releases/v2015.1.1
@@ -75,6 +80,16 @@ Supported Devices & Architectures
ar71xx-generic
ar71xx-generic
^^^^^^^^^^^^^^
^^^^^^^^^^^^^^


* 8devices

  - Carambola 2

* ALFA Network

  - AP121
  - AP121U
  - Hornet-UB

* Allnet
* Allnet


  - ALL0315N
  - ALL0315N
@@ -85,6 +100,11 @@ ar71xx-generic
  - WZR-HP-G300NH
  - WZR-HP-G300NH
  - WZR-HP-G450H
  - WZR-HP-G450H


* Cisco Meraki

  - MR12 / MR62
  - MR16 / MR66

* D-Link
* D-Link


  - DIR-505 (A1)
  - DIR-505 (A1)
@@ -106,18 +126,34 @@ ar71xx-generic
  - WNDR3800
  - WNDR3800
  - WNDRMAC (v2)
  - WNDRMAC (v2)


* Onion

  - Omega

* OpenMesh

 - MR600 (v1, v2)
 - MR900 (v1, v2)
 - OM2P (v1, v2)
 - OM2P-HS (v1, v2)
 - OM2P-LC
 - OM5P
 - OM5P-AN

* TP-Link
* TP-Link


  - CPE210 (v1.0, v1.1)
  - CPE210 (v1.0, v1.1)
  - CPE220 (v1.0, v1.1)
  - CPE220 (v1.0, v1.1)
  - CPE510 (v1.0, v1.1)
  - CPE510 (v1.0, v1.1)
  - CPE520 (v1.0, v1.1)
  - CPE520 (v1.0, v1.1)
  - TL-MR13U (v1)
  - TL-MR3020 (v1)
  - TL-MR3020 (v1)
  - TL-MR3040 (v1, v2)
  - TL-MR3040 (v1, v2)
  - TL-MR3220 (v1, v2)
  - TL-MR3220 (v1, v2)
  - TL-MR3420 (v1, v2)
  - TL-MR3420 (v1, v2)
  - TL-WA701N/ND (v1, v2)
  - TL-WA701N/ND (v1, v2)
  - TL-WA750RE (v1)
  - TL-WA750RE (v1)
  - TL-WA7510N (v1)
  - TL-WA801N/ND (v1, v2)
  - TL-WA801N/ND (v1, v2)
  - TL-WA830RE (v1, v2)
  - TL-WA830RE (v1, v2)
  - TL-WA850RE (v1)
  - TL-WA850RE (v1)
@@ -132,7 +168,7 @@ ar71xx-generic
  - TL-WR741N/ND (v1, v2, v4, v5)
  - TL-WR741N/ND (v1, v2, v4, v5)
  - TL-WR743N/ND (v1, v2)
  - TL-WR743N/ND (v1, v2)
  - TL-WR801N/ND (v1, v2)
  - TL-WR801N/ND (v1, v2)
  - TL-WR841N/ND (v3, v5, v7, v8, v9, v10)
  - TL-WR841N/ND (v3, v5, v7, v8, v9, v10, v11)
  - TL-WR842N/ND (v1, v2)
  - TL-WR842N/ND (v1, v2)
  - TL-WR843N/ND (v1)
  - TL-WR843N/ND (v1)
  - TL-WR940N (v1, v2, v3)
  - TL-WR940N (v1, v2, v3)
@@ -145,11 +181,13 @@ ar71xx-generic
  - Air Gateway
  - Air Gateway
  - Air Router
  - Air Router
  - Bullet M
  - Bullet M
  - Loco M
  - Loco M XW
  - Nanostation M
  - Nanostation M
  - Nanostation M XW
  - Nanostation M XW
  - Loco M XW
  - Picostation M
  - Picostation M
  - Rocket M
  - Rocket M
  - Rocket M XW
  - UniFi AP
  - UniFi AP
  - UniFi AP Pro
  - UniFi AP Pro
  - UniFi AP Outdoor
  - UniFi AP Outdoor
+64 −0
Original line number Original line Diff line number Diff line
Gluon 2016.1.1
==============

Added hardware support
~~~~~~~~~~~~~~~~~~~~~~

ar71xx-generic
^^^^^^^^^^^^^^

* Onion Omega
* TP-Link TL-MR13U v1


Bugfixes
~~~~~~~~

Build
^^^^^

Don't overwrite the opkg repository key on each build.

AirOS 5.6.x compatiblity
^^^^^^^^^^^^^^^^^^^^^^^^

Downgrading to AirOS 5.5.x before flashing Gluon on Airmax M XM/XW devices
(NanoStation, Bullet, ...) is not necessary anymore.

Status page
^^^^^^^^^^^

* Fix purging of disappered neighbours from the list
* Don't clear the signal graphs when scrolling in mobile browsers
* Improve browser compability (don't assume the Internationalization API is available,
  fixes the display of numbers in Firefox for Android)

Config mode
^^^^^^^^^^^

* Strip trailing whitespace from number input fields (LuCI's validator doesn't catch this)
* Don't allow negative bandwidth limits

Failsafe mode
^^^^^^^^^^^^^

* Fix entering the failsafe mode on the TL-WDR4900.

Known Issues
~~~~~~~~~~~~

* Default TX power on many Ubiquiti devices is too high, correct offsets are unknown (`#94 <https://github.com/freifunk-gluon/gluon/issues/94>`_)

  Reducing the TX power in the Expert Mode is recommended.

* The MAC address of the WAN interface is modified even when Mesh-on-WAN is disabled (`#496 <https://github.com/freifunk-gluon/gluon/issues/496>`_)

  This may lead to issues in environments where a fixed MAC address is expected (like VMware when promicious mode is disallowed).

* Inconsistent respondd/announced API (`#522 <https://github.com/freifunk-gluon/gluon/issues/522>`_)

  The current API is inconsistent and will be replaced eventually. The old API will still be supported for a while.

* Nondeterministic production of broken images for some (very old) hardware (`#669 <https://github.com/freifunk-gluon/gluon/issues/669>`_)

  At the moment it seems like only the TL-WR841N v5 is affected.
+29 −0
Original line number Original line Diff line number Diff line
Gluon 2016.1.2
==============

Added hardware support
~~~~~~~~~~~~~~~~~~~~~~

The *x86-generic* images now contain the ATIIXP PATA driver, adding support for
FUTRO Thin Clients.

Bugfixes
~~~~~~~~

A nondeterministic boot hang (`#669 <https://github.com/freifunk-gluon/gluon/issues/669>`_) has been fixed.
The TL-WR841N v5 seems to be affected in particular, but the kernel bug is not hardware-specific per se.

Known Issues
~~~~~~~~~~~~

* Default TX power on many Ubiquiti devices is too high, correct offsets are unknown (`#94 <https://github.com/freifunk-gluon/gluon/issues/94>`_)

  Reducing the TX power in the Expert Mode is recommended.

* The MAC address of the WAN interface is modified even when Mesh-on-WAN is disabled (`#496 <https://github.com/freifunk-gluon/gluon/issues/496>`_)

  This may lead to issues in environments where a fixed MAC address is expected (like VMware when promicious mode is disallowed).

* Inconsistent respondd API (`#522 <https://github.com/freifunk-gluon/gluon/issues/522>`_)

  The current API is inconsistent and will be replaced eventually. The old API will still be supported for a while.
+43 −0
Original line number Original line Diff line number Diff line
Gluon 2016.1.3
==============

Added hardware support
~~~~~~~~~~~~~~~~~~~~~~

ar71xx-generic
^^^^^^^^^^^^^^

* ALFA Hornet UB / AP121 / AP121U
* TP-Link TL-WA7510N

Bugfixes
~~~~~~~~

* The nondeterministic boot hang (`#669 <https://github.com/freifunk-gluon/gluon/issues/669>`_) that was thought to
  be fixed in Gluon v2016.1.2 has resurfaced on other hardware. We believe it is now fixed properly.
* Sysupgrades on the Xen DomU have been fixed.
* Gluon can now be built on systems that use LibreSSL instead of OpenSSL.

Known Issues
~~~~~~~~~~~~

* Default TX power on many Ubiquiti devices is too high, correct offsets are unknown (`#94 <https://github.com/freifunk-gluon/gluon/issues/94>`_)

  Reducing the TX power in the Expert Mode is recommended.

* The MAC address of the WAN interface is modified even when Mesh-on-WAN is disabled (`#496 <https://github.com/freifunk-gluon/gluon/issues/496>`_)

  This may lead to issues in environments where a fixed MAC address is expected (like VMware when promicious mode is disallowed).

* Inconsistent respondd API (`#522 <https://github.com/freifunk-gluon/gluon/issues/522>`_)

  The current API is inconsistent and will be replaced eventually. The old API will still be supported for a while.

* Unwritable flash on some Ubiquiti PicoStations (`#687 <https://github.com/freifunk-gluon/gluon/issues/687>`_)

  Gluon v2016.1.1 added support for Ubiquiti AirMAX devices with AirOS 5.6.x without downgrading AirOS first before
  flashing Gluon. It was discovered that on Ubiquiti PicoStations, this downgrade is still necessary, as the
  flash is not correctly unlocked, leaving the device unable to leave Config Mode and making regular sysupgrades
  impossible.

  TFTP recovery can be used in this state to flash a new firmware.
+46 −0
Original line number Original line Diff line number Diff line
Gluon 2016.1.4
==============

Added hardware support
~~~~~~~~~~~~~~~~~~~~~~

ar71xx-generic
^^^^^^^^^^^^^^

* 8devices Carambola 2
* Meraki MR12/MR62/MR16/MR66

Bugfixes
~~~~~~~~

* Major update of all WLAN drivers

  We've taken the unusual step of updating the WLAN drivers ("wireless-backports") to a much newer version, as
  it was reported that the new version fixes unstable WLAN seen in many setups
* Build fix: a race condition causing parallel builds to fail has been fixed
* Build fix: the Gluon tree could get into a state in which all commands fail with "Too many levels of symbolic links"
* Build fix: allow building Gluon on systems with certain versions of *dash* as */bin/sh*

Known Issues
~~~~~~~~~~~~

* Default TX power on many Ubiquiti devices is too high, correct offsets are unknown (`#94 <https://github.com/freifunk-gluon/gluon/issues/94>`_)

  Reducing the TX power in the Expert Mode is recommended.

* The MAC address of the WAN interface is modified even when Mesh-on-WAN is disabled (`#496 <https://github.com/freifunk-gluon/gluon/issues/496>`_)

  This may lead to issues in environments where a fixed MAC address is expected (like VMware when promicious mode is disallowed).

* Inconsistent respondd API (`#522 <https://github.com/freifunk-gluon/gluon/issues/522>`_)

  The current API is inconsistent and will be replaced eventually. The old API will still be supported for a while.

* Unwritable flash on some Ubiquiti PicoStations (`#687 <https://github.com/freifunk-gluon/gluon/issues/687>`_)

  Gluon v2016.1.1 added support for Ubiquiti AirMAX devices with AirOS 5.6.x without downgrading AirOS first before
  flashing Gluon. It was discovered that on Ubiquiti PicoStations, this downgrade is still necessary, as the
  flash is not correctly unlocked, leaving the device unable to leave Config Mode and making regular sysupgrades
  impossible.

  TFTP recovery can be used in this state to flash a new firmware.
+66 −0
Original line number Original line Diff line number Diff line
Gluon 2016.1.5
==============

Added hardware support
~~~~~~~~~~~~~~~~~~~~~~

ar71xx-generic
^^^^^^^^^^^^^^

* OpenMesh

 - MR600 (v1, v2)
 - MR900 (v1, v2)
 - OM2P (v1, v2)
 - OM2P-HS (v1, v2)
 - OM2P-LC
 - OM5P
 - OM5P-AN

* Ubiquiti

 - Rocket M XW

* TP-LINK

 - TL-WR841N/ND v11

Bugfixes
~~~~~~~~

* build: fix race condition caused by using certain make targets (like *clean*, *images* or *package/\**)
  with parallel build options without doing a full build before
* build: fix package dependency issue causing "recursive dependency" warning

  This dependency issue could lead to broken configurations and reportedly caused failed builds in some cases
  when additional (site-specific) packages were used.
* build: Gluon will now build correctly with GCC 6 as host compiler
* Fix configuration of batman-adv when VLANs are used on top of IBSS interfaces (regression due to netifd update in :doc:`v2016.1.4`)
* Add back missing ath10k firmware (regression due to mac80211 update in :doc:`v2016.1.4`)
* Gluon can now be used on all supported Ubiquiti AirMAX devices without downgrading to AirOS 5.5.x before

  :doc:`v2016.1.1` added support for most Ubiquiti AirMAX devices with AirOS 5.6.x without downgrading AirOS,
  but left some devices (at least some PicoStations and Bullets) with unwritable flash. This issue has been
  resolved (`#687 <https://github.com/freifunk-gluon/gluon/issues/687>`_).
* Add upgrade script to automatically remove whitespace from configured geolocation

  The new respondd implementation included in :doc:`v2016.1` is stricter about the number format than the
  old one and doesn't accept trailing whitespace (so one or both coordinates are missing from the output).

  The Config Mode has been fixed to strip whitespace from numeric fields in new configurations since :doc:`v2016.1.1`.
  This still left old configurations, which are now fixed by this script.

Known Issues
~~~~~~~~~~~~

* Default TX power on many Ubiquiti devices is too high, correct offsets are unknown (`#94 <https://github.com/freifunk-gluon/gluon/issues/94>`_)

  Reducing the TX power in the Expert Mode is recommended.

* The MAC address of the WAN interface is modified even when Mesh-on-WAN is disabled (`#496 <https://github.com/freifunk-gluon/gluon/issues/496>`_)

  This may lead to issues in environments where a fixed MAC address is expected (like VMware when promicious mode is disallowed).

* Inconsistent respondd API (`#522 <https://github.com/freifunk-gluon/gluon/issues/522>`_)

  The current API is inconsistent and will be replaced eventually. The old API will still be supported for a while.
+1 −1
Original line number Original line Diff line number Diff line
-- This is an example site configuration for Gluon v2016.1
-- This is an example site configuration for Gluon v2016.1.5
--
--
-- Take a look at the documentation located at
-- Take a look at the documentation located at
-- http://gluon.readthedocs.org/ for details.
-- http://gluon.readthedocs.org/ for details.
+3 −0
Original line number Original line Diff line number Diff line
@@ -52,5 +52,8 @@ GLUON_RELEASE ?= $(DEFAULT_GLUON_RELEASE)
# Default priority for updates.
# Default priority for updates.
GLUON_PRIORITY ?= 0
GLUON_PRIORITY ?= 0


# Region code required for some images; supported values: us eu
GLUON_REGION ?= eu

# Languages to include
# Languages to include
GLUON_LANGS ?= en de
GLUON_LANGS ?= en de
+2 −2
Original line number Original line Diff line number Diff line
@@ -8,7 +8,7 @@ Gluon's releases are managed using `Git tags`_. If you are just getting
started with Gluon we recommend to use the latest stable release of Gluon.
started with Gluon we recommend to use the latest stable release of Gluon.


Take a look at the `list of gluon releases`_ and notice the latest release,
Take a look at the `list of gluon releases`_ and notice the latest release,
e.g. *v2016.1*. Always get Gluon using git and don't try to download it
e.g. *v2016.1.5*. Always get Gluon using git and don't try to download it
as a Zip archive as the archive will be missing version information.
as a Zip archive as the archive will be missing version information.


Please keep in mind that there is no "default Gluon" build; a site configuration
Please keep in mind that there is no "default Gluon" build; a site configuration
@@ -42,7 +42,7 @@ Building the images
-------------------
-------------------


To build Gluon, first check out the repository. Replace *RELEASE* with the
To build Gluon, first check out the repository. Replace *RELEASE* with the
version you'd like to checkout, e.g. *v2016.1*.
version you'd like to checkout, e.g. *v2016.1.5*.


::
::


+7 −2
Original line number Original line Diff line number Diff line
@@ -314,6 +314,10 @@ GLUON_PRIORITY
    The default priority for the generated manifests (see the autoupdater documentation
    The default priority for the generated manifests (see the autoupdater documentation
    for more information).
    for more information).


GLUON_REGION
    Region code to build into images where necessary. Valid values are the empty string,
    ``us`` and ``eu``.

GLUON_LANGS
GLUON_LANGS
    List of languages (as two-letter-codes) to be included in the web interface. Should always contain
    List of languages (as two-letter-codes) to be included in the web interface. Should always contain
    ``en``.
    ``en``.
@@ -393,15 +397,16 @@ This is a non-exhaustive list of site-repos from various communities:
* `site-ffda <https://github.com/freifunk-darmstadt/site-ffda>`_ (Darmstadt)
* `site-ffda <https://github.com/freifunk-darmstadt/site-ffda>`_ (Darmstadt)
* `site-ffgoe <https://github.com/freifunk-goettingen/site-ffgoe>`_ (Göttingen)
* `site-ffgoe <https://github.com/freifunk-goettingen/site-ffgoe>`_ (Göttingen)
* `site-ffhh <https://github.com/freifunkhamburg/site-ffhh>`_ (Hamburg)
* `site-ffhh <https://github.com/freifunkhamburg/site-ffhh>`_ (Hamburg)
* `site-ffho <https://git.c3pb.de/freifunk-pb/site-ffho>`_ (Hochstift)
* `site-ffhgw <https://github.com/lorenzo-greifswald/site-ffhgw>`_ (Greifswald)
* `site-ffhgw <https://github.com/lorenzo-greifswald/site-ffhgw>`_ (Greifswald)
* `site-ffl <https://github.com/freifunk-leipzig/freifunk-gluon-leipzig>`_ (Leipzig)
* `site-ffhl <https://github.com/freifunk-luebeck/site-ffhl>`_ (Lübeck)
* `site-ffhl <https://github.com/freifunk-luebeck/site-ffhl>`_ (Lübeck)
* `site-ffmd <https://github.com/FreifunkMD/site-ffmd>`_ (Magdeburg)
* `site-ffmd <https://github.com/FreifunkMD/site-ffmd>`_ (Magdeburg)
* `site-ffmwu <https://github.com/freifunk-mwu/site-ffmwu>`_ (Mainz, Wiesbaden & Umgebung)
* `site-ffmwu <https://github.com/freifunk-mwu/site-ffmwu>`_ (Mainz, Wiesbaden & Umgebung)
* `site-ffmyk <https://github.com/FreifunkMYK/site-ffmyk>`_ (Mayen-Koblenz)
* `site-ffmyk <https://github.com/FreifunkMYK/site-ffmyk>`_ (Mayen-Koblenz)
* `site-ffm <https://github.com/freifunkMUC/site-ffm>`_ (München)
* `site-ffm <https://github.com/freifunkMUC/site-ffm>`_ (München)
* `site-ffms <https://github.com/FreiFunkMuenster/site-ffms>`_ (Münsterland)
* `site-ffms <https://github.com/FreiFunkMuenster/site-ffms>`_ (Münsterland)
* `site-ffnw <https://git.nordwest.freifunk.net/ffnw/siteconf/tree/master>`_ (Nordwest)
* `site-ffnw <https://git.nordwest.freifunk.net/ffnw-firmware/siteconf/tree/master>`_ (Nordwest)
* `site-ffpb <https://git.c3pb.de/freifunk-pb/site-ffpb>`_ (Paderborn)
* `site-ffka <https://github.com/ffka/site-ffka>`_ (Karlsruhe)
* `site-ffka <https://github.com/ffka/site-ffka>`_ (Karlsruhe)
* `site-ffrl <https://github.com/ffrl/sites-ffrl>`_ (Rheinland)
* `site-ffrl <https://github.com/ffrl/sites-ffrl>`_ (Rheinland)
* `site-ffrg <https://github.com/ffruhr/site-ffruhr>`_ (Ruhrgebiet)
* `site-ffrg <https://github.com/ffruhr/site-ffruhr>`_ (Ruhrgebiet)
+7 −5
Original line number Original line Diff line number Diff line
GLUON_FEEDS='openwrt gluon routing luci'
GLUON_FEEDS='openwrt gluon routing luci'


OPENWRT_REPO=git://git.openwrt.org/15.05/openwrt.git
OPENWRT_REPO=git://github.com/openwrt/openwrt.git
OPENWRT_COMMIT=363508bcabd8e9205f5fffc8ff282439e61d618f
OPENWRT_COMMIT=e663db7bb1797740c4a29ac0fc96eda1b88f9e6e
OPENWRT_BRANCH=chaos_calmer


PACKAGES_OPENWRT_REPO=git://github.com/openwrt/packages.git
PACKAGES_OPENWRT_REPO=git://github.com/openwrt/packages.git
PACKAGES_OPENWRT_COMMIT=f8a70fc188673d0ae8739b0a3095f7f61335fc10
PACKAGES_OPENWRT_COMMIT=9622fe984bba3a4547f48bc507ebaba7637eb2b0
PACKAGES_OPENWRT_BRANCH=for-15.05
PACKAGES_OPENWRT_BRANCH=for-15.05


PACKAGES_GLUON_REPO=git://github.com/freifunk-gluon/packages.git
PACKAGES_GLUON_REPO=git://github.com/freifunk-gluon/packages.git
PACKAGES_GLUON_COMMIT=fd06c7d67da69713f0361dadab16393c26cb609b
PACKAGES_GLUON_COMMIT=6935eca5afc9494341994ca6afaa009938dea29b
PACKAGES_GLUON_BRANCH=v2016.1.x


PACKAGES_ROUTING_REPO=git://github.com/openwrt-routing/packages.git
PACKAGES_ROUTING_REPO=git://github.com/openwrt-routing/packages.git
PACKAGES_ROUTING_COMMIT=ae65d4fe027592652376f8dbd3ff2ef37f5a84bc
PACKAGES_ROUTING_COMMIT=ae65d4fe027592652376f8dbd3ff2ef37f5a84bc


PACKAGES_LUCI_REPO=git://github.com/openwrt/luci.git
PACKAGES_LUCI_REPO=git://github.com/openwrt/luci.git
PACKAGES_LUCI_COMMIT=8832d534e96d3a934bd02711884371fc78a0d506
PACKAGES_LUCI_COMMIT=cdcdfd2594634804ab09dc8105e46116edce0cd6
PACKAGES_LUCI_BRANCH=for-15.05
PACKAGES_LUCI_BRANCH=for-15.05
+0 −1
Original line number Original line Diff line number Diff line
@@ -16,4 +16,3 @@ c:section('alfred', 'alfred', 'alfred',
)
)


c:save('alfred')
c:save('alfred')
c:commit('alfred')
+0 −1
Original line number Original line Diff line number Diff line
@@ -40,7 +40,6 @@ end
c:set('autoupdater', 'settings', 'version_file', '/lib/gluon/release')
c:set('autoupdater', 'settings', 'version_file', '/lib/gluon/release')


c:save('autoupdater')
c:save('autoupdater')
c:commit('autoupdater')




local autoupdater_util = require 'autoupdater.util'
local autoupdater_util = require 'autoupdater.util'
+0 −1
Original line number Original line Diff line number Diff line
@@ -24,4 +24,3 @@ end
uci:set('network', 'client', 'macaddr', sysconfig.primary_mac)
uci:set('network', 'client', 'macaddr', sysconfig.primary_mac)


uci:save('network')
uci:save('network')
uci:commit('network')
+0 −1
Original line number Original line Diff line number Diff line
@@ -45,4 +45,3 @@ end
util.iterate_radios(configure_radio)
util.iterate_radios(configure_radio)


uci:save('wireless')
uci:save('wireless')
uci:commit('wireless')
+3 −3
Original line number Original line Diff line number Diff line
@@ -45,10 +45,10 @@ function M.handle(data)


  uci:set("gluon-node-info", sname, "share_location", data._location)
  uci:set("gluon-node-info", sname, "share_location", data._location)
  if data._location and data._latitude ~= nil and data._longitude ~= nil then
  if data._location and data._latitude ~= nil and data._longitude ~= nil then
    uci:set("gluon-node-info", sname, "latitude", data._latitude)
    uci:set("gluon-node-info", sname, "latitude", data._latitude:trim())
    uci:set("gluon-node-info", sname, "longitude", data._longitude)
    uci:set("gluon-node-info", sname, "longitude", data._longitude:trim())
    if data._altitude ~= nil then
    if data._altitude ~= nil then
      uci:set("gluon-node-info", sname, "altitude", data._altitude)
      uci:set("gluon-node-info", sname, "altitude", data._altitude:trim())
    else
    else
      uci:delete("gluon-node-info", sname, "altitude")
      uci:delete("gluon-node-info", sname, "altitude")
    end
    end
+5 −5
Original line number Original line Diff line number Diff line
@@ -28,13 +28,13 @@ function M.section(form)
  o:depends("_limit_enabled", "1")
  o:depends("_limit_enabled", "1")
  o.value = uci:get("simple-tc", "mesh_vpn", "limit_ingress")
  o.value = uci:get("simple-tc", "mesh_vpn", "limit_ingress")
  o.rmempty = false
  o.rmempty = false
  o.datatype = "integer"
  o.datatype = "uinteger"


  o = s:option(cbi.Value, "_limit_egress", i18n.translate("Upstream (kbit/s)"))
  o = s:option(cbi.Value, "_limit_egress", i18n.translate("Upstream (kbit/s)"))
  o:depends("_limit_enabled", "1")
  o:depends("_limit_enabled", "1")
  o.value = uci:get("simple-tc", "mesh_vpn", "limit_egress")
  o.value = uci:get("simple-tc", "mesh_vpn", "limit_egress")
  o.rmempty = false
  o.rmempty = false
  o.datatype = "integer"
  o.datatype = "uinteger"
end
end


function M.handle(data)
function M.handle(data)
@@ -49,14 +49,14 @@ function M.handle(data)
    uci:set("simple-tc", "mesh_vpn", "ifname", "mesh-vpn")
    uci:set("simple-tc", "mesh_vpn", "ifname", "mesh-vpn")


    if data._limit_ingress ~= nil then
    if data._limit_ingress ~= nil then
      uci:set("simple-tc", "mesh_vpn", "limit_ingress", data._limit_ingress)
      uci:set("simple-tc", "mesh_vpn", "limit_ingress", data._limit_ingress:trim())
    end
    end


    if data._limit_egress ~= nil then
    if data._limit_egress ~= nil then
      uci:set("simple-tc", "mesh_vpn", "limit_egress", data._limit_egress)
      uci:set("simple-tc", "mesh_vpn", "limit_egress", data._limit_egress:trim())
    end
    end


    uci:commit("simple-tc")
    uci:save("simple-tc")
    uci:commit("simple-tc")
    uci:commit("simple-tc")
  end
  end
end
end
+9 −1
Original line number Original line Diff line number Diff line
@@ -24,7 +24,15 @@ end


if platform.match('ar71xx', 'generic', {'tl-wdr3600', 'tl-wdr4300'}) then
if platform.match('ar71xx', 'generic', {'tl-wdr3600', 'tl-wdr4300'}) then
  table.insert(try_files, 1, '/sys/class/ieee80211/phy1/macaddress')
  table.insert(try_files, 1, '/sys/class/ieee80211/phy1/macaddress')
elseif platform.match('ar71xx', 'generic', {'unifi-outdoor-plus'}) then
elseif platform.match('ar71xx', 'generic', {'unifi-outdoor-plus', 'carambola2',
                                            'mr600', 'mr600v2',
                                            'mr900', 'mr900v2',
                                            'mr1750',
                                            'om2p', 'om2pv2',
                                            'om2p-hs', 'om2p-hsv2',
                                            'om2p-lc',
                                            'om5p', 'om5p-an',
                                            'om5p-ac', 'om5p-acv2'}) then
  table.insert(try_files, 1, '/sys/class/net/eth0/address')
  table.insert(try_files, 1, '/sys/class/net/eth0/address')
elseif platform.match('ar71xx', 'generic', {'archer-c5', 'archer-c7'}) then
elseif platform.match('ar71xx', 'generic', {'archer-c5', 'archer-c7'}) then
  table.insert(try_files, 1, '/sys/class/net/eth1/address')
  table.insert(try_files, 1, '/sys/class/net/eth1/address')
+1 −2
Original line number Original line Diff line number Diff line
@@ -16,7 +16,7 @@ if not (sysconfig.lan_ifname or sysconfig.wan_ifname) then
  local lan_ifname = uci:get('network', 'lan', 'ifname')
  local lan_ifname = uci:get('network', 'lan', 'ifname')
  local wan_ifname = uci:get('network', 'wan', 'ifname')
  local wan_ifname = uci:get('network', 'wan', 'ifname')


  if platform.match('ar71xx', 'generic', {'cpe510', 'nanostation-m', 'nanostation-m-xw', 'unifi-outdoor-plus'}) then
  if platform.match('ar71xx', 'generic', {'cpe510', 'nanostation-m', 'nanostation-m-xw', 'unifi-outdoor-plus', 'uap-pro'}) then
    lan_ifname, wan_ifname = wan_ifname, lan_ifname
    lan_ifname, wan_ifname = wan_ifname, lan_ifname
  end
  end


@@ -32,5 +32,4 @@ if not (sysconfig.lan_ifname or sysconfig.wan_ifname) then
  uci:delete('network', 'wan')
  uci:delete('network', 'wan')


  uci:save('network')
  uci:save('network')
  uci:commit('network')
end
end
+0 −1
Original line number Original line Diff line number Diff line
@@ -14,5 +14,4 @@ if not sysconfig.gluon_version then
  uci:set('system', system, 'timezone', site.timezone)
  uci:set('system', system, 'timezone', site.timezone)


  uci:save('system')
  uci:save('system')
  uci:commit('system')
end
end
+0 −1
Original line number Original line Diff line number Diff line
@@ -53,7 +53,6 @@ uci:section('network', 'route6', 'wan6_unreachable',
)
)


uci:save('network')
uci:save('network')
uci:commit('network')




sysctl.set('net.ipv6.conf.all.accept_ra', 0)
sysctl.set('net.ipv6.conf.all.accept_ra', 0)
+0 −1
Original line number Original line Diff line number Diff line
@@ -11,4 +11,3 @@ local c = uci.cursor()
c:delete('system', 'ntp', 'server')
c:delete('system', 'ntp', 'server')
c:set_list('system', 'ntp', 'server', site.ntp_servers)
c:set_list('system', 'ntp', 'server', site.ntp_servers)
c:save('system')
c:save('system')
c:commit('system')
+0 −1
Original line number Original line Diff line number Diff line
@@ -27,4 +27,3 @@ c:section('firewall', 'rule', 'wan_ssh',
)
)


c:save('firewall')
c:save('firewall')
c:commit('firewall')
+0 −1
Original line number Original line Diff line number Diff line
@@ -23,4 +23,3 @@ end
util.iterate_radios(configure_radio)
util.iterate_radios(configure_radio)


uci:save('wireless')
uci:save('wireless')
uci:commit('wireless')
+3 −0
Original line number Original line Diff line number Diff line
#!/bin/sh

exec uci commit
+1 −1
Original line number Original line Diff line number Diff line
@@ -7,7 +7,7 @@ local function get_site_config()
  local file = assert(io.open(config))
  local file = assert(io.open(config))


  local decoder = json.new()
  local decoder = json.new()
  ltn12.pump.all(ltn12.source.file(io.open(config)), decoder:sink())
  ltn12.pump.all(ltn12.source.file(file), decoder:sink())


  file:close()
  file:close()


+0 −1
Original line number Original line Diff line number Diff line
@@ -34,7 +34,6 @@ if sysconfig.gluon_version == 'legacy' then
  uci:delete('network', 'wan')
  uci:delete('network', 'wan')


  uci:save('network')
  uci:save('network')
  uci:commit('network')
end
end


+0 −1
Original line number Original line Diff line number Diff line
@@ -20,5 +20,4 @@ if sysconfig.gluon_version == 'legacy' then
  uci:delete_all('wireless', 'wifi-iface', delete_legacy_iface)
  uci:delete_all('wireless', 'wifi-iface', delete_legacy_iface)


  uci:save('wireless')
  uci:save('wireless')
  uci:commit('wireless')
end
end
+0 −2
Original line number Original line Diff line number Diff line
@@ -12,9 +12,7 @@ if sysconfig.gluon_version == 'legacy' then
    if old == '1' then
    if old == '1' then
      local setup_mode = uci:get_first('gluon-setup-mode', 'setup_mode')
      local setup_mode = uci:get_first('gluon-setup-mode', 'setup_mode')
      uci:set('gluon-setup-mode', setup_mode, 'configured', '1')
      uci:set('gluon-setup-mode', setup_mode, 'configured', '1')

      uci:save('gluon-setup-mode')
      uci:save('gluon-setup-mode')
      uci:commit('gluon-setup-mode')


      break
      break
    end
    end
+0 −1
Original line number Original line Diff line number Diff line
@@ -21,7 +21,6 @@ if sysconfig.gluon_version == 'legacy' then
      )
      )


      uci:save('simple-tc')
      uci:save('simple-tc')
      uci:commit('simple-tc')


      break
      break
    end
    end
+0 −1
Original line number Original line Diff line number Diff line
@@ -33,5 +33,4 @@ if sysconfig.gluon_version == 'legacy' then
  end
  end


  uci:save('fastd')
  uci:save('fastd')
  uci:commit('fastd')
end
end
+1 −3
Original line number Original line Diff line number Diff line
@@ -101,9 +101,7 @@ end
function image_supported(tmpfile)
function image_supported(tmpfile)
	-- XXX: yay...
	-- XXX: yay...
	return ( 0 == os.execute(
	return ( 0 == os.execute(
		". /lib/functions.sh; " ..
		"/sbin/sysupgrade -T %q >/dev/null"
		"include /lib/upgrade; " ..
		"platform_check_image %q >/dev/null"
			% tmpfile
			% tmpfile
	) )
	) )
end
end
+5 −5
Original line number Original line Diff line number Diff line
@@ -99,9 +99,9 @@ function f.handle(self, state, data)
  if state == FORM_VALID then
  if state == FORM_VALID then
    uci:set("network", "wan", "proto", data.ipv4)
    uci:set("network", "wan", "proto", data.ipv4)
    if data.ipv4 == "static" then
    if data.ipv4 == "static" then
      uci:set("network", "wan", "ipaddr", data.ipv4_addr)
      uci:set("network", "wan", "ipaddr", data.ipv4_addr:trim())
      uci:set("network", "wan", "netmask", data.ipv4_netmask)
      uci:set("network", "wan", "netmask", data.ipv4_netmask:trim())
      uci:set("network", "wan", "gateway", data.ipv4_gateway)
      uci:set("network", "wan", "gateway", data.ipv4_gateway:trim())
    else
    else
      uci:delete("network", "wan", "ipaddr")
      uci:delete("network", "wan", "ipaddr")
      uci:delete("network", "wan", "netmask")
      uci:delete("network", "wan", "netmask")
@@ -110,8 +110,8 @@ function f.handle(self, state, data)


    uci:set("network", "wan6", "proto", data.ipv6)
    uci:set("network", "wan6", "proto", data.ipv6)
    if data.ipv6 == "static" then
    if data.ipv6 == "static" then
      uci:set("network", "wan6", "ip6addr", data.ipv6_addr)
      uci:set("network", "wan6", "ip6addr", data.ipv6_addr:trim())
      uci:set("network", "wan6", "ip6gw", data.ipv6_gateway)
      uci:set("network", "wan6", "ip6gw", data.ipv6_gateway:trim())
    else
    else
      uci:delete("network", "wan6", "ip6addr")
      uci:delete("network", "wan6", "ip6addr")
      uci:delete("network", "wan6", "ip6gw")
      uci:delete("network", "wan6", "ip6gw")
+1 −1
Original line number Original line Diff line number Diff line
@@ -98,7 +98,7 @@ for _, radio in ipairs(radios) do
    if config.path then
    if config.path then
      phy = find_phy_by_path(config.path)
      phy = find_phy_by_path(config.path)
    elseif config.macaddr then
    elseif config.macaddr then
      phy = find_phy_by_path(config.macaddr)
      phy = find_phy_by_macaddr(config.macaddr)
    end
    end


    if phy then
    if phy then
+0 −1
Original line number Original line Diff line number Diff line
@@ -45,4 +45,3 @@ end




uci:save('network')
uci:save('network')
uci:commit('network')
+0 −1
Original line number Original line Diff line number Diff line
@@ -45,4 +45,3 @@ end




uci:save('network')
uci:save('network')
uci:commit('network')
+0 −1
Original line number Original line Diff line number Diff line
@@ -7,5 +7,4 @@ local uci = require('luci.model.uci').cursor()
-- fix up duplicate mac addresses (for mesh-on-WAN)
-- fix up duplicate mac addresses (for mesh-on-WAN)
uci:set('network', 'wan', 'macaddr', util.generate_mac(1, 0))
uci:set('network', 'wan', 'macaddr', util.generate_mac(1, 0))
uci:save('network')
uci:save('network')
uci:commit('network')
+0 −4
Original line number Original line Diff line number Diff line
@@ -24,7 +24,6 @@ uci:section('batman-adv', 'mesh', 'bat0',
	    }
	    }
)
)
uci:save('batman-adv')
uci:save('batman-adv')
uci:commit('batman-adv')


if not uci:get('network', 'client', 'ifname') then
if not uci:get('network', 'client', 'ifname') then
  uci:add_to_set('network', 'client', 'ifname', 'bat0')
  uci:add_to_set('network', 'client', 'ifname', 'bat0')
@@ -52,7 +51,6 @@ uci:section('network', 'interface', 'bat0',
)
)


uci:save('network')
uci:save('network')
uci:commit('network')




uci:delete('firewall', 'client')
uci:delete('firewall', 'client')
@@ -76,7 +74,6 @@ uci:section('firewall', 'rule', 'client_dns',
)
)


uci:save('firewall')
uci:save('firewall')
uci:commit('firewall')




local dnsmasq = uci:get_first('dhcp', 'dnsmasq')
local dnsmasq = uci:get_first('dhcp', 'dnsmasq')
@@ -93,7 +90,6 @@ uci:section('dhcp', 'dhcp', 'client',
)
)


uci:save('dhcp')
uci:save('dhcp')
uci:commit('dhcp')




sysctl.set('net.ipv6.conf.br-client.forwarding', 0)
sysctl.set('net.ipv6.conf.br-client.forwarding', 0)
+0 −2
Original line number Original line Diff line number Diff line
@@ -131,5 +131,3 @@ util.iterate_radios(configure_radio)


uci:save('wireless')
uci:save('wireless')
uci:save('network')
uci:save('network')
uci:commit('wireless')
uci:commit('network')
+0 −1
Original line number Original line Diff line number Diff line
@@ -15,4 +15,3 @@ if not c:get('network', 'mesh_wan') then
end
end


c:save('network')
c:save('network')
c:commit('network')
+0 −1
Original line number Original line Diff line number Diff line
@@ -32,6 +32,5 @@ if sysconfig.lan_ifname and not uci:get('network', 'mesh_lan') then
  })
  })


  uci:save('network')
  uci:save('network')
  uci:commit('network')
end
end
+0 −1
Original line number Original line Diff line number Diff line
@@ -6,5 +6,4 @@ if uci:get('system', 'rssid_wlan0') then
  uci:set('system', 'rssid_wlan0', 'dev', 'mesh0')
  uci:set('system', 'rssid_wlan0', 'dev', 'mesh0')


  uci:save('system')
  uci:save('system')
  uci:commit('system')
end
end
+0 −15
Original line number Original line Diff line number Diff line
local nixio = require 'nixio'

module 'gluon.batman_adv'

function interfaces(bat_if)
    local iter = nixio.fs.glob('/sys/class/net/' .. bat_if .. '/lower_*')
    return function()
            local path = iter()
            if path == nil then
                return nil
            end
            local ifname = path:match('/lower_([^/]+)$')
            return ifname
        end
end
+1 −1
Original line number Original line Diff line number Diff line
@@ -12,7 +12,7 @@ define Package/gluon-mesh-vpn-fastd
  SECTION:=gluon
  SECTION:=gluon
  CATEGORY:=Gluon
  CATEGORY:=Gluon
  TITLE:=Support for connecting batman-adv meshes via fastd
  TITLE:=Support for connecting batman-adv meshes via fastd
  DEPENDS:=+gluon-core +libgluonutil gluon-mesh-batman-adv +gluon-wan-dnsmasq +fastd +iptables-mod-extra +simple-tc
  DEPENDS:=+gluon-core +libgluonutil gluon-mesh-batman-adv +gluon-wan-dnsmasq +fastd +iptables +iptables-mod-extra +simple-tc
endef
endef


define Build/Prepare
define Build/Prepare
+0 −3
Original line number Original line Diff line number Diff line
@@ -119,7 +119,6 @@ add_groups('mesh_vpn', site.fastd_mesh_vpn.groups)




uci:save('fastd')
uci:save('fastd')
uci:commit('fastd')




uci:section('network', 'interface', 'mesh_vpn',
uci:section('network', 'interface', 'mesh_vpn',
@@ -133,7 +132,6 @@ uci:section('network', 'interface', 'mesh_vpn',
)
)


uci:save('network')
uci:save('network')
uci:commit('network')




uci:section('firewall', 'include', 'mesh_vpn_dns',
uci:section('firewall', 'include', 'mesh_vpn_dns',
@@ -145,4 +143,3 @@ uci:section('firewall', 'include', 'mesh_vpn_dns',
)
)


uci:save('firewall')
uci:save('firewall')
uci:commit('firewall')
+0 −1
Original line number Original line Diff line number Diff line
@@ -9,5 +9,4 @@ local secret = c:get("fastd", "mesh_vpn", "secret")
if not secret or not secret:match(("%x"):rep(64)) then
if not secret or not secret:match(("%x"):rep(64)) then
  c:set("fastd", "mesh_vpn", "secret", "generate")
  c:set("fastd", "mesh_vpn", "secret", "generate")
  c:save("fastd")
  c:save("fastd")
  c:commit("fastd")
end
end
+0 −1
Original line number Original line Diff line number Diff line
@@ -28,5 +28,4 @@ if not uci:get('simple-tc', 'mesh_vpn') then


  uci:section('simple-tc', 'interface', 'mesh_vpn', config)
  uci:section('simple-tc', 'interface', 'mesh_vpn', config)
  uci:save('simple-tc')
  uci:save('simple-tc')
  uci:commit('simple-tc')
end
end
+0 −1
Original line number Original line Diff line number Diff line
@@ -17,4 +17,3 @@ uci:section('firewall', 'rule', 'wan_respondd_reply',
)
)


uci:save('firewall')
uci:save('firewall')
uci:commit('firewall')
+0 −2
Original line number Original line Diff line number Diff line
@@ -39,7 +39,6 @@ c:section('network', 'route6', 'local_node_route6',
)
)


c:save('network')
c:save('network')
c:commit('network')


c:delete('firewall', 'local_node')
c:delete('firewall', 'local_node')
c:section('firewall', 'zone', 'local_node',
c:section('firewall', 'zone', 'local_node',
@@ -52,4 +51,3 @@ c:section('firewall', 'zone', 'local_node',
	  }
	  }
)
)
c:save('firewall')
c:save('firewall')
c:commit('firewall')
+0 −1
Original line number Original line Diff line number Diff line
@@ -7,5 +7,4 @@ local config = 'gluon-node-info'
if not uci:get_first(config, 'system') then
if not uci:get_first(config, 'system') then
  uci:section(config, 'system')
  uci:section(config, 'system')
  uci:save(config)
  uci:save(config)
  uci:commit(config)
end
end
+0 −1
Original line number Original line Diff line number Diff line
@@ -15,5 +15,4 @@ end
if not role then
if not role then
  uci:set(config, uci:get_first(config, 'system'), 'role', default_role)
  uci:set(config, uci:get_first(config, 'system'), 'role', default_role)
  uci:save(config)
  uci:save(config)
  uci:commit(config)
end
end
+14 −0
Original line number Original line Diff line number Diff line
#!/usr/bin/lua
local uci = require('luci.model.uci').cursor()

local sname = uci:get_first('gluon-node-info', 'location')
if sname then
  local options = {'longitude', 'latitude', 'altitude'}
  for _, option in ipairs(options) do
    local value = uci:get('gluon-node-info', sname, option)
    if value then
      uci:set('gluon-node-info', sname, option, value:trim())
    end
  end
  uci:save('gluon-node-info')
end
+0 −1
Original line number Original line Diff line number Diff line
@@ -29,4 +29,3 @@ uci:section('firewall', 'rule', 'client_respondd',
)
)


uci:save('firewall')
uci:save('firewall')
uci:commit('firewall')
+0 −1
Original line number Original line Diff line number Diff line
@@ -11,6 +11,5 @@ if site.setup_mode
     local name = c:get_first("gluon-setup-mode", "setup_mode")
     local name = c:get_first("gluon-setup-mode", "setup_mode")
     c:set("gluon-setup-mode", name, "configured", 1)
     c:set("gluon-setup-mode", name, "configured", 1)
     c:save('gluon-setup-mode')
     c:save('gluon-setup-mode')
     c:commit('gluon-setup-mode')
end
end
+0 −1
Original line number Original line Diff line number Diff line
@@ -12,7 +12,6 @@ if old == '1' then
	c:set('gluon-setup-mode', setup_mode, 'configured', '1')
	c:set('gluon-setup-mode', setup_mode, 'configured', '1')


	c:save('gluon-setup-mode')
	c:save('gluon-setup-mode')
	c:commit('gluon-setup-mode')
end
end


os.remove('/etc/config/gluon-config-mode')
os.remove('/etc/config/gluon-config-mode')
+1 −1
Original line number Original line Diff line number Diff line
@@ -8,7 +8,7 @@ if sysconfig.setup_ifname then
   os.exit(0)
   os.exit(0)
end
end


if platform.match('ar71xx', 'generic', {'cpe510', 'nanostation-m', 'nanostation-m-xw', 'unifi-outdoor-plus'}) then
if platform.match('ar71xx', 'generic', {'cpe510', 'nanostation-m', 'nanostation-m-xw', 'unifi-outdoor-plus', 'uap-pro'}) then
   sysconfig.setup_ifname = sysconfig.config_ifname or sysconfig.wan_ifname or sysconfig.lan_ifname
   sysconfig.setup_ifname = sysconfig.config_ifname or sysconfig.wan_ifname or sysconfig.lan_ifname
else
else
   sysconfig.setup_ifname = sysconfig.config_ifname or sysconfig.lan_ifname or sysconfig.wan_ifname
   sysconfig.setup_ifname = sysconfig.config_ifname or sysconfig.lan_ifname or sysconfig.wan_ifname
+0 −2
Original line number Original line Diff line number Diff line
@@ -10,6 +10,4 @@ uci batch <<-EOF
	set uhttpd.main.home=/lib/gluon/status-page/www
	set uhttpd.main.home=/lib/gluon/status-page/www


	set uhttpd.main.max_requests=32
	set uhttpd.main.max_requests=32

	commit uhttpd
EOF
EOF
+2 −2
Original line number Original line Diff line number Diff line
@@ -198,11 +198,11 @@ function (Helper, SignalGraph, Signal) {
        notUpdated.delete(id)
        notUpdated.delete(id)
      }
      }


      for (id in notUpdated) {
      notUpdated.forEach(function (id) {
        managedNeighbours[id].views.forEach( function (d) { d.destroy() })
        managedNeighbours[id].views.forEach( function (d) { d.destroy() })
        colors.push(managedNeighbours[id].color)
        colors.push(managedNeighbours[id].color)
        delete managedNeighbours[id]
        delete managedNeighbours[id]
      }
      })
    }
    }




+1 −1
Original line number Original line Diff line number Diff line
@@ -110,7 +110,7 @@ define(function () {
    function resize() {
    function resize() {
      var newWidth = canvas.parentNode.clientWidth
      var newWidth = canvas.parentNode.clientWidth


      if (newWidth === 0)
      if (newWidth === 0 || newWidth === canvas.width)
        return
        return


      var lastImage = ctx.getImageData(0, 0, newWidth, canvas.height)
      var lastImage = ctx.getImageData(0, 0, newWidth, canvas.height)
+11 −7
Original line number Original line Diff line number Diff line
@@ -171,28 +171,32 @@ define(["lib/helper"], function (Helper) {
  }
  }


  function prettyPackets(d) {
  function prettyPackets(d) {
    var v = new Intl.NumberFormat("de-DE", {maximumFractionDigits: 0}).format(d)
    var v = Helper.formatNumberFixed(d, 0)
    return v + " Pakete/s"
    return v + " Pakete/s"
  }
  }


  function prettyPrefix(prefixes, step, d) {
  function prettyPrefix(prefixes, step, d) {
    var prefix = 0
    var prefix = 0


    while (d > step && prefix < 4) {
    while (d > step && prefix < prefixes.length - 1) {
      d /= step
      d /= step
      prefix++
      prefix++
    }
    }


    d = new Intl.NumberFormat("de-DE", {maximumSignificantDigits: 3}).format(d)
    d = Helper.formatNumber(d, 3)
    return d + " " + prefixes[prefix]
    return d + " " + prefixes[prefix]
  }
  }


  function prettySize(d) {
    return prettyPrefix([ "", "k", "M", "G", "T" ], 1024, d)
  }

  function prettyBits(d) {
  function prettyBits(d) {
    return prettyPrefix([ "bps", "kbps", "Mbps", "Gbps" ], 1024, d * 8)
    return prettySize(d * 8) + "bps"
  }
  }


  function prettyBytes(d) {
  function prettyBytes(d) {
    return prettyPrefix([ "B", "kB", "MB", "GB", "TB" ], 1024, d)
    return prettySize(d) + "B"
  }
  }


  function prettyUptime(seconds) {
  function prettyUptime(seconds) {
@@ -220,11 +224,11 @@ define(["lib/helper"], function (Helper) {
  }
  }


  function prettyNVRAM(usage) {
  function prettyNVRAM(usage) {
    return new Intl.NumberFormat("de-DE", {maximumSignificantDigits: 3}).format(usage * 100) + "% belegt"
    return Helper.formatNumber(usage * 100, 3) + "% belegt"
  }
  }


  function prettyLoad(load) {
  function prettyLoad(load) {
    return new Intl.NumberFormat("de-DE", {maximumSignificantDigits: 3}).format(load)
    return Helper.formatNumberFixed(load, 2)
  }
  }


  function prettyRAM(memory) {
  function prettyRAM(memory) {
+21 −0
Original line number Original line Diff line number Diff line
@@ -51,6 +51,25 @@ define([ "bacon" ], function (Bacon) {
    return dictGet(dict[k], key)
    return dictGet(dict[k], key)
  }
  }


  function localizeNumber(d) {
    var sep = ','
    return d.replace('.', sep)
  }

  function formatNumberFixed(d, digits) {
    return localizeNumber(d.toFixed(digits))
  }

  function formatNumber(d, digits) {
    digits--

    for (var v = d; v >= 10 && digits > 0; v /= 10)
      digits--

    // avoid toPrecision as it might produce strings in exponential notation
    return formatNumberFixed(d, digits)
  }

  function haversine() {
  function haversine() {
    var radians = Array.prototype.map.call(arguments, function(deg) { return deg / 180.0 * Math.PI })
    var radians = Array.prototype.map.call(arguments, function(deg) { return deg / 180.0 * Math.PI })
    var lat1 = radians[0], lon1 = radians[1], lat2 = radians[2], lon2 = radians[3]
    var lat1 = radians[0], lon1 = radians[1], lat2 = radians[2], lon2 = radians[3]
@@ -66,6 +85,8 @@ define([ "bacon" ], function (Bacon) {
         , request: request
         , request: request
         , getJSON: getJSON
         , getJSON: getJSON
         , dictGet: dictGet
         , dictGet: dictGet
         , formatNumber: formatNumber
         , formatNumberFixed: formatNumberFixed
         , haversine: haversine
         , haversine: haversine
         }
         }
})
})
+184 −0
Original line number Original line Diff line number Diff line
From: Matthias Schiffer <mschiffer@universe-factory.net>
Date: Tue, 9 Feb 2016 18:22:29 +0100
Subject: ath10k-firmware: update to LEDE 0a0caa2656c8db73518a1783743ede772e3ac40f

diff --git a/package/firmware/ath10k-firmware/Makefile b/package/firmware/ath10k-firmware/Makefile
index b03d644..4f63cdd 100644
--- a/package/firmware/ath10k-firmware/Makefile
+++ b/package/firmware/ath10k-firmware/Makefile
@@ -8,7 +8,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=ath10k-firmware
-PKG_SOURCE_VERSION:=77f72b5f7dd940386d9e619a17904987759b7186
+PKG_SOURCE_VERSION:=b00eb8d30fbebb6a5047ccacefa8c37e072fca9c
 PKG_VERSION:=2014-11-13-$(PKG_SOURCE_VERSION)
 PKG_RELEASE:=1
 
@@ -17,7 +17,7 @@ PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
 PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
 PKG_SOURCE_URL:=https://github.com/kvalo/ath10k-firmware.git
 
-PKG_MAINTAINER:=Felix Fietkau <nbd@openwrt.org>
+PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
 
 include $(INCLUDE_DIR)/package.mk
 
@@ -28,14 +28,18 @@ define Package/ath10k-firmware-default
   CATEGORY:=Kernel modules
   SUBMENU:=$(WMENU)
   URL:=$(PKG_SOURCE_URL)
+  DEPENDS:=kmod-ath10k
 endef
 
 define Package/ath10k-firmware-qca988x
 $(Package/ath10k-firmware-default)
+  DEFAULT:=PACKAGE_kmod-ath10k
   TITLE:=ath10k firmware for QCA988x devices
 endef
 
 QCA988X_FIRMWARE_FILE:=firmware-5.bin_10.2.4.97-1
+QCA988X_FIRMWARE_FILE_CT:=firmware-2-ct-full-community-16.bin-lede
+QCA99X0_FIRMWARE_FILE_CT:=firmware-5-ct-full-community-7.bin-lede.001
 
 define Download/ath10k-firmware-qca988x
   URL:=https://www.codeaurora.org/cgit/quic/qsdk/oss/firmware/ath10k-firmware/plain/10.2.4/
@@ -44,11 +48,63 @@ define Download/ath10k-firmware-qca988x
 endef
 $(eval $(call Download,ath10k-firmware-qca988x))
 
+define Download/ath10k-firmware-qca988x-ct
+  URL:=https://www.candelatech.com/downloads/
+  FILE:=$(QCA988X_FIRMWARE_FILE_CT)
+  MD5SUM:=5b651c0458bcf5c20701308b5e519976
+endef
+$(eval $(call Download,ath10k-firmware-qca988x-ct))
+
+define Download/ath10k-firmware-qca99x0-ct
+  URL:=https://www.candelatech.com/downloads/ath10k-10-4/
+  FILE:=$(QCA99X0_FIRMWARE_FILE_CT)
+  MD5SUM:=eb710949ff79142954aadae24616169c
+endef
+$(eval $(call Download,ath10k-firmware-qca99x0-ct))
+
 define Package/ath10k-firmware-qca99x0
 $(Package/ath10k-firmware-default)
   TITLE:=ath10k firmware for QCA99x0 devices
 endef
 
+define Package/ath10k-firmware-qca988x-ct
+$(Package/ath10k-firmware-default)
+  TITLE:=ath10k CT 10.1 firmware for QCA988x devices
+endef
+
+define Package/ath10k-firmware-qca988x-ct/description
+Alternative ath10k firmware for QCA988X from Candela Technologies.
+Enables IBSS and other features.  See:
+http://www.candelatech.com/ath10k-10.1.php
+This firmware will NOT be used unless the standard ath10k-firmware-qca988x
+is un-selected since the driver will try to load firmware-5.bin before
+firmware-2.bin
+endef
+
+define Package/ath10k-firmware-qca99x0-ct/description
+Alternative ath10k firmware for QCA99x0 from Candela Technologies.
+Enables IBSS and other features.  See:
+http://www.candelatech.com/ath10k-10.4.php
+This firmware conflicts with the standard 99x0 firmware, so select only
+one.
+endef
+
+define Package/ath10k-firmware-qca99x0/description
+Standard ath10k firmware for QCA99x0 from QCA
+This firmware conflicts with the CT 99x0 firmware, so select only
+one.
+endef
+
+define Package/ath10k-firmware-qca99x0-ct
+$(Package/ath10k-firmware-default)
+  TITLE:=ath10k CT 10.4.3 firmware for QCA99x0 devices
+endef
+
+define Package/ath10k-firmware-qca9984
+$(Package/ath10k-firmware-default)
+  TITLE:=ath10k firmware for QCA9984 devices
+endef
+
 define Package/ath10k-firmware-qca6174
 $(Package/ath10k-firmware-default)
   TITLE:=ath10k firmware for QCA6174 devices
@@ -58,8 +114,8 @@ QCA99X0_BOARD_REV:=ddcec9efd245da9365c474f513a855a55f3ac7fe
 QCA99X0_BOARD_FILE:=board-2.bin.$(QCA99X0_BOARD_REV)
 
 define Download/qca99x0-board
-  URL:=https://www.codeaurora.org/cgit/quic/qsdk/oss/firmware/ath10k-firmware/plain/ath10k/QCA99X0/hw2.0
-  URL_FILE:=board-2.bin?id=ddcec9efd245da9365c474f513a855a55f3ac7fe
+  URL:=https://source.codeaurora.org/quic/qsdk/oss/firmware/ath10k-firmware/plain/ath10k/QCA99X0/hw2.0
+  URL_FILE:=board-2.bin?id=$(QCA99X0_BOARD_REV)
   FILE:=$(QCA99X0_BOARD_FILE)
   MD5SUM:=a2b3c653c2363a5641200051d6333d0a
 endef
@@ -79,6 +135,16 @@ define Package/ath10k-firmware-qca988x/install
 		$(1)/lib/firmware/ath10k/QCA988X/hw2.0/firmware-5.bin
 endef
 
+define Package/ath10k-firmware-qca988x-ct/install
+	$(INSTALL_DIR) $(1)/lib/firmware/ath10k/QCA988X/hw2.0
+	$(INSTALL_DATA) \
+		$(PKG_BUILD_DIR)/QCA988X/board.bin \
+		$(1)/lib/firmware/ath10k/QCA988X/hw2.0/
+	$(INSTALL_DATA) \
+		$(DL_DIR)/$(QCA988X_FIRMWARE_FILE_CT) \
+		$(1)/lib/firmware/ath10k/QCA988X/hw2.0/firmware-2.bin
+endef
+
 define Package/ath10k-firmware-qca6174/install
 	$(INSTALL_DIR) $(1)/lib/firmware/ath10k
 	$(CP) $(PKG_BUILD_DIR)/QCA6174 $(1)/lib/firmware/ath10k/
@@ -97,6 +163,33 @@ define Package/ath10k-firmware-qca99x0/install
 		$(1)/lib/firmware/ath10k/QCA99X0/hw2.0/firmware-5.bin
 endef
 
+define Package/ath10k-firmware-qca99x0-ct/install
+	$(INSTALL_DIR) $(1)/lib/firmware/ath10k/QCA99X0/hw2.0
+	$(INSTALL_DATA) \
+		$(DL_DIR)/$(QCA99X0_BOARD_FILE) \
+		$(1)/lib/firmware/ath10k/QCA99X0/hw2.0/board-2.bin
+	$(INSTALL_DATA) \
+		$(PKG_BUILD_DIR)/QCA99X0/hw2.0/boardData_AR900B_CUS239_5G_v2_001.bin \
+		$(1)/lib/firmware/ath10k/QCA99X0/hw2.0/board.bin
+	$(INSTALL_DATA) \
+		$(DL_DIR)/$(QCA99X0_FIRMWARE_FILE_CT) \
+		$(1)/lib/firmware/ath10k/QCA99X0/hw2.0/firmware-5.bin
+endef
+
+define Package/ath10k-firmware-qca9984/install
+	$(INSTALL_DIR) $(1)/lib/firmware/ath10k/QCA9984/hw1.0
+	$(INSTALL_DATA) \
+		$(PKG_BUILD_DIR)/QCA9984/hw1.0/board-2.bin \
+		$(1)/lib/firmware/ath10k/QCA9984/hw1.0/board-2.bin
+	$(INSTALL_DATA) \
+		$(PKG_BUILD_DIR)/QCA9984/hw1.0/firmware-5.bin_10.4-3.2-00072 \
+		$(1)/lib/firmware/ath10k/QCA9984/hw1.0/firmware-5.bin
+endef
+
 $(eval $(call BuildPackage,ath10k-firmware-qca988x))
 $(eval $(call BuildPackage,ath10k-firmware-qca99x0))
 $(eval $(call BuildPackage,ath10k-firmware-qca6174))
+$(eval $(call BuildPackage,ath10k-firmware-qca9984))
+
+$(eval $(call BuildPackage,ath10k-firmware-qca988x-ct))
+$(eval $(call BuildPackage,ath10k-firmware-qca99x0-ct))
diff --git a/package/kernel/mac80211/Makefile b/package/kernel/mac80211/Makefile
index 30da1cf..cd8d670 100644
--- a/package/kernel/mac80211/Makefile
+++ b/package/kernel/mac80211/Makefile
@@ -247,7 +247,7 @@ define KernelPackage/ath10k
   $(call KernelPackage/mac80211/Default)
   TITLE:=Atheros 802.11ac wireless cards support
   URL:=https://wireless.wiki.kernel.org/en/users/Drivers/ath10k
-  DEPENDS+= @PCI_SUPPORT +kmod-ath +@DRIVER_11N_SUPPORT +@DRIVER_11W_SUPPORT +@KERNEL_RELAY +ath10k-firmware-qca988x
+  DEPENDS+= @PCI_SUPPORT +kmod-ath +@DRIVER_11N_SUPPORT +@DRIVER_11W_SUPPORT +@KERNEL_RELAY
   FILES:= \
 	$(PKG_BUILD_DIR)/drivers/net/wireless/ath/ath10k/ath10k_core.ko \
 	$(PKG_BUILD_DIR)/drivers/net/wireless/ath/ath10k/ath10k_pci.ko
+0 −23804

File deleted.

Preview size limit exceeded, changes collapsed.

+0 −39
Original line number Original line Diff line number Diff line
From: Matthias Schiffer <mschiffer@universe-factory.net>
Date: Sun, 21 Jun 2015 22:50:48 +0200
Subject: ar71xx: add support for tp-link wr740n v5.0 (EU)

TP-Link ships wr740n v5.0 to Romania (so probably everywhere except
China) with 4 MB flash and 32 MB memory (confirmed by their local
support). This patch adds support for the v5.0 clone of v4, i just
tested it on my own v5.0 router and it works.

Signed-off-by: Daniel Petre <daniel.petre@posteo.net>

diff --git a/target/linux/ar71xx/image/Makefile b/target/linux/ar71xx/image/Makefile
index 013a215..37ce8a4 100644
--- a/target/linux/ar71xx/image/Makefile
+++ b/target/linux/ar71xx/image/Makefile
@@ -501,6 +501,14 @@ define Device/tl-wr740n-v4
     CONSOLE := ttyATH0,115200
 endef
 
+define Device/tl-wr740n-v5
+    $(Device/tplink-4mlzma)
+    BOARDNAME := TL-WR741ND-v4
+    DEVICE_PROFILE := TLWR740
+    TPLINK_HWID := 0x07400005
+    CONSOLE := ttyATH0,115200
+endef
+
 define Device/tl-wr741nd-v1
     $(Device/tplink-4m)
     BOARDNAME := TL-WR741ND
@@ -530,7 +538,7 @@ define Device/tl-wr743nd-v2
     TPLINK_HWID := 0x07430002
     CONSOLE := ttyATH0,115200
 endef
-TARGET_DEVICES += tl-wr740n-v4 tl-wr741nd-v1 tl-wr741nd-v2 tl-wr741nd-v4 tl-wr743nd-v2
+TARGET_DEVICES += tl-wr740n-v4 tl-wr740n-v5 tl-wr741nd-v1 tl-wr741nd-v2 tl-wr741nd-v4 tl-wr743nd-v2
 
 define Device/tl-wr841n-v8
     $(Device/tplink-4mlzma)
+0 −35
Original line number Original line Diff line number Diff line
From: Matthias Schiffer <mschiffer@universe-factory.net>
Date: Sun, 21 Jun 2015 22:48:04 +0200
Subject: ar71xx: add support for TL-WR741ND v5

This device is identical to the TL-WR740N v5, it even uses the same HWID (which
wasn't the case for older TL-WR741ND revisions).

diff --git a/target/linux/ar71xx/image/Makefile b/target/linux/ar71xx/image/Makefile
index 37ce8a4..8a25832 100644
--- a/target/linux/ar71xx/image/Makefile
+++ b/target/linux/ar71xx/image/Makefile
@@ -531,6 +531,14 @@ define Device/tl-wr741nd-v4
     CONSOLE := ttyATH0,115200
 endef
 
+define Device/tl-wr741nd-v5
+    $(Device/tplink-4mlzma)
+    BOARDNAME := TL-WR741ND-v4
+    DEVICE_PROFILE := TLWR741
+    TPLINK_HWID := 0x07400005
+    CONSOLE := ttyATH0,115200
+endef
+
 define Device/tl-wr743nd-v2
     $(Device/tplink-4mlzma)
     BOARDNAME := TL-WR741ND-v4
@@ -538,7 +546,7 @@ define Device/tl-wr743nd-v2
     TPLINK_HWID := 0x07430002
     CONSOLE := ttyATH0,115200
 endef
-TARGET_DEVICES += tl-wr740n-v4 tl-wr740n-v5 tl-wr741nd-v1 tl-wr741nd-v2 tl-wr741nd-v4 tl-wr743nd-v2
+TARGET_DEVICES += tl-wr740n-v4 tl-wr740n-v5 tl-wr741nd-v1 tl-wr741nd-v2 tl-wr741nd-v4 tl-wr741nd-v5 tl-wr743nd-v2
 
 define Device/tl-wr841n-v8
     $(Device/tplink-4mlzma)
+0 −87
Original line number Original line Diff line number Diff line
From: Matthias Schiffer <mschiffer@universe-factory.net>
Date: Fri, 17 Jul 2015 20:51:23 +0200
Subject: brcm2708: Implement sysupgrade

Implement sysupgrade for Raspberry Pi, similar to the way it is done on x86:
The config files are saved in the boot partition and moved to where they are
normally expected in preinit.

Also add optional gzip compression for the SD card image, since this can save
a lot of space (76M vs 6M), also similar to x86.

Signed-off-by: Bruno Randolf <br1@einfach.org>

diff --git a/target/linux/brcm2708/Makefile b/target/linux/brcm2708/Makefile
index 30f6e1d..015aa9c 100644
--- a/target/linux/brcm2708/Makefile
+++ b/target/linux/brcm2708/Makefile
@@ -19,7 +19,7 @@ SUBTARGETS:=bcm2708 bcm2709
 KERNEL_PATCHVER:=3.18
 
 include $(INCLUDE_DIR)/target.mk
-DEFAULT_PACKAGES += brcm2708-gpu-fw kmod-usb-hid kmod-sound-core kmod-sound-arm-bcm2835
+DEFAULT_PACKAGES += brcm2708-gpu-fw kmod-usb-hid kmod-sound-core kmod-sound-arm-bcm2835 kmod-fs-vfat kmod-nls-cp437 kmod-nls-iso8859-1
 
 define Target/Description
 	Build firmware image for Broadcom BCM2708/BCM2709 SoC devices.
diff --git a/target/linux/brcm2708/base-files/lib/preinit/79_move_config b/target/linux/brcm2708/base-files/lib/preinit/79_move_config
new file mode 100644
index 0000000..7bcea7b
--- /dev/null
+++ b/target/linux/brcm2708/base-files/lib/preinit/79_move_config
@@ -0,0 +1,18 @@
+#!/bin/sh
+# Copyright (C) 2015 OpenWrt.org
+
+BOOTPART=/dev/mmcblk0p1
+
+move_config() {
+	if [ -b $BOOTPART ]; then
+		insmod nls_cp437
+		insmod nls_iso8859-1
+		insmod fat
+		insmod vfat
+		mount -t vfat -o rw,noatime $BOOTPART /mnt
+		[ -f /mnt/sysupgrade.tgz ] && mv -f /mnt/sysupgrade.tgz /
+		umount /mnt
+	fi
+}
+
+boot_hook_add preinit_mount_root move_config
diff --git a/target/linux/brcm2708/base-files/lib/upgrade/platform.sh b/target/linux/brcm2708/base-files/lib/upgrade/platform.sh
new file mode 100644
index 0000000..3e1ee00
--- /dev/null
+++ b/target/linux/brcm2708/base-files/lib/upgrade/platform.sh
@@ -0,0 +1,17 @@
+platform_check_image() {
+	# i know no way to verify the image
+	return 0;
+}
+
+platform_do_upgrade() {
+	sync
+	get_image "$1" | dd of=/dev/mmcblk0 bs=2M conv=fsync
+	sleep 1
+}
+
+platform_copy_config() {
+	mount -t vfat -o rw,noatime /dev/mmcblk0p1 /mnt
+	cp -af "$CONF_TAR" /mnt/
+	sync
+	umount /mnt
+}
diff --git a/target/linux/brcm2708/image/Makefile b/target/linux/brcm2708/image/Makefile
index e70bdd0..2c18baf 100644
--- a/target/linux/brcm2708/image/Makefile
+++ b/target/linux/brcm2708/image/Makefile
@@ -28,6 +28,9 @@ define Image/Build/RaspberryPi
 	mcopy -i $(KDIR)/boot.img $(KDIR)/Image ::kernel.img  # Copy OpenWrt built kernel
 	./gen_rpi_sdcard_img.sh $(BIN_DIR)/$(IMG_PREFIX)-sdcard-vfat-$(1).img $(KDIR)/boot.img $(KDIR)/root.$(1) \
 		$(CONFIG_BRCM2708_SD_BOOT_PARTSIZE) $(CONFIG_TARGET_ROOTFS_PARTSIZE)
+  ifneq ($(CONFIG_TARGET_IMAGES_GZIP),)
+	gzip -f9n $(BIN_DIR)/$(IMG_PREFIX)-sdcard-vfat-$(1).img
+  endif
 endef
 
 define Image/Build
+0 −131
Original line number Original line Diff line number Diff line
From: Matthias Schiffer <mschiffer@universe-factory.net>
Date: Thu, 16 Jul 2015 22:01:02 +0200
Subject: sunxi: fix uboot install location

Install uboot files to KERNEL_BUILD_DIR instead of BIN_DIR to fix the
ImageBuilder. Similar fixes are necessary for many (all?) other uboot
targets.

Also remove the DTS copy command, BIN_DIR was unnecessarily cluttered with
DTS files unrelated to the chosen profile.

diff --git a/package/boot/uboot-sunxi/Makefile b/package/boot/uboot-sunxi/Makefile
index 14ba922..9032600 100644
--- a/package/boot/uboot-sunxi/Makefile
+++ b/package/boot/uboot-sunxi/Makefile
@@ -6,6 +6,7 @@
 #
 
 include $(TOPDIR)/rules.mk
+include $(INCLUDE_DIR)/kernel.mk
 
 PKG_NAME:=u-boot
 PKG_VERSION:=2015.01
@@ -16,7 +17,7 @@ PKG_SOURCE_URL:= \
 
 PKG_MD5SUM:=7f08dc9e98a71652bd6968888ed6ec95
 
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION)
+PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION)
 
 PKG_LICENSE:=GPL-2.0 GPL-2.0+
 PKG_LICENSE_FILES:=Licenses/README
@@ -136,16 +137,16 @@ define Build/Compile
 endef
 
 define Package/uboot/install/default
-	$(INSTALL_DIR) $(BIN_DIR)/uboot-$(BOARD)-$(1)
 	$(CP) $(PKG_BUILD_DIR)/u-boot.bin \
-		$(BIN_DIR)/uboot-$(BOARD)-$(1)/openwrt-$(BOARD)-$(1)-u-boot.bin
+		$(KERNEL_BUILD_DIR)/uboot-$(BOARD)-$(1)-u-boot.bin
 	$(CP) $(PKG_BUILD_DIR)/spl/sunxi-spl.bin \
-		$(BIN_DIR)/uboot-$(BOARD)-$(1)/openwrt-$(BOARD)-$(1)-spl.bin
+		$(KERNEL_BUILD_DIR)/uboot-$(BOARD)-$(1)-spl.bin
 	$(CP) $(PKG_BUILD_DIR)/u-boot-sunxi-with-spl.bin \
-		$(BIN_DIR)/uboot-$(BOARD)-$(1)/openwrt-$(BOARD)-$(1)-u-boot-with-spl.bin
+		$(KERNEL_BUILD_DIR)/uboot-$(BOARD)-$(1)-u-boot-with-spl.bin
 	$(CP) uEnv.txt \
-		$(BIN_DIR)/uboot-$(BOARD)-$(1)/openwrt-$(BOARD)-$(1)-uEnv.txt
-	mkimage -C none -A arm -T script -d $(BIN_DIR)/uboot-$(BOARD)-$(1)/openwrt-$(BOARD)-$(1)-uEnv.txt $(BIN_DIR)/uboot-$(BOARD)-$(1)/openwrt-$(BOARD)-$(1)-boot.scr
+		$(KERNEL_BUILD_DIR)/uboot-$(BOARD)-$(1)-uEnv.txt
+	mkimage -C none -A arm -T script -d $(KERNEL_BUILD_DIR)/uboot-$(BOARD)-$(1)-uEnv.txt \
+		$(KERNEL_BUILD_DIR)/uboot-$(BOARD)-$(1)-boot.scr
 endef
 
 define Package/uboot/install/template
diff --git a/target/linux/sunxi/image/Makefile b/target/linux/sunxi/image/Makefile
index 6fcd61f..19ab935 100644
--- a/target/linux/sunxi/image/Makefile
+++ b/target/linux/sunxi/image/Makefile
@@ -11,28 +11,12 @@ include $(INCLUDE_DIR)/host.mk
 FAT32_BLOCK_SIZE=1024
 FAT32_BLOCKS=$(shell echo $$(($(CONFIG_SUNXI_SD_BOOT_PARTSIZE)*1024*1024/$(FAT32_BLOCK_SIZE))))
 
-BOARDS:= \
-	sun4i-a10-cubieboard \
-	sun4i-a10-olinuxino-lime \
-	sun4i-a10-pcduino \
-	sun5i-a13-olinuxino \
-	sun6i-a31-colombus \
-	sun6i-a31-m9 \
-	sun7i-a20-bananapi \
-	sun7i-a20-bananapro \
-	sun7i-a20-cubieboard2 \
-	sun7i-a20-cubietruck \
-	sun7i-a20-olinuxino-lime \
-	sun7i-a20-olinuxino-micro \
-	sun7i-a20-pcduino3 \
-	sun7i-a20-lamobo-r1
-
 define Image/BuildKernel
 	mkimage -A arm -O linux -T kernel -C none \
 		-a 0x40008000 -e 0x40008000 \
 		-n 'ARM OpenWrt Linux-$(LINUX_VERSION)' \
 		-d $(KDIR)/zImage $(BIN_DIR)/$(IMG_PREFIX)-uImage
-	
+
     ifneq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),)
 	$(CP) $(KDIR)/zImage-initramfs $(BIN_DIR)/$(IMG_PREFIX)-zImage-initramfs
 	echo -ne '\x00\x00\x00\x00' >> $(BIN_DIR)/$(IMG_PREFIX)-zImage-initramfs
@@ -42,27 +26,23 @@ define Image/BuildKernel
 		$(BIN_DIR)/$(IMG_PREFIX)-uImage-initramfs \
 	)
     endif
-
-	$(foreach board,$(BOARDS),
-		$(CP) $(DTS_DIR)/$(board).dtb $(BIN_DIR)/
-	)
 endef
 
 define Image/Build/SDCard
 	rm -f $(KDIR)/boot.img
 	mkdosfs $(KDIR)/boot.img -C $(FAT32_BLOCKS)
-	
-	mcopy -i $(KDIR)/boot.img $(BIN_DIR)/uboot-sunxi-$(PROFILE)/$(IMG_PREFIX)-$(PROFILE)-boot.scr ::boot.scr
-	mcopy -i $(KDIR)/boot.img $(BIN_DIR)/$(2).dtb ::dtb
+
+	mcopy -i $(KDIR)/boot.img $(KDIR)/uboot-sunxi-$(PROFILE)-boot.scr ::boot.scr
+	mcopy -i $(KDIR)/boot.img $(DTS_DIR)/$(2).dtb ::dtb
 	mcopy -i $(KDIR)/boot.img $(BIN_DIR)/$(IMG_PREFIX)-uImage ::uImage
-	
+
 	./gen_sunxi_sdcard_img.sh \
 		$(BIN_DIR)/$(IMG_PREFIX)-$(PROFILE)-sdcard-vfat-$(1).img \
 		$(KDIR)/boot.img \
 		$(KDIR)/root.$(1) \
 		$(CONFIG_SUNXI_SD_BOOT_PARTSIZE) \
 		$(CONFIG_TARGET_ROOTFS_PARTSIZE) \
-		$(BIN_DIR)/uboot-sunxi-$(PROFILE)/$(IMG_PREFIX)-$(PROFILE)-u-boot-with-spl.bin
+		$(KDIR)/uboot-sunxi-$(PROFILE)-u-boot-with-spl.bin
 endef
 
 define Image/Build/Profile/A10-OLinuXino-Lime
@@ -124,7 +104,7 @@ endef
 define Image/Build
 	$(call Image/Build/$(1),$(1))
 	$(call Image/Build/Profile/$(PROFILE),$(1))
-	
+
 	dd if=$(KDIR)/root.$(1) of=$(BIN_DIR)/$(IMG_PREFIX)-root.$(1) bs=128k conv=sync
 endef
 
+0 −21
Original line number Original line Diff line number Diff line
From: Matthias Schiffer <mschiffer@universe-factory.net>
Date: Thu, 16 Jul 2015 22:13:59 +0200
Subject: sunxi: respect CONFIG_TARGET_IMAGES_GZIP

The ext4 images are huge uncompressed.

diff --git a/target/linux/sunxi/image/Makefile b/target/linux/sunxi/image/Makefile
index 19ab935..d3f4409 100644
--- a/target/linux/sunxi/image/Makefile
+++ b/target/linux/sunxi/image/Makefile
@@ -43,6 +43,10 @@ define Image/Build/SDCard
 		$(CONFIG_SUNXI_SD_BOOT_PARTSIZE) \
 		$(CONFIG_TARGET_ROOTFS_PARTSIZE) \
 		$(KDIR)/uboot-sunxi-$(PROFILE)-u-boot-with-spl.bin
+
+  ifneq ($(CONFIG_TARGET_IMAGES_GZIP),)
+	gzip -f9n $(BIN_DIR)/$(IMG_PREFIX)-$(PROFILE)-sdcard-vfat-$(1).img
+  endif
 endef
 
 define Image/Build/Profile/A10-OLinuXino-Lime
+0 −62
Original line number Original line Diff line number Diff line
From: Matthias Schiffer <mschiffer@universe-factory.net>
Date: Sat, 18 Jul 2015 17:13:23 +0200
Subject: odhcp6c: add option "sourcefilter" to disable source filter

Signed-off-by: Steven Barth <steven@midlink.org>

diff --git a/package/network/ipv6/odhcp6c/Makefile b/package/network/ipv6/odhcp6c/Makefile
index 5bf43bd..75de54c 100644
--- a/package/network/ipv6/odhcp6c/Makefile
+++ b/package/network/ipv6/odhcp6c/Makefile
@@ -8,7 +8,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=odhcp6c
-PKG_VERSION:=2015-07-13
+PKG_VERSION:=2015-07-18
 PKG_RELEASE=$(PKG_SOURCE_VERSION)
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
diff --git a/package/network/ipv6/odhcp6c/files/dhcpv6.script b/package/network/ipv6/odhcp6c/files/dhcpv6.script
index b8cbddb..33f6d9b 100755
--- a/package/network/ipv6/odhcp6c/files/dhcpv6.script
+++ b/package/network/ipv6/odhcp6c/files/dhcpv6.script
@@ -76,7 +76,7 @@ setup_interface () {
 	done
 
 	for entry in $RA_ROUTES; do
-		local duplicate=0
+		local duplicate=$NOSOURCEFILTER
 		local addr="${entry%%/*}"
 		entry="${entry#*/}"
 		local mask="${entry%%,*}"
diff --git a/package/network/ipv6/odhcp6c/files/dhcpv6.sh b/package/network/ipv6/odhcp6c/files/dhcpv6.sh
index adcb100..4a453fd 100755
--- a/package/network/ipv6/odhcp6c/files/dhcpv6.sh
+++ b/package/network/ipv6/odhcp6c/files/dhcpv6.sh
@@ -28,14 +28,15 @@ proto_dhcpv6_init_config() {
 	proto_config_add_boolean delegate
 	proto_config_add_int "soltimeout"
 	proto_config_add_boolean fakeroutes
+	proto_config_add_boolean sourcefilter
 }
 
 proto_dhcpv6_setup() {
 	local config="$1"
 	local iface="$2"
 
-	local reqaddress reqprefix clientid reqopts noslaaconly forceprefix norelease ip6prefix iface_dslite iface_map iface_464xlat ifaceid userclass vendorclass delegate zone_dslite zone_map zone_464xlat zone soltimeout fakeroutes
-	json_get_vars reqaddress reqprefix clientid reqopts noslaaconly forceprefix norelease ip6prefix iface_dslite iface_map iface_464xlat ifaceid userclass vendorclass delegate zone_dslite zone_map zone_464xlat zone soltimeout fakeroutes
+	local reqaddress reqprefix clientid reqopts noslaaconly forceprefix norelease ip6prefix iface_dslite iface_map iface_464xlat ifaceid userclass vendorclass delegate zone_dslite zone_map zone_464xlat zone soltimeout fakeroutes sourcefilter
+	json_get_vars reqaddress reqprefix clientid reqopts noslaaconly forceprefix norelease ip6prefix iface_dslite iface_map iface_464xlat ifaceid userclass vendorclass delegate zone_dslite zone_map zone_464xlat zone soltimeout fakeroutes sourcefilter
 
 
 	# Configure
@@ -76,6 +77,7 @@ proto_dhcpv6_setup() {
 	[ -n "$zone_464xlat" ] && proto_export "ZONE_464XLAT=$zone_464xlat"
 	[ -n "$zone" ] && proto_export "ZONE=$zone"
 	[ "$fakeroutes" != "0" ] && proto_export "FAKE_ROUTES=1"
+	[ "$sourcefilter" = "0" ] && proto_export "NOSOURCEFILTER=1"
 
 	proto_export "INTERFACE=$config"
 	proto_run_command "$config" odhcp6c \
+25 −0
Original line number Original line Diff line number Diff line
From: Alexander Dahl <alex@netz39.de>
Date: Thu, 17 Mar 2016 15:04:09 +0100
Subject: x86: fix platform_export_bootpart() for Xen virtual disks

Virtual disk devices in a Xen virtual machine (DomU) can be /dev/xvda,
/dev/xvdb and so on with partitions like /dev/xdva1. Devices named like
this where not considered before. This resulted in a non working
sysupgrade, because the boot partition could not be found.

Signed-off-by: Alexander Dahl <alex@netz39.de>
Suggested-by: Matthias Schiffer <mschiffer@universe-factory.net>

diff --git a/target/linux/x86/base-files/lib/upgrade/platform.sh b/target/linux/x86/base-files/lib/upgrade/platform.sh
index 73ab5ef..adc119c 100644
--- a/target/linux/x86/base-files/lib/upgrade/platform.sh
+++ b/target/linux/x86/base-files/lib/upgrade/platform.sh
@@ -17,7 +17,7 @@ platform_export_bootpart() {
 			PARTUUID=[a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9]-02)
 				uuid="${disk#PARTUUID=}"
 				uuid="${uuid%-02}"
-				for disk in /dev/[hsv]d[a-z]; do
+				for disk in /dev/[hsv]d[a-z] /dev/xvd[a-z]; do
 					set -- $(dd if=$disk bs=1 skip=440 count=4 2>/dev/null | hexdump -v -e '4/1 "%02x "')
 					if [ "$4$3$2$1" = "$uuid" ]; then
 						export BOOTPART="${disk}1"
+27 −0
Original line number Original line Diff line number Diff line
From: Matthias Schiffer <mschiffer@universe-factory.net>
Date: Wed, 30 Mar 2016 02:59:19 +0200
Subject: Support LibreSSL as provider of openssl

The build scripts check for openssl by grepping the string "OpenSSL" in
the output of openssl version command. LibreSSL fails this test as it
outputs something like "LibreSSL 2.2.4". This patch fix the
prereq-bulid.mk file so that it accepts LibreSSL as openssl provider as
well.

Signed-off-by: Marek Behun <kabel@blackhole.sk>

Backport of r48267

diff --git a/include/prereq-build.mk b/include/prereq-build.mk
index 32c4ada..f36d57c 100644
--- a/include/prereq-build.mk
+++ b/include/prereq-build.mk
@@ -151,7 +151,7 @@ $(eval $(call SetupHostCommand,file,Please install the 'file' package, \
 	file --version 2>&1 | grep file))
 
 $(eval $(call SetupHostCommand,openssl,Please install the 'openssl' utility, \
-	openssl version | grep OpenSSL))
+	openssl version | grep '\(OpenSSL\|LibreSSL\)'))
 
 
 # Install ldconfig stub
+0 −26
Original line number Original line Diff line number Diff line
From: Matthias Schiffer <mschiffer@universe-factory.net>
Date: Thu, 23 Jul 2015 01:31:05 +0200
Subject: ar71xx: fix wndr3700_board_detect for some NETGEAR WNDR3700v2

There are a few NETGEAR devices which don't terminate the model name in the
ART with a NUL byte, at least some NETGEAR WNDR3700v2. The current awk
expression doesn't match 0xFF bytes, so AR71XX_MODEL contains lots of
trailing 0xFF garbage in this case.

Fix this by matching for the first non-printable character and explicitly
setting LC_CTYPE=C (probably not strictly necessary on OpenWrt, but will
definitely work like this, even when awk supports locales and LANG is set).

diff --git a/target/linux/ar71xx/base-files/lib/ar71xx.sh b/target/linux/ar71xx/base-files/lib/ar71xx.sh
index 839abc7..af92b01 100755
--- a/target/linux/ar71xx/base-files/lib/ar71xx.sh
+++ b/target/linux/ar71xx/base-files/lib/ar71xx.sh
@@ -38,7 +38,7 @@ wndr3700_board_detect() {
 		;;
 	"33373031")
 		# Use awk to remove everything after the first zero byte
-		model="$(ar71xx_get_mtd_offset_size_format art 41 32 %c | awk 'BEGIN{FS="[[:cntrl:]]"} {print $1; exit}')"
+		model="$(ar71xx_get_mtd_offset_size_format art 41 32 %c | LC_CTYPE=C awk -v 'FS=[^[:print:]]' '{print $1; exit}')"
 		case $model in
 		$'\xff'*)
 			if [ "${model:24:1}" = 'N' ]; then
+0 −47
Original line number Original line Diff line number Diff line
From: Nils Schneider <nils@nilsschneider.net>
Date: Fri, 24 Jul 2015 21:52:12 +0200
Subject: mac80211: set mcast-rate for mesh point interfaces

In order to set the multicast rate for mesh point interfaces the "mesh join"
was made explicit and moved to mac80211_setup_vif(), similar to how it is
done for IBSS interfaces.

Previously, the mesh join was made implicit in case authentication (i.e.
$key) was not used when creating the interface in mac80211_prepare_vif(),
while using authentication would create the interface first, then join
later in mac80211_setup_vif() by starting authsae.

Signed-off-by: Nils Schneider <nils@nilsschneider.net>

diff --git a/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh b/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh
index 2a8d2f9..8d31a80 100644
--- a/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh
+++ b/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh
@@ -455,12 +455,7 @@ mac80211_prepare_vif() {
 			}
 		;;
 		mesh)
-			json_get_vars key mesh_id
-			if [ -n "$key" ]; then
-				iw phy "$phy" interface add "$ifname" type mp
-			else
-				iw phy "$phy" interface add "$ifname" type mp mesh_id "$mesh_id"
-			fi
+			iw phy "$phy" interface add "$ifname" type mp
 		;;
 		monitor)
 			iw phy "$phy" interface add "$ifname" type monitor
@@ -603,6 +598,13 @@ mac80211_setup_vif() {
 					wireless_vif_parse_encryption
 					mac80211_setup_supplicant || failed=1
 				fi
+			else
+				json_get_vars mesh_id mcast_rate
+
+				mcval=
+				[ -n "$mcast_rate" ] && wpa_supplicant_add_rate mcval "$mcast_rate"
+
+				iw dev "$ifname" mesh join "$mesh_id" ${mcval:+mcast-rate $mcval}
 			fi
 
 			for var in $MP_CONFIG_INT $MP_CONFIG_BOOL $MP_CONFIG_STRING; do
+81 −0
Original line number Original line Diff line number Diff line
From: Matthias Schiffer <mschiffer@universe-factory.net>
Date: Sun, 24 Apr 2016 08:44:30 +0200
Subject: tools: add tar host build, required for --sort=name which was only added in the latest version

Signed-off-by: Felix Fietkau <nbd@openwrt.org>

Backport of r46876

diff --git a/tools/Makefile b/tools/Makefile
index c6cded8..98ce8c5 100644
--- a/tools/Makefile
+++ b/tools/Makefile
@@ -81,6 +81,9 @@ endif
 # dependency for tools which have patches directory
 $(foreach tool, $(tools-y), $(if $(wildcard $(curdir)/$(tool)/patches),$(eval $(curdir)/$(tool)/compile += $(curdir)/patch/install)))
 
+$(foreach tool, $(tools-y), $(eval $(curdir)/$(tool)/compile += $(curdir)/tar/install))
+tools-y += tar
+
 $(curdir)/builddirs := $(tools-y) $(tools-dep) $(tools-)
 $(curdir)/builddirs-default := $(tools-y)
 
diff --git a/tools/tar/Makefile b/tools/tar/Makefile
new file mode 100644
index 0000000..975e783
--- /dev/null
+++ b/tools/tar/Makefile
@@ -0,0 +1,30 @@
+#
+# Copyright (C) 2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=tar
+PKG_VERSION:=1.28
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
+PKG_SOURCE_URL:=@GNU/tar
+PKG_MD5SUM:=49b6306167724fe48f419a33a5beb857
+
+HOST_BUILD_PARALLEL := 1
+
+include $(INCLUDE_DIR)/host-build.mk
+
+HOSTCC := $(HOSTCC_NOCACHE)
+HOSTCXX := $(HOSTCXX_NOCACHE)
+
+HOST_CONFIGURE_ARGS += \
+	--without-posix-acls \
+	--without-selinux \
+	--without-xattrs \
+	--disable-acl \
+	--disable-nls
+
+$(eval $(call HostBuild))
diff --git a/tools/tar/patches/100-fix_xattr_disable.patch b/tools/tar/patches/100-fix_xattr_disable.patch
new file mode 100644
index 0000000..5735bd2
--- /dev/null
+++ b/tools/tar/patches/100-fix_xattr_disable.patch
@@ -0,0 +1,17 @@
+--- a/lib/xattr-at.c
++++ b/lib/xattr-at.c
+@@ -18,6 +18,8 @@
+ 
+ #include <config.h>
+ 
++#ifdef HAVE_XATTRS
++
+ #include "xattr-at.h"
+ #include "openat.h"
+ 
+@@ -108,3 +110,5 @@
+ #undef AT_FUNC_RESULT
+ #undef AT_FUNC_POST_FILE_PARAM_DECLS
+ #undef AT_FUNC_POST_FILE_ARGS
++
++#endif
+0 −57
Original line number Original line Diff line number Diff line
From: Matthias Schiffer <mschiffer@universe-factory.net>
Date: Thu, 6 Aug 2015 03:01:38 +0200
Subject: ar71xx: fix ethernet initialization on QCA953x-based boards (TP-Link TL-WR841N/ND v9, Compex WPJ531)

The initialization routines for these boards were relying on some (wrong)
defaults for the QCA953x ethernet. Make these defaults explicit to prevent
breaking them when the QCA953x defaults are fixed.

Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>

diff --git a/target/linux/ar71xx/files/arch/mips/ath79/mach-tl-wr841n-v9.c b/target/linux/ar71xx/files/arch/mips/ath79/mach-tl-wr841n-v9.c
index c28afc6..3e5c2a2 100644
--- a/target/linux/ar71xx/files/arch/mips/ath79/mach-tl-wr841n-v9.c
+++ b/target/linux/ar71xx/files/arch/mips/ath79/mach-tl-wr841n-v9.c
@@ -109,12 +109,18 @@ static void __init tl_ap143_setup(void)
 	ath79_register_mdio(0, 0x0);
 
 	/* LAN */
+	ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_GMII;
+	ath79_eth1_data.duplex = DUPLEX_FULL;
+	ath79_switch_data.phy_poll_mask |= BIT(4);
 	ath79_init_mac(ath79_eth1_data.mac_addr, mac, 0);
 	ath79_register_eth(1);
 
 	/* WAN */
 	ath79_switch_data.phy4_mii_en = 1;
 	ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII;
+	ath79_eth0_data.duplex = DUPLEX_FULL;
+	ath79_eth0_data.speed = SPEED_100;
+	ath79_eth0_data.phy_mask = BIT(4);
 	ath79_init_mac(ath79_eth0_data.mac_addr, mac, 1);
 	ath79_register_eth(0);
 
diff --git a/target/linux/ar71xx/files/arch/mips/ath79/mach-wpj531.c b/target/linux/ar71xx/files/arch/mips/ath79/mach-wpj531.c
index bc13d70..e665a2e 100644
--- a/target/linux/ar71xx/files/arch/mips/ath79/mach-wpj531.c
+++ b/target/linux/ar71xx/files/arch/mips/ath79/mach-wpj531.c
@@ -105,12 +105,19 @@ static void __init common_setup(void)
 	ath79_register_mdio(0, 0x0);
 
 	/* LAN */
+	ath79_eth0_data.duplex = DUPLEX_FULL;
+	ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII;
+	ath79_eth0_data.speed = SPEED_100;
+	ath79_eth0_data.phy_mask = BIT(4);
 	ath79_init_mac(ath79_eth0_data.mac_addr, mac, 0);
 	ath79_register_eth(0);
 
 	/* WAN */
 	ath79_switch_data.phy4_mii_en = 1;
+	ath79_eth1_data.duplex = DUPLEX_FULL;
 	ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_MII;
+	ath79_eth1_data.speed = SPEED_100;
+	ath79_switch_data.phy_poll_mask |= BIT(4);
 	ath79_init_mac(ath79_eth1_data.mac_addr, mac, 1);
 	ath79_register_eth(1);
 
+31 −0
Original line number Original line Diff line number Diff line
From: Matthias Schiffer <mschiffer@universe-factory.net>
Date: Sun, 24 Apr 2016 08:44:47 +0200
Subject: tools: compile flock before everything else

Signed-off-by: Felix Fietkau <nbd@openwrt.org>

Backport of r48413

diff --git a/tools/Makefile b/tools/Makefile
index 98ce8c5..3402c08 100644
--- a/tools/Makefile
+++ b/tools/Makefile
@@ -26,7 +26,7 @@ endif
 tools-$(BUILD_TOOLCHAIN) += gmp mpfr mpc libelf
 tools-y += m4 libtool autoconf automake flex bison pkg-config sed mklibs
 tools-y += sstrip make-ext4fs e2fsprogs mtd-utils mkimage
-tools-y += firmware-utils patch-image patch quilt yaffs2 flock padjffs2
+tools-y += firmware-utils patch-image patch quilt yaffs2 padjffs2
 tools-y += mm-macros missing-macros xz cmake scons bc findutils gengetopt patchelf
 tools-$(CONFIG_TARGET_orion_generic) += wrt350nv2-builder upslug2
 tools-$(CONFIG_powerpc) += upx
@@ -84,6 +84,9 @@ $(foreach tool, $(tools-y), $(if $(wildcard $(curdir)/$(tool)/patches),$(eval $(
 $(foreach tool, $(tools-y), $(eval $(curdir)/$(tool)/compile += $(curdir)/tar/install))
 tools-y += tar
 
+$(curdir)/tar/compile := $(curdir)/flock/install
+tools-y += flock
+
 $(curdir)/builddirs := $(tools-y) $(tools-dep) $(tools-)
 $(curdir)/builddirs-default := $(tools-y)
 
+0 −909

File deleted.

Preview size limit exceeded, changes collapsed.

+32 −0
Original line number Original line Diff line number Diff line
From: Matthias Schiffer <mschiffer@universe-factory.net>
Date: Sun, 24 Apr 2016 08:45:44 +0200
Subject: rules.mk: make the locked template available even if flock has not been built yet (fall back to unlocked shell command)

Signed-off-by: Felix Fietkau <nbd@openwrt.org>

Backport of r48414

diff --git a/rules.mk b/rules.mk
index 9d0134d..ece5026 100644
--- a/rules.mk
+++ b/rules.mk
@@ -310,12 +310,16 @@ endef
 # Execute commands under flock
 # $(1) => The shell expression.
 # $(2) => The lock name. If not given, the global lock will be used.
-define locked
+ifneq ($(wildcard $(STAGING_DIR_HOST)/bin/flock),)
+  define locked
 	SHELL= \
-	$(STAGING_DIR_HOST)/bin/flock \
+	flock \
 		$(TMP_DIR)/.$(if $(2),$(strip $(2)),global).flock \
 		-c '$(subst ','\'',$(1))'
-endef
+  endef
+else
+  locked=$(1)
+endif
 
 # Recursively copy paths into another directory, purge dangling
 # symlinks before.
+0 −44
Original line number Original line Diff line number Diff line
From: Matthias Schiffer <mschiffer@universe-factory.net>
Date: Fri, 7 Aug 2015 18:45:42 +0200
Subject: base-files: default_postinst: propagate the real postinst return code

Using the postinst script for sanity checks and expecting opkg to fail
if the postinst didn't return 0 was possible in Barrier Breaker, propagate
the real postinst return code through default_postinst to restore this
behaviour.

diff --git a/package/base-files/files/lib/functions.sh b/package/base-files/files/lib/functions.sh
index 8d045fa..2f78d67 100755
--- a/package/base-files/files/lib/functions.sh
+++ b/package/base-files/files/lib/functions.sh
@@ -174,7 +174,8 @@ default_prerm() {
 }
 
 default_postinst() {
-	local pkgname rusers
+	local pkgname rusers ret
+	ret=0
 	pkgname=$(basename ${1%.*})
 	rusers=$(grep "Require-User:" ${IPKG_INSTROOT}/usr/lib/opkg/info/${pkgname}.control)
 	[ -n "$rusers" ] && {
@@ -215,7 +216,10 @@ default_postinst() {
 		done
 	}
 
-	[ -f ${IPKG_INSTROOT}/usr/lib/opkg/info/${pkgname}.postinst-pkg ] && ( . ${IPKG_INSTROOT}/usr/lib/opkg/info/${pkgname}.postinst-pkg )
+	if [ -f ${IPKG_INSTROOT}/usr/lib/opkg/info/${pkgname}.postinst-pkg ]; then
+		( . ${IPKG_INSTROOT}/usr/lib/opkg/info/${pkgname}.postinst-pkg )
+		ret=$?
+	fi
 	[ -n "${IPKG_INSTROOT}" ] || rm -f /tmp/luci-indexcache 2>/dev/null
 
 	[ "$PKG_UPGRADE" = "1" ] || for i in `cat ${IPKG_INSTROOT}/usr/lib/opkg/info/${pkgname}.list | grep "^/etc/init.d/"`; do
@@ -225,7 +229,7 @@ default_postinst() {
 			$i start
 		}
 	done
-	return 0
+	return $ret
 }
 
 include() {
+20 −0
Original line number Original line Diff line number Diff line
From: Matthias Schiffer <mschiffer@universe-factory.net>
Date: Sun, 24 Apr 2016 08:48:45 +0200
Subject: build: add locking for downloads (fixes race conditions with multiple variants)

Signed-off-by: Felix Fietkau <nbd@openwrt.org>

Backport of r48416

diff --git a/include/download.mk b/include/download.mk
index e518cce..9176b11 100644
--- a/include/download.mk
+++ b/include/download.mk
@@ -182,6 +182,6 @@ define Download
 
   $(DL_DIR)/$(FILE):
 	mkdir -p $(DL_DIR)
-	$(if $(DownloadMethod/$(call dl_method,$(URL),$(PROTO))),$(DownloadMethod/$(call dl_method,$(URL),$(PROTO))),$(DownloadMethod/unknown))
+	$(call locked,$(if $(DownloadMethod/$(call dl_method,$(URL),$(PROTO))),$(DownloadMethod/$(call dl_method,$(URL),$(PROTO))),$(DownloadMethod/unknown)),$(FILE))
 
 endef
+26 −0
Original line number Original line Diff line number Diff line
From: Matthias Schiffer <mschiffer@universe-factory.net>
Date: Sun, 24 Apr 2016 08:49:27 +0200
Subject: download.mk: fix packed checkout mirroring support

Changeset r48416  broke the downloading of mirrored, packed scm checkouts.

Fix this by removing the "@" sign in front of the download command which is
now executed as part of a larger shell command under flock.

Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>

Backport of r48733

diff --git a/include/download.mk b/include/download.mk
index 9176b11..130bbc5 100644
--- a/include/download.mk
+++ b/include/download.mk
@@ -48,7 +48,7 @@ define DownloadMethod/default
 endef
 
 define wrap_mirror
-	$(if $(if $(MIRROR),$(filter-out x,$(MIRROR_MD5SUM))),@$(SCRIPT_DIR)/download.pl "$(DL_DIR)" "$(FILE)" "$(MIRROR_MD5SUM)" "" || ( $(1) ),$(1))
+$(if $(if $(MIRROR),$(filter-out x,$(MIRROR_MD5SUM))),$(SCRIPT_DIR)/download.pl "$(DL_DIR)" "$(FILE)" "$(MIRROR_MD5SUM)" "" || ( $(1) ),$(1))
 endef
 
 define DownloadMethod/cvs
+0 −22
Original line number Original line Diff line number Diff line
From: Matthias Schiffer <mschiffer@universe-factory.net>
Date: Fri, 28 Aug 2015 10:43:55 +0200
Subject: opkg: work around unconditional libopenssl build dependency

As the OpenWrt build system only resolves build dependencies per directory,
all opkg variants were causing libopenssl to be downloaded and built,
not only opkg-smime. Fix this by applying the same workaround as in
ustream-ssl.

diff --git a/package/system/opkg/Makefile b/package/system/opkg/Makefile
index 76688f5..3e39cf8 100644
--- a/package/system/opkg/Makefile
+++ b/package/system/opkg/Makefile
@@ -72,7 +72,7 @@ endef
 define Package/opkg-smime
   $(call Package/opkg/Default)
   TITLE+= (with S/MIME signature support)
-  DEPENDS+=+libopenssl
+  DEPENDS+=+PACKAGE_opkg-smime:libopenssl
   VARIANT:=smime
 endef
 
+0 −22
Original line number Original line Diff line number Diff line
From: Matthias Schiffer <mschiffer@universe-factory.net>
Date: Fri, 28 Aug 2015 10:46:11 +0200
Subject: hostapd: work around unconditional libopenssl build dependency

As the OpenWrt build system only resolves build dependencies per directory,
all hostapd variants were causing libopenssl to be downloaded and built,
not only wpad-mesh. Fix this by applying the same workaround as in
ustream-ssl.

diff --git a/package/network/services/hostapd/Makefile b/package/network/services/hostapd/Makefile
index c16cb11..c39b6b4 100644
--- a/package/network/services/hostapd/Makefile
+++ b/package/network/services/hostapd/Makefile
@@ -177,7 +177,7 @@ endef
 define Package/wpad-mesh
 $(call Package/wpad/Default)
   TITLE+= (with 802.11s mesh and SAE support)
-  DEPENDS:=$(DRV_DEPENDS) +libubus +libopenssl +@CONFIG_WPA_SUPPLICANT_OPENSSL @(!TARGET_uml||BROKEN)
+  DEPENDS:=$(DRV_DEPENDS) +libubus +PACKAGE_wpad-mesh:libopenssl +@CONFIG_WPA_SUPPLICANT_OPENSSL @(!TARGET_uml||BROKEN)
   CONFLICTS:=@WPA_SUPPLICANT_INTERNAL
   VARIANT:=wpad-mesh
 endef
+182 −0

File added.

Preview size limit exceeded, changes collapsed.

+0 −77

File deleted.

Preview size limit exceeded, changes collapsed.

+37 −0
Original line number Original line Diff line number Diff line
From: Matthias Schiffer <mschiffer@universe-factory.net>
Date: Sun, 8 May 2016 15:53:14 +0200
Subject: tools: pkg-config: fix build with GCC 6

Fixes the following error:

gdate.c: In function ‘g_date_strftime’:
gdate.c:2497:7: error: format not a string literal, format string not checked [-Werror=format-nonliteral]
       tmplen = strftime (tmpbuf, tmpbufsize, locale_format, &tm);
       ^~~~~~

Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>

diff --git a/tools/pkg-config/patches/001-glib-gdate-suppress-string-format-literal-warning.patch b/tools/pkg-config/patches/001-glib-gdate-suppress-string-format-literal-warning.patch
new file mode 100644
index 0000000..6849299
--- /dev/null
+++ b/tools/pkg-config/patches/001-glib-gdate-suppress-string-format-literal-warning.patch
@@ -0,0 +1,18 @@
+--- a/glib/glib/gdate.c
++++ b/glib/glib/gdate.c
+@@ -2439,6 +2439,9 @@ win32_strftime_helper (const GDate     *d,
+  *
+  * Returns: number of characters written to the buffer, or 0 the buffer was too small
+  */
++#pragma GCC diagnostic push
++#pragma GCC diagnostic ignored "-Wformat-nonliteral"
++
+ gsize     
+ g_date_strftime (gchar       *s, 
+                  gsize        slen, 
+@@ -2549,3 +2552,5 @@ g_date_strftime (gchar       *s,
+   return retval;
+ #endif
+ }
++
++#pragma GCC diagnostic pop
+0 −31

File deleted.

Preview size limit exceeded, changes collapsed.

+144 −0

File added.

Preview size limit exceeded, changes collapsed.

+0 −40

File deleted.

Preview size limit exceeded, changes collapsed.

+2096 −0

File added.

Preview size limit exceeded, changes collapsed.

+56 −0

File added.

Preview size limit exceeded, changes collapsed.

+0 −107

File deleted.

Preview size limit exceeded, changes collapsed.

+24 −0

File added.

Preview size limit exceeded, changes collapsed.

+48 −0

File added.

Preview size limit exceeded, changes collapsed.

+0 −181

File deleted.

Preview size limit exceeded, changes collapsed.

+30 −0

File added.

Preview size limit exceeded, changes collapsed.

+38 −0

File added.

Preview size limit exceeded, changes collapsed.

+0 −35

File deleted.

Preview size limit exceeded, changes collapsed.

+0 −25

File deleted.

Preview size limit exceeded, changes collapsed.

+0 −197

File deleted.

Preview size limit exceeded, changes collapsed.

+0 −20

File deleted.

Preview size limit exceeded, changes collapsed.

+0 −17

File deleted.

Preview size limit exceeded, changes collapsed.

+0 −24

File deleted.

Preview size limit exceeded, changes collapsed.

+0 −29

File deleted.

Preview size limit exceeded, changes collapsed.

+0 −87

File deleted.

Preview size limit exceeded, changes collapsed.

+0 −17

File deleted.

Preview size limit exceeded, changes collapsed.

+1 −1

File changed.

Preview size limit exceeded, changes collapsed.

+49 −0

File added.

Preview size limit exceeded, changes collapsed.

+19 −9

File changed.

Preview size limit exceeded, changes collapsed.

scripts/unpatch.sh

deleted100755 → 0
+0 −10

File deleted.

Preview size limit exceeded, changes collapsed.

+3 −1

File changed.

Preview size limit exceeded, changes collapsed.

+5 −2

File changed.

Preview size limit exceeded, changes collapsed.

+83 −5

File changed.

Preview size limit exceeded, changes collapsed.