From patchwork Tue Oct 1 22:11:23 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: babeld: Add pending patch for src_plen assignments From: Adrian Schmutzler X-Patchwork-Id: 1196 Message-Id: <20191001221123.30304-1-freifunk@adrianschmutzler.de> To: franken-dev@freifunk.net Date: Wed, 2 Oct 2019 00:11:23 +0200 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 Reviewed-by: Fabian Bläse --- 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 +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 +--- + 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 +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 +--- + 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?= ++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 ++--- ++ 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 +