[PATCH] babeld: Add pending patch for src_plen assignments

Fabian Bläse fabian at blaese.de
So Nov 10 01:24:38 CET 2019


Hallo Adrian,

gefällt mir,
Reviewed-by: Fabian Bläse <fabian at blaese.de>

Etwas kosmetisches hab ich aber noch: Mir gefällt die Versionsnummer irgendwie nicht.
Es ist ja ein babeld, kein openwrt.

Ich würde folgendes vorschlagen: babeld-$(PKG_VERSION)+openwrt$(PKG_RELEASE)
Wenn du damit einverstanden bist, würd ich das auch einfach fix beim applien anpassen, da sich bisher sonst keiner zu diesem Patch geäußert hat.

Gruß
Fabian

On 02.10.19 00:11, Adrian Schmutzler wrote:
> This introduces the pending upstream fix and a patch to change
> babeld version.
> 
> This applies the naming scheme as for batman-adv:
> 
> openwrt-PKG_VERSION-PKG_REVISION
> 
> e.g. openwrt-1.9.1-2
> 
> Signed-off-by: Adrian Schmutzler <freifunk at adrianschmutzler.de>
> 
> ---
> 
> The babel patches are build for the 1.9.1 as present in openwrt-19.07
> branch. Since there were some Makefile adjustments not backported to
> our firmware, I'm not 100 % sure they apply there.
> 
> I tested this with my firmware on running device.
> ---
>  ...nclude-PKG_RELEASE-in-babeld-version.patch |  32 +++++
>  .../0012-babeld-Add-src_plen-patch.patch      | 109 ++++++++++++++++++
>  2 files changed, 141 insertions(+)
>  create mode 100644 feed_patches/routing/0011-babeld-Include-PKG_RELEASE-in-babeld-version.patch
>  create mode 100644 feed_patches/routing/0012-babeld-Add-src_plen-patch.patch
> 
> diff --git a/feed_patches/routing/0011-babeld-Include-PKG_RELEASE-in-babeld-version.patch b/feed_patches/routing/0011-babeld-Include-PKG_RELEASE-in-babeld-version.patch
> new file mode 100644
> index 00000000..e85acf08
> --- /dev/null
> +++ b/feed_patches/routing/0011-babeld-Include-PKG_RELEASE-in-babeld-version.patch
> @@ -0,0 +1,32 @@
> +From a5e29f8520ba2dc65af47153980ec3401e18757b Mon Sep 17 00:00:00 2001
> +From: Adrian Schmutzler <freifunk at adrianschmutzler.de>
> +Date: Mon, 30 Sep 2019 17:09:10 +0200
> +Subject: [PATCH 1/2] babeld: Include PKG_RELEASE in babeld version
> +
> +This will account for custom patches added, as otherwise version
> +would stay the same.
> +
> +Signed-off-by: Adrian Schmutzler <freifunk at adrianschmutzler.de>
> +---
> + babeld/Makefile | 5 +++++
> + 1 file changed, 5 insertions(+)
> +
> +diff --git a/babeld/Makefile b/babeld/Makefile
> +index 022d0b8..cc266ce 100644
> +--- a/babeld/Makefile
> ++++ b/babeld/Makefile
> +@@ -48,6 +48,11 @@ MAKE_FLAGS+= \
> + 	CFLAGS="$(TARGET_CFLAGS)" \
> + 	LDLIBS="" \
> + 
> ++define Build/Configure
> ++	echo "openwrt-$(PKG_VERSION)-$(PKG_RELEASE)" > $(PKG_BUILD_DIR)/version
> ++	$(Build/Configure/Default)
> ++endef
> ++
> + define Package/babeld/install
> + 	$(INSTALL_DIR) $(1)/usr/sbin
> + 	$(INSTALL_BIN) $(PKG_BUILD_DIR)/babeld $(1)/usr/sbin/
> +-- 
> +2.20.1
> +
> diff --git a/feed_patches/routing/0012-babeld-Add-src_plen-patch.patch b/feed_patches/routing/0012-babeld-Add-src_plen-patch.patch
> new file mode 100644
> index 00000000..50352854
> --- /dev/null
> +++ b/feed_patches/routing/0012-babeld-Add-src_plen-patch.patch
> @@ -0,0 +1,109 @@
> +From 74a1488696ccc375a57236f15bcbd90e1ec76b77 Mon Sep 17 00:00:00 2001
> +From: Adrian Schmutzler <freifunk at adrianschmutzler.de>
> +Date: Mon, 30 Sep 2019 16:52:28 +0200
> +Subject: [PATCH 2/2] babeld: Add src_plen patch
> +
> +This patch is currently pending upstream.
> +
> +Babeld version (babeld -V) won't indicate the change!
> +
> +Signed-off-by: Adrian Schmutzler <freifunk at adrianschmutzler.de>
> +---
> + babeld/Makefile                               |  2 +-
> + ...nments-which-break-v4mapped-encoding.patch | 71 +++++++++++++++++++
> + 2 files changed, 72 insertions(+), 1 deletion(-)
> + create mode 100644 babeld/patches/0001-Remove-src_plen-assignments-which-break-v4mapped-encoding.patch
> +
> +diff --git a/babeld/Makefile b/babeld/Makefile
> +index cc266ce..cc1598b 100644
> +--- a/babeld/Makefile
> ++++ b/babeld/Makefile
> +@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
> + 
> + PKG_NAME:=babeld
> + PKG_VERSION:=1.9.1
> +-PKG_RELEASE:=1
> ++PKG_RELEASE:=2
> + 
> + PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
> + PKG_SOURCE_URL:=https://www.irif.fr/~jch/software/files/
> +diff --git a/babeld/patches/0001-Remove-src_plen-assignments-which-break-v4mapped-encoding.patch b/babeld/patches/0001-Remove-src_plen-assignments-which-break-v4mapped-encoding.patch
> +new file mode 100644
> +index 0000000..089e35f
> +--- /dev/null
> ++++ b/babeld/patches/0001-Remove-src_plen-assignments-which-break-v4mapped-encoding.patch
> +@@ -0,0 +1,71 @@
> ++From 36121c1e67fb5a60a35fed0faa37297cd97c9ffc Mon Sep 17 00:00:00 2001
> ++From: =?UTF-8?q?Fabian=20Bl=C3=A4se?= <fabian at blaese.de>
> ++Date: Thu, 19 Sep 2019 01:16:46 +0200
> ++Subject: [PATCH] Remove src_plen assignments which break v4mapped encoding
> ++MIME-Version: 1.0
> ++Content-Type: text/plain; charset=UTF-8
> ++Content-Transfer-Encoding: 8bit
> ++
> ++These assignments were introduced in f8bce04, probably
> ++to ensure that src_plen doesn't contain any leftovers from
> ++earlier revisions when source specific wasn't done via sub-TLVs.
> ++
> ++This however breaks v4mapped encoding as a prefix length of 0
> ++for IPv4 routes is represented as src_plen = 96. This offset is
> ++already added outside of the affected functions and therefore
> ++gets overwritten by this assignment.
> ++
> ++Both functions contain an additional check if the message contains
> ++ipv4 addresses, but as this check is only executed if the message has
> ++a source-specific sub-TLV, the offset isn't added for non source-specific
> ++routes.
> ++
> ++Because the offset is already added outside of the subtlv parsing
> ++functions, this additional check is also removed, as it would otherwise
> ++break IPv4 source specifics by adding the IPv4 offset two times.
> ++
> ++Signed-off-by: Fabian Bläse <fabian at blaese.de>
> ++---
> ++ message.c | 8 --------
> ++ 1 file changed, 8 deletions(-)
> ++
> ++diff --git a/message.c b/message.c
> ++index 0f6ca19d..78f9aa93 100644
> ++--- a/message.c
> +++++ b/message.c
> ++@@ -137,8 +137,6 @@ parse_update_subtlv(struct interface *ifp, int metric, int ae,
> ++         }
> ++     }
> ++ 
> ++-    *src_plen = 0;
> ++-
> ++     while(i < alen) {
> ++         type = a[i];
> ++         if(type == SUBTLV_PAD1) {
> ++@@ -170,8 +168,6 @@ parse_update_subtlv(struct interface *ifp, int metric, int ae,
> ++                                 len - 1, src_prefix);
> ++             if(rc < 0)
> ++                 goto fail;
> ++-            if(ae == 1)
> ++-                (*src_plen) += 96;
> ++         } else {
> ++             debugf("Received unknown%s Update sub-TLV %d.\n",
> ++                    (type & 0x80) != 0 ? " mandatory" : "", type);
> ++@@ -305,8 +301,6 @@ parse_request_subtlv(int ae, const unsigned char *a, int alen,
> ++ {
> ++     int type, len, i = 0;
> ++ 
> ++-    *src_plen = 0;
> ++-
> ++     while(i < alen) {
> ++         type = a[0];
> ++         if(type == SUBTLV_PAD1) {
> ++@@ -336,8 +330,6 @@ parse_request_subtlv(int ae, const unsigned char *a, int alen,
> ++                                 len - 1, src_prefix);
> ++             if(rc < 0)
> ++                 goto fail;
> ++-            if(ae == 1)
> ++-                (*src_plen) += 96;
> ++         } else {
> ++             debugf("Received unknown%s Route Request sub-TLV %d.\n",
> ++                    ((type & 0x80) != 0) ? " mandatory" : "", type);
> +-- 
> +2.20.1
> +
> 

-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : signature.asc
Dateityp    : application/pgp-signature
Dateigröße  : 833 bytes
Beschreibung: OpenPGP digital signature
URL         : <https://lists.freifunk.net/pipermail/franken-dev-freifunk.net/attachments/20191110/84c4aee7/attachment.sig>


Mehr Informationen über die Mailingliste franken-dev