<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <p>Hallo Adrian,</p>
    <p>schoene awk Loesung!</p>
    <pre wrap="">Reviewed-by: Robert Langhgammer <a class="moz-txt-link-rfc2396E" href="mailto:rlanghammer@web.de"><rlanghammer@web.de></a></pre>
    <br>
    <div class="moz-cite-prefix">Am 13.06.2018 um 14:45 schrieb Adrian
      Schmutzler:<br>
    </div>
    <blockquote type="cite"
      cite="mid:1528893918-8047-1-git-send-email-freifunk@adrianschmutzler.de">
      <pre wrap="">Occationally /proc/net/if_inet6 contains interface IDs with
three digits. In this case, the regex in wait_for_ll_address()
does not work anymore and alfred is not starting.

This patch changes the evaluation so that fields are used instead
of the mere position by counting characters.

This is a backport from openwrt-routing and can be removed when
updating to OpenWRT 18.06, but not for newer versions of 17.01.

Fixes #98.

Signed-off-by: Adrian Schmutzler <a class="moz-txt-link-rfc2396E" href="mailto:freifunk@adrianschmutzler.de"><freifunk@adrianschmutzler.de></a>

Tested-by: Adrian Schmutzler <a class="moz-txt-link-rfc2396E" href="mailto:freifunk@adrianschmutzler.de"><freifunk@adrianschmutzler.de></a>

---

Changes in v2:
- Use a more general version of the match in awk
---
 ...ort-interface-IDs-with-more-than-two-digi.patch | 35 ++++++++++++++++++++++
 buildscript                                        |  3 +-
 2 files changed, 37 insertions(+), 1 deletion(-)
 create mode 100644 build_patches/routing/0001-alfred-Support-interface-IDs-with-more-than-two-digi.patch

diff --git a/build_patches/routing/0001-alfred-Support-interface-IDs-with-more-than-two-digi.patch b/build_patches/routing/0001-alfred-Support-interface-IDs-with-more-than-two-digi.patch
new file mode 100644
index 0000000..163f556
--- /dev/null
+++ b/build_patches/routing/0001-alfred-Support-interface-IDs-with-more-than-two-digi.patch
@@ -0,0 +1,35 @@
+From 135bc605b4cf91d40ac97f1129a6a5a950f3ff72 Mon Sep 17 00:00:00 2001
+From: Adrian Schmutzler <a class="moz-txt-link-rfc2396E" href="mailto:freifunk@adrianschmutzler.de"><freifunk@adrianschmutzler.de></a>
+Date: Mon, 19 Mar 2018 14:16:54 +0100
+Subject: [PATCH] alfred: Support interface IDs with more than two digits
+
+Occationally /proc/net/if_inet6 contains interface IDs with
+three digits. In this case, the regex in wait_for_ll_address()
+does not work anymore and alfred is not starting.
+
+This patch changes the evaluation so that fields are used instead
+of the mere position by counting characters.
+
+Signed-off-by: Adrian Schmutzler <a class="moz-txt-link-rfc2396E" href="mailto:freifunk@adrianschmutzler.de"><freifunk@adrianschmutzler.de></a>
+---
+ alfred/files/alfred.init | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/alfred/files/alfred.init b/alfred/files/alfred.init
+index 4c9a9e19..82934368 100755
+--- a/alfred/files/alfred.init
++++ b/alfred/files/alfred.init
+@@ -46,11 +46,11 @@ wait_for_ll_address()
+       for i in $(seq $timeout); do
+               # We look for
+               # - the link-local address (starts with fe80)
+-              # - without tentative flag (bit 0x40 in the flags field; the first char of the flags field begins 38 columns after the fe80 prefix
++              # - without tentative flag (bit 0x40 in the flags field; the first char of the fifth field is evaluated)
+               # - on interface $iface
+               if awk '
+                       BEGIN { RET=1 }
+-                      /^fe80.{37} [012389ab]/ { if ($6 == "'"$iface"'") RET=0 }
++                      $1 ~ /^fe80/ && $5 ~ /^[012389ab]/ && $6 == "'"$iface"'" { RET=0 }
+                       END { exit RET }
+               ' /proc/net/if_inet6; then
+                       return
diff --git a/buildscript b/buildscript
index ab092da..95ae31d 100755
--- a/buildscript
+++ b/buildscript
@@ -38,7 +38,8 @@ GLUON_PKGS="kmod-batman-adv-legacy micrond simple-tc uradvd"
 #official openwrt routing packages
 ROUTING=(routing
          <a class="moz-txt-link-freetext" href="https://git.openwrt.org/feed/routing.git">https://git.openwrt.org/feed/routing.git</a>
-         d11075cd40a88602bf4ba2b275f72100ddcb4767) # lede-17.01
+         d11075cd40a88602bf4ba2b275f72100ddcb4767
+         "0001-alfred-Support-interface-IDs-with-more-than-two-digi.patch") # lede-17.01
 ROUTING_PKGS="kmod-batman-adv batctl alfred"
 
 FFF=(fff)
</pre>
    </blockquote>
    <br>
  </body>
</html>