include $(TOPDIR)/rules.mk
PKG_NAME:=batman-adv
-PKG_REV:=1611
-PKG_VERSION:=r$(PKG_REV)
-PKG_RELEASE:=1
+# Versions to download for maintenance build
+PKG_REV_MAINT:=1611
+PKG_KMOD_VERSION_MAINT:=5c4633c532a7a9b5adfe5dbf3f5e97fff307216e
+# just for the package version numbering
+PKG_VERSION_MAINT:=0.2.1
+# Versions to download for development build
+PKG_REV_DEV:=1679
+PKG_KMOD_VERSION_DEV:=de32ed5ba4b6487dbd3c4cad6c9ba8240d79c421
+# just for the package version numbering
+PKG_VERSION_DEV:=0.3.0a
+## Make sure git-commit hash and svn revision number fit! ##
+
+PKG_RELEASE:=1
PKG_SOURCE_SUBDIR:=$(PKG_NAME)
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
-PKG_TOOL_VERSION=$(PKG_REV)
ifneq ($(CONFIG_BATMAN_ADV_DEV),)
- PKG_KMOD_VERSION=f9c84f3d20df87f4ebbc38b754b6b13fc1593ce2
+ PKG_REV:=$(PKG_REV_DEV)
+ PKG_VERSION:=$(PKG_VERSION_DEV)
+ PKG_KMOD_VERSION=$(PKG_KMOD_VERSION_DEV)
+ PKG_KMOD_URL=http://git.open-mesh.org/snapshot/$(PKG_KMOD_VERSION)/
PKG_KMOD_FNAME=batman-adv-dev-$(PKG_REV).tar.gz
+ PKG_TOOL_VERSION=$(PKG_REV)
+ PKG_TOOL_PROTO=svn
PKG_TOOL_URL=http://downloads.open-mesh.org/svn/batman/trunk/batctl
PKG_TOOL_FNAME:=batctl-dev-$(PKG_TOOL_VERSION).tar.gz
else
- PKG_KMOD_VERSION=5c4633c532a7a9b5adfe5dbf3f5e97fff307216e
+ PKG_REV:=$(PKG_REV_MAINT)
+ PKG_VERSION:=$(PKG_VERSION_MAINT)
+ PKG_KMOD_VERSION=$(PKG_KMOD_VERSION_MAINT)
+ PKG_KMOD_URL=http://git.open-mesh.org/snapshot/$(PKG_KMOD_VERSION)/
PKG_KMOD_FNAME=batman-adv-maint-$(PKG_REV).tar.gz
+ PKG_TOOL_VERSION=$(PKG_REV)
+ PKG_TOOL_PROTO=svn
PKG_TOOL_URL=http://downloads.open-mesh.org/svn/batman/branches/batctl-0.2.x/
PKG_TOOL_FNAME:=batctl-maint-$(PKG_TOOL_VERSION).tar.gz
endif
define Download/batman-adv-kernelland
FILE:=$(PKG_KMOD_FNAME)
- URL:=http://git.open-mesh.org/snapshot/$(PKG_KMOD_VERSION)/
+ URL:=$(PKG_KMOD_URL)
endef
$(eval $(call Download,batman-adv-kernelland))
define Download/batctl
FILE:=$(PKG_TOOL_FNAME)
URL:=$(PKG_TOOL_URL)
- PROTO:=svn
+ PROTO:=$(PKG_TOOL_PROTO)
VERSION:=$(PKG_TOOL_VERSION)
SUBDIR:=$(PKG_SOURCE_SUBDIR)/batctl
endef
define KernelPackage/batman-adv-kernelland/install
$(INSTALL_DIR) $(1)/etc/config $(1)/etc/init.d
- $(INSTALL_BIN) ./files/etc/init.d/batman-adv-kernelland $(1)/etc/init.d
- $(INSTALL_DATA) ./files/etc/config/batman-adv-kernelland $(1)/etc/config
+ $(INSTALL_BIN) ./files/etc/init.d/batman-adv $(1)/etc/init.d
+ $(INSTALL_DATA) ./files/etc/config/batman-adv $(1)/etc/config
ifneq ($(DEVELOPER)$(CONFIG_KMOD_BATMAN_ADV_BATCTL),)
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/batctl $(1)/usr/sbin/
--- /dev/null
+
+config 'mesh' 'bat0'
+ option 'interfaces' 'wlan0'
+ option 'orig_interval'
+ option 'log_level'
+++ /dev/null
-config batman-adv-kernelland general
- option interface ath0
- option originator_interval
- option log_level
--- /dev/null
+#!/bin/sh /etc/rc.common
+START=90
+
+MODULE_DIR="/sys/module/batman_adv"
+
+detect_version() {
+ local version
+
+ if [ ! -d "$MODULE_DIR" ]; then
+ echo "batman-adv module directory not found - is the module loaded ?" >&2
+ return 1
+ fi
+
+ version=$(cat $MODULE_DIR/version)
+
+ if [ "$version" != "${version#0.3*}" ]; then
+ BAT_VER="0.3"
+ elif [ "$version" != "${version#0.2*}" ]; then
+ BAT_VER="0.2"
+ else
+ echo "Error - unknown version encountered: $version" >&2
+ return 1
+ fi
+
+ return 0
+}
+
+start_mesh () {
+ local meshif="$1"
+
+ detect_version
+ [ $? -ne 0 ] && return 1
+
+ config_get interfaces "$meshif" interfaces
+ config_get orig_interval "$meshif" orig_interval
+ config_get log_level "$meshif" log_level
+
+ if [ "$interfaces" = "" ]; then
+ echo Error, you must specify at least a network interface
+ return
+ fi
+
+ for interface in $interfaces
+ do
+ if [ "$BAT_VER" = "0.2" ]; then
+ echo $interface > /proc/net/batman-adv/interfaces
+ else
+ [ ! -f "/sys/class/net/$interface/batman_adv/mesh_iface" ] && echo "Can't add interface $interface - ignoring" && continue
+ echo $meshif > /sys/class/net/$interface/batman_adv/mesh_iface
+ fi
+ done
+
+ if [ $orig_interval ]; then
+ if [ "$BAT_VER" = "0.2" ]; then
+ echo $orig_interval > /proc/net/batman-adv/orig_interval
+ else
+ echo $orig_interval > /sys/class/net/$meshif/batman_adv/originator_interval
+ fi
+ fi
+
+ if [ $log_level ]; then
+ echo $log_level > /sys/module/batman_adv/parameters/debug 2>&-
+ fi
+}
+
+stop_mesh() {
+ local meshif="$1"
+
+ detect_version
+ [ $? -ne 0 ] && return 1
+
+ if [ "$BAT_VER" = "0.2" ]; then
+ echo "" > /proc/net/batman-adv/interfaces
+ return
+ fi
+
+ for iface in $(ls /sys/class/net/*)
+ do
+ [ ! -f "$iface/batman_adv/mesh_iface" ] && continue
+ [ "$(head -1 $iface/batman_adv/mesh_iface)" != "status: $meshif" ] && continue
+
+ echo "none" > $iface/batman_adv/mesh_iface
+ done
+}
+
+# can also be used with "batman-adv start bat0"
+start() {
+ config_load batman-adv
+
+ if [ -n "$1" ]; then
+ start_mesh $1
+ else
+ config_foreach start_mesh mesh
+ fi
+}
+
+# can also be used with "batman-adv stop bat0"
+stop () {
+ config_load batman-adv
+
+ if [ -n "$1" ]; then
+ stop_mesh $1
+ else
+ config_foreach stop_mesh mesh
+ fi
+}
+
+
+++ /dev/null
-#!/bin/sh /etc/rc.common
-START=90
-
-start () {
- interfaces=$(uci get batman-adv-kernelland.general.interface)
- if [ "$interfaces" = "" ]; then
- echo $1 Error, you must specify at least a network interface
- exit
- fi
-
- for interface in $interfaces
- do
- echo $interface > /proc/net/batman-adv/interfaces
- done
-
- originator_interval=$(uci get batman-adv-kernelland.general.originator_interval)
- log_level=$(uci get batman-adv-kernelland.general.log_level)
-
- if [ $originator_interval ]; then
- echo $originator_interval > /proc/net/batman-adv/orig_interval
- fi
-
- if [ $log_level ]; then
- echo $log_level > /sys/module/batman_adv/parameters/debug 2>&-
- fi
-}
-
-stop () {
- echo "" > /proc/net/batman-adv/interfaces
-}
-
-