base-files: reduce IPv6 ULA prefix generation to a single call
[openwrt/staging/stintel.git] / package / base-files / files / etc / uci-defaults / 12_network-generate-ula
index f3e493145fa6e5aa7fd19c1c07f428d64828f4c0..060d0ef640d54238570ae6a805c8836ec692be0e 100644 (file)
@@ -1,16 +1,7 @@
-#!/bin/sh
-
-[ "$(uci get network.globals.ula_prefix)" != "auto" ] && exit 0
-# Sometimes results are empty, therefore try until it works...          
-local r1 r2 r3
-while [ -z "$r1" -o -z "$r2" -o -z "$r3" ]; do
-       r1=$(printf "%02x" $(($(</dev/urandom tr -dc 0-9 | dd bs=9 count=1) % 256)))
-       r2=$(printf "%01x" $(($(</dev/urandom tr -dc 0-9 | dd bs=9 count=1) % 65536)))
-       r3=$(printf "%01x" $(($(</dev/urandom tr -dc 0-9 | dd bs=9 count=1) % 65536)))
-done
+[ "$(uci -q get network.globals.ula_prefix)" != "auto" ] && exit 0
 
 uci -q batch <<-EOF >/dev/null
-       set network.globals.ula_prefix=fd$r1:$r2:$r3::/48
+       set network.globals.ula_prefix="$(hexdump -vn 5 -e '"fd" 1/1 "%02x:" 2/2 "%x:"' /dev/urandom):/48"
        commit network
 EOF