make dnsmasq probe for dhcp servers before starting a dhcp server
[openwrt/svn-archive/archive.git] / openwrt / target / default / target_skeleton / etc / functions.sh
index 48f1191cc46f754b0a0b7458a02602bd5a23c4fe..60d6231f8a21b97d939e5ab3b5e958642eb642a3 100755 (executable)
@@ -12,7 +12,7 @@ nvram () {
 . /etc/nvram.overrides
 
 # valid interface?
-if_valid () {
+if_valid () (
   ifconfig "$1" >&- 2>&- ||
   [ "${1%%[0-9]}" = "br" ] ||
   {
@@ -29,5 +29,29 @@ if_valid () {
       $DEBUG vconfig add $vif $i 2>&-
     )
   } ||
-  { debug "# missing interface '$if' ignored"; false; }
+  { debug "# missing interface '$1' ignored"; false; }
+)
+
+bitcount () {
+  local c=$1
+  echo $((
+  c=((c>> 1)&0x55555555)+(c&0x55555555),
+  c=((c>> 2)&0x33333333)+(c&0x33333333),
+  c=((c>> 4)&0x0f0f0f0f)+(c&0x0f0f0f0f),
+  c=((c>> 8)&0x00ff00ff)+(c&0x00ff00ff),
+  c=((c>>16)&0x0000ffff)+(c&0x0000ffff)
+  ))
+}
+
+valid_netmask () {
+  return $((-($1)&~$1))
+}
+
+ip2int () (
+  set $(echo $1 | tr '\.' ' ')
+  echo $(($1<<24|$2<<16|$3<<8|$4))
+)
+
+int2ip () {
+  echo $(($1>>24&255)).$(($1>>16&255)).$(($1>>8&255)).$(($1&255))
 }