diff --git a/Makefile b/Makefile index 53d724e5c0bdcbfe6f5ac613845daad291092635..f09c883971853276681b436bb00d5d8268c955f6 100644 --- a/Makefile +++ b/Makefile @@ -10,9 +10,9 @@ include $(TOPDIR)/rules.mk PKG_NAME:=batman-adv -PKG_VERSION:=2011.2.0 -PKG_MD5SUM:=1ef45406201913cc08ac01e47ad2d034 -BATCTL_MD5SUM:=69e7fe915f2c1867b74e6efe7c627dd5 +PKG_VERSION:=2011.3.0 +PKG_MD5SUM:=0ba4b63f7fe9d2a561662cdc0378caa5 +BATCTL_MD5SUM:=8eb197896049bb04a6beef56015a16b6 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=http://downloads.open-mesh.org/batman/releases/batman-adv-$(PKG_VERSION) @@ -27,7 +27,7 @@ define KernelPackage/batman-adv URL:=http://www.open-mesh.org/ MAINTAINER:=Marek Lindner SUBMENU:=Network Support - DEPENDS:=@!LINUX_2_4 + DEPENDS:=@!LINUX_2_4 +kmod-crc16 TITLE:=B.A.T.M.A.N. Adv FILES:=$(PKG_BUILD_DIR)/batman-adv.$(LINUX_KMOD_SUFFIX) AUTOLOAD:=$(call AutoLoad,50,batman-adv) @@ -61,7 +61,7 @@ MAKE_BATCTL_ARGS += \ CC="$(TARGET_CC)" \ NODEBUG=1 \ UNAME="Linux" \ - INSTALL_PREFIX="$(PKG_INSTALL_DIR)" \ + DESTDIR="$(PKG_INSTALL_DIR)" \ STRIP="/bin/true" \ batctl install @@ -104,16 +104,18 @@ endef ifneq ($(DEVELOPER)$(CONFIG_KMOD_BATMAN_ADV_BATCTL),) define KernelPackage/batman-adv/install - $(INSTALL_DIR) $(1)/etc/config $(1)/etc/init.d + $(INSTALL_DIR) $(1)/etc/config $(1)/etc/init.d $(1)/lib/batman-adv $(INSTALL_BIN) ./files/etc/init.d/batman-adv $(1)/etc/init.d + $(INSTALL_BIN) ./files/lib/batman-adv/config.sh $(1)/lib/batman-adv $(INSTALL_DATA) ./files/etc/config/batman-adv $(1)/etc/config $(INSTALL_DIR) $(1)/usr/sbin - $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/batctl $(1)/usr/sbin/ + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/local/sbin/batctl $(1)/usr/sbin/ endef else define KernelPackage/batman-adv/install - $(INSTALL_DIR) $(1)/etc/config $(1)/etc/init.d + $(INSTALL_DIR) $(1)/etc/config $(1)/etc/init.d $(1)/lib/batman-adv $(INSTALL_BIN) ./files/etc/init.d/batman-adv $(1)/etc/init.d + $(INSTALL_BIN) ./files/lib/batman-adv/config.sh $(1)/lib/batman-adv $(INSTALL_DATA) ./files/etc/config/batman-adv $(1)/etc/config endef endif diff --git a/files/etc/init.d/batman-adv b/files/etc/init.d/batman-adv index a6a85000d484e6d28039f7ab9d2e47ec0eeb80e0..f0f678904ecc494fa81f8119f3dd6bdfe0719699 100644 --- a/files/etc/init.d/batman-adv +++ b/files/etc/init.d/batman-adv @@ -3,101 +3,7 @@ START=90 -is_module_loaded() { - - if [ ! -d "/sys/module/batman_adv" ]; then - echo "batman-adv module directory not found - was the kernel module loaded ?" >&2 - return 0 - fi - - return 1 -} - -start_mesh () { - local meshif="$1" - local interfaces aggregated_ogms bonding fragmentation gw_bandwidth gw_mode gw_sel_class log_level orig_interval vis_mode - - is_module_loaded - [ $? -ne 1 ] && return - - config_get interfaces "$meshif" interfaces - config_get aggregated_ogms "$meshif" aggregated_ogms - config_get bonding "$meshif" bonding - config_get fragmentation "$meshif" fragmentation - config_get gw_bandwidth "$meshif" gw_bandwidth - config_get gw_mode "$meshif" gw_mode - config_get gw_sel_class "$meshif" gw_sel_class - config_get log_level "$meshif" log_level - config_get orig_interval "$meshif" orig_interval - config_get vis_mode "$meshif" vis_mode - - if [ "$interfaces" = "" ]; then - echo Error, you must specify at least a network interface - return - fi - - for interface in $interfaces - do - ifname=$(uci -P /var/state get network.$interface.ifname 2>&-) - [ ! -f "/sys/class/net/$ifname/batman_adv/mesh_iface" ] && { - ifname=${interface} - [ ! -f "/sys/class/net/$ifname/batman_adv/mesh_iface" ] && echo "Can't add interface $ifname - ignoring" && continue - } - - echo $meshif > /sys/class/net/$ifname/batman_adv/mesh_iface - done - - if [ $orig_interval ]; then - echo $orig_interval > /sys/class/net/$meshif/mesh/orig_interval - fi - - if [ $log_level ]; then - echo $log_level > /sys/class/net/$meshif/mesh/log_level 2>&- - fi - - if [ $aggregated_ogms ]; then - echo $aggregated_ogms > /sys/class/net/$meshif/mesh/aggregated_ogms - fi - - if [ $bonding ]; then - echo $bonding > /sys/class/net/$meshif/mesh/bonding - fi - - if [ $fragmentation ]; then - echo $fragmentation > /sys/class/net/$meshif/mesh/fragmentation - fi - - if [ $gw_bandwidth ]; then - echo $gw_bandwidth > /sys/class/net/$meshif/mesh/gw_bandwidth - fi - - if [ $gw_mode ]; then - echo $gw_mode > /sys/class/net/$meshif/mesh/gw_mode - fi - - if [ $gw_sel_class ]; then - echo $gw_sel_class > /sys/class/net/$meshif/mesh/gw_sel_class - fi - - if [ $vis_mode ]; then - echo $vis_mode > /sys/class/net/$meshif/mesh/vis_mode - fi -} - -stop_mesh() { - local meshif="$1" - - is_module_loaded - [ $? -ne 1 ] && return - - for iface in $(ls /sys/class/net/*) - do - [ ! -f "$iface/batman_adv/mesh_iface" ] && continue - [ "$(head -1 $iface/batman_adv/mesh_iface)" != "$meshif" ] && continue - - echo "none" > $iface/batman_adv/mesh_iface - done -} +. /lib/batman-adv/config.sh # can also be used with "batman-adv start bat0" start() { @@ -120,5 +26,3 @@ stop () { config_foreach stop_mesh mesh fi } - - diff --git a/files/lib/batman-adv/config.sh b/files/lib/batman-adv/config.sh new file mode 100644 index 0000000000000000000000000000000000000000..347e3076f23c2c6392ba7651ec775ddf66399a69 --- /dev/null +++ b/files/lib/batman-adv/config.sh @@ -0,0 +1,98 @@ +#!/bin/sh +# Copyright (C) 2011 OpenWrt.org + +is_module_loaded() { + + if [ ! -d "/sys/module/batman_adv" ]; then + echo "batman-adv module directory not found - was the kernel module loaded ?" >&2 + return 0 + fi + + return 1 +} + +start_mesh () { + local meshif="$1" + local interfaces aggregated_ogms bonding fragmentation gw_bandwidth gw_mode gw_sel_class log_level orig_interval vis_mode + + is_module_loaded + [ $? -ne 1 ] && return + + config_get interfaces "$meshif" interfaces + config_get aggregated_ogms "$meshif" aggregated_ogms + config_get bonding "$meshif" bonding + config_get fragmentation "$meshif" fragmentation + config_get gw_bandwidth "$meshif" gw_bandwidth + config_get gw_mode "$meshif" gw_mode + config_get gw_sel_class "$meshif" gw_sel_class + config_get log_level "$meshif" log_level + config_get orig_interval "$meshif" orig_interval + config_get vis_mode "$meshif" vis_mode + + if [ "$interfaces" = "" ]; then + echo Error, you must specify at least a network interface + return + fi + + for interface in $interfaces + do + ifname=$(uci -P /var/state get network.$interface.ifname 2>&-) + [ ! -f "/sys/class/net/$ifname/batman_adv/mesh_iface" ] && { + ifname=${interface} + [ ! -f "/sys/class/net/$ifname/batman_adv/mesh_iface" ] && echo "Can't add interface $ifname - ignoring" && continue + } + + echo $meshif > /sys/class/net/$ifname/batman_adv/mesh_iface + done + + if [ $orig_interval ]; then + echo $orig_interval > /sys/class/net/$meshif/mesh/orig_interval + fi + + if [ $log_level ]; then + echo $log_level > /sys/class/net/$meshif/mesh/log_level 2>&- + fi + + if [ $aggregated_ogms ]; then + echo $aggregated_ogms > /sys/class/net/$meshif/mesh/aggregated_ogms + fi + + if [ $bonding ]; then + echo $bonding > /sys/class/net/$meshif/mesh/bonding + fi + + if [ $fragmentation ]; then + echo $fragmentation > /sys/class/net/$meshif/mesh/fragmentation + fi + + if [ $gw_bandwidth ]; then + echo $gw_bandwidth > /sys/class/net/$meshif/mesh/gw_bandwidth + fi + + if [ $gw_mode ]; then + echo $gw_mode > /sys/class/net/$meshif/mesh/gw_mode + fi + + if [ $gw_sel_class ]; then + echo $gw_sel_class > /sys/class/net/$meshif/mesh/gw_sel_class + fi + + if [ $vis_mode ]; then + echo $vis_mode > /sys/class/net/$meshif/mesh/vis_mode + fi +} + +stop_mesh() { + local meshif="$1" + + is_module_loaded + [ $? -ne 1 ] && return + + for iface in $(ls /sys/class/net/*) + do + [ ! -f "$iface/batman_adv/mesh_iface" ] && continue + [ "$(head -1 $iface/batman_adv/mesh_iface)" != "$meshif" ] && continue + + echo "none" > $iface/batman_adv/mesh_iface + done +}