babeld: Add pending patch for src_plen assignments

Submitted by Adrian Schmutzler on Oct. 1, 2019, 10:11 p.m.

Details

Message ID 20191001221123.30304-1-freifunk@adrianschmutzler.de
State New
Headers show

Commit Message

Adrian Schmutzler Oct. 1, 2019, 10:11 p.m.
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@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

Patch hide | download patch | download mbox

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@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@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@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@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@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@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
+

Comments

Fabian Blaese Oct. 2, 2019, 11:39 a.m.
Hey Adrian,

danke dafür.

Ich würde Upstream auf jeden Fall bevorzugen, falls das noch rechtzeitig fertig wird.
Bis wir es tatsächlich brauchen, würde ich mein Review gerne aufschieben..

Gruß
Fabian